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
3.6 KiB
3.6 KiB
When To Use std.toml
In Zerolang, use std.toml for TOML validation, shallow field lookup, and typed scalar
decode helpers.
Runnable today:
| API | Return | Notes |
|---|---|---|
std.toml.validate(text) |
Bool |
Checks the current TOML subset without allocation. |
std.toml.validateBytes(bytes) |
Bool |
Checks a Span<u8> TOML payload without allocation. |
std.toml.field(bytes, key) |
Maybe<Span<u8>> |
Returns the raw value for a direct, dotted, or shallow table field. |
std.toml.stringDecode(buffer, value) |
Maybe<Span<u8>> |
Decodes a TOML string value into caller storage. |
std.toml.string(buffer, bytes, key) |
Maybe<Span<u8>> |
Looks up and decodes a TOML string field. |
std.toml.u32(bytes, key) |
Maybe<u32> |
Looks up and decodes an unsigned integer field. |
std.toml.i32(bytes, key) |
Maybe<i32> |
Looks up and decodes a signed integer field. |
std.toml.bool(bytes, key) |
Maybe<Bool> |
Looks up and decodes a boolean field. |
std.toml.arrayCount(value) |
Maybe<usize> |
Counts items in a raw array value. |
std.toml.arrayValue(value, index) |
Maybe<Span<u8>> |
Borrows a raw array item by ordinal. |
std.toml.arrayString(buffer, value, index) |
Maybe<Span<u8>> |
Decodes a string array item into caller storage. |
std.toml.arrayU32(value, index) |
Maybe<u32> |
Decodes an unsigned integer array item. |
std.toml.arrayI32(value, index) |
Maybe<i32> |
Decodes a signed integer array item. |
std.toml.arrayBool(value, index) |
Maybe<Bool> |
Decodes a boolean array item. |
std.toml.writeKeyValueString(buffer, key, value) |
Maybe<Span<u8>> |
Writes one string key/value line. |
std.toml.writeKeyValueU32(buffer, key, value) |
Maybe<Span<u8>> |
Writes one unsigned integer key/value line. |
std.toml.writeKeyValueBool(buffer, key, value) |
Maybe<Span<u8>> |
Writes one boolean key/value line. |
std.toml.writeTableHeader(buffer, table) |
Maybe<Span<u8>> |
Writes one table header line. |
Metadata labels:
- effects: parse
- allocation behavior: allocation-free; decoded strings and writer output use caller storage
- target support: target-neutral
- error behavior:
Maybehelpers return null on malformed or missing fields - ownership notes: returned raw fields borrow from the input span; decoded strings borrow from the caller buffer
- examples:
conformance/native/pass/std-toml-basic.graph
Example
pub fn main(world: World) -> Void raises {
let input: Span<u8> = "[package]\nname = \"demo\"\n\n[features]\ngraph = true\nlevels = [1, 2, 3]\n"
var name_buffer: [16]u8 = [0_u8; 16]
let name: Maybe<Span<u8>> = std.toml.string(name_buffer, input, "package.name")
let graph: Maybe<Bool> = std.toml.bool(input, "features.graph")
let levels: Maybe<Span<u8>> = std.toml.field(input, "features.levels")
var count: Maybe<usize> = null
if levels.has {
count = std.toml.arrayCount(levels.value)
}
if std.toml.validateBytes(input) && name.has && graph.has && graph.value && count.has && count.value == 3 {
check world.out.write("toml ok\n")
}
}
Design Notes
The current TOML helper surface is deliberately narrow. It supports the package
manifest subset used by Zero packages: tables, dotted keys, strings, booleans,
integers, scalar arrays, and small writer helpers. Field lookup is shallow and table-aware, so
std.toml.string(buffer, input, "package.name") can read name inside a
[package] table.
The helpers avoid hidden allocation. Use field when a raw value slice is
enough, and use string or stringDecode when escape decoding into explicit
caller storage is required.