1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
[]
= "graphrefly-core"
= "GraphReFly handle-protocol core dispatcher"
= true
= true
= true
= true
= true
= true
= true
[]
= { = true }
= { = true }
= { = true }
= { = true }
= { = true }
= { = true }
= { = true }
# Compile-time `!Send + !Sync` assertions on owner-thread-only types
# (D254 — `DeferQueue` MUST stay `!Send + !Sync` by construction; a
# future field that silently widens the trait bounds breaks the actor-
# model "one owner thread per Core" invariant. Build-time-only; zero
# runtime cost).
= { = true }
# Sync SHA-256 for the `hash` module (no tokio — Core stays synchronous;
# the async-everywhere wrapping is applied only at the napi boundary).
= { = true }
= { = true }
= { = true, = ["time", "sync", "rt", "macros"], = true }
[]
= { = true }
= { = true }
= { = true, = ["time", "sync", "rt", "macros", "rt-multi-thread", "test-util"] }
# Bench-only: lock-strategy microbench (see benches/lock_strategy.rs).
= { = true }
= { = true }
# loom is a concurrency model checker that permutes thread interleavings.
# Used only when compiling with `--cfg loom`. Tests that depend on loom
# must gate themselves with `#[cfg(loom)]` because loom replaces stdlib
# atomics/sync primitives. Run via:
# RUSTFLAGS="--cfg loom" cargo test --test loom_subscription
[]
= { = true }
[[]]
= "dispatcher"
= false
[[]]
= "lock_strategy"
= false
# §7 floor regression harness (D208–D211) — a lean single-threaded
# handle-core mirror; the canonical comparison point for the
# `Core<SingleThreadCell>` ~83 ns target. Retained post-§7.
[[]]
= "minimal_handle_core"
= false
# §7 floor-verification (D216) — the REAL shipped `Core<C>`, both
# `SingleThreadCell` (floor) and `LockedCell` (production default)
# arms, same workloads as `dispatcher.rs`. The honest measure of what
# the §7 rewrite bought on the genuine dispatcher (vs the lean
# `minimal_handle_core` mirror).
[[]]
= "floor_compare"
= false
# §7 parallel-scaling (D216) — does a disjoint `SerializationGroupId`
# set actually run in parallel? N-thread aggregate-throughput scaling
# with `same_group` / `all_none` serialized controls.
[[]]
= "group_scaling"
= false
[]
= ["std", "tokio"]
# `std` is the only supported configuration for now. Kept as a feature so
# `no_std` (alloc-only) remains a future option without breaking the API.
= []
# Timer substrate — spawns tokio tasks for schedule/cancel/fire lifecycle.
# Gated because Core stays fully synchronous; tokio enters only at the
# timer boundary layer. Operators, storage, and bindings enable this.
= ["dep:tokio"]
# Concurrency permutation testing via loom. Enable in CI for the per-subgraph
# RLock + dispatch tests.
= []
# (§7/D208–D211: the throwaway `bench_naive` / `bench_state_collapse`
# perf-investigation features were removed — they isolated the
# union-find / lock-cycle machinery this slice deletes; see
# `docs/porting-deferred.md` §7-D.)
[]
# Loom is enabled via `RUSTFLAGS="--cfg loom"`, not a Cargo feature.
# Tell cargo about the cfg so the default build doesn't emit the
# unexpected_cfgs warning for `#![cfg(loom)]` test gates.
= { = "warn", = ["cfg(loom)"] }