1# Changelog 2 3## 0.2.1 4 5### New features 6 7- Added `get` method to `UniqueMmioPointer<[T; N]>` and `SharedMmioPointer<[T; N]>`. 8 9## 0.2.0 10 11### Breaking changes 12 13- Renamed `OwnedMmioPointer` to `UniqueMmioPointer`. 14 15### New features 16 17- Added `SharedMmioPointer` for an MMIO pointer that is not necessarily unique. Unlike a 18 `UniqueMmioPointer`, a `SharedMmioPointer` can be cloned. `UniqueMmioPointer` derefs to 19 `SharedMmioPointer` and can also be converted to it. 20- Added `get` and `split` methods on `UniqueMmioPointer<[T]>` and `UniqueMmioPointer<[T; _]>` 21 respectively, to go from a pointer to a slice or field to pointers to the individual elements. 22- Added `field!` and `field_shared!` macros to go from a pointer to a struct to a pointer to an 23 individual field. 24- Added `write_unsafe` and `read_unsafe` methods on `UniqueMmioPointer` and `SharedMmioPointer`. 25 These call `write_volatile` and `read_volatile` on most platforms, but on aarch64 are implemented 26 with inline assembly instead to work around 27 [a bug with how volatile writes and reads are implemented](https://github.com/rust-lang/rust/issues/131894). 28- Added wrapper types `ReadOnly`, `ReadPure`, `WriteOnly`, `ReadWrite` and `ReadPureWrite` to 29 indicate whether a field can safely be written or read (with or without side-effects). Added safe 30 `write` and `read` methods on `UniqueMmioPointer` or `SharedMmioPointer` for these. 31 32## 0.1.0 33 34Initial release. 35