1# Changelog
2
3## [v0.12.2]
4
5### Fixed
6- [[#251]](https://github.com/rust-vmm/vm-memory/pull/251): Inserted checks
7  that verify that the value returned by `VolatileMemory::get_slice` is of
8  the correct length.
9
10### Deprecated
11- [[#244]](https://github.com/rust-vmm/vm-memory/pull/241) Deprecate volatile
12  memory's `as_ptr()` interfaces. The new interfaces to be used instead are:
13  `ptr_guard()` and `ptr_guard_mut()`.
14
15## [v0.12.1]
16
17### Fixed
18- [[#241]](https://github.com/rust-vmm/vm-memory/pull/245) mmap_xen: Don't drop
19  the FileOffset while in use #245
20
21## [v0.12.0]
22
23### Added
24- [[#241]](https://github.com/rust-vmm/vm-memory/pull/241) Add Xen memory
25  mapping support: Foreign and Grant. Add new API for accessing pointers to
26  volatile slices, as `as_ptr()` can't be used with Xen's Grant mapping.
27- [[#237]](https://github.com/rust-vmm/vm-memory/pull/237) Implement `ByteValued` for `i/u128`.
28
29## [v0.11.0]
30
31### Added
32- [[#216]](https://github.com/rust-vmm/vm-memory/pull/216) Add `GuestRegionMmap::from_region`.
33
34### Fixed
35- [[#217]](https://github.com/rust-vmm/vm-memory/pull/217) Fix vm-memory internally
36  taking rust-style slices to guest memory in ways that could potentially cause
37  undefined behavior. Removes/deprecates various `as_slice`/`as_slice_mut` methods
38  whose usage violated rust's aliasing rules, as well as an unsound
39  `impl<'a> VolatileMemory for &'a mut [u8]`.
40
41## [v0.10.0]
42
43### Changed
44- [[#208]](https://github.com/rust-vmm/vm-memory/issues/208) Updated
45  vmm-sys-util dependency to v0.11.0
46- [[#203]](https://github.com/rust-vmm/vm-memory/pull/203) Switched to Rust
47  edition 2021.
48
49## [v0.9.0]
50
51### Fixed
52
53- [[#195]](https://github.com/rust-vmm/vm-memory/issues/195):
54  `mmap::check_file_offset` is doing the correct size validation for block and
55  char devices as well.
56
57### Changed
58
59- [[#198]](https://github.com/rust-vmm/vm-memory/pull/198): atomic: enable 64
60  bit atomics on ppc64le and s390x.
61- [[#200]](https://github.com/rust-vmm/vm-memory/pull/200): docs: enable all
62  features in `docs.rs`.
63- [[#199]](https://github.com/rust-vmm/vm-memory/issues/199): Update the way
64  the dependencies are pulled such that we don't end up with incompatible
65  versions.
66
67## [v0.8.0]
68
69### Fixed
70
71- [[#190]](https://github.com/rust-vmm/vm-memory/pull/190):
72  `VolatileSlice::read/write` when input slice is empty.
73
74## [v0.7.0]
75
76### Changed
77
78- [[#176]](https://github.com/rust-vmm/vm-memory/pull/176): Relax the trait
79  bounds of `Bytes` auto impl for `T: GuestMemory`
80- [[#178]](https://github.com/rust-vmm/vm-memory/pull/178):
81  `MmapRegion::build_raw` no longer requires that the length of the region is a
82  multiple of the page size.
83
84## [v0.6.0]
85
86### Added
87
88  - [[#160]](https://github.com/rust-vmm/vm-memory/pull/160): Add `ArcRef` and `AtomicBitmapArc` bitmap
89    backend implementations.
90  - [[#149]](https://github.com/rust-vmm/vm-memory/issues/149): Implement builder for MmapRegion.
91  - [[#140]](https://github.com/rust-vmm/vm-memory/issues/140): Add dirty bitmap tracking abstractions.
92
93### Deprecated
94
95  - [[#133]](https://github.com/rust-vmm/vm-memory/issues/8): Deprecate `GuestMemory::with_regions()`,
96   `GuestMemory::with_regions_mut()`, `GuestMemory::map_and_fold()`.
97
98## [v0.5.0]
99
100### Added
101
102- [[#8]](https://github.com/rust-vmm/vm-memory/issues/8): Add GuestMemory method to return an Iterator
103- [[#120]](https://github.com/rust-vmm/vm-memory/pull/120): Add is_hugetlbfs() to GuestMemoryRegion
104- [[#126]](https://github.com/rust-vmm/vm-memory/pull/126): Add VolatileSlice::split_at()
105- [[#128]](https://github.com/rust-vmm/vm-memory/pull/128): Add VolatileSlice::subslice()
106
107## [v0.4.0]
108
109### Fixed
110
111- [[#100]](https://github.com/rust-vmm/vm-memory/issues/100): Performance
112  degradation after fixing [#95](https://github.com/rust-vmm/vm-memory/pull/95).
113- [[#122]](https://github.com/rust-vmm/vm-memory/pull/122): atomic,
114  Cargo.toml: Update for arc-swap 1.0.0.
115
116## [v0.3.0]
117
118### Added
119
120- [[#109]](https://github.com/rust-vmm/vm-memory/pull/109): Added `build_raw` to
121  `MmapRegion` which can be used to operate on externally created mappings.
122- [[#101]](https://github.com/rust-vmm/vm-memory/pull/101): Added `check_range` for
123  GuestMemory which could be used to validate a range of guest memory.
124- [[#115]](https://github.com/rust-vmm/vm-memory/pull/115): Add methods for atomic
125  access to `Bytes`.
126
127### Fixed
128
129- [[#93]](https://github.com/rust-vmm/vm-memory/issues/93): DoS issue when using
130  virtio with rust-vmm/vm-memory.
131- [[#106]](https://github.com/rust-vmm/vm-memory/issues/106): Asserts trigger
132  on zero-length access.
133
134### Removed
135
136- `integer-atomics` is no longer a distinct feature of the crate.
137
138## [v0.2.0]
139
140### Added
141
142- [[#76]](https://github.com/rust-vmm/vm-memory/issues/76): Added `get_slice` and
143  `as_volatile_slice` to `GuestMemoryRegion`.
144- [[#82]](https://github.com/rust-vmm/vm-memory/issues/82): Added `Clone` bound
145  for `GuestAddressSpace::T`, the return value of `GuestAddressSpace::memory()`.
146- [[#88]](https://github.com/rust-vmm/vm-memory/issues/88): Added `as_bytes` for
147  `ByteValued` which can be used for reading into POD structures from
148  raw bytes.
149
150## [v0.1.0]
151
152### Added
153
154- Added traits for working with VM memory.
155- Added a mmap based implemention for the Guest Memory.
156