Coax changelog

Coax project · Read or copy the Markdown · Canonical source

The compiler's recorded releases, newest first, including patch releases. Each commit identifies the version's introduction on main; explicitly labelled follow-ups landed while that version was still current. Dates use the repository's America/Chicago calendar.

Reconstructed from the version transitions in src/main.cpp (through 0.13.0) and release.coax (from 0.14.0), reviewed against their changes and retained evidence. The initial reconstruction covers 0.37.0 to 0.1.0 through 99f0d403f2b335654a54e1a60611f8c8251b3776. These are compiler versions, separate from inventory, wire and protocol schema versions. STATUS.md describes current support; RELEASE.md describes the release workflow.

release.coax

99f0d403f2b335654a54e1a60611f8c8251b3776

STATUS.md

RELEASE.md

0.39.0 — 2026-10-31

Commit: 26a9355c10e1471454f8c18b3da5cf788f70daef

26a9355c10e1471454f8c18b3da5cf788f70daef

- coax checks-c FILE [--only SUBSTR] [-o checks.c] emits verification-only C11 from the compiler's checked zero-argument #test procedures and their admitted callees. A versioned C table preserves check ordinals, byte-length names and original physical locations. It emits no product main.

- Coax owns eligibility, selection and closure; ordinary authority admission remains mandatory. Check emission requires checked arithmetic and refuses selected #forall, host effects and unsupported representation/lifetime forms. Ordinary product C emission retains its existing behavior.

- This is C emission, not native execution evidence. Bounded execution, finite-domain properties and broader semantic/consumer qualification remain separate work.

0.38.0 — 2026-10-31

Commit: 0b82a1587a56a4eed8ead255dd32300efe49fc30

0b82a1587a56a4eed8ead255dd32300efe49fc30

- #foreign parameters may be borrowed views of integers, floats and bool ([] u8, [] s16, [] f32, [] bool, ...), passed as the {data, count} struct #export_c uses and declared in the generated header. The host reads and writes the view during the call only: no retention, ownership transfer or asynchronous use; views may overlap and an empty view may have a null data. Views of strings, structs or views, fixed arrays and view results stay E0376.

- The entropy bridge gains cxrand_draw(out, n): one call writes the caller's view; relay_conn.coax and cdp.coax use it instead of n + 1 per-byte calls.

- Same-version follow-up: place op= value stages the place's address when the place's own indexes are sequenced through temporaries (c[a[i-1]*256+a[i]] += 1). Spelling it twice assigned those temporaries twice in one C expression, which C leaves undefined and clang rejects with -Wunsequenced. tests/pass/compound_view covers it.

0.37.0 — 2026-10-31

Commit: 6132cbaf0a0dddccbb1d3d9ae32a9659c5bf6644

6132cbaf0a0dddccbb1d3d9ae32a9659c5bf6644

- Generic structs: Pair :: struct($T) and Box :: struct($T, $N), explicit type applications, field-based literal deduction and generic-struct procedure parameters. Concrete instances receive their own layout, defaults, evaluation and C emission within the shared 256-instance budget.

- Bindings require fixed storage; views and aggregates containing views refuse.

- Same-version follow-ups: 3ea326018c added selected authored Verse/Psionic plain #test comparisons between the evaluator and checked native -O0/-O2 execution. This tooling subset does not qualify native #forall or replace authority gates. 99f0d403f2 reconciled both books with delivered capabilities and added reviewed prose, feature and evidence drift checks.

3ea326018c

99f0d403f2

- The frozen four-task authoring corpus also landed under this version, with immutable oracle/start identities and recorded repair, elapsed-time and edit measurements.

frozen four-task authoring corpus

0.36.0 — 2026-10-31

Commit: 03d153e89a947797c50330c13f48c1984fa53711

03d153e89a947797c50330c13f48c1984fa53711

- $N value parameters deduce fixed-array lengths in [$N] T; generic element types work in [4] $T and [$N] $T.

- Repeated bindings must agree on length; wrong argument kinds and names used as both type and length parameters refuse. Corrected generated error-reference headings for E06xx/E07xx.

0.35.0 — 2026-10-31

Commit: b75820e208a781453c41af45bf85ed95023e548a

b75820e208a781453c41af45bf85ed95023e548a

