Repository navigation
Conversation
Add pooled independent wake state, panic-safe consuming ownership, public lifecycle coverage, audit dispositions, renamed-dependency macro resolution, and focused performance probes. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 9d20a52e-ad06-4f05-bf1c-1b0be788393a
Keep safety comments adjacent to unsafe operations and split benchmark orchestration into focused helpers. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 9d20a52e-ad06-4f05-bf1c-1b0be788393a
Use the minimal raw-string delimiter and rely on the repository's test lint policy. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 9d20a52e-ad06-4f05-bf1c-1b0be788393a
Order the new proc-macro dependency according to the workspace cargo-sort contract. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 9d20a52e-ad06-4f05-bf1c-1b0be788393a
Use the repository-standard spelling in executor lifecycle documentation and regenerate the crate README. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 9d20a52e-ad06-4f05-bf1c-1b0be788393a
Patch the in-workspace plurality crate so the offline Cargo-renamed consumer fixture is reproducible in clean CI caches. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 9d20a52e-ad06-4f05-bf1c-1b0be788393a
|
Replace the obsolete shutdown-timeout expectation with the supported inert retained-waker behavior. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 9d20a52e-ad06-4f05-bf1c-1b0be788393a
Exercise concurrent state installation, queue retirement, pooled ownership release, forwarding, overflow, and drop cleanup while excluding only unreachable RawWaker and benchmark-only mutations. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 9d20a52e-ad06-4f05-bf1c-1b0be788393a
Verify active-signal drop returns pooled ownership and that untracked queue entries are preserved, eliminating the remaining missed lifecycle mutants. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 9d20a52e-ad06-4f05-bf1c-1b0be788393a
Use a single compare-exchange for queued notification ownership and cover both claimed and untracked paths without mutation-test deadlocks. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 9d20a52e-ad06-4f05-bf1c-1b0be788393a
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #805 +/- ##
========================================
Coverage 100.0% 100.0%
========================================
Files 798 796 -2
Lines 119402 119727 +325
========================================
+ Hits 119402 119727 +325
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Build owned RawWakers from the original atomic pool pointer instead of re-deriving them from a shared reference, preserving unique provenance for final destruction under Miri. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 9d20a52e-ad06-4f05-bf1c-1b0be788393a
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 9d20a52e-ad06-4f05-bf1c-1b0be788393a
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Harden Arty after #785 by restoring a constrained independent-waker contract, making consuming wake ownership panic-safe, and applying the packaging/documentation follow-ups from the merged review.
plurality::Pool<WakerState>and does not retain pinned task storage or delay shutdown.arty_macros_implresolves Cargo-renamedartydependencies, with a real consumer compile fixture.ohnodev-dependency is path-only, and public package/crate descriptions now distinguish multi-worker runtime size from per-task thread affinity.docs/arty-runtime-panic-audit-disposition.mdrevalidates the docs(arty): preserve runtime panic audit #800 audit against the exact merged baseline.Lifecycle contract and rationale
Alternatives considered:
std::sync::Arc<WakerState>: simpler and faster for one isolated replacement, but adds one 88-byte allocation per initialized independent state.Arc::new, but state is created lazily only when the polling waker is cloned; representative spawn, wake, and burst instruction counts remain stable or improve.#800 audit disposition
The disposition document preserves the report's panic/deadlock/invariant/debug-only/non-production distinctions.
JoinError; fail-closed raw executor, accounting, poisoned-lock, pointer, and unsafe teardown invariants; terminal aborts where live referenced storage cannot be released safely.LocalSchedulerfindings, ancestry-chain I12, and N01's deleted stack-overflow fixture.Azure DevOps
The existing child story is referenced rather than duplicated.
Validation
Package-scoped validation, plus focused reproductions for concrete CI failures:
All passed. The Anvil wrapper could not launch its PowerShell script host locally, so equivalent package-scoped tools were invoked directly; CI remains authoritative for the broader Anvil tier.
Performance methodology
cb3ef36dc0942dc93017df934a3fcacfc7f451ad74df66f04f19cd8d35731fa0e2eb265a89f5b46bx86_64-unknown-linux-gnu, Rust1.96.1,-C target-cpu=x86-64-v3arty_executor/ae_basic_operationsGungraun, allocation, and Criterion runs; equivalentarty/arty_schedulingruns. The final production-pointer revision was remeasured before this update.Deterministic Callgrind instruction counts and allocation probes are the acceptance evidence. Criterion quick samples were retained as exploratory data but are not used to judge small regressions on the shared VM. The full cross-thread wake sample is included because it directly exercises routing through the public runtime.
Arcstate replacementThe isolated producer increase is the queue-retirement safety bookkeeping needed to remove stale task references deterministically. It does not produce a meaningful end-to-end cross-thread wake regression, while wake consumption, overflow handling, burst throughput by instruction count, and warmed allocation behavior remain stable or improve. The panicking-owner path is intentionally not timed: unwind and panic-hook cost dominates an exceptional correctness path, which is instead covered by a public regression test plus the private counted-ownership invariant test.