Files
wehub-resource-sync e7738de6d2
CI / Deep Native Runtime Cases (1/6) (push) Has been skipped
CI / Native Preflight (push) Failing after 1s
CI / Native Runtime Cases (1/2) (push) Failing after 0s
CI / Native Runtime Cases (2/2) (push) Failing after 1s
CI / Native Metadata Reports (push) Failing after 0s
CI / Native Direct Backend Artifacts (push) Failing after 0s
CI / Native Sanitizer Smoke (push) Failing after 1s
CI / Command Contract Snapshots (push) Failing after 1s
CI / Deep Conformance Suite (push) Has been skipped
CI / Graph Build Perf (push) Failing after 1s
CI / Deep Native Preflight (push) Has been skipped
CI / Deep Native Runtime Cases (2/6) (push) Has been skipped
CI / Deep Native Runtime Cases (3/6) (push) Has been skipped
CI / Conformance Suite (push) Failing after 1s
CI / Workspace Checks (push) Failing after 0s
CI / Deep Native Runtime Cases (5/6) (push) Has been skipped
CI / Deep Native Runtime Cases (6/6) (push) Has been skipped
CI / Deep Native Runtime Cases (4/6) (push) Has been skipped
CI / Deep Graph Build Perf (push) Has been skipped
chore: import upstream snapshot with attribution
2026-07-13 12:29:30 +08:00

2.4 KiB

When To Use std.env

In Zerolang, use std.env for hosted environment variable lookup and simple typed configuration values.

Runnable today:

API Return Notes
std.env.get(name) Maybe<String> Returns a hosted process environment value when present.
std.env.has(name) Bool Reports whether a hosted environment variable exists.
std.env.getOr(name, fallback) String Returns the environment value or a caller-provided fallback.
std.env.equals(name, expected) Bool Compares an environment value with expected text without exposing a missing value as success.
std.env.parseBool(name) Maybe<Bool> Parses an environment value as Bool.
std.env.parseBoolOr(name, fallback) Bool Parses a boolean environment value or returns a caller-provided fallback.
std.env.parseI32(name) Maybe<i32> Parses an environment value as i32.
std.env.parseI32Or(name, fallback) i32 Parses an i32 environment value or returns a caller-provided fallback.
std.env.parseU32(name) Maybe<u32> Parses an environment value as u32.
std.env.parseU32Or(name, fallback) u32 Parses a u32 environment value or returns a caller-provided fallback.
std.env.parseUsize(name) Maybe<usize> Parses an environment value as usize.
std.env.parseUsizeOr(name, fallback) usize Parses a usize environment value or returns a caller-provided fallback.

Current limits:

  • Dotenv/source composition.
  • Secret redaction metadata.
  • Rich diagnostics for missing keys, invalid values, and source precedence.

Example

pub fn main(world: World) -> Void raises {
    let mode: String = std.env.getOr("ZERO_MODE", "default")
    let verbose: Bool = std.env.parseBoolOr("ZERO_VERBOSE", false)
    let delta: i32 = std.env.parseI32Or("ZERO_DELTA", 0)
    let limit: u32 = std.env.parseU32Or("ZERO_LIMIT", 10)
    let workers: usize = std.env.parseUsizeOr("ZERO_WORKERS", 1)
    if std.env.equals("ZERO_MODE", "debug") && verbose && delta >= 0 && limit > 0_u32 && workers > 0 {
        check world.out.write(mode)
        check world.out.write("\n")
    } else {
        check world.out.write("default\n")
    }
}

Design Notes

Environment access is a hosted capability. Non-host targets reject std.env unless they explicitly provide an environment capability.

Diagnostics name the selected target context.