Build without std, and 0.4.5 - #6
Merged
Merged
Conversation
added 3 commits
September 7, 2026 17:53
The crate is an adaptive radix tree over raw pointers and atomics. Nothing in
it needed an operating system, and it linked one anyway, which is what kept
every consumer that wanted to be no_std from being it.
core:: for ptr, mem, marker, fmt, hint, cmp, slice, arch, alloc::Layout
alloc:: for Arc, Vec, Box, format, the allocator calls
Two things genuinely wanted std and now say so:
- `debug_print` writes to stdout, so it is behind the feature.
- `thread::yield_now` in the spin backoff falls back to `spin_loop` when
there is no scheduler to yield to. That is the same instruction the fast
path above it is already executing, minus the syscall.
`stats` keyed its per-level counters by depth in a `HashMap`; it is a
`BTreeMap` now, which is the same map without a hasher and is what `alloc`
has. `serde` and `ps-reclaim` arrive with default features off and get `std`
back through this crate's own.
Doc examples still say `std::`, because a doctest is compiled as a consumer
and a consumer has one.
cargo test 103 + 7 + 39 passed, 0 failed
clippy, std and no_std clean
default -> ps-reclaim [libc,spin,std]; no_std -> [libc,spin]
`"^0.1, >=0.1.4"` and `"0.1.4"` describe the same set. The second is the form
the rest of the house uses.
cargo test 103 passed
cargo test --no-default-features 103 passed
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.
An adaptive radix tree over raw pointers and atomics. Nothing in it needed an operating system, and it linked one anyway — which is what stopped every consumer that wanted to be
no_stdfrom being it.The two things that genuinely wanted std
debug_printwrites to stdout, so it is behind the feature.thread::yield_nowin the spin backoff falls back tocore::hint::spin_loop()when there is no scheduler to yield to. That is the same instruction the fast path directly above it already executes, minus the syscall.statskeyed its per-level counters by depth in aHashMap. It is aBTreeMapnow — the same map without a hasher, and the oneallochas.serdeandps-reclaimarrive with default features off and getstdback through this crate's own feature, which is default-on, so nothing downstream changes unless it asks.Doc examples still say
std::, deliberately: a doctest compiles as a consumer, and a consumer has one.What
no_stddoes not mean hereIt does not mean bare metal.
ps-reclaimkeeps its participant slot in thread-local storage and itsno_stdpath is pthread keys, so this still needs an operating system —x86_64-unknown-nonestops at ps-reclaim, not at this crate.no_stdis a statement about the standard library, not about a class of hardware.Checks
Version 0.4.5. Also carries the house working agreement (
AGENTS.md,CLAUDE.md), which was sitting unpushed locally.Companion to pathscale/WorkTablesIndex (same port) and pathscale/parking_lot_lite_hack#3.
worktable-vecis the consumer that wanted both: pathscale/WorkTable-vec#4 currently has to declare that itscongeeandwtifeatures implystd, and this is half of what removes that.