- Callable generic procedures deduce $T from concrete argument types and borrowed-view element types. Each procedure/binding has one checked concrete instance, with a 256-instance cap.

- Instances participate in #run, authored checks, authority coverage, mutation and native emission; timing reports include instance counts and generated bytes. Constraints and value parameters were still pending.

- Same-version follow-up: ffdbded841 added coax wgsl FILE --functions, a Coax WGSL emitter using the checked tree. Web builds adopted it and removed the Python WGSL translator.

ffdbded841

0.34.0 — 2026-10-31

Commit: 1cc85cf74f0f85aad369aee59cd151950e0f2c84

1cc85cf74f0f85aad369aee59cd151950e0f2c84

- $T procedure signatures gained lexing, parsing and placeholder type checking, with explicit refusals for unbound/result-only parameters, unsupported nesting, recursion, C exports and placeholder layout queries.

- Generic calls still refused with E0397 and templates were omitted from C emission. Callable instantiation arrived in 0.35.0.

0.33.0 — 2026-10-31

Commit: 6da88715c00baaf7848942c1d074e953de6df01c

6da88715c00baaf7848942c1d074e953de6df01c

- coax test/mutate --evidence FILE writes coax.evidence.v1, binding individual checks, quantified checks, authority coverage and mutation claims to sources, compiler identity, evaluator target, profile, selection and budgets.

- Outcomes distinguish passed, counterexample, inconclusive, infrastructure-error and not-checked; the worst outcome controls the verdict.

- Same-version follow-ups added #flat GPU varyings, Coax DEFLATE/zlib/PNG decoding and baseline JPEG decoding.

#flat GPU varyings

Coax DEFLATE/zlib/PNG decoding

baseline JPEG decoding

0.32.0 — 2026-10-31

Commit: e132ce1f3465d74e97ec3304e280e9713fd67e6a

e132ce1f3465d74e97ec3304e280e9713fd67e6a

- coax deps --lowering exposes coax.lowering.v1: the checked-effect ordering decisions used by C emission, with declaration identities and source spans.

- The differential reducer minimizes a seeded reversed-order lowering defect. Added E0705 documentation and grammar coverage for delivered module syntax.

- Same-version follow-up 950b375e38 fixed SPIR-V local arrays borrowed through views to use Private storage.

950b375e38

0.31.0 — 2026-10-31

Commit: 6d7af890ec90eed4b977b856e6de9a191670be9a

6d7af890ec90eed4b977b856e6de9a191670be9a

- The checked graph classifies expression effects; native C stages two trapping operands and trapping destination/value evaluation in source order.

- Qualified first-trap order at -O0 and -O2, caller-visible writes, exactly-once compound places and reverse cleanup for the supported subset. Lowering inspection followed in 0.32.0.

0.30.0 — 2026-10-31

Commit: cbfe5dbc50530d91d4a1dd0520411815aad1bc40

cbfe5dbc50530d91d4a1dd0520411815aad1bc40

- #export NAME, ...; seals a logical module: other modules can access only its listed declarations. Member source units share access while keeping their own checks and authority coverage. Module inventories report exports.

- Export lists name owned declarations only; reexports refuse. Verse HUD became the first sealed production module.

0.29.0 — 2026-10-31

Commit: 105acc70f0abbb17d220fe36ada8c2d8ea1c5309

105acc70f0abbb17d220fe36ada8c2d8ea1c5309

- Dependency inventories report exact authored declaration byte ranges, lines and content hashes, or generated protobuf-directive origins.

- Added the typed native-lp64 layout record, checked against independent C size/alignment observations. coax deps and coax layout reject other target names rather than implying unsupported layouts.

0.28.0 — 2026-10-31

Commit: e6437772c29b9554a47687fd3f78aaabf42b391d

e6437772c29b9554a47687fd3f78aaabf42b391d

- #load "FILE.coax" as NAME; adds module-scoped lookup and qualified types, literals, procedures, constants and enum members. Ambiguity is diagnosed at use; C emission qualifies private collisions and refuses incompatible public symbol collisions.

- Same-version follow-up 926cae2bfe added checked-tree SPIR-V vertex/fragment lowering for the bounded graphics subset, including vectors, records, arrays, views, textures and samplers.

926cae2bfe

0.27.0 — 2026-10-31

Commit: 427ce9d4bed6bb2a609db728f9d283becccd4ebc

427ce9d4bed6bb2a609db728f9d283becccd4ebc

- coax deps --modules emits coax.modules.v1, with conservative module-content and dependency revisions separate from nominal identities and source hashes. These revisions do not constitute a complete cache key.

- Shared Everglade guard types became a production module consumer.

0.26.0 — 2026-10-31

Commit: 9150d202ad932fc4a94254114b6d032468ba1e41

9150d202ad932fc4a94254114b6d032468ba1e41

- #module "a.b"; establishes logical ownership across loaded member units. Declarations gain stable nominal coax.decl.v1:MODULE:KIND:NAME identities.

- coax deps --declarations reports owners, identities and checked references. This release established identity; lookup remained flat until 0.28.0.

0.25.0 — 2026-10-30

Commit: 48fa03aa887cf6c30b9e4d8a28e0e50f0289d1c9

48fa03aa887cf6c30b9e4d8a28e0e50f0289d1c9

- Independent --arithmetic checked|wrapping, --opt 0|1|2|3, --build-profile development|release and debug-information selections, while preserving legacy defaults and --release behavior.

- --profile-report FILE records the resolved profile; mutation receipts bind it. Compile-time arithmetic and authority checks retain their existing rules.

- Same-version follow-ups added coax test --only, --list, per-check progress and separate check-storage limits, checked Coax scalar-to-SPIR-V emission and SPIR-V fill/stroke passes.

coax test --only, --list, per-check progress and separate check-storage limits

checked Coax scalar-to-SPIR-V emission

SPIR-V fill/stroke passes

- A same-version provenance-verified compiler cache added reusable release builds, builder locking and compiler-input snapshots; COAX_BUILD_FRESH=1 retains a fresh-bootstrap path.

provenance-verified compiler cache

0.24.0 — 2026-10-29

Commit: 3dbc6292fc7dd34237d84b142b00920ba4629a4d

3dbc6292fc7dd34237d84b142b00920ba4629a4d

- CUDA warp kernels: for lane: 0..<32, per-lane register arrays and cu_mma_bf16_16x8x16, with a Coax CPU meaning and CUDA tensor-core lowering.

- Same-version follow-ups added coax metal-compute, including the APPLE-FF-v1 float-float profile, and bounded group kernels with owned shared-memory writes, barriers and Apple matrix primitives. General atomics remained unsupported.

coax metal-compute

bounded group kernels

- Other same-version additions: coax mutate --root-only retains all baseline checks while limiting mutation sites to the entry source; composable native headers share compatible ABI declarations and reject incompatible public C spellings.

coax mutate --root-only

composable native headers

- Shared-library/tooling follow-ups added native relay/WebSocket support, TLS socket effects, JSON node parsing/writing, base64, filesystem/process/argv adapters and a headless Chrome DevTools client. The source-unit ceiling rose from 64 to 128.

native relay/WebSocket support

TLS socket effects

JSON node parsing/writing

headless Chrome DevTools client

source-unit ceiling rose from 64 to 128

0.23.0 — 2026-10-29

Commit: 666bae043c9bd800d15ed0e7e60912fb8866fa7f

666bae043c9bd800d15ed0e7e60912fb8866fa7f

- coax cuda emits the admitted compute subset as CUDA C for NVRTC: numeric views, fixed scalar arrays and reachable procedures rooted at exported item kernels. Admission policy is checked Coax; refusals use E0700/E0701.

- Psionic's BF16 projection exercised the emitted code on an RTX 4080. The catalogue also recorded tested Linux x86-64/GCC host support with explicit qualification limits.

- Same-version follow-up c5681dbb57 added parallel mutation workers, --jobs, --shard I/N and --merge, preserving the serial report for the same scope.

c5681dbb57

0.22.0 — 2026-10-29

Commit: 041464193d180e49cd0e71bf9a14ff1b77d2c38a

041464193d180e49cd0e71bf9a14ff1b77d2c38a

- Compiler provenance records bind declared build inputs, generated artifacts, toolchain/environment identity and the compiler binary. Bootstrap builds from a private input snapshot; site releases verify consistency before staging.

- Unrelated repository changes can reuse the verified compiler. The record is a consistency check, not a signature or compiler-correctness proof.

