Skip to content

Latest commit

 

History

History
359 lines (228 loc) · 7.71 KB

CHANGELOG.md

File metadata and controls

359 lines (228 loc) · 7.71 KB

0.7.2

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)

0.7.1 (October 2, 2023)

Added

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

0.7.0 (August 4, 2023)

Added

  • explore(), stop_exploring(), skip_branch() enable reducing the concurrent state exploration (#323).

0.6.1 (July 21, 2023)

Fixed

  • Avoid cancelling generators as it is not a thread-safe operation (#318)

0.6.0 (June 17, 2023)

Changed

  • Increase max threads to 5 (#314)

Added

  • Support setting model thread stack size (#311)

Fixed

  • Fix corner case in RwLock (#300).

0.5.6 (May 19, 2022)

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)

0.5.5 (May 10, 2022)

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)

0.5.4 (December 3, 2021)

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)

0.5.3 (November 23, 2021)

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)

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)

0.5.1 (July 2, 2021)

Added

  • Add several methods to atomic integer types (#217)

0.5.0 (April 12, 2021)

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)

0.4.1 (April 1, 2021)

Added

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

Changed

  • Switch to non-deprecated compare_exchange (#201)

0.4.0 (December 3, 2020)

Added

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

Breaking

  • Bump MSRV to 1.45 (#183)

0.3.6 (October 8, 2020)

Added

  • thread::Thread and thread::ThreadId (#175)

0.3.5 (July 26, 2020)

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)

0.3.4 (May 2, 2020)

Fixed

  • RwLock bug with activating threads (#140)

0.3.3 (April 28, 2020)

Fixes

  • RwLock bug with two writers (#135).

0.3.2 (April 13, 2020)

Fixed

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

Added

  • lazy_static support (#125 + #128)
  • mpsc channel support (#118)

0.3.1 (April 8, 2020)

Fixed

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

Added

  • RwLock support (#88)
  • location tracking to atomic types (#114).

0.3.0 (March 24, 2020)

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.

0.2.15 (February 25, 2020)

Fixed

  • avoid global happens-before with SeqCst ordering (#108).

0.2.14 (November 19, 2019)

Fixed

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

Changed

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

Added

  • Send impl for AtomicWaker, Atomic*
  • AtomicWaker::take_waker (#103).

0.2.13 (November 6, 2019)

Changed

  • update futures to 0.3.0 final release (#96).

0.2.12 (October 29, 2019)

Fixed

  • thread-local bug when using loom with --release (#89).
  • omitted state explorations when using SeqCst atomic values (#90).

0.2.11 (October 24, 2019)

Added

  • Mutex::try_lock (#83).
  • stubbed Condvar::wait_timeout (#86).

0.2.10 (October 15, 2019)

Added

  • alloc_zeroed (#77).
  • AtomicPtr::get_mut (#80).

0.2.9 (October 9, 2019)

Fixed

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

Added

  • Basic leak checking (#73).
  • Arc::get_mut (#74).
  • mocked thread::Builder (#74).

0.2.8 (September 30, 2019)

Chore

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

0.2.7 (September 26, 2019)

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).

0.2.6 (September 25, 2019)

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).

0.2.5 (September 4, 2019)

Added

  • implement Default for atomic types (#48).

0.2.4 (August 20, 2019)

Fixed

  • only unblock future thread when notified using waker (#44).

0.2.3 (August 17, 2019)

Fixed

  • CausalCell failed to detect concurrent immutable/mutable access (#42).

0.2.2 (August 14, 2019)

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.1 (August 10, 2019)

Chore

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

Added

  • sync::Arc implementation (#9).

0.2.0 (August 7, 2019)

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).

0.1.1 (February 19, 2019)

Added

  • sync::Arc implementation (#9).

0.1.0 (January 8, 2019)

  • Initial release