v0.4.1
Features
- perf: gate on instructions retired, because wall-clock cannot gate here
Fixes
- editors: re-record the vscode test-workspace lock hash it had drifted from
- perf: the tier-1 state probe must count OSR windows, or it reports native code as none
- loader: say why the retry's path derivation cannot report anything
- ext-abi: re-point the constraint-coverage anchors the lazy seams moved
- perf: the declined-op list never reached the report
- perf: name the fix that matches the cause when perf cannot count
- loader: the walk-coverage gate has an opinion about the reflection node
- host: a retry backoff has to reach the door that actually waits
Performance
- gate: re-baseline after the list_len inline
- value: list_len is inline(always) -- it is Op::Index's bounds check
- tools: attribute a binary's load-time relocations to the crate that owns them
- gate: re-baseline after region-scoped OSR compilation
- db: the workspace package map is built once, not once per source
- parser: one
${…}hole grammar per parse, not one per hole - jit: a prototype collects one OSR window per hot loop, not one per prototype
- gate: re-baseline after the MCP corpus blob
- mcp: the embedded corpus costs two relocations, not one per file
- jit: a back-edge promotion compiles the loop's window, not the whole prototype
- gate: re-baseline after the per-parse grammar build
- gate: re-baseline after the clap fast path
- parser: the grammar is built once per parse, not once per site
- cli: the clap command tree is built once, and a flagless run never builds it
- gate: re-baseline after outlining the cold opcode arms
- vm: outline
Op::CallMethod's four receiver-dispatching routes - vm: outline the cold opcode arms so the hot ones allocate registers better
- gate: re-baseline after the lazy native-reflection seam
- gate: re-baseline after the tier-1 and heap work, and move the map row's band with its engine
- loader: a script no longer parses the neighbours it cannot name
- value: the map hasher mixes a word per round, not a byte
- check: a native type's built-in traits answer from the registry, on the question
- reflection: a native declaration resolves on demand, not into every artifact
- jit: the string/map loops sustain tier 1
- heap: a leaf is never registered with the cycle collector
- vm: set_reg inlines again — the dispatch loop outgrew LLVM's budget
Documentation
- release: push the branch, wait for green, then tag
- db: why workspace_editions is not memoized, and what would change that
- jit: the forced sweep offers every loop header, not just the first
- architecture: name the native-reflection seam in the crate map
- ast,loader: the lazy native-reflection seam and the sibling-parse deferral
- RELEASE.md — what the tag automates, and what it does not
Refactoring
- reflect: tidy the collapsed dispatches, and record where it stopped
- reflect: thirteen intrinsics become one node with a fieldless kind
Housekeeping
- release: bump workspace version to 0.4.1
- jit: a runtime ablation mask, so a regression can be attributed without a build per variant
- perf: remove the temporary phase probes
- vm: the two tier-1 fixtures that Stringify/LoadConst made stale
- cli: the declined-loop fixture uses a list method, not a map loop
- perf: drop a no-op type assertion left in the executable-bit test
- perf: rustfmt the ratchet manifest test; complete the exit-2 list
- os: the sandbox's model of try_write, held to the real host
- reflect: the census that closes the class
Full changelog: v0.4.0...v0.4.1