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.0 KiB
2.0 KiB
Make Retention Visible
Zerolang optimization docs should answer a concrete question: why did this graph input retain these bytes, helpers, allocations, or runtime shims?
{
"messages": [
{
"role": "user",
"text": "why is this binary bigger now?"
},
{
"role": "assistant",
"text": "I’ll inspect the size report and trace what is being retained."
},
{
"role": "tools",
"calls": [
{
"command": "zero size --json",
"output": "{\"sizeBreakdown\":{},\"retentionReasons\":[\"std.http.fetch retained by handle\"]}"
}
]
}
]
}
What This Means
Use graph inputs or graph-first packages:
zero size --json examples/fixed-vec.graph
zero mem --json examples/allocator-collections.graph
zero build --json --profile tiny --target linux-musl-x64 examples/hello.graph --out .zero/out/hello
Profiles
| Profile | Use when | Contract |
|---|---|---|
debug |
You need diagnostics and local symbols. | Keeps diagnostic/debug metadata. |
fast |
Throughput matters more than minimum size. | Optimizes for speed within current direct codegen limits. |
small |
You want the normal release shape. | Pay-as-used helpers and deterministic artifacts. |
tiny |
Artifact size is the main constraint. | Minimum runtime metadata and strict helper budget. |
Build JSON includes profileSemantics, profileCatalog, profileBudget, and
safetyFacts.
Size Reports
zero size --json adds:
sizeBreakdownretentionReasonsoptimizationHints- retained function and helper facts
- literal and section cost
- target and profile facts
Use retentionReasons when an agent needs to explain why a helper, literal, or
debug metadata block stayed in the artifact.
Memory Reports
zero mem --json includes:
memoryBudgetsallocatorFactsallocationInstrumentationcollectionFactssafetyFacts
These fields are the public way to check whether an example remains fixed-capacity, caller-buffered, or heap-free.