0.21.0 — 2026-10-29

Commit: 73c6b07d1bf8c926d51a89dd3447dc7ff63e648a

73c6b07d1bf8c926d51a89dd3447dc7ff63e648a

- An independent aggregate-traversal meter bounds copying, assignment, view detection and initialization at 134,217,728 visits per frontend evaluation or individual check, refusing with E0400.

- Dependency/timing reports expose the limit and consumed work. Existing expression-step budgets remain separate; this does not bound total process memory or wall time.

0.20.0 — 2026-10-28

Commit: 59df8f79a361a1dde9c7d7f8448b3594895d2e81

59df8f79a361a1dde9c7d7f8448b3594895d2e81

- Interpreted byte-view-to-string casts use owned immutable snapshots, releasing temporary owners while retaining frozen values and shared slices correctly.

- Separate live-byte and materialization-work budgets refuse exhaustion with E0400; timing reports expose owned-string peaks. Allocation failures recover cleanly during freezing and default evaluation.

0.19.0 — 2026-10-28

Commit: 17c2656677d168bb4a0d037608dc425b7e531aad

17c2656677d168bb4a0d037608dc425b7e531aad

- Conservative mutation scheduling records baseline procedure execution and runs affected isolated checks per mutant, while retaining the complete mutant set and falling back to all checks for shared or unknown state.

- --mutation-reference, --mutation-stats and --mutation-trace expose the reference runner and scheduling evidence. Bounded evaluation failures restore constant state before later checks.

0.18.2 — 2026-10-28

Commit: 0c7ce1d9c26aa0105e4a16b460e35cb00ad87ef0

0c7ce1d9c26aa0105e4a16b460e35cb00ad87ef0

- Raised the compile-time aggregate-slot ceiling from 1,048,576 to 1,572,864 to admit existing Nostr JSON boundary checks. Kept the work and container limits unchanged and retained boundary/refusal checks for the revised ceiling.

0.18.1 — 2026-10-28

Commit: d5fc7e58328986e6e16a5b62609fc181d5c439b7

d5fc7e58328986e6e16a5b62609fc181d5c439b7

- Iterative aggregate release prevents deep retained-view chains from exhausting the host stack during cleanup.

- Clarified that timing counters cover frontend evaluation before authority checks, and documented the traversal work still outside the initial meter.

0.18.0 — 2026-10-28

Commit: bb65b83271523eaec0b015a2b5241a3d211e675a

bb65b83271523eaec0b015a2b5241a3d211e675a

- --run-steps N configures bounded shared compile-time work, with a 100,000-step default and 250,000,000 maximum. Invalid inputs refuse before evaluation.

- Independent live aggregate-slot/container limits, last-owner accounting, cycle cleanup, dependency inventory fields and peak-storage timing counters. These frontend limits are separate from coax test --steps.

0.17.0 — 2026-10-28

Commit: ed17d7cd26b591a4aa8cc2abcb50c2528ae72e37

ed17d7cd26b591a4aa8cc2abcb50c2528ae72e37

- #if BUILD_DEBUG { ... } else { ... } selects struct fields and statement blocks. Both branches parse; only the selected nodes participate in checking, layout, reflection, compile-time execution, authority reachability and emission.

- The selector follows the build profile and can change native layout. General conditions, conditional imports and top-level conditional declarations remained unsupported.

0.16.0 — 2026-10-28

Commit: 6acc1f76936b09775d83d172ef48ca968d2de72b

6acc1f76936b09775d83d172ef48ca968d2de72b

- mul_wide(u64, u64) returns the exact two-word product as CoaxU64Product.{hi, lo}.

- Matching checked frontend rules and compile-time evaluation, native 128-bit lowering and portable wasm32 lowering, with independent arithmetic evidence.

0.15.0 — 2026-10-28

Commit: 2c570ddb9718a3fcd51a75d1405d0e66c27e267d

2c570ddb9718a3fcd51a75d1405d0e66c27e267d

- Explicit u32/u64 modular arithmetic: add_wrap, sub_wrap and mul_wrap. rotl and rotr reduce the rotation count modulo the word width.

- Matching compile-time, checked native C and wasm32 semantics preserve argument order and refuse mismatched operand widths.

0.14.0 — 2026-10-28

Commit: 3ea7287819c37b8a0c903f249f23f99a7ce831db

3ea7287819c37b8a0c903f249f23f99a7ce831db

- A single checked Coax release catalogue generates CLI metadata, JSON inventory, feature tables and managed book/current-version regions.

- Compiler bootstrap, app generation and book publication refuse source, snapshot or binary drift. Release, inventory-schema and historical feature versions remain separate.

0.13.0 — 2026-10-28

Commit: 4830ad9c30ef749d12c75cb57e35ea7ecff2ff2f

4830ad9c30ef749d12c75cb57e35ea7ecff2ff2f

- Original-source native line mapping, --debug-info, hashed --source-map artifacts and source-aware LLDB presentation. --timings reports compiler phases; real engine/Metal harnesses measure native execution cost.

- Same-version follow-ups added E0383 local-array borrow-return diagnostics through local aliases, assignments, subranges, casts and conditionals, and fixed C lvalues for indexed places containing calls. Interprocedural and aggregate-contained lifetimes remained unchecked.

E0383 local-array borrow-return diagnostics

fixed C lvalues for indexed places containing calls

- Further follow-ups added value_barrier(u32|u64), an optimizer-opaque identity with scoped native/wasm evidence, and bounded evaluator/native differential generation and reduction. The latter landed before the 0.14.0 bump, although the later catalogue records its introduction as 0.14.0.

value_barrier(u32|u64)

bounded evaluator/native differential generation and reduction

0.12.0 — 2026-10-28

Commit: 86ec81de01f0ebf540b070f078643d7e68c45d68

86ec81de01f0ebf540b070f078643d7e68c45d68

- CPU layout reflection: schema-1 type_info, field_info and enum_info produce ordinary values, with compile-time tables and bounded selectors.

- Haunted House vertex admission consumed reflected layout. Support was scoped to the bootstrap LP64 CPU layout.

0.11.0 — 2026-10-28

Commit: 3837e89ed5948bc72fea70efdb713f00cdc051a4

3837e89ed5948bc72fea70efdb713f00cdc051a4

- Checked #load source graphs: canonical once-only file identity, cycle/budget admission, physical-unit syntax validation and source-relative proto imports.

- Original-file diagnostics/traps, per-file authority and private-library verification. coax deps inventories source and descriptor inputs.

0.10.0 — 2026-10-28

Commit: 1e0ce7636caf5a97876fca98fc02472cd6bf328c

1e0ce7636caf5a97876fca98fc02472cd6bf328c

- Semantic checking moved into checked Coax: names, scopes, types, layout, numeric folding/range/IEEE decisions, calls, control flow, checks and Metal admission.

- Added the explicit generated checker seed, bounded indexed graph and exact bootstrap regeneration. C++ remained the evaluator, emitter and storage bridge.

0.9.0 — 2026-10-28

Commit: d7c3a1e9d3011dcd26f35c1930cf3dcb3dc3e4bd

d7c3a1e9d3011dcd26f35c1930cf3dcb3dc3e4bd

- Parsing and source proto-import admission moved into checked Coax: grammar, precedence, diagnostics and a bounded indexed syntax tree.

- Explicit parser bootstrap seed and fixed-point regeneration; the native bridge transports tokens and reconstructs syntax-tree storage.

0.8.0 — 2026-10-27

Commit: b374c75fae5d131df3e30a9324e762f27d3c04c4

b374c75fae5d131df3e30a9324e762f27d3c04c4

- Lexing, token recovery/diagnostics and exact decimal-to-binary64 conversion moved into checked Coax.

- Explicit generated lexer seed, authority/mutation checks and exact bootstrap regeneration replaced native lexical/numeric-conversion decisions.

0.7.1 — 2026-10-27

Commit: 1e0e1390632653183dd4fbe6860c3bbcf2ee7bc6

1e0e1390632653183dd4fbe6860c3bbcf2ee7bc6

- Streaming SHA-256, hexadecimal encoding, runtime-boundary extraction and importer provenance/source-envelope assembly moved into checked fingerprint.coax; native code supplies I/O, allocation and copying.

- Same-version follow-up 03a379cad6 guarded scalar-view typedefs so generated headers from two libraries coexist.

03a379cad6

