Skip to content

Commit 0d51b27

Browse files
committed
Write changelog entry for 0.5 release
1 parent 020ffbe commit 0d51b27

File tree

1 file changed

+7
-0
lines changed

1 file changed

+7
-0
lines changed

Changelog.md

+7
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
# Unreleased
22

3+
- **Breaking:** [New design based on raw pointers](https://github.com/rust-osdev/volatile/pull/29)
4+
- The previous reference-based design was [unsound](https://github.com/rust-osdev/volatile/pull/13#issuecomment-842455552) because it allowed the compiler to insert spurious reads.
5+
- The new design features two wrapper types for raw pointers: `VolatilePtr` and `VolatileRef`
6+
- `VolatilePtr` provides safe read and write access to volatile values. Like raw pointers, it implements `Copy` and is `!Sync`.
7+
- `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.
8+
- 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"_.
9+
310
# 0.4.6 – 2023-01-17
411

512
- Fix UB in slice methods when Deref returns different references ([#27](https://github.com/rust-osdev/volatile/pull/27))

0 commit comments

Comments
 (0)