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
2.4 KiB
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.