0.7.0 — 2026-10-27

Commit: 76b0837c7ca9c45ec30e1155ad3e724000dffea7

76b0837c7ca9c45ec30e1155ad3e724000dffea7

- Descriptor parsing, validation, option/name/dependency resolution and codec generation moved into authority-checked Coax.

- Generated C11 importer bootstrap and exact regeneration replaced the native importer implementation, with no old-importer fallback.

0.6.1 — 2026-10-27

Commit: e190dc4ac18ba7e917b2589d7981632ea2ea6f36

e190dc4ac18ba7e917b2589d7981632ea2ea6f36

- Restored authoritative checked Coax wire-runtime sources, separating the pure policy core from native address wrappers and gating publication on authority checks and mutation.

- Separated compatibility evidence from independent interoperability evidence; fixed evaluator field access after a failed struct expression.

0.6.0 — 2026-10-27

Commit: 9f5a2a87fcb1bc02026a089a1dd007f465f09dac

9f5a2a87fcb1bc02026a089a1dd007f465f09dac

- Descriptor importing moved from an external Python helper into the native C++20 compiler, with an embedded wire runtime and provenance fingerprints. Ordinary compilation/imports became Python-free while preserving generated source bytes.

- Atomic compiler publication and an explicit Mac bootstrap target.

0.5.1 — 2026-10-27

Commit: c103b0852d5846ccfdb2e3270e9e6c7b3ba9836b

c103b0852d5846ccfdb2e3270e9e6c7b3ba9836b

- Authority coverage requires actual check-time procedure execution. Empty checks/domains, uncovered procedures and no reachable mutation sites can no longer silently pass.

- Tightened equivalent-marker parsing and expanded exhaustive wire-boundary checks and descriptor audit coverage.

0.5.0 — 2026-10-27

Commit: 902a131bb38017f3f96ff234984cc048807c8865

902a131bb38017f3f96ff234984cc048807c8865

- Check-first #test, finite #forall, #authority, coax test and coax mutate, with bounded check budgets and counterexamples.

- Always-on statement #assert and build-time authority checks.

0.4.0 — 2026-10-27

Commit: f9e377bad6eaf13697cdbe8e5b7bdfb5d8cdb863

f9e377bad6eaf13697cdbe8e5b7bdfb5d8cdb863

- #import_proto accepts selected proto3 descriptor closures and generates borrowed typed views/accessors and caller-buffer codecs, including presence, oneof and repeated fields, validation and bounds checks.

- Import-time tooling still required Python; generated runtime code did not. This was the first descriptor-import release, preceding the later Coax-native frontend work recorded by the current catalogue.

0.3.0 — 2026-10-27

Commit: 6d49ae58fc6590aaff6d3a770c6f554d741c6cd0

6d49ae58fc6590aaff6d3a770c6f554d741c6cd0

- Fixed-width integers/floats, untyped constants/literals, character and bit operations, checked/truncating casts, defaulted structs/enums, fixed arrays and borrowed views.

- Collection loops, break/continue, defer, ifx, size_of, ordered operands, aggregate #run, C exports and lib/header/layout/explain/JSON tools, plus native-host demos and an expanded runnable book.

- The native-home branch merge reconciled a parallel 0.3.0 bump and added scalar #foreign, suffixed floats, numeric conversions, math/byte intrinsics, c --library --header and the restricted coax metal emitter.

native-home branch merge

0.2.0 — 2026-10-27

Commit: 85e7706684949f54a75f9094e8a5d6a99637ec02

85e7706684949f54a75f9094e8a5d6a99637ec02

- Bounded scalar #run, compile-time #assert, immutable top-level constants with forward references, type_name and coax check.

- Formal bootstrap grammar and compile-time diagnostics/tests, imported from aethyr-cpp revision 040329b, retaining the missing-semicolon location fix.

0.1.0 — 2026-10-27

Commit: 6329f3e0b3cf6fb49c0ae0686241097235f6607b

6329f3e0b3cf6fb49c0ae0686241097235f6607b

- Initial compiler imported into this repository: a C++20 frontend emitting self-contained C11, procedures, scalar int/bool/string, locals and control flow.

- Checked development arithmetic, wrapping release arithmetic, checked print, stable diagnostics, run/build/c/version, the language specification and first book chapters.