PackageTrack
Sign in Get early access

loom

Permutation testing for concurrent code

0.7.2 60M downloads/mo #1105 most downloaded on crates.io tokio-rs/loom

What this package is like to depend on

Last release 2 years ago

no release in 18 months

Release timing varies

gaps range from 1 weeks to 1.1 years

Nearly every release is documented

notes for 39 of 40 stable releases

Nothing withdrawn

no release was ever pulled

8 years old

40 releases · first in 2018

0 releases in the last 12 months

see the full history below

Release timeline

40 releases · Dec 2018 to Apr 2024
2019 2020 2021 2022 2023 2024 2025 2026
Release Pre-release

Releases

latest 40
  1. 0.7.2 23 Apr 2024
    Release notes

    This release bumps the MSRV to 1.65. (#332)

    Added

    • Add Cell::into_inner (#341)

    Changed

    • Update generator to 0.8.1 (#338)

    Fixed

    • Disable default features of tracing (#343)
    • Fix typo (#344)
    • Use core:: instead of std:: in lazy_static! macro (#340)
    • Allow Mutex to work with ?Sized types (#339)
    Open source →
    Release notes

    This release bumps the MSRV to 1.65. (#332)

    Added

    • Add Cell::into_inner (#341)

    Changed

    • Update generator to 0.8.1 (#338)

    Fixed

    • Disable default features of tracing (#343)
    • Fix typo (#344)
    • Use core:: instead of std:: in lazy_static! macro (#340)
    • Allow Mutex to work with ?Sized types (#339)
    Open source →
  2. 0.7.1 02 Oct 2023
    Release notes

    Added

    • Add Atomic*::into_inner (#327)
    • Add get_mut to Mutex and RwLock (#322)
    • Implement AsRef and Borrow for Arc (#325)
    Open source →
    Release notes

    Added

    • Add Atomic*::into_inner (#327)
    • Add get_mut to Mutex and RwLock (#322)
    • Implement AsRef and Borrow for Arc (#325)
    Open source →
  3. 0.7.0 04 Aug 2023
    Release notes

    Added

    • explore(), stop_exploring(), skip_branch() enable reducing the
      concurrent state exploration (#323).
    Open source →
    Release notes

    Added

    • explore(), stop_exploring(), skip_branch() enable reducing the concurrent state exploration (#323).
    Open source →
  4. 0.6.1 21 Jul 2023
    Release notes

    Fixed

    • Avoid cancelling generators as it is not a thread-safe operation (#318)
    Open source →
    Release notes

    Fixed

    • Avoid cancelling generators as it is not a thread-safe operation (#318)
    Open source →
  5. 0.6.0 27 Jun 2023
    Release notes

    Changed

    • Increase max threads to 5 (#314)

    Added

    • Support setting model thread stack size (#311)

    Fixed

    • Fix corner case in RwLock (#300).
    Open source →
    Release notes

    Changed

    • Increase max threads to 5 (#314)

    Added

    • Support setting model thread stack size (#311)

    Fixed

    • Fix corner case in RwLock (#300).
    Open source →
  6. 0.5.6 19 May 2022
    Release notes

    Added

    • cell: add UnsafeCell::into_inner for parity with std (#272)
    • sync: re-enable Arc::strong_count (#172)
    • sync: implement Arc::try_unwrap (#262)
    • sync: add mpsc::Receiver::try_recv (#262)

    Documented

    • show feature flags in docs (#151)
    • fix broken RustDoc links (#273)
    Open source →
    Release notes

    Added

    • cell: add UnsafeCell::into_inner for parity with std (#272)
    • sync: re-enable Arc::strong_count (#172)
    • sync: implement Arc::try_unwrap (#262)
    • sync: add mpsc::Receiver::try_recv (#262)

    Documented

    • show feature flags in docs (#151)
    • fix broken RustDoc links (#273)
    Open source →
  7. 0.5.5 13 May 2022
    Release notes

    Added

    • sync: Add Arc::from_std without T: Sized bound (#226)
    • sync: Implement Debug for AtomicPtr for all T (#255)
    • logs: Add location tracking for threads and atomic operations (#258)
    • logs: Add additional location tracking to Arc, alloc, and mpsc (#265)
    • logs: Improve tracing configuration for LOOM_LOG (#266)
    • logs: Add a span for the current model's iteration (#267)

    Documented

    • Add note about in-memory representation of atomic types (#253)
    • Document LOOM_LOG syntax (#257)

    Fixed

    • Fix double panic when exceeding the branch limit in Drop (#245)
    • cell: Allow using {Mut,Const}Ptr::{deref,with} when the pointee is !Sized
      (#247)
    • thread: Fix semantics of thread::park after Thread::unpark (#250)
    Open source →
    Release notes

    Added

    • sync: Add Arc::from_std without T: Sized bound (#226)
    • sync: Implement Debug for AtomicPtr for all T (#255)
    • logs: Add location tracking for threads and atomic operations (#258)
    • logs: Add additional location tracking to Arc, alloc, and mpsc (#265)
    • logs: Improve tracing configuration for LOOM_LOG (#266)
    • logs: Add a span for the current model's iteration (#267)

    Documented

    • Add note about in-memory representation of atomic types (#253)
    • Document LOOM_LOG syntax (#257)

    Fixed

    • Fix double panic when exceeding the branch limit in Drop (#245)
    • cell: Allow using {Mut,Const}Ptr::{deref,with} when the pointee is !Sized (#247)
    • thread: Fix semantics of thread::park after Thread::unpark (#250)
    Open source →
  8. 0.5.4 03 Dec 2021
    Release notes

    Added

    • cell: Add ConstPtr and MutPtr RAII guards to UnsafeCell (#219)

    Changed

    • Improve error message when execution state is unavailable (such as when running outside of loom::model) (#242)
    Open source →
  9. 0.5.3 23 Nov 2021
    Release notes

    Added

    • thread: Add mock versions of thread::park and Thread::unpark (#240)

    Changed

    • Don't attempt to clean up Mutex when threads are deadlocked (#236)
    • Update tracing-subscriber to 0.3 (#238)
    Open source →
  10. 0.5.2 07 Oct 2021
    Release notes

    0.5.2 (October 7, 2021)

    Added

    • Add a loom::cell::Cell, which provides a basic wrapper of the loom UnsafeCell (#196)
    • Arc counter manipulations (#225)
    • Implement Mutex::into_inner and RwLock::into_inner (#215)
    • Implement Release, AcqRel, and SeqCst fences (#220)
    • Arc::as_ptr added (#230)
    • Arc::pin added (#224)

    Changed

    • Remove implicit T: Sized requirement from UnsafeCell (#222)
    • Update tracing (#227)
    Open source →
    Release notes

    Added

    • Add a loom::cell::Cell, which provides a basic wrapper of the loom UnsafeCell (#196)
    • Arc counter manipulations (#225)
    • Implement Mutex::into_inner and RwLock::into_inner (#215)
    • Implement Release, AcqRel, and SeqCst fences (#220)
    • Arc::as_ptr added (#230)
    • Arc::pin added (#224)

    Changed

    • Remove implicit T: Sized requirement from UnsafeCell (#222)
    • Update tracing (#227)
    Open source →
  11. 0.5.1 02 Jul 2021
    Release notes

    Added

    • Add several methods to atomic integer types (#217)
    Open source →
  12. 0.5.0 12 Apr 2021
    Release notes

    chore: prepare v0.5.0 (#214)

    Open source →
    Release notes

    Breaking

    • Bump MSRV to 1.51 (#205)

    Added

    • Add From implementation to Mutex (#131)
    • Add From implementation to RwLock (#209)
    • Add From implementation to atomic types (#210)
    • Add fetch_update to atomics (#212)

    Changed

    • Move futures-util to dev-dependencies (#208)
    • Update generator to 0.7 (#203)
    Open source →
  13. 0.4.1 02 Apr 2021
    Release notes

    Added

    • Add a loom::hint module containing mocked versions of spin_loop and unreachable_unchecked. (#197)

    Changed

    • Switch to non-deprecated compare_exchange (#201)
    Open source →
  14. 0.4.0 03 Dec 2020
    Release notes

    Added

    • AtomicI8, AtomicI16, AtomicI32, AtomicI64, and AtomicIsize (#189)

    Breaking

    • Bump MSRV to 1.45 (#183)
    Open source →
  15. 0.3.6 08 Oct 2020
    Release notes

    Added

    • thread::Thread and thread::ThreadId (#175)
    Open source →
  16. 0.3.5 26 Jul 2020
    Release notes

    Fixed

    • An example in the README failing to compile (#132)

    Changed

    • Updated scoped-tls to 1.0.0 (#153)

    Added

    • Send and Sync impls for JoinHandle (#145)
    • Default impls for Mutex, RwLock, and Condvar (#138)
    Open source →
  17. 0.3.4 02 May 2020
    Release notes

    Fixed

    • RwLock bug with activating threads (#140)
    Open source →
  18. 0.3.3 28 Apr 2020
    Release notes

    Fixes

    • RwLock bug with two writers (#135).
    Open source →
  19. 0.3.2 13 Apr 2020
    Release notes

    Fixed

    • incorrect location tracking for some atomic types (#122).

    Added

    • lazy_static support (#125 + #128)
    • mpsc channel support (#118)
    Open source →
  20. 0.3.1 09 Apr 2020
    Release notes

    Fixed

    • UnsafeCell false negative under some scenarios (#119).

    Added

    • RwLock support (#88)
    • location tracking to atomic types (#114).
    Open source →
  21. 0.3.0 24 Mar 2020
    Release notes

    Breaking

    • CausalCell is renamed UnsafeCell
    • Atomic*::get_mut() is removed in favor of with and with_mut fns.
    • The max threads setting is removed.

    Fixed

    • Atomic coherence checking better matches the spec.

    Added

    • Models execute much faster
    • Loom types are able to perform location tracking for improved error output.
    Open source →
  22. 0.2.15 25 Feb 2020
    Release notes

    Fixed

    • avoid global happens-before with SeqCst ordering (#108).
    Open source →
  23. 0.2.14 20 Nov 2019
    Release notes

    Fixed

    • internal async/await Waker leak (#102).

    Changed

    • speed up model runs (#98, #94)

    Added

    • Send impl for AtomicWaker, Atomic*
    • AtomicWaker::take_waker (#103).
    Open source →
  24. 0.2.13 06 Nov 2019
    Release notes

    Changed

    • update futures to 0.3.0 final release (#96).
    Open source →
  25. 0.2.12 29 Oct 2019
    Release notes

    Fixed

    • thread-local bug when using loom with --release (#89).
    • omitted state explorations when using SeqCst atomic values (#90).
    Open source →
  26. 0.2.11 24 Oct 2019
    Release notes

    Added

    • Mutex::try_lock (#83).
    • stubbed Condvar::wait_timeout (#86).
    Open source →
  27. 0.2.10 16 Oct 2019
    Release notes

    Added

    • alloc_zeroed (#77).
    • AtomicPtr::get_mut (#80).
    Open source →
  28. 0.2.9 09 Oct 2019
    Release notes

    Fixed

    • thread_local initialization & dropping with loom primitives (#74).

    Added

    • Basic leak checking (#73).
    • Arc::get_mut (#74).
    • mocked thread::Builder (#74).
    Open source →
  29. 0.2.8 30 Sep 2019
    Release notes

    Chore

    • Update futures-util dependency version (#70).
    Open source →
  30. 0.2.7 26 Sep 2019
    Release notes

    Fixed

    • CausalCell state was updated even when a deferred check was abandoned (#65).
    • Add yield_now in AtomicWaker when entering a potential spin lock due to task yielding (#66).
    Open source →
  31. 0.2.6 25 Sep 2019
    Release notes

    Changed

    • futures::block_on polls spuriously (#59).
    • mocked types match std for Send and Sync (#61).

    Added

    • fetch_xor for atomic numbers (#54).
    • initial atomic::fence support (#57).
    • Notify primitive for writing external mocked types (#60).
    • thread_local! macro that works with loom threads (#62).
    • API for deferring CausalCell causality checks (#62).
    Open source →
  32. 0.2.5 05 Sep 2019
    Release notes

    Added

    • implement Default for atomic types (#48).
    Open source →
  33. 0.2.4 20 Aug 2019
    Release notes

    Fixed

    • only unblock future thread when notified using waker (#44).
    Open source →
  34. 0.2.3 18 Aug 2019
    Release notes

    Fixed

    • CausalCell failed to detect concurrent immutable/mutable access (#42).
    Open source →
  35. 0.2.2 15 Aug 2019
    Release notes

    Fixed

    • incorrect causality comparison (#38).
    • detect race with CausalCell accessed immediately post spawn (#38).

    Added

    • implementation of all atomic numeric types (#30).
    • AtomicBool (#39).
    • Condvar::notify_all (#40).
    Open source →
  36. 0.2.1 10 Aug 2019
    Release notes

    Chore

    • Update futures-util dependency version (#35).

    Added

    • sync::Arc implementation (#9).
    Open source →
  37. 0.2.0 08 Aug 2019
    Release notes

    Added

    • sync::Arc mock implementation (#14).
    • AtomicU32 (#24).
    • Atomic::unsync_load - load from an atomic without synchronization (#26).
    • thread preemption bounding.

    Changed

    • remove scheduler implementation choices -- generator only (#23).
    • use std::future (#20).
    Open source →
  38. 0.1.1 19 Feb 2019
    Release notes

    Added

    • sync::Arc implementation (#9).
    Open source →
  39. 0.1.0 09 Jan 2019
    Release notes
    • Initial release
    Open source →
  40. 0.0.1 07 Dec 2018

    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