System
Environment Variables
env
Get the value of an environment variable. Returns nil if not set.
(env "HOME") ; => "/Users/ada"
(env "PATH") ; => "/usr/bin:/bin:..."
(env "MISSING") ; => nilsys/env-all
Return all environment variables as a map.
(sys/env-all) ; => {:HOME "/Users/ada" :PATH "..." ...}sys/set-env
Set an environment variable for the current process.
(sys/set-env "KEY" "value")
(env "KEY") ; => "value"System Information
sys/args
Return the command-line arguments as a list.
(sys/args) ; => ("sema" "script.sema" "--flag")sys/cwd
Return the current working directory.
(sys/cwd) ; => "/current/dir"sys/platform
Return the platform name.
(sys/platform) ; => "macos" / "linux" / "windows"sys/os
Return the operating system name.
(sys/os) ; => "macos"sys/arch
Return the CPU architecture.
(sys/arch) ; => "aarch64" / "x86_64"Process Information
sys/pid
Return the current process ID.
(sys/pid) ; => 12345sys/tty
Return the TTY device path, or nil if not running in a terminal.
(sys/tty) ; => "/dev/ttys003" or nilsys/which
Find the full path to an executable, or nil if not found.
(sys/which "cargo") ; => "/Users/ada/.cargo/bin/cargo"
(sys/which "nonexistent") ; => nilsys/elapsed
Return nanoseconds elapsed since the process started.
(sys/elapsed) ; => 482937100Session Information
sys/interactive?
Test if stdin is a TTY (i.e., running interactively).
(sys/interactive?) ; => #t in REPL, #f in scriptssys/hostname
Return the system hostname.
(sys/hostname) ; => "my-machine"sys/user
Return the current username.
(sys/user) ; => "ada"Directory Paths
sys/home-dir
Return the user's home directory.
(sys/home-dir) ; => "/Users/ada"sys/temp-dir
Return the system temporary directory.
(sys/temp-dir) ; => "/tmp"Shell & Process Control
shell
Run a shell command and return its stdout as a string.
(shell "ls -la") ; => "total 42\n..."
(shell "echo hello") ; => "hello\n"exit
Exit the process with a given status code.
(exit 0) ; exit successfully
(exit 1) ; exit with error