1# Upcoming 2 3# v0.14.0 4 5## Changed 6 7- Updated vm-memory from 0.15.0 to 0.16.0 8- Updated virtio-bindings from 0.2.3 to 0.2.4. 9 10# v0.13.0 11 12## Changed 13 14- Updated vm-memory from 0.14.0 to 0.15.0 15- Updated virtio-bindings from 0.2.2 to 0.2.3. 16 17# v0.12.0 18 19## Added 20- `Reader`/`Writer` classes to iterate over descriptors 21 22# v0.11.0 23 24## Changed 25- Updated vm-memory from 0.13.1 to 0.14.0 26- Updated vmm-sys-util from 0.11.0 to 0.12.1 27 28# v0.10.0 29 30Identical to v0.9.1, which was incorrectly published as minor release. 31 32# v0.9.1 - yanked 33 34This version got yanked. It should have been a major release. The vm-memory 35dependency - which received a major bump - is part of the public interface. 36 37## Changed 38- Updated vm-memory from 0.12.0 to 0.13.1. 39- Updated dev-dependencies: 40 - criterion (0.3.0 -> 0.5.1) 41 - memoffset (0.7.1 -> 0.9.0) 42 43# v0.9.0 44 45## Changed 46- Updated vm-memory from 0.11.0 to 0.12.0. 47 48# v0.8.0 49 50## Changed 51- Terminate iterating descriptor chains that are longer than 2^32 bytes. 52- Updated vm-memory from 0.10.0 to 0.11.0. 53- Updated virtio-bindings from 0.1.0 to 0.2.0. 54 55# v0.7.1 56 57## Fixed 58- Skip indirect descriptor address alignment check, the virtio spec has 59 no alignment requirement on this, see `2.6.5.3 Indirect Descriptors` 60 and `2.7.7 Indirect Flag: Scatter-Gather Support` in virtio 1.0. 61- Update the `add_desc_chains` mock function such that it works on big endian 62 hosts as well. 63- Check that the queue is ready for processing requests when calling the 64 iterator functions. For now the checks are limited to the avail address and 65 the ready fields, but should be extended in the future to account for other 66 fields that could signal an invalid queue. This behavior can be triggered 67 by doing a `reset` followed by a `pop_descriptor_chain`. 68 69# v0.7.0 70 71## Changed 72 73- Updated vmm-sys-util from 0.10.0 to 0.11.0. 74- Updated vm-memory from 0.9.0 to 0.10.0. 75 76# v0.6.1 77 78## Fixed 79- Return an error if the number of available descriptor chains exposed by the 80 driver exceeds the queue size. This way we avoid potential hanging and 81 Denial-of-Service in the VMM, that was possible before by iterating multiple 82 times over the same chains. 83 84# v0.6.0 85 86## Added 87- Derive `Eq` for structures that derive `PartialEq`. 88 89## Changed 90- Use `add_desc_chains` in tests 91- Update dependencies: `vm-memory` from `0.8.0` to `0.9.0` and `log` from `0.4.6` to `0.4.17`. 92- Upgrade to Rust 2021 edition. 93 94# v0.5.0 95 96## Added 97- Added getters and setters for the Virtio Queue fields. 98- Added the `state` method for retrieving the `QueueState` of a `Queue`. 99 100## Fixed 101- Validate the state of the Virtio Queue when restoring from state and return errors on invalid 102 input. 103 104## Removed 105- Removed the wrapper over the Virtio Queue that was wrapping the Guest Memory. VMMs can define 106 this wrapper if needed, but this is no longer provided as part of virtio-queue crate so that the 107 naming scheme can be simplified. As a consequence, a couple of functions now receive the 108 memory as a parameter (more details in the Changed section). 109- Removed `num_added` field from the `QueueState` because this is an implementation detail of 110 the notification suppression feature and thus should not be part of the state. 111- Removed `QueueGuard` and `lock_with_memory`. 112 113## Changed 114- `QueueState` is now renamed to `Queue`. 115- `QueueStateSync` is now renamed to `QueueSync`. 116- The `QueueState` structure now represents the state of the `Queue` without any implementation 117 details. This can be used for implementing save/restore. 118- Initializing a `Queue` now returns an error in case the `max_size` is invalid. 119- The `Queue` fields are now private and can be updated only through the dedicated setters. 120- The following Queue methods now receive the memory as a parameter: `iter`, `is_valid`, 121 `add_used`, `needs_notification`, `enable_notification`, `disable_notification`, `avail_idx`, 122 `used_idx`. 123- Use the constant definition from the `virtio-queue` crate. 124 125# v0.4.0 126 127## Fixed 128- [[#173]](https://github.com/rust-vmm/vm-virtio/pull/173) Fix potential division by zero in 129 iterator when the queue size is 0. 130 131## Changed 132- [[#162]](https://github.com/rust-vmm/vm-virtio/pull/162) Added error handling in the mock 133 interface and the ability to create multiple descriptor chains for testing in order to 134 support running fuzzing. 135- [[#174]](https://github.com/rust-vmm/vm-virtio/pull/174) Updated the `avail_idx` and `used_idx` 136 documentation to specify when these functions panic. 137 138 139# v0.3.0 140 141## Added 142- [[#148]](https://github.com/rust-vmm/vm-virtio/pull/148): `QueueStateOwnedT` trait that stands 143 for queue objects which are exclusively owned and accessed by a single thread of execution. 144- [[#148]](https://github.com/rust-vmm/vm-virtio/pull/148): Added the `pop_descriptor_chain` 145 method, which can be used to consume descriptor chains from the available ring without 146 using an iterator, to `QueueStateT` and `QueueGuard`. Also added `go_to_previous_position()` 147 to `QueueGuard`, which enables decrementing the next available index by one position, which 148 effectively undoes the consumption of a descriptor chain in some use cases. 149- [[#151]](https://github.com/rust-vmm/vm-virtio/pull/151): Added `MockSplitQueue::add_desc_chain()`, 150 which places a descriptor chain at the specified offset in the descriptor table. 151- [[#153]](https://github.com/rust-vmm/vm-virtio/pull/153): Added `QueueStateT::size()` to return 152 the size of the queue. 153 154## Changed 155- The minimum version of the `vm-memory` dependency is now `v0.8.0` 156- [[#161]](https://github.com/rust-vmm/vm-virtio/pull/161): Improve the efficiency of `needs_notification` 157 158## Removed 159- [[#153]](https://github.com/rust-vmm/vm-virtio/pull/153): `#[derive(Clone)]` for `QueueState` 160 161# v0.2.0 162 163## Added 164 165- *Testing Interface*: Added the possibility to initialize a mock descriptor 166 chain from a list of descriptors. 167- Added setters and getters for the queue fields required for extending the 168 `Queue` in VMMs. 169 170## Fixed 171 172- Apply the appropriate endianness conversion on `used_idx`. 173 174# v0.1.0 175 176This is the first release of the crate. 177