Repository navigation
chore: remove loom - #7474
chore: remove loom#7474
Conversation
Decided 2026-10-31 (maintainer): "Remove loom entirely." The models only ever needed upkeep and no commit shows them finding a race. Delete kio's and moq-net's loom models, the `sync` shims that swapped std's primitives for loom's, every `cfg(loom)` branch (keeping the std one), the loom dependencies and `cfg(loom)` check-cfg, and the `loom` and `loom-check` recipes. kio's log uses std's `UnsafeCell` directly and frees a segment without the per-slot drops that only loom's cells needed. The gate no longer calls `rs loom-check` and Nightly no longer runs `rs loom`. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
The model never responded, so Pullfrog stopped this run after 2 minutes. The request went out but nothing came back. This is usually temporary, so re-trigger to try again.
|
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 26 seconds. View limit details
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. |
kixelated
left a comment
There was a problem hiding this comment.
Automated review by review (OpenAI)
Reviewed commit: 349d41c
No actionable bugs found. Removing the unused synchronization shims alongside the models and CI entry points is simpler than retaining std-only indirection. The UnsafeCell conversion preserves the normal runtime path, and initialized payload destruction remains intact after removing the no-op slot/header drops. The loss of concurrency model coverage is an explicit verification tradeoff.
Static review of the changed code, relevant reclamation paths and CI wiring, including an independent check of the unsafe log changes. Tests, workflows and performance measurements were not run.
(Written by OpenAI)
# Conflicts: # .github/workflows/nightly.yml # quest/m0/ci/README.md # quest/m0/ci/five-minutes.md # quest/m2/crossbeam-pin-fence.md # rs/justfile # rs/moq-net/tests/integration/main.rs # sh/dispatch.sh # sh/rs/select.sh # sh/rs/select.test.py

Problem
Decided 2026-10-31 (maintainer): "Remove loom entirely." moq's history shows only upkeep of the loom models: moq-dev/moq#2543 added them, moq-dev/moq#4071 bounded them so Nightly finishes, moq-dev/moq#5389, moq-dev/moq#5888, and moq-dev/moq#6563 fixed them after code changes, and moq-dev/moq#6822 restored the gate's compile checks after they rotted. No commit shows loom finding a race. Meanwhile kio and moq-net carried
cfg(loom)shims around every lock, atomic, and cell they use.Approach
rs/kio/src/loom.rs,rs/moq-net/tests/loom.rs,rs/moq-net/tests/expiry-loom.rs.syncshim modules in kio and moq-net, which only existed to swap std's primitives for loom's. Callers importstd::syncdirectly.cfg(loom)branch goes, keeping the std one:#[cfg(all(test, not(loom)))]becomes#[cfg(test)], kio'sPOLLINGthread-local is std's only, moq-net'sclock::wallloses its frozen loom variant, andmodel/expiry.rsimports std atomics.log: slots are stdUnsafeCell<MaybeUninit<T>>read through.get()instead of loom's closure API. The segment's loom-onlyalivecell goes. A freed segment no longer runsdrop_in_placeover each slot and the header beforedealloc. Those calls only existed to drop loom's tracked cells: the header holds atomics and integers, the slots areMaybeUninit, and their entries were already dropped bydrop_entries.loomworkspace dependency, the[target.'cfg(loom)'.dependencies]tables (including crossbeam-epoch'sloomfeature), and[workspace.lints.rust], whose only entry was thecfg(loom)check-cfg.Cargo.lockdrops loom from kio, moq-net, and crossbeam. Theloompackage itself stays in the lockfile because the third-partycordycepscrate lists it under its owncfg(loom)target.loomandloom-checkrecipes, the gate'srs loom-checkcall insh/rs/select.shand its test, and Nightly'srs loommatrix entry.rs/moq-net/AGENTS.md, the drill README's "Loom cases" column, comments in kio's tests, moq-net's integration main, and moq-relay's drills. The CI epic records the decision.five-minutes.md,audit-ci.md,miri-memory.md,single-delivery-write.md,kio-channel-contention/version.md, andcrossbeam-pin-fence.mdno longer ask for or point at loom models.No wasm code is touched (a separate
chore/remove-wasmPR owns that).Overlap with moq-dev/moq#7473
That PR (CI only) drops
rs loom-checkandrs send-depthfrom the gate and swaps Nightly'srs loomforrs send-depth. It had not landed when this branch was cut frommain, so this PR also removes the loom-only gate pieces itself: theloom-checkcall and its selector test, Nightly'srs loomentry, and the matching comments and quest lines. Without them, the gate would call a recipe this PR deletes. Whichever lands second needs a rebase over the other. If it lands first, keep its versions ofsh/rs/select.sh,sh/rs/select.test.py,sh/dispatch.sh,rs/justfile'slint-changedcomment, nightly.yml's matrix, and the quest text it rewrote (quest/m0/ci/README.md,five-minutes.md,audit-ci.md). This PR'scrossbeam-pin-fence.mdwording replaces its own.Impact
syncmodules werepub(crate). Wire: none.cfg(loom)was never set outsidejust rs loom. The one behavioral change is in kio's segment free, which now skips no-op drops.Alternatives
syncmodules as plain std re-exports. That would leave an indirection with no reason to exist, so callers import std instead.drop_in_placecalls in the segment free as a defensive measure. They are no-ops for these types, and keeping them would suggest a drop obligation that does not exist.Follow-ups
None.
Checks
Run inside
nix developon the head commit:python3 sh/dispatch-query.test.py: passpython3 sh/rs/select.test.py: passactionlint: passquest check: passcargo build --locked --workspace: passcargo clippy --locked -p kio -p moq-net --all-targets: cleanjust check: pass. Dispatch ran every module, sincesh/dispatch.shchanged. That includes the Rust test phase scoped to the diff (test rs: 10,737 tests passed, 116 skipped).check flakeskipped locally because the Nix builder cannot create user namespaces here.Review
quest review --base origin/main: Codex gpt-6.1-sol (medium), head349d41c313, round 1: 0 findings.mainafter ci: drop loom and send-depth from the land gate; run send-depth in Nightly #7473 and chore!: remove WASM support #7475. It keepsmain's gate files, Nightly matrix and CI quests, keeps this PR'scrossbeam-pin-fence.mdwording and its removal of theloomrecipes, and updates the integration test's note now that bothloom.rsandwasm.rsare gone.cargo build --locked --workspaceandjust check origin/mainpass. The review was skipped as trivial for the merge resolution.🤖 Generated with Claude Code
(Written by Claude Opus 5.5)