All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
std::sync wrappers now no longer incorrectly require T: Sized
Added missing Display and Debug implementations to RwLock(Read|Write)Guard.
On Rust 1.80 or newer, a wrapper for std::sync::LazyLock is now available. The MSRV has not been changed; older versions simply don't get this wrapper.
Added missing const-initialisation wrappers for parking_lot. The API interface for tracing_mutex::parkinglot is now identical to parking_lot, and an example showing how to use it as a drop-in replacement was added.
Introduced experimental feature, which will be used going forward to help evolve the API outside the normal stability guarantees. APIs under this feature are not subject to semver or MSRV guarantees.
Added experimental api tracing_mutex::util::reset_dependencies, which can be used to reset the ordering information of a specific mutex when you need to reorder them. This API is unsafe, as its use invalidates any of the deadlock prevention guarantees made.
parking_lot and lock_api can now be enabled properly with the matching feature names.parkinglot and lockapi features have been deprecated. They will be removed in version 0.4. To fix it, you can use the parking_lot and lock_api features respectively.std::sync primitives can now be const constructed.std::sync::OnceLockbacktraces feature which is enabled by default.parking_lot dependency to 0.12.tracing_mutex::stdsync::TracingMutex is now tracing_mutex::stdsync::tracing::Mutex, and tracing_mutex::stdsync::DebugMutex is now called tracing_mutex::stdsync::Mutex. This hopefully reduces the visual noise while reading code that uses this in practice. Unwrapped primitives are reexported under tracing_mutex::stdsync::raw for convenience.!Send. They already should be according to other reasons, but this adds extra security through the type system.std::sync::Condvarparkinglot module is now correctly enabled by the parkinglot feature rather than the lockapi feature.Generic support for wrapping mutexes that implement the traits provided by the lock_api crate. This can be used for creating support for other mutex providers that implement it.
Support for parking_lot mutexes. Support includes type aliases for all provided mutex types as well as a dedicated Once wrapper.
Simple benchmark to track the rough performance penalty incurred by dependency tracking.
The library now requires edition 2021.
The Mutex- and RwLockGuards now dereference to T rather than the lock guard they wrap. This is technically a bugfix but can theoretically break existing code.
Self-cycles are no longer allowed for lock dependencies. They previously were because it usually isn't a problem, but it can create RWR deadlocks with RwLocks.
DebugMutex and DebugRwLock. These new type aliases function the same as the ones they belong to, resolving to either the tracing versions when debug assertions are enabled or the standard one when they're not.Initial release.