# Changelog ## :melon: v0.5.0 - ### :wrench: Maintenance - Enable the crate to build with the latest nightly version and also fix this in the `rust-toolchain.toml` file. - use Rust edition 2021 - Rename the RWLock functions that provides a write lock from `lock` to `write`. This corresponds to read lock provided by the `read` functions. ## :peach: v0.4.3 - ### :wrench: Maintenance - Adjust the usage of `Send` and `Sync` trait bounds for the `sync` versions of `Mutex` and `RWLock` based on a comment on the rust user forums that the actual usage might not be sound. ## :peach: v0.4.2 This is a maintenance release only - migrating the pipeline to github actions. ## :peach: v0.4.1 - ### :bulb: Features - provide method `into_inner` for the `Mutex`, `RWLock` and their async variation to be able move the contained the sealed data out of the locks. ## :peach: v0.4.0 This version provides a major refactoring to introduce commonly used names for the different kinds of locks. `Datalock` becomes `Mutex` and `DataRWlock` becomes `RWLock`. With a feature gate also `async` versions of those locks are introduced. - ### :bulb: Features - Provide async mutex and semaphore versions - ### :wrench: Maintenance - Rename `DataLock` to `Mutex` - Rename `DataRWLock` to `RWLock` - Introducing the enhances travis-ci pipeline to build and publish this crate - pipeline build with an older nightly version due to this [issue](https://github.com/rust-lang/rust/issues/76801#issuecomment-697150736) ## :carrot: v0.3.3 - ### :bulb: Features - Introduce a ``DataRWLock`` that enhances the ``DataLock`` in a way that in addition to mutual exclusive access a read-only access is also possible. - ### :wrench: Maintenance - The ``Semaphore`` does now support counter of type ``u32`` instead of ``u16``. - Flag some of the lock functions to allow the compiler to inline them as port of the optimization to increase performance - Use ``cargo-make`` for convinient and reliable cross platform build execution to reduce maintenance efforts for local and CI builds. - ### :detective: Fixes Fix issues with ``Semaphore``, ``DataLock`` and ``Spinlock`` that sometimes does not released a protected resource due to missing data memory and data syncronisation barriers not used as pointed out in this document: http://infocenter.arm.com/help/topic/com.arm.doc.dht0008a/DHT0008A_arm_synchronization_primitives.pdf ## :carrot: v0.3.2 - ### :wrench: Maintenance - Remove the dependency to the interrupts. Locking will no longer disable/re-enable interrupt handling globally. Usage of blocking locks need to avoided inside interrupt handler to mitigate the risk of deadlocks. ## :carrot: v0.3.1 - ### :bulb: Features Introduce a blocking ``lock`` function for the ``DataLock``. - ### :wrench: Maintenance - Apply code quality improvements based on ``clippy`` - remove ``ruspiro_pi3`` feature gate as it is not needed/used - ### :book: Documentation - Adjust documentation to reflect the current state of developments