NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #156 most downloaded on crates.io
Spin-based synchronization primitives
Last release 1 months ago
17 Aug 2026
Ships unpredictably
gaps range from 2 weeks to 2.0 years
Rarely documented
notes for 3 of 33 stable releases
16 versions withdrawn
withdrawn after publishing
12 years old
49 releases · first in 2015
### Added - lock_api::MappedMutexGuard
lock_api::MappedMutexGuardUnsoundness in Once::force_into_inner, Once::try_into_inner, and Once::into_inner_unchecked. Thanks to @Poseidon for catching this.
Once::force_into_inner, Once::try_into_inner, and
Once::into_inner_unchecked. Thanks to @Poseidon for catching this.One column per quarter.
Unsoundness in RwLock's try_upgrade path for the lock_api interface has been fixed. Note that this unsoundness only affects you if all of the followin
Unsoundness in RwLock's try_upgrade path for the lock_api interface has been
fixed. Note that this unsoundness only affects you if all of the following apply:
RwLock via the lock_api interface specificallyupgradable_read to create an upgradeable lock guardtry_upgrade on the upgradeable lock guardLazyLock's Sync implementation is now less restrictive
Note that we do not consider this CVE-worthy since there's no clear path to exploiting this and there's no clear reason for the compiler to actually g…
FairMutex caused by an undue extension of a reference lifetime
outside of a critical section. Note that we do not consider this CVE-worthy since
there's no clear path to exploiting this and there's no clear reason for the compiler
to actually generate code that falls afoul of the issue. If you have found an example
of this issue leading to unexpected behaviour in practice, please open an issue.Nothing published for this version
lock_api mapped read/write guard for RwLock
lock_api mapped read/write guard for RwLockOnce::init_from_refrustc-dep-of-std feature, allowing spin to be used as a standard library dependency1.71Lazy is now LazyLocklock_api feature name for RawRwLockUpgradeDowngradeNothing published for this version
portable_atomic feature has been renamed to portable-atomic, for consistency.
Mutex::try_lock_weakRwLock::try_write_weakRwLock::try_upgrade_weakdep: syntax in Cargo.tomlportable_atomic feature has been renamed to portable-atomic, for consistency.Nothing published for this version
Unsoundness in Once::try_call_once caused by an Err(_) result
Once::try_call_once caused by an Err(_) resultRelaxed accidentally restricted Send/Sync bounds for Mutex guards
Send/Sync bounds for Mutex guardsRelaxed accidentally restricted Send/Sync bounds for RwLock guards
Send/Sync bounds for RwLock guardsFairMutex, a new mutex implementation that reduces writer starvation.
FairMutex, a new mutex implementation that reduces writer starvation.RwLock that could be triggered via a reader overflowSend/Sync bound requirements to make the crate more flexibleFixed unsoundness in RwLock on reader overflow
RwLock on reader overflowSend/Sync bounds for SpinMutex and TicketMutex (doesn't affect Mutex itself)Fixed bug that caused Once::call_once to incorrectly fail
Default for OnceOnce::try_call_onceOnce::call_once to incorrectly failImproved Once performance by reducing the memory footprint of internal state to one byte
Once performance by reducing the memory footprint of internal state to one byteOnce by relaxing ordering guarantees and removing redundant checksDefault type parameter on Once for better ergonomics
Once for better ergonomicsPlaced all major API features behind feature flags
lock_api featureNothing published for this version
RelaxStrategy trait with type parameter on all locks to support switching between relax strategies
Once::get_uncheckedRelaxStrategy trait with type parameter on all locks to support switching between relax strategieslock_api1 feature is now named lock_apiNothing published for this version
Prevented Once leaking the inner value upon drop
Once leaking the inner value upon dropRwLock, Mutex and Once now implement From
Once::initializedOnce::get_mutOnce::try_into_innerOnce::pollRwLock, Mutex and Once now implement From<T>Lazy type for lazy initializationTicketMutex, an alternative mutex implementationstd feature flag to enable thread yielding instead of spinningMutex::is_locked/SpinMutex::is_locked/TicketMutex::is_lockedBarrierOnce::wait now spins even if initialization has not yet startedGuard::leak is now an associated function instead of a methodSpinMutex by relaxing unnecessarily conservative
ordering requirementsMore dynamic Send/Sync bounds for lock guards
Send/Sync bounds for lock guardslock_api compatibilityGuard::leak methodsRwLock::reader_count and RwLock::writer_countDisplay implementation for guard typesDebug impls of lock guards just show the inner type like stdNothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →