305 lines
6.8 KiB
Markdown
305 lines
6.8 KiB
Markdown
# 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
|