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
Releases
latest 40-
0.7.223 Apr 2024Release notes
Open source →This release bumps the MSRV to 1.65. (#332)
Added
- Add
Cell::into_inner(#341)
Changed
- Update generator to 0.8.1 (#338)
Fixed
Release notes
Open source →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 ofstd::inlazy_static!macro (#340) - Allow Mutex to work with
?Sizedtypes (#339)
- Add
-
0.7.102 Oct 2023Release notes
Open source →Added
- Add
Atomic*::into_inner(#327) - Add
get_muttoMutexandRwLock(#322) - Implement
AsRefandBorrowforArc(#325)
- Add
-
0.7.004 Aug 2023Release notes
Open source →Added
explore(),stop_exploring(),skip_branch()enable reducing the
concurrent state exploration (#323).
Release notes
Open source →Added
explore(),stop_exploring(),skip_branch()enable reducing the concurrent state exploration (#323).
-
0.6.121 Jul 2023Release notes
Open source →Fixed
- Avoid cancelling generators as it is not a thread-safe operation (#318)
Release notes
Open source →Fixed
- Avoid cancelling generators as it is not a thread-safe operation (#318)
-
0.6.027 Jun 2023Release notes
Open source →Changed
- Increase max threads to 5 (#314)
Added
- Support setting model thread stack size (#311)
Fixed
- Fix corner case in
RwLock(#300).
Release notes
Open source →Changed
- Increase max threads to 5 (#314)
Added
- Support setting model thread stack size (#311)
Fixed
- Fix corner case in
RwLock(#300).
-
0.5.619 May 2022Release notes
Open source →Added
- cell: add
UnsafeCell::into_innerfor parity withstd(#272) - sync: re-enable
Arc::strong_count(#172) - sync: implement
Arc::try_unwrap(#262) - sync: add
mpsc::Receiver::try_recv(#262)
Documented
Release notes
Open source →Added
- cell: add
UnsafeCell::into_innerfor parity withstd(#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)
- cell: add
-
0.5.513 May 2022Release notes
Open source →Added
- sync: Add
Arc::from_stdwithoutT: Sizedbound (#226) - sync: Implement
DebugforAtomicPtrfor allT(#255) - logs: Add location tracking for threads and atomic operations (#258)
- logs: Add additional location tracking to
Arc,alloc, andmpsc(#265) - logs: Improve
tracingconfiguration forLOOM_LOG(#266) - logs: Add a span for the current model's iteration (#267)
Documented
Fixed
Release notes
Open source →Added
- sync: Add
Arc::from_stdwithoutT: Sizedbound (#226) - sync: Implement
DebugforAtomicPtrfor allT(#255) - logs: Add location tracking for threads and atomic operations (#258)
- logs: Add additional location tracking to
Arc,alloc, andmpsc(#265) - logs: Improve
tracingconfiguration forLOOM_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_LOGsyntax (#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::parkafterThread::unpark(#250)
- sync: Add
-
0.5.403 Dec 2021Release notes
Open source →Added
- cell: Add
ConstPtrandMutPtrRAII guards toUnsafeCell(#219)
Changed
- Improve error message when execution state is unavailable (such as when
running outside of
loom::model) (#242)
- cell: Add
-
0.5.323 Nov 2021Release notes
Open source →Added
- thread: Add mock versions of
thread::parkandThread::unpark(#240)
Changed
- Don't attempt to clean up Mutex when threads are deadlocked (#236)
- Update tracing-subscriber to 0.3 (#238)
- thread: Add mock versions of
-
0.5.207 Oct 2021Release notes
Open source →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_innerandRwLock::into_inner(#215) - Implement
Release,AcqRel, andSeqCstfences (#220) Arc::as_ptradded (#230)Arc::pinadded (#224)
Changed
Release notes
Open source →Added
- Add a loom::cell::Cell, which provides a basic wrapper of the loom UnsafeCell (#196)
- Arc counter manipulations (#225)
- Implement
Mutex::into_innerandRwLock::into_inner(#215) - Implement
Release,AcqRel, andSeqCstfences (#220) Arc::as_ptradded (#230)Arc::pinadded (#224)
Changed
- Remove implicit
T: Sizedrequirement fromUnsafeCell(#222) - Update tracing (#227)
-
0.5.102 Jul 2021 -
0.5.012 Apr 2021Release notes
Open source →Breaking
- Bump MSRV to 1.51 (#205)
Added
- Add
Fromimplementation toMutex(#131) - Add
Fromimplementation toRwLock(#209) - Add
Fromimplementation to atomic types (#210) - Add
fetch_updateto atomics (#212)
Changed
- Move
futures-utiltodev-dependencies(#208) - Update
generatorto 0.7 (#203)
-
0.4.102 Apr 2021Release notes
Open source →Added
- Add a
loom::hintmodule containing mocked versions ofspin_loopandunreachable_unchecked. (#197)
Changed
- Switch to non-deprecated
compare_exchange(#201)
- Add a
-
0.4.003 Dec 2020Release notes
Open source →Added
AtomicI8,AtomicI16,AtomicI32,AtomicI64, andAtomicIsize(#189)
Breaking
- Bump MSRV to
1.45(#183)
-
0.3.608 Oct 2020 -
0.3.526 Jul 2020Release notes
Open source →Fixed
- An example in the README failing to compile (#132)
Changed
- Updated
scoped-tlsto 1.0.0 (#153)
Added
SendandSyncimpls forJoinHandle(#145)Defaultimpls forMutex,RwLock, andCondvar(#138)
-
0.3.402 May 2020 -
0.3.328 Apr 2020 -
0.3.213 Apr 2020Release notes
Open source →Fixed
- incorrect location tracking for some atomic types (#122).
Added
lazy_staticsupport (#125 + #128)mpscchannel support (#118)
-
0.3.109 Apr 2020Release notes
Open source →Fixed
UnsafeCellfalse negative under some scenarios (#119).
Added
RwLocksupport (#88)- location tracking to atomic types (#114).
-
0.3.024 Mar 2020Release notes
Open source →Breaking
CausalCellis renamedUnsafeCellAtomic*::get_mut()is removed in favor ofwithandwith_mutfns.- 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.
-
0.2.1525 Feb 2020 -
0.2.1420 Nov 2019Release notes
Open source →Fixed
- internal
async/awaitWaker leak (#102).
Changed
- speed up model runs (#98, #94)
Added
Sendimpl forAtomicWaker,Atomic*AtomicWaker::take_waker(#103).
- internal
-
0.2.1306 Nov 2019 -
0.2.1229 Oct 2019Release notes
Open source →Fixed
- thread-local bug when using loom with
--release(#89). - omitted state explorations when using SeqCst atomic values (#90).
- thread-local bug when using loom with
-
0.2.1124 Oct 2019 -
0.2.1016 Oct 2019 -
0.2.909 Oct 2019Release notes
Open source →Fixed
thread_localinitialization & dropping with loom primitives (#74).
Added
- Basic leak checking (#73).
Arc::get_mut(#74).- mocked
thread::Builder(#74).
-
0.2.830 Sep 2019 -
0.2.726 Sep 2019Release notes
Open source →Fixed
CausalCellstate was updated even when a deferred check was abandoned (#65).- Add
yield_nowinAtomicWakerwhen entering a potential spin lock due to task yielding (#66).
-
0.2.625 Sep 2019Release notes
Open source →Changed
futures::block_onpolls spuriously (#59).- mocked types match
stdforSendandSync(#61).
Added
fetch_xorfor atomic numbers (#54).- initial
atomic::fencesupport (#57). Notifyprimitive for writing external mocked types (#60).thread_local!macro that works with loom threads (#62).- API for deferring
CausalCellcausality checks (#62).
-
0.2.505 Sep 2019 -
0.2.420 Aug 2019 -
0.2.318 Aug 2019Release notes
Open source →Fixed
CausalCellfailed to detect concurrent immutable/mutable access (#42).
-
0.2.215 Aug 2019Release notes
Open source →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).
-
0.2.110 Aug 2019Release notes
Open source →Chore
- Update futures-util dependency version (#35).
Added
sync::Arcimplementation (#9).
-
0.2.008 Aug 2019Release notes
Open source →Added
sync::Arcmock 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).
-
0.1.119 Feb 2019 -
0.1.009 Jan 2019 -
0.0.107 Dec 2018Nothing published for this version