Skip to content

Latest commit

 

History

History
84 lines (52 loc) · 4.21 KB

Changelog.md

File metadata and controls

84 lines (52 loc) · 4.21 KB

Unreleased

0.6.1 – 2024-06-06

0.6.0 – 2024-06-06

  • Breaking: feat: introduce RestrictAccess<To> and generalize restrict to all access types by @mkroening in #60
  • feat: implement derive macro for all access types by @mkroening in #61
  • fix: add #[must_use] to volatile types, read, and as_raw_ptr by @mkroening in #58
  • Add a semver checks CI job by @phil-opp in #63

Full Changelog: https://github.com/rust-osdev/volatile/compare/v0.5.4...0.6.0

0.5.4 – 2024-04-26

  • fix(access): properly seal access traits by @mkroening in #59
  • fix(macro): support #[repr(align(N))] in #[derive(VolatileFieldAccess)] macro by @mkroening in #57
  • Fix warnings by @mkroening in #56

0.5.3 – 2024-04-21

  • Add #[derive(VolatileFieldAccess)] for easy, access-limited field-based access to structs by @mkroening in #49
  • Add VolatileRef::restrict and VolatilePtr::restrict by @mkroening in #47
  • Add VolatileRef::borrow and VolatileRef::borrow_mut by @mkroening in #46
  • Add support for nested map_field operations by @phil-opp in #50
  • docs: remove unused NonNull imports by @mkroening in #48
  • fix(Cargo.toml): add categories by @mkroening in #52

0.5.2 – 2024-03-22

  • Add implementations for fmt::Pointer, PartialEq, Eq, PartialOrd, Ord and Hash.
  • Update very_unstable feature to latest nightly
  • Remove Sized requirement for Send and Sync impls on VolatileRef

0.5.1 – 2023-06-24

  • Fix: Add missing documentation of the map macro

0.5.0 – 2023-06-24

  • Breaking: New design based on raw pointers
    • The previous reference-based design was unsound because it allowed the compiler to insert spurious reads.
    • The new design features two wrapper types for raw pointers: VolatilePtr and VolatileRef
    • VolatilePtr provides safe read and write access to volatile values. Like raw pointers, it implements Copy and is !Sync.
    • VolatileRef is a pointer type that respects Rust's aliasing rules. It doesn't implement Copy, requires a &mut reference for modification, and implements Sync. It can converted to temporary VolatilePtr instances through the as_ptr/as_mut_ptr methods.
  • We now provide methods for volatile slice operations and a map! macro for struct field projection. These advanced features are gated behind a cargo feature named "unstable".

0.4.6 – 2023-01-17

  • Fix UB in slice methods when Deref returns different references (#27)

0.4.5 – 2022-04-24

  • Remove the const_generics feature flag (#25)

0.4.4 – 2021-03-09

  • Replace feature "range_bounds_assert_len" with "slice_range" (#21)
    • Fixes the unstable feature on the latest nightly.

0.4.3 – 2020-12-23

  • Add methods to restrict access (#19)

0.4.2 – 2020-10-31

  • Change slice::check_range to RangeBounds::assert_len (#16)
    • Fixes build on latest nightly.

0.4.1 – 2020-09-21

  • Small documentation and metadata improvements

0.4.0 – 2020-09-21

  • Breaking: Rewrite crate to operate on reference values (#13)

0.3.0 – 2020-07-29

  • Breaking: Remove Debug and Clone derives for WriteOnly (#12)

0.2.7 – 2020-07-29

  • Derive Default for Volatile, WriteOnly and ReadOnly (#10)