v0.7.0
⚠ Breaking changes
- stdlib:
countis cardinality everywhere; the popcount iscount_true
Features
- census: cover the name-dispatched surface, and the two defects it found
- census: a width-door census, and the three defects it found on first run
- check: warn when a
u64's width is discarded into adynposition (E0078) - iter: the eight terminals the eager list had and the lazy pipeline did not
- http: request signing and verification (RFC 9421)
- http: a per-client cookie jar
- http: follow redirects above the seam, and let a client configure it
- stdlib: declare the traits five native types already honor
- traits: a standalone
implmay implement any built-in trait, and a type's owncompareorders it everywhere - collections: one declared ordering behind sorted, min and max
- check:
min/maxorder byComparable, so a generic body can reach them - reflect: describe immutable closure-valued top-level bindings
- stdlib: a vector kernel bundle does geometry at every width
- types: range-checked narrowing conversions —
checked_to_u8(): ?u8 - fmt: the safety gate compares programs, not a rendering of them
- host: a cancellation reaches work blocked outside the interpreter
- cli: the three registry/add/publish doors that existed on one side only
- lang: a field can leave the serialized shape
- lang: a
classdecodes from JSON - lang: name every declared conversion after its source
- lang: one
Fromconversion per source type, resolved statically - lang:
Selfnames the type in hand, in any type body - manifest: a registry scope takes what an identity's company half takes
- manifest:
[package] rootdeclares the segment modules derive under - traits: a
.noetrait declares type parameters, not associated types - modules:
use _self_.ximports this package's own modules - init: cut the scaffolded SYNTAX.md 8.6x and rebalance AGENTS.md
- cli: add
noeta docs— search and read the embedded guide offline
Fixes
- width: compute at the element width, not the erased word, on a boxed list
- bulk: compare
abs/clampat the element width, not the erased word - stdlib: join a
u64under the render hint, on both engines - reductions: fold
checked_sumat the element width, not the erased word - json: a
Map<u64, _>serializes in its key order, not its storage order - iter: a lazy bool reduction gives the eager one's refusal, not a second wording
- runtime: a native type that declares Comparable actually compares
- check: an unknown type says what you meant, and stops rendering as a riddle
- http: a stream carries the client's cookies and its signature
- otel: cap each instrument's attribute-set map at the OTel cardinality limit
- conformance: make the async corpus true on a real host, not only under the sandbox clock
- check: a member binding on a synthesized built-in says to drop it
- registry: resolve every stringly-typed cross-reference at assembly
- check: a refused
@derivenames the routes that would work - conformance: find wasmtime where its installer puts it
- hints: compose a render slot for an instantiation a generic body builds
- playground: the smoke fixture propagates its
?, as its type says - conformance: every oracle sweeps the same corpus, in the same program
- conformance: check every
// expect:header on both engines - hints: resolve a render hint where there is no call frame
- check: pin a generic call's type argument through a literal and a composite
- check: a collection literal argument must not be typed against an erased parameter
- stdlib: one message when a
min/maxcannot order its elements - check: refuse
.as<iN>()/.as<f64>()— a width is not a narrowing target - bundle: pin the ordering-resolution op in the layout digest
- hints: carry a
u64's signedness through a type parameter - conformance: a
--filethat matches nothing is a typo, not a pass - compiler: a hoisted load must not drag its line entry out of the loop
- ext-abi: refuse to assemble a malformed
push_hint_argsdeclaration - display: the REPL echoes a
u64past bit 63 unsigned - cli: the AOT compose tests are jit-shape tests, and now say so
- json: a LiveView binding pushes its
u64unsigned, from the type it was bound under - cli: the Cranelift-free build compiles no AOT composition, and a lint now says so
- rc: destroy an owned argument temporary after the call
- display: render a
@packedmap key'su64field unsigned, at every depth - bench: decide tier-1 coverage on instructions retired, never print an empty decline list
- vm: stop
-xand!xstranding a heap-boxedint - order: order a
u64past bit 63 unsigned at every door a program sees - json: write a
u64past bit 63 unsigned at every JSON door, and read it back - display: render a
u64past bit 63 unsigned at every display door - pm: name the dependency a publish refuses, and the scope member it lives in
- ide: a resolved bare variant pattern is not a local binding
- lexer: four infix operators that could not lead a continued line
- pm: a tree may not declare a built-in scope as its own identity
- lower: a native type named through its module resolves to its identity
- reflect:
fields_ofreports what the call site could have read - cli: a directory walk stops at a nested package
- conformance: link every case, and gate the wiki's toml blocks
- test-temp: make the dead-address tests dead by construction
- ide: gate guide retrieval on a relevance set, and fix what it caught
Performance
- registry: keep the cross-reference sweep off the heap, and re-baseline startup
- re-record the baseline —
<on two ints no longer round-trips through f64 - compiler: hold a top-level binding in the entry frame's registers
- compiler: skip the argument drop for a provably destructor-free temporary
- compiler: release the stale global read at an in-place self-update
- re-baseline —
noeta docscosts ~0.8% of startup, and buys back 300 KB - re-record the instructions-retired baseline on this machine
Documentation
- backlog: close the bulk compare-vs-compute width row
- backlog: close the two rows fixed today but left open
- backlog: close the ignored-compare row — stale on every claim
- backlog: close the unresolved-annotation cascade row
- backlog: file the unresolved-annotation diagnostic cascade
- edge: a redirect target is a host the allowlist has to name
- backlog: close the HTTP client residuals row
- agents: ablate every test, and commit before you do
- traits: retire "derivable" where it meant "has a recipe"
- plans: file the render-hint arc's one open position, refresh the perf frontier
- agents: name the checks that exist only in CI
- backlog: close the body-built composite row
- hints: state what a
u64through a type parameter reads - reflect: point at
construct's real heading - agents: two process-hygiene edges, and what three concurrent gates cost
- agents: name the two linker failures that are really resource exhaustion
- backlog: rank the performance list by measurement, not by hope
- bench: re-measure the cross-language field at 57091de
- backlog: strike the two rows that shipped in the para repos
- backlog: re-point the CRDT row at para/p2p, where every CRDT lives
- plans: every backlog row states what would start it, or is struck
- fix: point the
Selfcross-reference at an anchor that exists - arc: the
Fromgate had not fired the way this audit claimed - backlog: the
Fromrow describes the rule that shipped - codify the docs-style rule in AGENTS.md, and gate its mechanical half
- describe what the language is, not what it was
- cli: say that
noeta serveexpects TLS to be terminated upstream - agents: trim AGENTS.md to the non-derivable half; add CLAUDE.md
Refactoring
- check: name the render-slot feed map and fold its owner into the edge
- vm: land the render-hint runtime state in its own module
- ext-abi: one ABI bump for the render-hint seam, not three
- ext-abi: a kept render hint is a
PushHint, and can only serialize - ext-abi: move the render hint beside the encoder, MapKey and value tree it describes
- compiler: one worker reserves a type's method prototypes
CI & build
- docs: run the docs style gate in CI, not only at the merge gate
Housekeeping
- async: rendezvous with the isolate instead of gating it on a timer
- release: bump workspace version to 0.7.0
- upgrade: wait out the ETXTBSY window before exec'ing the copied binary
- docs-gate: collapse the toolchain-pin condition into one
if - docs: gate that a copied dependency snippet names this release
- drop two scratch probe files swept in by
git add -A - check: assert what E0078 must NOT say, and put its variant on the tail
- docs: report the margin of every top-1 retrieval decision
- check: pin the help that names
count_true - http: drive both of the async descriptor's bodies, not only the fallback
- otel: pin what the overflow bucket preserves, per instrument kind
- conformance: make the unordered-Duration case actually discriminating
- traits: pin that a
via:derive's order reaches every observed door too - conformance: drive the identity-order case through the composed channel
- fuzz: drop the reduction-element reason the census can no longer see
- reflect: pin parameter attributes on a described value binding
- gitignore: ignore gate run logs
- drop a gate run log swept in by
git add -A - oracle: catch a destructor that never ran
Other
- audit the gates, and correct the arc's counts
- open a burndown arc against the un-gated eleven
- close five rows that had shipped, and delete three finished plans
Full changelog: v0.6.0...v0.7.0