Translation::allocate_table and Translation::deallocate_table now takes &mut self rather than `&self.Translation type parameter to Mapping no longer needs to be Clone.IdMap, LinearMap, Mapping and RootTable are now Sync.IdMap::new, LinearMap::new, Mapping::new and RootTable::new.Attributes::EXECUTE_NEVER renamed to Attributes::UXN.Attributes::DEVICE_NGNRE and NORMAL have been removed in favour of ATTRIBUTE_INDEX_*, OUTER_SHAREABLE and INNER_SHAREABLE, to avoid making assumptions about how the MAIR registers are programmed.root_address, mark_active and mark_inactive methods to IdMap, LinearMap and Mapping. These may be used to activate and deactivate the page table manually rather than calling activate and deactivate.NS and PXN bits to Attributes.Attributes::ACCESSED is no longer automatically set on all new mappings. To maintain existing behaviour you should explicitly set Attributes::ACCESSED whenever calling map_range for a valid mapping.PAGE_OR_TABLE flag when passed to map_range, which would result in corrupt table mappings to be created.modify_range to split block entries before traversing them, and pass only the descriptors and subregions that are completely covered by the given region to the updater callback function.modify_range to only pass block or page descriptors to the callback function and prevent them from being converted into table descriptors inadvertently.map_range and modify_range.activate and deactivate methods as unsafe.map_range() alternative map_range_with_constraints() with extra contraints argument.walk_range method that iterates over all block or page descriptorsthat intersect with a given region, without permitting the callback to make changes to the descriptorsRootTable, Mapping, IdMap and LinearMap are now correctly marked as Send, as it doesn't matter where they are used from.bitflags to 2.0.2, which changes the API of Attributes a bit.map_range method to support mapping leaf page table entries without the VALID flag. Attributes::VALID is no longer implicitly set when mapping leaf page table entries.modify_range method to IdMap, LinearMap and Mapping to update details of a mapped range. This can be used e.g. to change flags for some range which is already mapped. As part of this, the Descriptor struct was added to the public API.DBM and software flags to Attributes.Translation trait responsible for allocating page tables. This should help make it possible to use more complex mapping schemes, and to construct page tables in a different context to where they are used.AddressRangeError to MapError, which is now an enum with three variants and implements Display.From<*const T> and From<*mut T> are no longer implemented for VirtualAddress.alloc dependency optional via a feature flag.LinearMap.Debug and Display for MemoryRegion.From<Range<VirtualAddress>> for MemoryRegion.PhysicalAddress and VirtualAddress.IdMap::map_range; it will now return an error if you attempt to map a virtual address outside the range of the page table given its configured root level.Debug for PhysicalAddress and VirtualAddress.Display and Drop implementation for RootTable that would result in a crash for any pagetable with non-zero mappings.Display implementation for PhysicalAddress and VirtualAddress to use correct number of digits.Initial release.