You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Adds a "Nominally thread-aware, actually shared-locked" anti-pattern entry to the thread_aware authoring guide, plus a reviewer checklist for manual ThreadAware impls and #[thread_aware(skip)] fields.
This implements AB#7947139 and folds the lesson from the removed thread-aware-view.md into the canonical authoring guide.
Scope: docs only. An earlier revision also added an AI/Copilot audit prompt; that was extracted to live in the shared rust-dev tooling plugin instead, since the anti-pattern it detects manifests in downstream consumer repos rather than in this library.
RUSTDOCFLAGS="-D warnings" cargo doc -p thread_aware --no-deps --no-default-features --features derive(fails only on the known pre-existing std::thread::spawn broken intra-doc link in crates/thread_aware/src/lib.rs:87; no new warnings)
cargo doc2readme --template ../README.j2 --check from crates/thread_aware
Document the shared-lock ThreadAware anti-pattern in the authoring guide,
including reviewer checks for manual impls and skipped fields.
Add a Copilot prompt for auditing PRs or the codebase for the same
manual-impl/no-op-relocate/shared-lock signature.
AB#7947139
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 5e0d5396-3a32-40ed-8870-241cd4929082
cargo semver-checks flagged the following on this PR. This is informational -- breaking changes between commits are expected; the major-version bump happens at release time, not on every PR.
rallocator
Cloning cb3ef36dc0942dc93017df934a3fcacfc7f451ad
Building rallocator v0.2.0 (current)
Built [ 1.555s] (current)
Parsing rallocator v0.2.0 (current)
Parsed [ 0.004s] (current)
Building rallocator v0.2.0 (baseline)
Built [ 3.437s] (baseline)
Parsing rallocator v0.2.0 (baseline)
Parsed [ 0.011s] (baseline)
Checking rallocator v0.2.0 -> v0.2.0 (no change; assume minor)
Checked [ 0.014s] 196 checks: 190 pass, 6 fail, 0 warn, 58 skip
--- failure feature_missing: package feature removed or renamed ---
Description:
A feature has been removed from this package's Cargo.toml. This will break downstream crates which enable that feature.
ref: https://doc.rust-lang.org/cargo/reference/semver.html#cargo-feature-remove
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.50.0/src/lints/feature_missing.ron
Failed in:
feature loom in the package's Cargo.toml
feature tuning-telemetry in the package's Cargo.toml
feature caller-symbolization in the package's Cargo.toml
--- failure inherent_method_missing: pub method removed or renamed ---
Description:
A publicly-visible method or associated fn is no longer available under its prior name. It may have been renamed or removed entirely.
ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.50.0/src/lints/inherent_method_missing.ron
Failed in:
Rallocator::new, previously in file /home/runner/work/oxidizer/oxidizer/target/semver-checks/git-cb3ef36dc0942dc93017df934a3fcacfc7f451ad/5e0aa86380776f0db5a91dc7d93ae494706f69b9/crates/rallocator/src/allocator.rs:966
--- failure module_missing: pub module removed or renamed ---
Description:
A publicly-visible module cannot be imported by its prior path. A `pub use` may have been removed, or the module may have been renamed, removed, or made non-public.
ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.50.0/src/lints/module_missing.ron
Failed in:
mod rallocator::config, previously in file /home/runner/work/oxidizer/oxidizer/target/semver-checks/git-cb3ef36dc0942dc93017df934a3fcacfc7f451ad/5e0aa86380776f0db5a91dc7d93ae494706f69b9/crates/rallocator/src/config/mod.rs:4
mod rallocator::tuning_telemetry, previously in file /home/runner/work/oxidizer/oxidizer/target/semver-checks/git-cb3ef36dc0942dc93017df934a3fcacfc7f451ad/5e0aa86380776f0db5a91dc7d93ae494706f69b9/crates/rallocator/src/tuning_telemetry.rs:4
--- failure struct_missing: pub struct removed or renamed ---
Description:
A publicly-visible struct cannot be imported by its prior path. A `pub use` may have been removed, or the struct itself may have been renamed or removed entirely.
ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.50.0/src/lints/struct_missing.ron
Failed in:
struct rallocator::tuning_telemetry::MediumTuningTelemetry, previously in file /home/runner/work/oxidizer/oxidizer/target/semver-checks/git-cb3ef36dc0942dc93017df934a3fcacfc7f451ad/5e0aa86380776f0db5a91dc7d93ae494706f69b9/crates/rallocator/src/tuning_telemetry.rs:299
struct rallocator::tuning_telemetry::TuningTelemetryObservation, previously in file /home/runner/work/oxidizer/oxidizer/target/semver-checks/git-cb3ef36dc0942dc93017df934a3fcacfc7f451ad/5e0aa86380776f0db5a91dc7d93ae494706f69b9/crates/rallocator/src/tuning_telemetry.rs:154
struct rallocator::tuning_telemetry::TuningTelemetry, previously in file /home/runner/work/oxidizer/oxidizer/target/semver-checks/git-cb3ef36dc0942dc93017df934a3fcacfc7f451ad/5e0aa86380776f0db5a91dc7d93ae494706f69b9/crates/rallocator/src/tuning_telemetry.rs:54
struct rallocator::tuning_telemetry::ClassTuningTelemetry, previously in file /home/runner/work/oxidizer/oxidizer/target/semver-checks/git-cb3ef36dc0942dc93017df934a3fcacfc7f451ad/5e0aa86380776f0db5a91dc7d93ae494706f69b9/crates/rallocator/src/tuning_telemetry.rs:264
struct rallocator::config::Standard, previously in file /home/runner/work/oxidizer/oxidizer/target/semver-checks/git-cb3ef36dc0942dc93017df934a3fcacfc7f451ad/5e0aa86380776f0db5a91dc7d93ae494706f69b9/crates/rallocator/src/config/mod.rs:17
struct rallocator::config::StandardSizeClasses, previously in file /home/runner/work/oxidizer/oxidizer/target/semver-checks/git-cb3ef36dc0942dc93017df934a3fcacfc7f451ad/5e0aa86380776f0db5a91dc7d93ae494706f69b9/crates/rallocator/src/config/tunables.rs:71
--- failure trait_missing: pub trait removed or renamed ---
Description:
A publicly-visible trait cannot be imported by its prior path. A `pub use` may have been removed, or the trait itself may have been renamed or removed entirely.
ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.50.0/src/lints/trait_missing.ron
Failed in:
Summary semver requires new major version: 6 major and 0 minor checks failed
Finished [ 5.438s] rallocator
trait rallocator::config::Tunables, previously in file /home/runner/work/oxidizer/oxidizer/target/semver-checks/git-cb3ef36dc0942dc93017df934a3fcacfc7f451ad/5e0aa86380776f0db5a91dc7d93ae494706f69b9/crates/rallocator/src/config/tunables.rs:55
trait rallocator::config::SizeClassLayout, previously in file /home/runner/work/oxidizer/oxidizer/target/semver-checks/git-cb3ef36dc0942dc93017df934a3fcacfc7f451ad/5e0aa86380776f0db5a91dc7d93ae494706f69b9/crates/rallocator/src/config/tunables.rs:13
trait rallocator::config::Config, previously in file /home/runner/work/oxidizer/oxidizer/target/semver-checks/git-cb3ef36dc0942dc93017df934a3fcacfc7f451ad/5e0aa86380776f0db5a91dc7d93ae494706f69b9/crates/rallocator/src/config/mod.rs:12
--- failure type_allows_fewer_generic_type_params: type now allows fewer generic type parameters ---
Description:
A type now allows fewer generic type parameters than it used to. Uses of this type that supplied all previously-supported generic types will be broken.
ref: https://doc.rust-lang.org/cargo/reference/semver.html#trait-new-parameter-no-default
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.50.0/src/lints/type_allows_fewer_generic_type_params.ron
Failed in:
Struct Rallocator allows 1 -> 0 generic types in /home/runner/work/oxidizer/oxidizer/crates/rallocator/src/lib.rs:192
seismograph_rallocator
Cloning cb3ef36dc0942dc93017df934a3fcacfc7f451ad
Building seismograph_rallocator v0.2.0 (current)
Built [ 1.374s] (current)
Parsing seismograph_rallocator v0.2.0 (current)
Parsed [ 0.003s] (current)
Building seismograph_rallocator v0.2.0 (baseline)
Built [ 1.415s] (baseline)
Parsing seismograph_rallocator v0.2.0 (baseline)
Parsed [ 0.005s] (baseline)
Checking seismograph_rallocator v0.2.0 -> v0.2.0 (no change; assume minor)
Checked [ 0.017s] 196 checks: 192 pass, 4 fail, 0 warn, 58 skip
--- failure enum_missing: pub enum removed or renamed ---
Description:
A publicly-visible enum cannot be imported by its prior path. A `pub use` may have been removed, or the enum itself may have been renamed or removed entirely.
ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.50.0/src/lints/enum_missing.ron
Failed in:
enum seismograph_rallocator::snapshot::PeakLiveBytesScope, previously in file /home/runner/work/oxidizer/oxidizer/target/semver-checks/git-cb3ef36dc0942dc93017df934a3fcacfc7f451ad/5e0aa86380776f0db5a91dc7d93ae494706f69b9/crates/seismograph_rallocator/src/snapshot.rs:72
enum seismograph_rallocator::topology::SliceKind, previously in file /home/runner/work/oxidizer/oxidizer/target/semver-checks/git-cb3ef36dc0942dc93017df934a3fcacfc7f451ad/5e0aa86380776f0db5a91dc7d93ae494706f69b9/crates/seismograph_rallocator/src/topology.rs:8
enum seismograph_rallocator::WireErrorKind, previously in file /home/runner/work/oxidizer/oxidizer/target/semver-checks/git-cb3ef36dc0942dc93017df934a3fcacfc7f451ad/5e0aa86380776f0db5a91dc7d93ae494706f69b9/crates/seismograph_rallocator/src/wire/mod.rs:25
--- failure enum_variant_missing: pub enum variant removed or renamed ---
Description:
A publicly-visible enum has at least one variant that is no longer available under its prior name. It may have been renamed or removed entirely.
ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.50.0/src/lints/enum_variant_missing.ron
Failed in:
variant ErrorKind::OutputTooSmall, previously in file /home/runner/work/oxidizer/oxidizer/target/semver-checks/git-cb3ef36dc0942dc93017df934a3fcacfc7f451ad/5e0aa86380776f0db5a91dc7d93ae494706f69b9/crates/seismograph_rallocator/src/lib.rs:143
variant ErrorKind::OutputLengthMismatch, previously in file /home/runner/work/oxidizer/oxidizer/target/semver-checks/git-cb3ef36dc0942dc93017df934a3fcacfc7f451ad/5e0aa86380776f0db5a91dc7d93ae494706f69b9/crates/seismograph_rallocator/src/lib.rs:145
variant ErrorKind::Wire, previously in file /home/runner/work/oxidizer/oxidizer/target/semver-checks/git-cb3ef36dc0942dc93017df934a3fcacfc7f451ad/5e0aa86380776f0db5a91dc7d93ae494706f69b9/crates/seismograph_rallocator/src/lib.rs:147
variant ErrorKind::MissingSection, previously in file /home/runner/work/oxidizer/oxidizer/target/semver-checks/git-cb3ef36dc0942dc93017df934a3fcacfc7f451ad/5e0aa86380776f0db5a91dc7d93ae494706f69b9/crates/seismograph_rallocator/src/lib.rs:151
variant ErrorKind::DuplicateSection, previously in file /home/runner/work/oxidizer/oxidizer/target/semver-checks/git-cb3ef36dc0942dc93017df934a3fcacfc7f451ad/5e0aa86380776f0db5a91dc7d93ae494706f69b9/crates/seismograph_rallocator/src/lib.rs:153
variant ErrorKind::MalformedSection, previously in file /home/runner/work/oxidizer/oxidizer/target/semver-checks/git-cb3ef36dc0942dc93017df934a3fcacfc7f451ad/5e0aa86380776f0db5a91dc7d93ae494706f69b9/crates/seismograph_rallocator/src/lib.rs:155
variant ErrorKind::IntegerOverflow, previously in file /home/runner/work/oxidizer/oxidizer/target/semver-checks/git-cb3ef36dc0942dc93017df934a3fcacfc7f451ad/5e0aa86380776f0db5a91dc7d93ae494706f69b9/crates/seismograph_rallocator/src/lib.rs:157
variant ErrorKind::InvalidUtf8, previously in file /home/runner/work/oxidizer/oxidizer/target/semver-checks/git-cb3ef36dc0942dc93017df934a3fcacfc7f451ad/5e0aa86380776f0db5a91dc7d93ae494706f69b9/crates/seismograph_rallocator/src/lib.rs:159
variant ErrorKind::UnknownEventKind, previously in file /home/runner/work/oxidizer/oxidizer/target/semver-checks/git-cb3ef36dc0942dc93017df934a3fcacfc7f451ad/5e0aa86380776f0db5a91dc7d93ae494706f69b9/crates/seismograph_rallocator/src/lib.rs:161
variant ErrorKind::UnknownSliceKind, previously in file /home/runner/work/oxidizer/oxidizer/target/semver-checks/git-cb3ef36dc0942dc93017df934a3fcacfc7f451ad/5e0aa86380776f0db5a91dc7d93ae494706f69b9/crates/seismograph_rallocator/src/lib.rs:163
variant ErrorKind::UnknownRuntimeEventKind, previously in file /home/runner/work/oxidizer/oxidizer/target/semver-checks/git-cb3ef36dc0942dc93017df934a3fcacfc7f451ad/5e0aa86380776f0db5a91dc7d93ae494706f69b9/crates/seismograph_rallocator/src/lib.rs:165
--- failure module_missing: pub module removed or renamed ---
Description:
A publicly-visible module cannot be imported by its prior path. A `pub use` may have been removed, or the module may have been renamed, removed, or made non-public.
ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.50.0/src/lints/module_missing.ron
Failed in:
mod seismograph_rallocator::snapshot, previously in file /home/runner/work/oxidizer/oxidizer/target/semver-checks/git-cb3ef36dc0942dc93017df934a3fcacfc7f451ad/5e0aa86380776f0db5a91dc7d93ae494706f69b9/crates/seismograph_rallocator/src/snapshot.rs:4
mod seismograph_rallocator::topology, previously in file /home/runner/work/oxidizer/oxidizer/target/semver-checks/git-cb3ef36dc0942dc93017df934a3fcacfc7f451ad/5e0aa86380776f0db5a91dc7d93ae494706f69b9/crates/seismograph_rallocator/src/topology.rs:4
--- failure struct_missing: pub struct removed or renamed ---
Description:
A publicly-visible struct cannot be imported by its prior path. A `pub use` may have been removed, or the struct itself may have been renamed or removed entirely.
ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.50.0/src/lints/struct_missing.ron
Failed in:
struct seismograph_rallocator::snapshot::SizeClass, previously in file /home/runner/work/oxidizer/oxidizer/target/semver-checks/git-cb3ef36dc0942dc93017df934a3fcacfc7f451ad/5e0aa86380776f0db5a91dc7d93ae494706f69b9/crates/seismograph_rallocator/src/snapshot.rs:229
struct seismograph_rallocator::snapshot::Region, previously in file /home/runner/work/oxidizer/oxidizer/target/semver-checks/git-cb3ef36dc0942dc93017df934a3fcacfc7f451ad/5e0aa86380776f0db5a91dc7d93ae494706f69b9/crates/seismograph_rallocator/src/snapshot.rs:276
struct seismograph_rallocator::snapshot::Histograms, previously in file /home/runner/work/oxidizer/oxidizer/target/semver-checks/git-cb3ef36dc0942dc93017df934a3fcacfc7f451ad/5e0aa86380776f0db5a91dc7d93ae494706f69b9/crates/seismograph_rallocator/src/snapshot.rs:395
struct seismograph_rallocator::snapshot::Domain, previously in file /home/runner/work/oxidizer/oxidizer/target/semver-checks/git-cb3ef36dc0942dc93017df934a3fcacfc7f451ad/5e0aa86380776f0db5a91dc7d93ae494706f69b9/crates/seismograph_rallocator/src/snapshot.rs:318
struct seismograph_rallocator::topology::Slice, previously in file /home/runner/work/oxidizer/oxidizer/target/semver-checks/git-cb3ef36dc0942dc93017df934a3fcacfc7f451ad/5e0aa86380776f0db5a91dc7d93ae494706f69b9/crates/seismograph_rallocator/src/topology.rs:77
struct seismograph_rallocator::snapshot::Snapshot, previously in file /home/runner/work/oxidizer/oxidizer/target/semver-checks/git-cb3ef36dc0942dc93017df934a3fcacfc7f451ad/5e0aa86380776f0db5a91dc7d93ae494706f69b9/crates/seismograph_rallocator/src/snapshot.rs:467
struct seismograph_rallocator::topology::Segment, previously in file /home/runner/work/oxidizer/oxidizer/target/semver-checks/git-cb3ef36dc0942dc93017df934a3fcacfc7f451ad/5e0aa86380776f0db5a91dc7d93ae494706f69b9/crates/seismograph_rallocator/src/topology.rs:25
struct seismograph_rallocator::snapshot::SkippedSection, previously in file /home/runner/work/oxidizer/oxidizer/target/semver-checks/git-cb3ef36dc0942dc93017df934a3fcacfc7f451ad/5e0aa86380776f0db5a91dc7d93ae494706f69b9/crates/seismograph_rallocator/src/snapshot.rs:441
struct seismograph_rallocator::topology::TopologyRegion, previously in file /home/runner/work/oxidizer/oxidizer/target/semver-checks/git-cb3ef36dc0942dc93017df934a3fcacfc7f451ad/5e0aa86380776f0db5a91dc7d93ae494706f69b9/crates/seismograph_rallocator/src/topology.rs:134
struct seismograph_rallocator::snapshot::Estimate, previously in file /home/runner/work/oxidizer/oxidizer/target/semver-checks/git-cb3ef36dc0942dc93017df934a3fcacfc7f451ad/5e0aa86380776f0db5a91dc7d93ae494706f69b9/crates/seismograph_rallocator/src/snapshot.rs:32
struct seismograph_rallocator::snapshot::Stats, previously in file /home/runner/work/oxidizer/oxidizer/target/semver-checks/git-cb3ef36dc0942dc93017df934a3fcacfc7f451ad/5e0aa86380776f0db5a91dc7d93ae494706f69b9/crates/seismograph_rallocator/src/snapshot.rs:104
struct seismograph_rallocator::WireError, previously in file /home/runner/work/oxidizer/oxidizer/target/semver-checks/git-cb3ef36dc0942dc93017df934a3fcacfc7f451ad/5e0aa86380776f0db5a91dc7d93ae494706f69b9/crates/seismograph_rallocator/src/wire/mod.rs:18
struct seismograph_rallocator::snapshot::Version, previously in file /home/runner/work/oxidizer/oxidizer/target/semver-checks/git-cb3ef36dc0942dc93017df934a3fcacfc7f451ad/5e0aa86380776f0db5a91dc7d93ae494706f69b9/crates/seismograph_rallocator/src/snapshot.rs:12
struct seismograph_rallocator::snapshot::Metadata, previously in file /home/runner/work/oxidizer/oxidizer/target/semver-checks/git-cb3ef36dc0942dc93017df934a3fcacfc7f451ad/5e0aa86380776f0db5a91dc7d93ae494706f69b9/crates/seismograph_rallocator/src/snapshot.rs:421
Summary semver requires new major version: 4 major and 0 minor checks failed
Finished [ 3.153s] seismograph_rallocator
Inconclusive comparisons
cargo semver-checks could not complete the following comparisons. These failures are informational because an unbuildable baseline is not evidence of a breaking API change.
metabench (exit 101)
Cloning cb3ef36dc0942dc93017df934a3fcacfc7f451ad
Building metabench v0.1.1 (current)
Built [ 19.727s] (current)
Parsing metabench v0.1.1 (current)
Parsed [ 0.015s] (current)
Building metabench v0.1.1 (baseline)
error: running cargo-doc on crate 'metabench' failed with output:
-----
Compiling proc-macro2 v1.0.107
Compiling quote v1.0.47
Compiling unicode-ident v1.0.27
Compiling serde_core v1.0.229
Compiling zmij v1.0.23
Compiling serde v1.0.229
Compiling serde_json v1.0.154
Checking cfg-if v1.0.5
Compiling libc v0.2.190
Checking memchr v2.8.3
Compiling syn v3.0.9
Compiling syn v2.0.119
Checking itoa v1.0.18
Compiling zerocopy v0.8.62
Checking bitflags v2.13.2
Compiling winnow v1.0.4
Compiling hashbrown v0.17.1
Compiling find-msvc-tools v0.1.14
Compiling rustversion v1.0.23
Compiling semver v1.0.28
Compiling equivalent v1.0.2
Compiling shlex v2.0.1
Compiling indexmap v2.14.2
Compiling cc v1.8.0
Compiling serde_derive v1.0.229
Compiling rustc_version v0.4.1
Compiling toml_parser v1.1.5+spec-1.1.0
Compiling zerocopy-derive v0.8.62
Compiling derive_more-impl v2.1.1
Compiling rustix v1.1.5
Compiling autocfg v1.5.1
Compiling toml_datetime v1.1.2+spec-1.1.0
Compiling toml_edit v0.25.17+spec-1.1.0
Checking either-or-both v0.3.1
Compiling num-traits v0.2.19
Compiling alloca v0.4.0
Compiling gungraun-macros v0.9.1
Compiling proc-macro-error-attr3 v3.1.1
Checking either v1.19.0
Checking linux-raw-sys v0.12.1
Compiling thiserror v2.0.21
Compiling cfg_aliases v0.2.2
Checking regex-syntax v0.8.11
Checking clap_lex v1.1.1
Checking ciborium-io v0.2.2
Checking anstyle v1.0.14
Compiling bincode-next v3.1.1
Compiling getrandom v0.4.3
Checking regex-automata v0.4.18
Checking clap_builder v4.6.7
Checking half v2.7.1
Compiling nix v0.31.3
Checking ciborium-ll v0.2.2
Checking itertools v0.13.0
Checking rapidhash v4.5.1
Compiling proc-macro-error3 v3.1.1
Compiling proc-macro-crate v3.5.0
Compiling derive_more v2.1.1
Compiling thiserror-impl v2.0.21
Checking unty-next v0.1.2
Checking same-file v1.0.6
Compiling pastey v0.2.3
Compiling gungraun v0.19.4
Checking cast v0.3.0
Checking walkdir v2.5.0
Checking criterion-plot v0.8.2
Compiling metabench_macros_impl v0.1.1 (/home/runner/work/oxidizer/oxidizer/target/semver-checks/git-cb3ef36dc0942dc93017df934a3fcacfc7f451ad/5e0aa86380776f0db5a91dc7d93ae494706f69b9/crates/metabench_macros_impl)
Checking clap v4.6.7
Checking ciborium v0.2.2
Checking regex v1.13.1
Checking gungraun-runner v0.20.0
Checking gungraun-runner v0.19.4
Checking folo_utils v0.1.14
Checking tinytemplate v1.2.1
Checking nix v0.27.1
Checking page_size v0.6.0
Checking fastrand v2.5.0
Compiling metabench v0.1.1 (/home/runner/work/oxidizer/oxidizer/target/semver-checks/git-cb3ef36dc0942dc93017df934a3fcacfc7f451ad/5e0aa86380776f0db5a91dc7d93ae494706f69b9/crates/metabench)
Checking anes v0.1.6
Checking once_cell v1.21.4
Checking oorandom v11.1.5
Checking jiff-core v0.1.1
Checking criterion v0.8.2
Checking command-group v5.0.1
Checking tempfile v3.27.0
Compiling metabench_macros v0.1.1 (/home/runner/work/oxidizer/oxidizer/target/semver-checks/git-cb3ef36dc0942dc93017df934a3fcacfc7f451ad/5e0aa86380776f0db5a91dc7d93ae494706f69b9/crates/metabench_macros)
Checking jiff v0.2.38
Checking gungraun-summary v6.0.0
error[E0432]: unresolved import `gungraun_runner::api::ValgrindTool`
--> /home/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/gungraun-summary-6.0.0/src/v6.rs:10:59
|
10 | CachegrindMetric, DhatMetric, ErrorMetric, EventKind, ValgrindTool,
| ^^^^^^^^^^^^ no `ValgrindTool` in `api`
error[E0432]: unresolved imports `gungraun_runner::metrics::model::MetricsDiff`, `gungraun_runner::metrics::model::MetricsSummary`
--> /home/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/gungraun-summary-6.0.0/src/v6.rs:12:63
|
12 | pub use gungraun_runner::metrics::model::{Metric, MetricKind, MetricsDiff, MetricsSummary};
| ^^^^^^^^^^^ ^^^^^^^^^^^^^^ no `MetricsSummary` in `metrics::model`
| |
| no `MetricsDiff` in `metrics::model`
error[E0432]: unresolved imports `gungraun_runner::summary::model::Diffs`, `gungraun_runner::summary::model::FlamegraphSummary`, `gungraun_runner::summary::model::ProfileInfo`, `gungraun_runner::summary::model::SummaryFormat`, `gungraun_runner::summary::model::SummaryOutput`, `gungraun_runner::summary::model::ToolMetricSummary`
--> /home/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/gungraun-summary-6.0.0/src/v6.rs:14:38
|
14 | BenchmarkKind, BenchmarkSummary, Diffs, FlamegraphSummary, Profile, ProfileData, ProfileInfo,
| ^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ no `ProfileInfo` in `summary::model`
| | |
| | no `FlamegraphSummary` in `summary::model`
| no `Diffs` in `summary::model`
15 | ProfilePart, ProfileTotal, Profiles, SCHEMA_VERSION, SummaryFormat, SummaryOutput,
| ^^^^^^^^^^^^^ ^^^^^^^^^^^^^ no `SummaryOutput` in `summary::model`
| |
| no `SummaryFormat` in `summary::model`
16 | ToolMetricSummary, ToolRegression,
| ^^^^^^^^^^^^^^^^^ no `ToolMetricSummary` in `summary::model`
Checking alloc_tracker v0.7.12
For more information about this error, try `rustc --explain E0432`.
error: could not compile `gungraun-summary` (lib) due to 3 previous errors
warning: build failed, waiting for other jobs to finish...
-----
error: failed to build rustdoc for crate metabench v0.1.1
note: this is usually due to a compilation error in the crate,
and is unlikely to be a bug in cargo-semver-checks
note: the following command can be used to reproduce the error:
cargo new --lib example &&
cd example &&
echo '[workspace]' >> Cargo.toml &&
cargo add --path /home/runner/work/oxidizer/oxidizer/target/semver-checks/git-cb3ef36dc0942dc93017df934a3fcacfc7f451ad/5e0aa86380776f0db5a91dc7d93ae494706f69b9/crates/metabench &&
cargo check &&
cargo doc
error: aborting due to failure to build rustdoc for crate metabench v0.1.1
✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.0%. Comparing base (cb3ef36) to head (bdd6753). ⚠️ Report is 4 commits behind head on main.
- Distinguish PerThread (one instance per worker) from PerNuma (one per
NUMA node, shared by workers on that node) in both the guide and the
audit prompt; do not describe PerNuma as per-worker isolation.
- Refine the skip-audit rule to avoid false positives: only flag a
#[thread_aware(skip)] that drops needed affinity. Exempt inert fields
whose ThreadAware impl is an intentional no-op (primitives, String, fn
pointers) and documented intentional process-wide shares
(e.g. Arc<_, PerProcess>), which are recorded author decisions.
- Align the reviewer checklist with the refined skip rule (real affinity
/ meaningful relocate, not an inert no-op).
- Drop the docs.rs-rendered provenance note (AB#7982033, oxidizer_config)
from the published module; the entry stands on its own and those refs
are unresolvable to public crate readers.
This exemption is currently limited to #[thread_aware(skip)], so the audit still reports a manual no-op implementation around a documented, intentionally shared lock. The authoring guide's reviewer checklist explicitly accepts intentional sharing when its contention is documented (crates/thread_aware/src/documentation/mod.rs:245-247). Extend the exemption to manual implementations as well to keep the prompt aligned with the guide.
Require intentionality before flagging shared-lock anti-patterns
The three-sign test also classifies deliberately shared locks as this anti-pattern. That conflicts with the checklist below, which accepts intentional, documented cross-worker sharing (lines 245–247), and with the trait contract allowing usable slower state to be retained (crates/thread_aware_core/src/thread_aware.rs:61-64). Add intentionality as a fourth criterion so this section does not reject designs the checklist permits.
Extract the AI audit skill prompt from this PR. The anti-pattern it
detects is a *usage* concern that manifests in downstream consumer repos
(the known instance, oxidizer_config's View, lives in ox-sdk), so the
reusable audit skill is better hosted in the shared rust-dev tooling
plugin than in this library repo, where it would only surface for
oxidizer contributors. This PR now scopes to the authoring-guide
anti-pattern catalogue entry and reviewer checklist, which are
thread_aware's own documentation and belong here.
Refs AB#7947139.
Heads-up for reviewers: I've extracted the AI audit prompt (.github/prompts/thread-aware-antipattern-audit.prompt.md) from this PR (commit 5059de1). The anti-pattern it detects manifests in downstream consumer repos (the known instance, oxidizer_config's View, is in ox-sdk), so the reusable audit skill is better hosted in the shared rust-dev tooling plugin than in this library repo. This PR now scopes to the authoring-guide anti-pattern catalogue entry + reviewer checklist, which are thread_aware's own docs. The earlier prompt-file review threads are therefore moot here; the prompt content is preserved for relocation.
…B#7947139)
Address review on the anti-pattern catalogue: the three "nominally thread-aware,
actually shared-locked" signs could read as a verdict, but the ThreadAware
contract permits a no-op relocate when nothing is location-dependent and some
state is process-wide by design. Add a paragraph clarifying the signs mark a
suspect, not a defect, and that a documented, intentional process-wide share
(e.g. Arc<_, PerProcess> or a relocate whose comment records the decision) is
the reviewer-checklist exemption, not an anti-pattern. Aligns the catalogue with
the checklist's existing intent question.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 5e0d5396-3a32-40ed-8870-241cd4929082
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
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
thread_awareauthoring guide, plus a reviewer checklist for manualThreadAwareimpls and#[thread_aware(skip)]fields.This implements AB#7947139 and folds the lesson from the removed
thread-aware-view.mdinto the canonical authoring guide.Scope: docs only. An earlier revision also added an AI/Copilot audit prompt; that was extracted to live in the shared rust-dev tooling plugin instead, since the anti-pattern it detects manifests in downstream consumer repos rather than in this library.
Validation
RUSTDOCFLAGS="-D warnings" cargo doc -p thread_aware --no-deps --all-featuresRUSTDOCFLAGS="-D warnings" cargo doc -p thread_aware --no-deps --no-default-features --features derive(fails only on the known pre-existingstd::thread::spawnbroken intra-doc link incrates/thread_aware/src/lib.rs:87; no new warnings)cargo doc2readme --template ../README.j2 --checkfromcrates/thread_aware