API Reference
Host OS surface: platform, architecture, host identity, directories, CPU count, and uptime. All queries are read-only snapshots.
Every method is static, so call them as OS.method() without constructing
anything. Values come from the process that runs the program, which means
they follow the environment (a TMPDIR override changes what tmpdir()
reports) rather than a fixed build-time answer.
Result values are not errors: a query that cannot be answered returns a documented fallback (an empty string, "unknown", 0.0, or 1) instead of throwing. Check the value when it matters.
fn arch(): StringCPU architecture: "x86_64", "aarch64", or the Rust target-arch name.
This is the architecture of the running program, not of the physical machine. An x86_64 build under emulation reports "x86_64".
returns — architecture string, never empty.
import { OS } from "@std/os";
let is64 = OS.arch() == "x86_64" || OS.arch() == "aarch64";
print(is64);fn cpuCount(): IntLogical CPU execution threads available to this process (at least 1).
This is the scheduler-visible count, so CPU affinity masks and container CPU quotas shrink it. A machine with 16 hardware threads limited to 4 cores reports 4. Returns 1 when the host cannot answer.
Use it to size worker pools.
returns — core count, never below 1.
import { OS } from "@std/os";
let workers = OS.cpuCount();
print(workers);fn eol(): StringEnd-of-line marker for this platform ("\r\n" on Windows, "\n" elsewhere).
Returns a string, not a character: its length is 2 on Windows and 1 everywhere else. Build multi-line output with it instead of hardcoding "\n", which leaves stray carriage returns when the same file is read on Windows.
returns — eol string.
import { OS } from "@std/os";
let header = "name" + OS.eol() + "value" + OS.eol();
print(header);fn homedir(): StringCurrent user's home directory (HOME/USERPROFILE, else "").
Returns "" when neither variable is set, which happens in stripped containers and in daemons started without a login environment. Treat the empty string as "unknown home" instead of a usable path.
returns — home directory path, or "" when undetermined.
import { OS } from "@std/os";
let home = OS.homedir();
if (home == "") {
print("no home directory in this environment");
}fn hostname(): StringSystem hostname ("unknown" when it cannot be determined).
Resolution order: the HOSTNAME variable, then the contents of /etc/hostname, then COMPUTERNAME on Windows. A container with none of those set reports "unknown" rather than an empty string.
returns — hostname string, never empty.
import { OS } from "@std/os";
print(OS.hostname() != "unknown");fn platform(): StringOS platform: "linux", "macos", "windows", or the Rust target-OS name.
FreeBSD, Solaris, and other targets keep their Rust names ("freebsd", "solaris"), so compare against the exact string rather than assuming one of the three common ones.
returns — platform string, never empty.
import { OS } from "@std/os";
if (OS.platform() == "windows") {
print("windows path separator rules");
}fn tmpdir(): StringSystem temporary directory (TMPDIR/TEMP/TMP, else the OS default).
The first non-empty variable wins, in that order, so TMPDIR set in the shell overrides the OS default. The directory is not created; it is whatever the host already reports, which is /tmp on Linux and macOS when none of the variables are set.
returns — temp directory path.
import { OS } from "@std/os";
print(OS.tmpdir());fn uptime(): FloatSystem uptime in fractional seconds (0.0 when unavailable).
Seconds since boot, not since the program started, and not per-core time. Currently reads /proc/uptime, so it returns 0.0 on macOS and Windows. Test uptime-gated logic against 0.0 as "unknown".
returns — uptime as Float.
import { OS } from "@std/os";
let seconds = OS.uptime();
if (seconds > 0.0) {
print("host has been up for a while");
}