perf(runtime): prepare refreshable registry address index for #10110 - #10251
proggeramlug wants to merge 2 commits into
Conversation
Refs #10110. Adapt the reusable index and population/churn witnesses from proggeramlug#1 for main. Scale all three hash slices with the per-owner width and cover concurrent refreshes and address reuse. The canonical-wrapper owner is still on the campaign branch; document its required integration without closing the issue.
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Advanced Run ID: 📒 Files selected for processing (3)
Included review availability: Your plan provides up to 8 included reviews per hour; 0 remain after this review. 📝 WalkthroughWalkthroughThe runtime now supports const-generic registry address filters and adds ChangesRegistry address indexing
Priority: ⬇️ Low Estimated code review effort: 4 (Complex) | ~45 minutes Change: Bug fix Sequence Diagram(s)sequenceDiagram
participant Caller
participant RegistryAddrIndex
participant LiveAddressSet
participant RegistryAddrFilter
Caller->>RegistryAddrIndex: admit or retire address
RegistryAddrIndex->>LiveAddressSet: update live set
RegistryAddrIndex->>RegistryAddrFilter: update or rebuild bits
RegistryAddrFilter-->>Caller: answer may_contain
Merge Risk: ⚪ Minimal · up to The configurable filter and address index are mergeable as a prerequisite; integration with the future canonical-wrapper subsystem remains separate work. 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
Full details: Docstring CoverageExplanation Docstring coverage is 75.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 36 functions across 2 files. (1 skipped: 1 unsupported.)
✨ Finishing Touches 💡 2📝 Generate docstrings 💡
🛠️ Fix failing CI checks 💡
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Summary
Prepare the reusable address-index fix from #10110 on
main. A 1,024-bit monotone filter loses selectivity at the reported 644-wrapper population and accumulates retired addresses indefinitely.RegistryAddrIndexsupports a larger per-owner filter and rebuilds it from the live set while keeping probes lock-free.This is a prerequisite for the canonical-wrapper integration. At base
eb13fa188,native_handle/canonical.rsis absent and the three address predicates remain pure numeric checks. Issue #10110 remains open until that subsystem lands with a 256-word index and retirement wired after all three authoritative removal paths. The changelog fragment records those integration requirements. No campaign CPU improvement is claimed formain.Changes
changelog.d/10251-registry-address-index.md. No workspace version, lockfile, CLAUDE.md, or CHANGELOG.md changes.Related issue
Refs #10110; canonical-wrapper wiring remains outstanding because the subsystem is absent from
main.Test plan
cargo test --locked -p perry-runtime --lib registry_latch -- --test-threads=1: 36 passed, including the existing symbol/probe integration tests.gc::tests::telemetry_verifier::emergency_full_trace_is_excluded_from_ordinary_pause_statsexpectsunsupportedon Windows but receivesexecuted; it also fails alone. The test and allocator-maintenance implementation are unchanged from the main base.cargo fmt -p perry-runtime -- --check, test-registration, address-classification and GC root-holder audits, andgit diff --check.SKIP_COMPILE_GATES=1): 6 of 77 failed, with two CI-only checks skipped. Failures were missingjq, benchmark/release shell fixtures, workspace formatting exceeding the Windows command-length limit, benchmark freshness (inputs/artifact unchanged from the base), and the absolute unrooted-local inventory. Both raw-handle and unrooted-local comparisons againstmainpassed: this PR adds no debt.thread_local!inregex/perex_owner.rs, and dead-code warnings forregistered_extern_handle/wasm_memory_descriptor_maximuminobject/global_this_webassembly.rs. These are outside this PR's three-file diff.