0x0LearnReferenceLibrariesMigration0x0.jmp0x1b.com

Release Compatibility Guide

Release compatibility ties together compiler, ABI, lib0x0, object, linker, and

optimizer artifacts. A release is compatible only when executable tests prove

that supported older artifacts either run correctly or fail with a documented

diagnostic.

Manifest Schema

Current manifest schema: 1.

Required fields:


0x0 v<version>
manifest_schema=1
trusted_version=<version>
abi_version=<version>
trusted_compiler=<path>
release_compiler=<path>
oisa_compiler=<path>
linker=<path>
archiver=<path>
lsp=<path>
source=compiler/main.0x0
abi_source=abi/VERSION
lib0x0_source=runtime/lib0x0.0x0
lib0x0_abi_source=runtime/lib0x0_abi.0x0
lib0x0_archive=runtime/lib0x0.a
linked_executables=build/release/v<version>/linker-fixtures/lib0x0-linked build/release/v<version>/linker-fixtures/lib0x0-direct
linker_fixture_hashes=build/release/v<version>/linker-fixtures/SHA256SUMS
optimizer_fixture_hashes=build/release/v<version>/optimizer-fixtures/SHA256SUMS
independent_fixture_hashes=build/release/v<version>/independent-fixtures/SHA256SUMS
manifest_schema_source=release/manifest-schema.tsv
diagnostics_doc=docs/diagnostics.md
compatibility_matrix=compat/abi-matrix.tsv
independent_compiler_source=compiler2/main.0x0
independent_compiler_encoding=compiler2/encoding.0x0
independent_compiler_object_format=compiler2/object-format.0x0
test_helpers=<space-separated packaged test helpers from release/test-helpers.txt>
memory_budgets=perf/memory-budgets.txt
memory_baseline=perf/memory-baselines/v<version>.txt
memory_report=build/release/v<version>/memory.txt
zero_next=build/zero-next
stage2=build/stage2
stage3=build/stage3
normal_path=trusted release compiler -> zero-next -> stage2 -> stage3
seed_path=bootstrap-from-seed audit/recovery only

release/test-helpers.txt is the source of truth for the test/tool helper list

used by test_helpers=. SHA256SUMS is the machine-checkable hash list for

manifest sources, packaged conformance helpers, and generated release artifacts.

Compatibility Matrix

The compatibility matrix must cover:

.text.local symbols that remain non-exported.

including hashed evidence for compiler2 local object metadata.

package-import OISA comparisons against the main compiler.

trusted->A, trusted->B, A->A, A->B, B->A, and B->B

ELF compiler-builder edges.

Linux ELF64 executables for the supported main -> I64 integer-literal,

local-call, and recursive-call slices, direct arithmetic/comparison/

conditional lowering, sequencing, local stack bindings, and same-file

argument passing, constant text-len/text-eq?, constant

text-at/text-slice, constant text character-class, and constant

int/text conversion lowering, plus

main -> Text literal and constant text-cat stdout output through

canonical compile-elf-program APIs.

R_X86_64_PC32 .rela.text metadata and I64 argument setup linked by

zero-link.

relocatable ELF objects for arithmetic, comparison, conditional, sequencing,

and local-binding expressions linked by zero-link.

undefined global function symbols, imported I64 argument signatures, and

argument setup linked against main-compiler objects.

unexported external calls before object emission.

containing compiler2 objects whose local .text.local symbols are not

exported in the archive index.

Validation

make release-source-check is the lightweight release-engineering contract

gate. It verifies the release target, manifest schema, hash inputs,

package-layout scripts, normal-path audit, release-root/compat checks, and

release docs without building a release.

make ecosystem-source-check is the lightweight final-maturity contract gate.

It verifies the ecosystem gate, roadmap, documentation audit, normal-path audit,

and compatibility matrix without running the heavy gate.

make release-schema-check checks that release/manifest-schema.tsv covers

every field emitted by make release-metadata.

make release-helper-list-check checks that Makefile release helper hashes and

the manifest validation tests use release/test-helpers.txt, and that every

listed helper exists in the source tree.

make release-package-layout-check checks that release packaging includes the

installable docs, examples, tests, test/tool helpers, ABI, compatibility,

runtime, compiler source, and release schema files.

make release-compat-check checks manifest schema, every required manifest

field, release compiler/stage artifact presence, and hashes.

make compatibility-matrix-check checks the ABI/object compatibility matrix in

compat/abi-matrix.tsv, verifies every row has the expected schema, and rejects

rows that name missing Makefile gates. Release compatibility work must keep

both gates in agreement.

Public Docs And Site Compatibility

Public documentation compatibility is part of release compatibility when a

release changes documented behavior, public package names, public routes, or

domain behavior.

Release-blocking public docs gates:


make public-docs-milestone-9-check
make public-docs-milestone-10-check
make public-docs-drift-check

These gates verify route metadata, static search, redirect/archive behavior,

acceptance evidence, release checklist integration, bounded drift detection, and

completion evidence. Remote publication remains a manual release step and must

record rollback backups and public smoke results under deploy/static-sites/.

As later milestones land, the same gate must add object/linker/optimizer and

independent-compiler compatibility cases instead of creating separate release

promises.

Public Compatibility Note

Public documentation must distinguish source compatibility, package

compatibility, ABI compatibility, object/archive compatibility, runtime

compatibility, and site/registry compatibility.

Migration from jmp0x1b/lang and jmp0x1b/libs follows

docs/migration-policy.html. Old names, commands, syntax, or package ids are not

current 0x0 behavior unless this repository has matching implementation

evidence.