1## parking_lot 0.12.3 (2024-05-24) 2 3- Export types provided by arc_lock feature (#442) 4 5## parking_lot 0.12.2, parking_lot_core 0.9.10, lock_api 0.4.12 (2024-04-15) 6 7- Fixed panic when calling `with_upgraded` twice on a `ArcRwLockUpgradableReadGuard` (#431) 8- Fixed `RwLockUpgradeableReadGuard::with_upgraded` 9- Added lock_api::{Mutex, ReentrantMutex, RwLock}::from_raw methods (#429) 10- Added Apple visionOS support (#433) 11 12## parking_lot_core 0.9.9, lock_api 0.4.11 (2023-10-18) 13 14- Fixed `RwLockUpgradeableReadGuard::with_upgraded`. (#393) 15- Fixed `ReentrantMutex::bump` lock count. (#390) 16- Added methods to unsafely create a lock guard out of thin air. (#403) 17- Added support for Apple tvOS. (#405) 18 19## parking_lot_core 0.9.8, lock_api 0.4.10 (2023-06-05) 20 21- Mark guards with `#[clippy::has_significant_drop]` (#369, #371) 22- Removed windows-sys dependency (#374, #378) 23- Add `atomic_usize` default feature to support platforms without atomics. (#380) 24- Add with_upgraded API to upgradable read locks (#386) 25- Make RwLock guards Sync again (#370) 26 27## parking_lot_core 0.9.7 (2023-02-01) 28 29- Update windows-sys dependency to 0.45. (#368) 30 31## parking_lot_core 0.9.6 (2023-01-11) 32 33- Add support for watchOS. (#367) 34 35## parking_lot_core 0.9.5 (2022-11-29) 36 37- Update use of `libc::timespec` to prepare for future libc version (#363) 38 39## parking_lot_core 0.9.4 (2022-10-18) 40 41- Bump windows-sys dependency to 0.42. (#356) 42 43## lock_api 0.4.9 (2022-09-20) 44 45- Fixed `ReentrantMutexGuard::try_map` signature (#355) 46 47## lock_api 0.4.8 (2022-08-28) 48 49- Fixed unsound `Sync`/`Send` impls for `ArcMutexGuard`. (#349) 50- Added `ArcMutexGuard::into_arc`. (#350) 51 52## parking_lot 0.12.1 (2022-05-31) 53 54- Fixed incorrect memory ordering in `RwLock`. (#344) 55- Added `Condvar::wait_while` convenience methods (#343) 56 57## parking_lot_core 0.9.3 (2022-04-30) 58 59- Bump windows-sys dependency to 0.36. (#339) 60 61## parking_lot_core 0.9.2, lock_api 0.4.7 (2022-03-25) 62 63- Enable const new() on lock types on stable. (#325) 64- Added `MutexGuard::leak` function. (#333) 65- Bump windows-sys dependency to 0.34. (#331) 66- Bump petgraph dependency to 0.6. (#326) 67- Don't use pthread attributes on the espidf platform. (#319) 68 69## parking_lot_core 0.9.1 (2022-02-06) 70 71- Bump windows-sys dependency to 0.32. (#316) 72 73## parking_lot 0.12.0, parking_lot_core 0.9.0, lock_api 0.4.6 (2022-01-28) 74 75- The MSRV is bumped to 1.49.0. 76- Disabled eventual fairness on wasm32-unknown-unknown. (#302) 77- Added a rwlock method to report if lock is held exclusively. (#303) 78- Use new `asm!` macro. (#304) 79- Use windows-rs instead of winapi for faster builds. (#311) 80- Moved hardware lock elision support to a separate Cargo feature. (#313) 81- Removed used of deprecated `spin_loop_hint`. (#314) 82 83## parking_lot 0.11.2, parking_lot_core 0.8.4, lock_api 0.4.5 (2021-08-28) 84 85- Fixed incorrect memory orderings on `RwLock` and `WordLock`. (#294, #292) 86- Added `Arc`-based lock guards. (#291) 87- Added workaround for TSan's lack of support for `fence`. (#292) 88 89## lock_api 0.4.4 (2021-05-01) 90 91- Update for latest nightly. (#281) 92 93## lock_api 0.4.3 (2021-04-03) 94 95- Added `[Raw]ReentrantMutex::is_owned`. (#280) 96 97## parking_lot_core 0.8.3 (2021-02-12) 98 99- Updated smallvec to 1.6. (#276) 100 101## parking_lot_core 0.8.2 (2020-12-21) 102 103- Fixed assertion failure on OpenBSD. (#270) 104 105## parking_lot_core 0.8.1 (2020-12-04) 106 107- Removed deprecated CloudABI support. (#263) 108- Fixed build on wasm32-unknown-unknown. (#265) 109- Relaxed dependency on `smallvec`. (#266) 110 111## parking_lot 0.11.1, lock_api 0.4.2 (2020-11-18) 112 113- Fix bounds on Send and Sync impls for lock guards. (#262) 114- Fix incorrect memory ordering in `RwLock`. (#260) 115 116## lock_api 0.4.1 (2020-07-06) 117 118- Add `data_ptr` method to lock types to allow unsafely accessing the inner data 119 without a guard. (#247) 120 121## parking_lot 0.11.0, parking_lot_core 0.8.0, lock_api 0.4.0 (2020-06-23) 122 123- Add `is_locked` method to mutex types. (#235) 124- Make `RawReentrantMutex` public. (#233) 125- Allow lock guard to be sent to another thread with the `send_guard` feature. (#240) 126- Use `Instant` type from the `instant` crate on wasm32-unknown-unknown. (#231) 127- Remove deprecated and unsound `MappedRwLockWriteGuard::downgrade`. (#244) 128- Most methods on the `Raw*` traits have been made unsafe since they assume 129 the current thread holds the lock. (#243) 130 131## parking_lot_core 0.7.2 (2020-04-21) 132 133- Add support for `wasm32-unknown-unknown` under the "nightly" feature. (#226) 134 135## parking_lot 0.10.2 (2020-04-10) 136 137- Update minimum version of `lock_api`. 138 139## parking_lot 0.10.1, parking_lot_core 0.7.1, lock_api 0.3.4 (2020-04-10) 140 141- Add methods to construct `Mutex`, `RwLock`, etc in a `const` context. (#217) 142- Add `FairMutex` which always uses fair unlocking. (#204) 143- Fixed panic with deadlock detection on macOS. (#203) 144- Fixed incorrect synchronization in `create_hashtable`. (#210) 145- Use `llvm_asm!` instead of the deprecated `asm!`. (#223) 146 147## lock_api 0.3.3 (2020-01-04) 148 149- Deprecate unsound `MappedRwLockWriteGuard::downgrade` (#198) 150 151## parking_lot 0.10.0, parking_lot_core 0.7.0, lock_api 0.3.2 (2019-11-25) 152 153- Upgrade smallvec dependency to 1.0 in parking_lot_core. 154- Replace all usage of `mem::uninitialized` with `mem::MaybeUninit`. 155- The minimum required Rust version is bumped to 1.36. Because of the above two changes. 156- Make methods on `WaitTimeoutResult` and `OnceState` take `self` by value instead of reference. 157 158## parking_lot_core 0.6.2 (2019-07-22) 159 160- Fixed compile error on Windows with old cfg_if version. (#164) 161 162## parking_lot_core 0.6.1 (2019-07-17) 163 164- Fixed Android build. (#163) 165 166## parking_lot 0.9.0, parking_lot_core 0.6.0, lock_api 0.3.1 (2019-07-14) 167 168- Re-export lock_api (0.3.1) from parking_lot (#150) 169- Removed (non-dev) dependency on rand crate for fairness mechanism, by 170 including a simple xorshift PRNG in core (#144) 171- Android now uses the futex-based ThreadParker. (#140) 172- Fixed CloudABI ThreadParker. (#140) 173- Fix race condition in lock_api::ReentrantMutex (da16c2c7) 174 175## lock_api 0.3.0 (2019-07-03, _yanked_) 176 177- Use NonZeroUsize in GetThreadId::nonzero_thread_id (#148) 178- Debug assert lock_count in ReentrantMutex (#148) 179- Tag as `unsafe` and document some internal methods (#148) 180- This release was _yanked_ due to a regression in ReentrantMutex (da16c2c7) 181 182## parking_lot 0.8.1 (2019-07-03, _yanked_) 183 184- Re-export lock_api (0.3.0) from parking_lot (#150) 185- This release was _yanked_ from crates.io due to unexpected breakage (#156) 186 187## parking_lot 0.8.0, parking_lot_core 0.5.0, lock_api 0.2.0 (2019-05-04) 188 189- Fix race conditions in deadlock detection. 190- Support for more platforms by adding ThreadParker implementations for 191 Wasm, Redox, SGX and CloudABI. 192- Drop support for older Rust. parking_lot now requires 1.31 and is a 193 Rust 2018 edition crate (#122). 194- Disable the owning_ref feature by default. 195- Fix was_last_thread value in the timeout callback of park() (#129). 196- Support single byte Mutex/Once on stable Rust when compiler is at least 197 version 1.34. 198- Make Condvar::new and Once::new const fns on stable Rust and remove 199 ONCE_INIT (#134). 200- Add optional Serde support (#135). 201 202## parking_lot 0.7.1 (2019-01-01) 203 204- Fixed potential deadlock when upgrading a RwLock. 205- Fixed overflow panic on very long timeouts (#111). 206 207## parking_lot 0.7.0, parking_lot_core 0.4.0 (2018-11-26) 208 209- Return if or how many threads were notified from `Condvar::notify_*` 210 211## parking_lot 0.6.3 (2018-07-18) 212 213- Export `RawMutex`, `RawRwLock` and `RawThreadId`. 214 215## parking_lot 0.6.2 (2018-06-18) 216 217- Enable `lock_api/nightly` feature from `parking_lot/nightly` (#79) 218 219## parking_lot 0.6.1 (2018-06-08) 220 221Added missing typedefs for mapped lock guards: 222 223- `MappedMutexGuard` 224- `MappedReentrantMutexGuard` 225- `MappedRwLockReadGuard` 226- `MappedRwLockWriteGuard` 227 228## parking_lot 0.6.0 (2018-06-08) 229 230This release moves most of the code for type-safe `Mutex` and `RwLock` types 231into a separate crate called `lock_api`. This new crate is compatible with 232`no_std` and provides `Mutex` and `RwLock` type-safe wrapper types from a raw 233mutex type which implements the `RawMutex` or `RawRwLock` trait. The API 234provided by the wrapper types can be extended by implementing more traits on 235the raw mutex type which provide more functionality (e.g. `RawMutexTimed`). See 236the crate documentation for more details. 237 238There are also several major changes: 239 240- The minimum required Rust version is bumped to 1.26. 241- All methods on `MutexGuard` (and other guard types) are no longer inherent 242 methods and must be called as `MutexGuard::method(self)`. This avoids 243 conflicts with methods from the inner type. 244- `MutexGuard` (and other guard types) add the `unlocked` method which 245 temporarily unlocks a mutex, runs the given closure, and then re-locks the 246 mutex. 247- `MutexGuard` (and other guard types) add the `bump` method which gives a 248 chance for other threads to acquire the mutex by temporarily unlocking it and 249 re-locking it. However this is optimized for the common case where there are 250 no threads waiting on the lock, in which case no unlocking is performed. 251- `MutexGuard` (and other guard types) add the `map` method which returns a 252 `MappedMutexGuard` which holds only a subset of the original locked type. The 253 `MappedMutexGuard` type is identical to `MutexGuard` except that it does not 254 support the `unlocked` and `bump` methods, and can't be used with `CondVar`. 255