PackageTrack
Sign in Get early access

spin

Spin-based synchronization primitives

0.12.3 617M downloads/mo #149 most downloaded on crates.io source

What this package is like to depend on

Last release 6 days 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

10 releases in the last 12 months

see the full history below

Release timeline

49 releases · Jan 2015 to Aug 2026
2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026
Release Pre-release Withdrawn

Releases

latest 49
  1. 0.12.3 17 Aug 2026
    Release notes

    Added

    • lock_api::MappedMutexGuard
    Open source →
  2. 0.12.2 13 Jul 2026
    Release notes

    Fixed

    • Unsoundness in Once::force_into_inner, Once::try_into_inner, and Once::into_inner_unchecked. Thanks to @Poseidon for catching this.
    Open source →
  3. 0.12.1 23 Jun 2026 withdrawn
    Release notes

    Fixed

    • 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:

      • You use RwLock via the lock_api interface specifically
      • You call upgradable_read to create an upgradeable lock guard
      • You call try_upgrade on the upgradeable lock guard
    • LazyLock's Sync implementation is now less restrictive

    Open source →
  4. 0.12.0 20 May 2026 withdrawn
    Release notes

    Changed

    • Moved to Codeberg

    Fixed

    • Unsoundness in 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.
    Open source →
  5. 0.11.1 13 Jul 2026

    Nothing published for this version

  6. 0.11.0 14 May 2026 withdrawn
    Release notes

    Added

    • lock_api mapped read/write guard for RwLock
    • Once::init_from_ref
    • rustc-dep-of-std feature, allowing spin to be used as a standard library dependency

    Changed

    • MSRV is now 1.71
    • Lazy is now LazyLock

    Fixed

    • lock_api feature name for RawRwLockUpgradeDowngrade
    Open source →
  7. 0.10.1 13 Jul 2026

    Nothing published for this version

  8. 0.10.0 26 Mar 2025 withdrawn
    Release notes

    Added

    • Mutex::try_lock_weak
    • RwLock::try_write_weak
    • RwLock::try_upgrade_weak

    Changed

    • Updated MSRV to 1.60
    • Use dep: syntax in Cargo.toml
    • portable_atomic feature has been renamed to portable-atomic, for consistency.

    Fixed

    Open source →
  9. 0.9.9 13 Jul 2026

    Nothing published for this version

  10. 0.9.8 03 Apr 2023 withdrawn
    Release notes

    Fixed

    • Unsoundness in Once::try_call_once caused by an Err(_) result
    Open source →
  11. 0.9.7 27 Mar 2023 withdrawn
    Release notes

    Fixed

    • Relaxed accidentally restricted Send/Sync bounds for Mutex guards
    Open source →
  12. 0.9.6 13 Mar 2023 withdrawn
    Release notes

    Fixed

    • Relaxed accidentally restricted Send/Sync bounds for RwLock guards
    Open source →
  13. 0.9.5 07 Feb 2023 withdrawn
    Release notes

    Added

    • FairMutex, a new mutex implementation that reduces writer starvation.
    • A MSRV policy: Rust 1.38 is currently required

    Changed

    • The crate's CI now has full MIRI integration, further improving the confidence you can have in the implementation.

    Fixed

    • Ensured that the crate's abstractions comply with stacked borrows rules.
    • Unsoundness in the RwLock that could be triggered via a reader overflow
    • Relaxed various Send/Sync bound requirements to make the crate more flexible
    Open source →
  14. 0.9.4 14 Jul 2022 withdrawn
    Release notes

    Fixed

    • Fixed unsoundness in RwLock on reader overflow
    • Relaxed Send/Sync bounds for SpinMutex and TicketMutex (doesn't affect Mutex itself)
    Open source →
  15. 0.9.3 17 Apr 2022 withdrawn
    Release notes

    Added

    • Implemented Default for Once
    • Once::try_call_once

    Fixed

    • Fixed bug that caused Once::call_once to incorrectly fail
    Open source →
  16. 0.9.2 09 Jul 2021 withdrawn
    Release notes

    Changed

    • Improved Once performance by reducing the memory footprint of internal state to one byte

    Fixed

    • Improved performance of Once by relaxing ordering guarantees and removing redundant checks
    Open source →
  17. 0.9.1 20 Jun 2021 withdrawn
    Release notes

    Added

    • Default type parameter on Once for better ergonomics
    Open source →
  18. 0.9.0 18 Mar 2021 withdrawn
    Release notes

    Changed

    • Placed all major API features behind feature flags

    Fixed

    • A compilation bug with the lock_api feature
    Open source →
  19. 0.8.1 13 Jul 2026

    Nothing published for this version

  20. 0.8.0 15 Mar 2021 withdrawn
    Release notes

    Added

    • Once::get_unchecked
    • RelaxStrategy trait with type parameter on all locks to support switching between relax strategies

    Changed

    • lock_api1 feature is now named lock_api
    Open source →
  21. 0.7.2 13 Jul 2026

    Nothing published for this version

  22. 0.7.1 12 Jan 2021 withdrawn
    Release notes

    Fixed

    • Prevented Once leaking the inner value upon drop
    Open source →
  23. 0.7.0 18 Oct 2020 withdrawn
    Release notes

    Added

    • Once::initialized
    • Once::get_mut
    • Once::try_into_inner
    • Once::poll
    • RwLock, Mutex and Once now implement From<T>
    • Lazy type for lazy initialization
    • TicketMutex, an alternative mutex implementation
    • std feature flag to enable thread yielding instead of spinning
    • Mutex::is_locked/SpinMutex::is_locked/TicketMutex::is_locked
    • Barrier

    Changed

    • Once::wait now spins even if initialization has not yet started
    • Guard::leak is now an associated function instead of a method
    • Improved the performance of SpinMutex by relaxing unnecessarily conservative ordering requirements
    Open source →
  24. 0.6.0 08 Oct 2020
    Release notes

    Added

    • More dynamic Send/Sync bounds for lock guards
    • lock_api compatibility
    • Guard::leak methods
    • RwLock::reader_count and RwLock::writer_count
    • Display implementation for guard types

    Changed

    • Made Debug impls of lock guards just show the inner type like std
    Open source →
  25. 0.5.2 27 Aug 2019

    Nothing published for this version

  26. 0.5.1 07 Aug 2019

    Nothing published for this version

  27. 0.5.0 08 Jan 2019

    Nothing published for this version

  28. 0.4.10 30 Oct 2018

    Nothing published for this version

  29. 0.4.9 14 Aug 2018

    Nothing published for this version

  30. 0.4.8 20 Apr 2018

    Nothing published for this version

  31. 0.4.7 13 Mar 2018

    Nothing published for this version

  32. 0.4.6 25 Sep 2017

    Nothing published for this version

  33. 0.4.5 29 Oct 2016

    Nothing published for this version

  34. 0.4.4 10 Sep 2016

    Nothing published for this version

  35. 0.4.3 17 Jun 2016

    Nothing published for this version

  36. 0.4.2 20 May 2016

    Nothing published for this version

  37. 0.4.1 13 May 2016

    Nothing published for this version

  38. 0.4.0 18 Apr 2016

    Nothing published for this version

  39. 0.3.5 10 Jan 2016

    Nothing published for this version

  40. 0.3.4 17 Sep 2015

    Nothing published for this version

  41. 0.3.3 25 Aug 2015

    Nothing published for this version

  42. 0.3.2 16 Aug 2015

    Nothing published for this version

  43. 0.3.1 02 Jul 2015

    Nothing published for this version

  44. 0.3.0 26 Jun 2015

    Nothing published for this version

  45. 0.2.1 18 Apr 2015

    Nothing published for this version

  46. 0.2.0 04 Apr 2015

    Nothing published for this version

  47. 0.1.4 04 Apr 2015

    Nothing published for this version

  48. 0.1.3 30 Jan 2015

    Nothing published for this version

  49. 0.1.2 27 Jan 2015

    Nothing published for this version

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive