# Version 3.4.0

- Port to `event-listener` v5.0.0. (#74)

# Version 3.3.0

- Add a `forget()` method for semaphore guards. (#73)
- Increase MSRV to v1.60. (#75)

# Version 3.2.0

- Add missing methods for blocking on locking with types wrapped in `Arc` (#71).

# Version 3.1.2

- Bump `event-listener` to version v4.0.0. (#69)

# Version 3.1.1

- Add a note to the documentation comparing this crate against `libstd`'s locks. (#58)

# Version 3.1.0

- Add a `Default` implementation for `OnceCell` (#63).

# Version 3.0.0

- **Breaking:** Add an enabled-by-default `std` feature that allows using this crate without the standard library. (#43)
- Support blocking and non-blocking operations on the same locks. (#56)
- Switch to a more efficient event notification mechanism. (#43)

# Version 2.8.0

- Fix a bug where the `SemaphoreGuard::acquire_arc` future would busy wait under certain conditions (#42).
- Add a `Semaphore::add_permits()` function to increase the number of available permits on the semaphore (#44).
- Make `RwLockReadGuard` covariant over its lifetime (#45)
- Add `RwLockReadGuardArc`, `RwLockWriteGuardArc`, and other reference counted guards for the `RwLock` type (#47).
- Loosen the `Send`/`Sync` bounds on certain future types (#48).
- Fix UB caused by the `MutexGuardArc::source` function allowing the user to drop an object in a different thread than the one it was acquired in (#50). This is a breaking change, but in the name of soundness. Therefore it doesn't break any valid behavior.
- Fix a bug where this crate would not compile properly on `wasm64` (#51).

# Version 2.7.0

- Replace some `async` blocks with manual futures (#34)
- Remove our dependency on `futures-lite` (#36)
- Mark guard types with `#[clippy::has_significant_drop]` (#37)

# Version 2.6.0

- Add `OnceCell`. (#27)
- Support wasm64.

# Version 2.5.0

- Fix an issue where the future returned by `Mutex::lock_arc`/`Semaphore::acquire_arc` holds a reference to `self`. (#20, #21)

# Version 2.4.0

- Add WASM support. (#14)

# Version 2.3.0

- Merge all subcrates.

# Version 2.2.0

- Add functions to upgrade and downgrade `RwLock` guards.
- Make all constructors `const fn`.

# Version 2.1.3

- Add `#![forbid(unsafe_code)]`.

# Version 2.1.2

- Update dependencies.

# Version 2.1.1

- Update crate description.

# Version 2.1.0

- Add `Barrier` and `Semaphore`.

# Version 2.0.1

- Update crate description.

# Version 2.0.0

- Only re-export `async-mutex` and `async-rwlock`.

# Version 1.1.5

- Replace the implementation with `async-mutex`.

# Version 1.1.4

- Replace `usize::MAX` with `std::usize::MAX`.

# Version 1.1.3

- Update dependencies.

# Version 1.1.2

- Fix a deadlock issue.

# Version 1.1.1

- Fix some typos.

# Version 1.1.0

- Make locking fair.
- Add `LockGuard::source()`.

# Version 1.0.2

- Bump the `event-listener` version.
- Add tests.

# Version 1.0.1

- Update Cargo categories.

# Version 1.0.0

- Initial version
