This release bumps the MSRV to 1.65. (#332)
- Add
Cell::into_inner
(#341)
- Update generator to 0.8.1 (#338)
- Disable default features of tracing (#343)
- Fix typo (#344)
- Use
core::
instead ofstd::
inlazy_static!
macro (#340) - Allow Mutex to work with
?Sized
types (#339)
- Add
Atomic*::into_inner
(#327) - Add
get_mut
toMutex
andRwLock
(#322) - Implement
AsRef
andBorrow
forArc
(#325)
explore()
,stop_exploring()
,skip_branch()
enable reducing the concurrent state exploration (#323).
- Avoid cancelling generators as it is not a thread-safe operation (#318)
- Increase max threads to 5 (#314)
- Support setting model thread stack size (#311)
- Fix corner case in
RwLock
(#300).
- cell: add
UnsafeCell::into_inner
for parity withstd
(#272) - sync: re-enable
Arc::strong_count
(#172) - sync: implement
Arc::try_unwrap
(#262) - sync: add
mpsc::Receiver::try_recv
(#262)
- show feature flags in docs (#151)
- fix broken RustDoc links (#273)
- sync: Add
Arc::from_std
withoutT: Sized
bound (#226) - sync: Implement
Debug
forAtomicPtr
for allT
(#255) - logs: Add location tracking for threads and atomic operations (#258)
- logs: Add additional location tracking to
Arc
,alloc
, andmpsc
(#265) - logs: Improve
tracing
configuration forLOOM_LOG
(#266) - logs: Add a span for the current model's iteration (#267)
- Add note about in-memory representation of atomic types (#253)
- Document
LOOM_LOG
syntax (#257)
- 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
afterThread::unpark
(#250)
- cell: Add
ConstPtr
andMutPtr
RAII guards toUnsafeCell
(#219)
- Improve error message when execution state is unavailable (such as when
running outside of
loom::model
) (#242)
- thread: Add mock versions of
thread::park
andThread::unpark
(#240)
- Don't attempt to clean up Mutex when threads are deadlocked (#236)
- Update tracing-subscriber to 0.3 (#238)
- Add a loom::cell::Cell, which provides a basic wrapper of the loom UnsafeCell (#196)
- Arc counter manipulations (#225)
- Implement
Mutex::into_inner
andRwLock::into_inner
(#215) - Implement
Release
,AcqRel
, andSeqCst
fences (#220) Arc::as_ptr
added (#230)Arc::pin
added (#224)
- Remove implicit
T: Sized
requirement fromUnsafeCell
(#222) - Update tracing (#227)
- Add several methods to atomic integer types (#217)
- Bump MSRV to 1.51 (#205)
- Add
From
implementation toMutex
(#131) - Add
From
implementation toRwLock
(#209) - Add
From
implementation to atomic types (#210) - Add
fetch_update
to atomics (#212)
- Move
futures-util
todev-dependencies
(#208) - Update
generator
to 0.7 (#203)
- Add a
loom::hint
module containing mocked versions ofspin_loop
andunreachable_unchecked
. (#197)
- Switch to non-deprecated
compare_exchange
(#201)
AtomicI8
,AtomicI16
,AtomicI32
,AtomicI64
, andAtomicIsize
(#189)
- Bump MSRV to
1.45
(#183)
thread::Thread
andthread::ThreadId
(#175)
- An example in the README failing to compile (#132)
- Updated
scoped-tls
to 1.0.0 (#153)
Send
andSync
impls forJoinHandle
(#145)Default
impls forMutex
,RwLock
, andCondvar
(#138)
RwLock
bug with activating threads (#140)
RwLock
bug with two writers (#135).
- incorrect location tracking for some atomic types (#122).
lazy_static
support (#125 + #128)mpsc
channel support (#118)
UnsafeCell
false negative under some scenarios (#119).
RwLock
support (#88)- location tracking to atomic types (#114).
CausalCell
is renamedUnsafeCell
Atomic*::get_mut()
is removed in favor ofwith
andwith_mut
fns.- The max threads setting is removed.
- Atomic coherence checking better matches the spec.
- Models execute much faster
- Loom types are able to perform location tracking for improved error output.
- avoid global happens-before with
SeqCst
ordering (#108).
- internal
async/await
Waker leak (#102).
- speed up model runs (#98, #94)
Send
impl forAtomicWaker
,Atomic*
AtomicWaker::take_waker
(#103).
- update
futures
to 0.3.0 final release (#96).
- thread-local bug when using loom with
--release
(#89). - omitted state explorations when using SeqCst atomic values (#90).
Mutex::try_lock
(#83).- stubbed
Condvar::wait_timeout
(#86).
alloc_zeroed
(#77).AtomicPtr::get_mut
(#80).
thread_local
initialization & dropping with loom primitives (#74).
- Basic leak checking (#73).
Arc::get_mut
(#74).- mocked
thread::Builder
(#74).
- Update futures-util dependency version (#70).
CausalCell
state was updated even when a deferred check was abandoned (#65).- Add
yield_now
inAtomicWaker
when entering a potential spin lock due to task yielding (#66).
futures::block_on
polls spuriously (#59).- mocked types match
std
forSend
andSync
(#61).
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).
- implement
Default
for atomic types (#48).
- only unblock future thread when notified using waker (#44).
CausalCell
failed to detect concurrent immutable/mutable access (#42).
- incorrect causality comparison (#38).
- detect race with CausalCell accessed immediately post spawn (#38).
- implementation of all atomic numeric types (#30).
AtomicBool
(#39).Condvar::notify_all
(#40).
- Update futures-util dependency version (#35).
sync::Arc
implementation (#9).
sync::Arc
mock implementation (#14).AtomicU32
(#24).Atomic::unsync_load
- load from an atomic without synchronization (#26).- thread preemption bounding.
- remove scheduler implementation choices -- generator only (#23).
- use
std::future
(#20).
sync::Arc
implementation (#9).
- Initial release