0x0LearnReferenceLibrariesMigration0x0.jmp0x1b.com

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:

public docs-only work)

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:

tests.

stdin/stdout JSON-RPC or JSON parsing.

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.