Os
The operating-system interface — the environment *around* the game rather than the game itself: the command line, environment variables, the standard streams, the process exit code, the host platform, and the per-user folders a game writes its saves, config, and cache into. It rounds the bare System builtins (arg, getenv, exit) into one coherent, Go-flavored namespace.
It is deliberately small and game-scoped: there is no process spawning, no signals, and no user/permission APIs. Reach for it in launchers, asset pipelines, and dev tools — parsing launch flags like --level 3, reading config from the environment, or resolving where a save file belongs — far more than in the simulation itself.
**Determinism:** args, the env family, and platform/arch are non-deterministic host input. Read them once at startup to configure the game, and keep them out of the replayable simulation so a shared seed still reproduces.
**Platform coverage:** this first version targets the native macOS/BSD host — the fully supported target today. platform is portable (the uname system name is available on every Unix); arch and the known-folder layout (save_dir/config_dir/cache_dir) follow the macOS conventions. Linux/Windows/wasm folder resolution and a target-aware arch are documented follow-ups.
Os.args() -> []stringEvery command-line argument, as a list.Os.arg_count() -> intHow many command-line arguments there are.Os.arg(i) -> stringThe i-th command-line argument.Os.env(name) -> stringRead an environment variable (null if unset).Os.env_or(name, fallback) -> stringRead an environment variable, or a fallback.Os.has_env(name) -> boolIs an environment variable set?Os.set_env(name, value) -> boolSet an environment variable.Os.unset_env(name) -> boolRemove an environment variable.Os.exit(code)Terminate the process with a status code.Os.platform() -> stringThe host platform id.Os.arch() -> stringThe host CPU architecture.Os.stdout_write(s)Write a string to standard output.Os.stderr_write(s)Write a string to standard error.Os.save_dir(app) -> stringPer-user save directory for an app.Os.config_dir(app) -> stringPer-user config directory for an app.Os.cache_dir(app) -> stringPer-user cache directory for an app.Os.temp_dir() -> stringThe system temporary directory.Os.pid() -> intThis process's id.