Skip to content

Stop smr-ps-reclaim from dragging std in - #9

Merged
pathscale merged 1 commit into
masterfrom
feat/no-std-reclaim
Sep 7, 2026
Merged

pathscale merged 1 commit into
masterfrom
feat/no-std-reclaim

Conversation

@pathscale

Copy link
Copy Markdown
Owner

smr-ps-reclaim carried "std", with a comment saying ps-reclaim was std-only. That was true when written and stopped being true when ps-reclaim 0.1.4 published, so a no_std Arctic could not use the reclamation backend it was written for. That combination is the point of the whole port and has never once built.

# before
smr-ps-reclaim = ["dep:ps-reclaim", "std"]
std            = ["fearless_simd/std"]
ps-reclaim     = { version = "^0.1, >=0.1.3", optional = true }

# after
smr-ps-reclaim = ["dep:ps-reclaim", "ps-reclaim/libc", "ps-reclaim/spin"]
std            = ["fearless_simd/std", "ps-reclaim?/std"]
ps-reclaim     = { version = "^0.1, >=0.1.4", optional = true, default-features = false }
arctic build ps-reclaim features TLS mechanism
default (std) std + libc + spin thread_local!
--no-default-features --features smr-ps-reclaim libc + spin pthread keys

std wins inside ps-reclaim when both are on, so the default build is unchanged.

Verified against the published 0.1.4, no path patches

default (std)              81 passed, 0 failed
no_std + smr-ps-reclaim    81 passed, 0 failed   <- previously impossible
no_std + smr-seize         79 passed, 0 failed
clippy                     clean

std build    -> ps-reclaim/std: YES
no_std build -> ps-reclaim/std: NO

>=0.1.4 because default-features = false needs the libc and spin features, which 0.1.3 lacks.

Version 0.1.11 — merging publishes it. Single commit, linear.

The feature carried "std" with a comment saying ps-reclaim was std-only. That
was true when it was written and stopped being true when ps-reclaim 0.1.4
published a no_std mode an hour ago, so a no_std Arctic could not use the
reclamation backend it was written for. That combination is the point of the
whole port and it has never once built.

smr-ps-reclaim now asks for the platform pieces without std, and Arctic's own
std feature forwards ps-reclaim/std, which wins inside that crate when both are
on. So the two directions resolve the way they should:

  arctic default (std)          ps-reclaim: std + libc + spin   thread_local!
  arctic --no-default-features  ps-reclaim: libc + spin         pthread keys

Verified against the published 0.1.4 with no path patches: 81 tests pass on
default and on no_std + smr-ps-reclaim, 79 on no_std + smr-seize, clippy clean.

The requirement moves to >=0.1.4 because default-features = false needs the
libc and spin features, which 0.1.3 does not have.

Version 0.1.11: merging publishes it.
@pathscale
pathscale merged commit 8ade8c0 into master Sep 7, 2026
7 checks passed
@pathscale
pathscale deleted the feat/no-std-reclaim branch September 7, 2026 09:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant