Release Guide
0x0 v0.1.0 is the first trusted compiler boundary for editor tooling and
downstream experiments. The release artifacts are built from the explicit seed
recovery path, then normal compiler development uses the released self-hosted
ELF compiler builder.
Build v0.1.0 From Seed
make bootstrap-from-seed
This runs:
- the legacy full docs gate (
make docs-check; heavy, not the safe default for
public docs-only work)
make package-checkmake editor-check- the full self-host gate through
build/native/zero-elf-compiler - the trusted compiler chain
v0.1.0 -> build/zero-next -> build/stage2 -> build/stage3 - packaging into
build/release/v0.1.0 - the memory budget gate for the released compiler chain
- release metadata and SHA-256 hashes for source, compiler artifacts, memory
evidence, and stage outputs
This path is intentionally explicit because it invokes the stage -1 seed and the
heavy full self-host chain. 0x0 is self-hosted; the seed is retained only to
reproduce the first compiler. Normal release verification after v0.1.0 exists is:
make release
make release-verify
make release uses the trusted root compiler from TRUSTED_VERSION, which
defaults to 0.1.0. For a later handoff point, pass
TRUSTED_VERSION=<version> explicitly. The release target does not recreate the
trusted root from the seed.
The release directory contains:
build/release/v0.1.0/bin/zero-elf-compiler
build/release/v0.1.0/bin/zero-oisa-compiler
build/release/v0.1.0/bin/zero-link
build/release/v0.1.0/bin/zero-ar
build/release/v0.1.0/bin/zero-lsp
build/release/v0.1.0/linker-fixtures/lib0x0-linked
build/release/v0.1.0/linker-fixtures/lib0x0-direct
build/release/v0.1.0/linker-fixtures/SHA256SUMS
build/release/v0.1.0/optimizer-fixtures/SHA256SUMS
build/release/v0.1.0/independent-fixtures/SHA256SUMS
build/release/v0.1.0/memory.txt
build/release/v0.1.0/manifest.txt
build/release/v0.1.0/SHA256SUMS
build/release/v0.1.0/share/0x0/
manifest.txt records the trusted compiler version, artifact paths, normal
succession path, seed recovery path, memory report path, memory budgets,
baseline path, manifest schema source, diagnostic contract, compatibility
matrix, packaged test helpers, release-linked executable fixture paths,
optimizer fixture hash paths, and independent compiler fixture hash paths.
SHA256SUMS is the machine-checkable hash file used by make release-verify.
zero-elf-compiler is the trusted self-replicating compiler builder. It compiles
compiler/main.0x0 to another executable compiler:
build/release/v0.1.0/bin/zero-elf-compiler compiler/main.0x0 build/zero-next
./build/zero-next compiler/main.0x0 build/stage2
./build/stage2 compiler/main.0x0 build/stage3
cmp build/stage2 build/stage3
zero-oisa-compiler compiles .0x0 source to OISA:
build/release/v0.1.0/bin/zero-oisa-compiler examples/add.0x0 build/release/v0.1.0/add.oisa
zero-link links the first compiler-emitted ELF64 relocatable object slice into
a Linux ELF64 executable without shelling out to ld. Release metadata also
hashes the release-resident lib0x0 archive fixture executables linked by
zero-link.
zero-ar writes deterministic static archives with a symbol index for
compiler-emitted objects.
The optimizer fixture hashes record the release pass registry, verifier wiring,
documentation, and low-memory structural guard outputs. The full optimized
native/release behavior comparison remains part of make optimizer-check.
The independent compiler fixture hashes record the compiler2 independence
report, compiler2/main.0x0, compiler2/encoding.0x0,
compiler2/object-format.0x0, compiler2/elf-runtime.0x0, signed backend
fixtures with local .text.local object metadata,
same-object call relocation metadata, imported external symbol relocation metadata,
backend/mixed-link test hooks, source, and documentation that anchor the
release's second-implementation evidence. Full cross-build behavior remains part
of make independent-compiler-check.
share/0x0 contains installable project assets for the release: docs, examples,
tests, test/tool helpers, diagnostic-class gates, ABI files, compatibility
matrices, runtime/lib0x0 sources and archive, compiler sources, helper-list
manifest (release/test-helpers.txt), and release schema files. The package
layout gate reads the packaged helper manifest and fails if any listed helper is
missing from share/0x0.
make release-source-check verifies the release target, manifest schema, hash
inputs, package-layout scripts, normal-path audit, and release docs stay in sync
without building compiler artifacts.
make ecosystem-source-check verifies that the final maturity gate, roadmap,
normal-path audit, documentation audit, and compatibility matrix stay aligned
without running the heavy gate.
make release-package-layout-check verifies this layout without building
compiler artifacts.
Public Docs And Website Releases
Public documentation, static website, registry, and migration-domain changes
use the safe public docs release path:
make public-docs-milestone-9-check
make public-docs-milestone-10-check
make static-site-release-bundle-check
These checks are release-blocking for public docs or website changes. They read
manifests, registry metadata, generated site files, and bounded static bundles;
they do not run make docs-check, broad compiler sweeps, or broad library smoke
tests.
Manual remote publish steps, rollback expectations, and docs/site hash recording
are defined in docs/public-site-release-checklist.html. The final static bundle
hash is the SHA-256 of build/static-sites/SHA256SUMS, and must be recorded in
docs/public-docs-website-completion-evidence.html and
deploy/static-sites/completion-report.html when the public site is cut or
refreshed.
If a change alters public behavior, the release is blocked unless the
corresponding public docs are updated or the release notes explicitly record why
documentation is unchanged.
make normal-path-audit-check verifies that make all starts from the trusted
released compiler without mentioning the seed, C compiler, zero-native, or the
compatibility compiler, and that release hashes include memory-budget evidence.
zero-lsp is a host-side LSP shim. It uses the released compiler for diagnostics
when ZERO_LSP_COMPILER points to zero-oisa-compiler, or when the repository
default discovery finds the release OISA compiler.
Verification
make clean
make memory-check
make release-metadata
make release-verify
make trust-chain
make clean removes transient compiler outputs while preserving
build/release, because make release-verify needs the trusted release
compiler and metadata. Use make distclean only when intentionally removing
all generated outputs, including trusted release artifacts.
memory-check measures peak RSS for the released compiler chain and writes
build/release/v0.1.0/memory.txt. release-metadata refreshes the release
hashes after that measured report changes. release-verify reruns the trusted
compiler chain, regenerating build/zero-next, build/stage2, and
build/stage3, then checks build/release/v0.1.0/SHA256SUMS. trust-chain
prints the current trust model: the seed is retained for audit/recovery only,
while normal compiler succession starts from the released v0.1.0 artifact.
The expected trust-chain shape is:
seed -> v0.1.0
v0.1.0 -> v0.1.1
v0.1.1 -> v0.1.2
Boundary
The release is intentionally small:
- The compiler artifact is self-hosted ELF.
- The release also ships
zero-oisa-compilerfor diagnostics and OISA parity
tests.
- The LSP transport is still a host shim because 0x0 v0.1.0 does not yet expose
stdin/stdout JSON-RPC or JSON parsing.
- Syntax highlighting uses editor-native mechanisms: Vim syntax for Neovim and
Tree-sitter queries for Zed.
Future releases should move more editor intelligence into 0x0 source as the
runtime grows JSON, stdin/stdout, and richer diagnostics.