1# Changelog 2 3## 0.5.0 4 5### Bug fixes 6 7- Reject the `PAGE_OR_TABLE` flag when passed to `map_range`, which would result in corrupt table 8 mappings to be created. 9 10### Breaking changes 11 12- Updated `modify_range` to split block entries before traversing them, and pass only the 13 descriptors and subregions that are completely covered by the given region to the updater callback 14 function. 15- Updated `modify_range` to only pass block or page descriptors to the callback function and prevent 16 them from being converted into table descriptors inadvertently. 17- Added rigid break-before-make (BBM) checks to `map_range` and `modify_range`. 18- Marked `activate` and `deactivate` methods as unsafe. 19 20### New features 21 22- Added new `map_range()` alternative `map_range_with_constraints()` with extra `contraints` 23 argument. 24- Added `walk_range` method that iterates over all block or page descriptorsthat intersect with a 25 given region, without permitting the callback to make changes to the descriptors 26 27## 0.4.1 28 29### Bug fixes 30 31- `RootTable`, `Mapping`, `IdMap` and `LinearMap` are now correctly marked as `Send`, as it doesn't 32 matter where they are used from. 33 34## 0.4.0 35 36### Breaking changes 37 38- Updated `bitflags` to 2.0.2, which changes the API of `Attributes` a bit. 39- Updated `map_range` method to support mapping leaf page table entries without the `VALID` flag. 40 `Attributes::VALID` is no longer implicitly set when mapping leaf page table entries. 41 42### New features 43 44- Added `modify_range` method to `IdMap`, `LinearMap` and `Mapping` to update details of a mapped 45 range. This can be used e.g. to change flags for some range which is already mapped. As part of 46 this, the `Descriptor` struct was added to the public API. 47- Added `DBM` and software flags to `Attributes`. 48 49## 0.3.0 50 51### Breaking changes 52 53- Made `Translation` trait responsible for allocating page tables. This should help make it possible 54 to use more complex mapping schemes, and to construct page tables in a different context to where 55 they are used. 56- Renamed `AddressRangeError` to `MapError`, which is now an enum with three variants and implements 57 `Display`. 58- `From<*const T>` and `From<*mut T>` are no longer implemented for `VirtualAddress`. 59- Added support for using TTBR1 as well as TTBR0; this changes various constructors to take an extra 60 parameter. 61 62### New features 63 64- Made `alloc` dependency optional via a feature flag. 65- Added support for linear mappings with new `LinearMap`. 66- Implemented subtraction of usize from address types. 67 68### Bugfixes 69 70- Fixed memory leak introduced in 0.2.0: dropping a page table will now actually free its memory. 71 72## 0.2.1 73 74### New features 75 76- Implemented `Debug` and `Display` for `MemoryRegion`. 77- Implemented `From<Range<VirtualAddress>>` for `MemoryRegion`. 78- Implemented arithmetic operations for `PhysicalAddress` and `VirtualAddress`. 79 80## 0.2.0 81 82### Breaking changes 83 84- Added bounds check to `IdMap::map_range`; it will now return an error if you attempt to map a 85 virtual address outside the range of the page table given its configured root level. 86 87### New features 88 89- Implemented `Debug` for `PhysicalAddress` and `VirtualAddress`. 90- Validate that chosen root level is supported. 91 92### Bugfixes 93 94- Fixed bug in `Display` and `Drop` implementation for `RootTable` that would result in a crash for 95 any pagetable with non-zero mappings. 96- Fixed `Display` implementation for `PhysicalAddress` and `VirtualAddress` to use correct number of 97 digits. 98 99## 0.1.0 100 101Initial release. 102