ruspiro-lock 0.5.0

Providing Spinlock, Semaphore and mutual exclusive data access for cross core usage on Raspberry Pi.
Documentation
# 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