March Docs

System

System module: OS and runtime information.

Exposes host OS/arch detection, process metadata, environment variables, and subprocess execution under a unified System namespace.

Usage: System.os() -- :macos | :linux | :windows | :unknown System.arch() -- :x86_64 | :aarch64 | :x86 | ... System.cpu_count() -- number of logical CPUs System.monotonic_time() -- milliseconds since process start System.env("PATH") -- Some(value) | None System.put_env("KEY", "val") System.argv() -- List(String) System.cwd() -- String System.pid() -- Int System.exit(0) -- terminate process System.cmd("ls", ["-la"]) -- Ok(ProcessResult) | Err(msg) System.version() -- "0.1.0"

Types

typeProcessResultProcessResult = ProcessResult(Int, String, String)#

Functions

fnosos()#

Return the host operating system as an atom. Possible values: :macos, :linux, :windows, :unknown.

fnarcharch()#

Return the host CPU architecture as an atom. Possible values: :x86_64, :aarch64, :x86, or a lowercase uname string.

fncpu_countcpu_count() : Int#

Return the number of logical CPUs available to the runtime.

fnmonotonic_timemonotonic_time() : Int#

Return milliseconds elapsed since the process started. Suitable for rough timing; not a wall-clock time.

let t0 = System.monotonic_time() -- ... work ... let elapsed = System.monotonic_time() - t0

fnenvenv(name : String) : Option(String)#

Get the value of an environment variable. Returns Some(value) if set, None if not set.

fnput_envput_env(name : String, value : String) : Unit#

Set an environment variable.

fnargvargv() : List(String)#

Return command-line arguments as List(String). argv()[0] is the path to the executable.

fncwdcwd() : String#

Return the current working directory as a String.

fnpidpid() : Int#

Return the OS-level PID of the current process as an Int.

fnexitexit(code : Int) : Unit#

Terminate the process with the given exit code.

fncmdcmd(command : String, args : List(String)) : Result(ProcessResult, String)#

Run an external command synchronously, capturing stdout. Returns Ok(ProcessResult(exit_code, stdout, stderr)) or Err(msg).

match System.cmd("git", ["status"]) do Ok(r) -> println(System.stdout(r)) Err(msg) -> IO.warn("cmd failed: " ++ msg) end

fnexit_codeexit_code(r : ProcessResult) : Int#

Extract the exit code from a ProcessResult.

fnstdoutstdout(r : ProcessResult) : String#

Extract captured stdout from a ProcessResult.

fnstderrstderr(r : ProcessResult) : String#

Extract captured stderr from a ProcessResult.

fnokok(r : ProcessResult) : Bool#

True if the command exited with code 0.

fnversionversion() : String#

Return the March runtime version string.

System.version() -- "0.1.0"