| ## parking_lot 0.11.2, parking_lot_core 0.8.4, lock_api 0.4.5 (2021-08-28) |
| |
| - Fixed incorrect memory orderings on `RwLock` and `WordLock`. (#294, #292) |
| - Added `Arc`-based lock guards. (#291) |
| - Added workaround for TSan's lack of support for `fence`. (#292) |
| |
| ## lock_api 0.4.4 (2021-05-01) |
| |
| - Update for latest nightly. (#281) |
| |
| ## lock_api 0.4.3 (2021-04-03) |
| |
| - Added `[Raw]ReentrantMutex::is_owned`. (#280) |
| |
| ## parking_lot_core 0.8.3 (2021-02-12) |
| |
| - Updated smallvec to 1.6. (#276) |
| |
| ## parking_lot_core 0.8.2 (2020-12-21) |
| |
| - Fixed assertion failure on OpenBSD. (#270) |
| |
| ## parking_lot_core 0.8.1 (2020-12-04) |
| |
| - Removed deprecated CloudABI support. (#263) |
| - Fixed build on wasm32-unknown-unknown. (#265) |
| - Relaxed dependency on `smallvec`. (#266) |
| |
| ## parking_lot 0.11.1, lock_api 0.4.2 (2020-11-18) |
| |
| - Fix bounds on Send and Sync impls for lock guards. (#262) |
| - Fix incorrect memory ordering in `RwLock`. (#260) |
| |
| ## lock_api 0.4.1 (2020-07-06) |
| |
| - Add `data_ptr` method to lock types to allow unsafely accessing the inner data |
| without a guard. (#247) |
| |
| ## parking_lot 0.11.0, parking_lot_core 0.8.0, lock_api 0.4.0 (2020-06-23) |
| |
| - Add `is_locked` method to mutex types. (#235) |
| - Make `RawReentrantMutex` public. (#233) |
| - Allow lock guard to be sent to another thread with the `send_guard` feature. (#240) |
| - Use `Instant` type from the `instant` crate on wasm32-unknown-unknown. (#231) |
| - Remove deprecated and unsound `MappedRwLockWriteGuard::downgrade`. (#244) |
| - Most methods on the `Raw*` traits have been made unsafe since they assume |
| the current thread holds the lock. (#243) |
| |
| ## parking_lot_core 0.7.2 (2020-04-21) |
| |
| - Add support for `wasm32-unknown-unknown` under the "nightly" feature. (#226) |
| |
| ## parking_lot 0.10.2 (2020-04-10) |
| |
| - Update minimum version of `lock_api`. |
| |
| ## parking_lot 0.10.1, parking_lot_core 0.7.1, lock_api 0.3.4 (2020-04-10) |
| |
| - Add methods to construct `Mutex`, `RwLock`, etc in a `const` context. (#217) |
| - Add `FairMutex` which always uses fair unlocking. (#204) |
| - Fixed panic with deadlock detection on macOS. (#203) |
| - Fixed incorrect synchronization in `create_hashtable`. (#210) |
| - Use `llvm_asm!` instead of the deprecated `asm!`. (#223) |
| |
| ## lock_api 0.3.3 (2020-01-04) |
| |
| - Deprecate unsound `MappedRwLockWriteGuard::downgrade` (#198) |
| |
| ## parking_lot 0.10.0, parking_lot_core 0.7.0, lock_api 0.3.2 (2019-11-25) |
| |
| - Upgrade smallvec dependency to 1.0 in parking_lot_core. |
| - Replace all usage of `mem::uninitialized` with `mem::MaybeUninit`. |
| - The minimum required Rust version is bumped to 1.36. Because of the above two changes. |
| - Make methods on `WaitTimeoutResult` and `OnceState` take `self` by value instead of reference. |
| |
| ## parking_lot_core 0.6.2 (2019-07-22) |
| |
| - Fixed compile error on Windows with old cfg_if version. (#164) |
| |
| ## parking_lot_core 0.6.1 (2019-07-17) |
| |
| - Fixed Android build. (#163) |
| |
| ## parking_lot 0.9.0, parking_lot_core 0.6.0, lock_api 0.3.1 (2019-07-14) |
| |
| - Re-export lock_api (0.3.1) from parking_lot (#150) |
| - Removed (non-dev) dependency on rand crate for fairness mechanism, by |
| including a simple xorshift PRNG in core (#144) |
| - Android now uses the futex-based ThreadParker. (#140) |
| - Fixed CloudABI ThreadParker. (#140) |
| - Fix race condition in lock_api::ReentrantMutex (da16c2c7) |
| |
| ## lock_api 0.3.0 (2019-07-03, _yanked_) |
| |
| - Use NonZeroUsize in GetThreadId::nonzero_thread_id (#148) |
| - Debug assert lock_count in ReentrantMutex (#148) |
| - Tag as `unsafe` and document some internal methods (#148) |
| - This release was _yanked_ due to a regression in ReentrantMutex (da16c2c7) |
| |
| ## parking_lot 0.8.1 (2019-07-03, _yanked_) |
| |
| - Re-export lock_api (0.3.0) from parking_lot (#150) |
| - This release was _yanked_ from crates.io due to unexpected breakage (#156) |
| |
| ## parking_lot 0.8.0, parking_lot_core 0.5.0, lock_api 0.2.0 (2019-05-04) |
| |
| - Fix race conditions in deadlock detection. |
| - Support for more platforms by adding ThreadParker implementations for |
| Wasm, Redox, SGX and CloudABI. |
| - Drop support for older Rust. parking_lot now requires 1.31 and is a |
| Rust 2018 edition crate (#122). |
| - Disable the owning_ref feature by default. |
| - Fix was_last_thread value in the timeout callback of park() (#129). |
| - Support single byte Mutex/Once on stable Rust when compiler is at least |
| version 1.34. |
| - Make Condvar::new and Once::new const fns on stable Rust and remove |
| ONCE_INIT (#134). |
| - Add optional Serde support (#135). |
| |
| ## parking_lot 0.7.1 (2019-01-01) |
| |
| - Fixed potential deadlock when upgrading a RwLock. |
| - Fixed overflow panic on very long timeouts (#111). |
| |
| ## parking_lot 0.7.0, parking_lot_core 0.4.0 (2018-11-26) |
| |
| - Return if or how many threads were notified from `Condvar::notify_*` |
| |
| ## parking_lot 0.6.3 (2018-07-18) |
| |
| - Export `RawMutex`, `RawRwLock` and `RawThreadId`. |
| |
| ## parking_lot 0.6.2 (2018-06-18) |
| |
| - Enable `lock_api/nightly` feature from `parking_lot/nightly` (#79) |
| |
| ## parking_lot 0.6.1 (2018-06-08) |
| |
| Added missing typedefs for mapped lock guards: |
| |
| - `MappedMutexGuard` |
| - `MappedReentrantMutexGuard` |
| - `MappedRwLockReadGuard` |
| - `MappedRwLockWriteGuard` |
| |
| ## parking_lot 0.6.0 (2018-06-08) |
| |
| This release moves most of the code for type-safe `Mutex` and `RwLock` types |
| into a separate crate called `lock_api`. This new crate is compatible with |
| `no_std` and provides `Mutex` and `RwLock` type-safe wrapper types from a raw |
| mutex type which implements the `RawMutex` or `RawRwLock` trait. The API |
| provided by the wrapper types can be extended by implementing more traits on |
| the raw mutex type which provide more functionality (e.g. `RawMutexTimed`). See |
| the crate documentation for more details. |
| |
| There are also several major changes: |
| |
| - The minimum required Rust version is bumped to 1.26. |
| - All methods on `MutexGuard` (and other guard types) are no longer inherent |
| methods and must be called as `MutexGuard::method(self)`. This avoids |
| conflicts with methods from the inner type. |
| - `MutexGuard` (and other guard types) add the `unlocked` method which |
| temporarily unlocks a mutex, runs the given closure, and then re-locks the |
| mutex. |
| - `MutexGuard` (and other guard types) add the `bump` method which gives a |
| chance for other threads to acquire the mutex by temporarily unlocking it and |
| re-locking it. However this is optimized for the common case where there are |
| no threads waiting on the lock, in which case no unlocking is performed. |
| - `MutexGuard` (and other guard types) add the `map` method which returns a |
| `MappedMutexGuard` which holds only a subset of the original locked type. The |
| `MappedMutexGuard` type is identical to `MutexGuard` except that it does not |
| support the `unlocked` and `bump` methods, and can't be used with `CondVar`. |