Source code
Revision control
Copy as Markdown
Other Tools
# Change Log
All notable changes to this project will be documented in this file.
## [Unreleased]
## [0.9.3] - 2023-12-19
### Fixed
- Build on Android.
## [0.9.2] - 2023-12-17
### Fixed
- Build on FreeBSD.
## [0.9.1] - 2023-12-16
### Changed
- Added `MmapOptions::huge` method to support mapping hugetlb. Linux only.
## [0.9.0] - 2023-10-03
### Changed
- The `Advice` struct was split into two enums: `Advice` and `UncheckedAdvice`.<br>
`Advice` can be passed to safe `advise` and `advise_range` methods.
And `UncheckedAdvice` can be passed to unsafe `unchecked_advise`
and `unchecked_advise_range` methods.<br>
## [0.8.0] - 2023-09-25
### Changed
- The `Advice` type is a struct and not an enum now.
### Fixed
- Some of the `Advise` variants were unsound and now require `unsafe` to be constructed.
## [0.7.1] - 2023-06-24
### Fixed
- Mapping beyond 4GB offset on 32 bit glibc. Linux-only.
## [0.7.0] - 2023-06-08
### Added
- `Mmap::remap`, `MmapMut::remap` and `MmapRaw::remap`. Linux-only.
- `Advice::PopulateRead` and `Advice::PopulateWrite`. Linux-only.
### Changed
- libc crate >= 0.2.143 is required now.
## [0.6.2] - 2023-05-24
### Fixed
- Alignment for empty files on Windows.
## [0.6.1] - 2023-05-10
### Added
- Add `MmapOptions::map_raw_read_only` to avoid intermediate invalid `Mmap` instances.
## [0.6.0] - 2023-05-09
### Changed
- `lock()` and `unlock` methods require `&self` and not `&mut self` now.
## [0.5.10] - 2023-02-22
### Added
- `MmapOptions::map_anon` accounts for `populate` on Linux now.
## [0.5.9] - 2023-02-17
### Added
- `From<Mmap> for MmapRaw` and `From<MmapMut> for MmapRaw`.
- `Mmap::advise_range`, `MmapMut::advise_range`, `MmapRaw::advise_range`.
## [0.5.8] - 2022-11-09
### Added
- `MmapRaw::advise`, `MmapRaw::lock` and `MmapRaw::unlock`.
- Improve `MmapMut::make_exec` documentation.
## [0.5.7] - 2022-08-15
### Changed
- Simplify file size retrieving code.
## [0.5.6] - 2022-08-11
### Added
- Memory locking and unlocking. See `Mmap::lock`, `Mmap::unlock`,
`MmapMut::lock` and `MmapMut::unlock`.
## [0.5.5] - 2022-07-09
### Fixed
- Limit mapping length to `isize::MAX` to prevent undefined behavior
on calling `std::slice::from_raw_parts`. Technically affects only 32-bit systems.
## [0.5.4] - 2022-06-04
### Added
### Changed
- Use `tempfile` crate instead of `tempdir` in tests.
## [0.5.3] - 2022-02-10
### Added
## [0.5.2] - 2022-01-10
### Added
- `flush`, `flush_async`, `flush_range` and `flush_async_range` to `MmapRaw` matching
the corresponding methods on `MmapMut`.
## [0.5.1] - 2022-01-09
### Fixed
- Explicitly call `fstat64` on Linux, emscripten and l4re targets.
## [0.5.0] - 2021-09-19
### Added
- `MmapOptions` accepts any type that supports `RawHandle`/`RawFd` returning now.
This allows using `memmap2` not only with Rust std types, but also with
- (unix) Memoize page size to avoid repeatedly calling into sysconf machinery.
### Changed
- (win) Use `std::os::windows::io::AsRawHandle` directly, without relying on `std::fs::File`.
- Do not panic when failing to release resources in Drop impls.
## [0.4.0] - 2021-09-16
### Added
### Changed
- Mapping of zero-sized files is no longer an error.
- MSRV changed from 1.31 to 1.36
## [0.3.1] - 2021-08-15
### Fixed
- Integer overflow during file length calculation on 32bit targets.
## [0.3.0] - 2021-06-10
### Changed
- `MmapOptions` allows mapping using Unix descriptors and not only `std::fs::File` now.
## [0.2.3] - 2021-05-24
### Added
- Allow compilation on unsupported platforms.
The code will panic on access just like in `std`.
## [0.2.2] - 2021-04-03
### Added
### Fixed
- Fix alignment computation for `flush_async` to match `flush`.
## [0.2.1] - 2021-02-08
### Added
## [0.2.0] - 2020-12-19
### Changed
- MSRV is 1.31 now (edition 2018).
- Make anonymous memory maps private by default on unix. [@CensoredUsername](https://github.com/CensoredUsername)
## 0.1.0 - 2020-01-18
### Added
### Changed
- Use `LICENSE-APACHE` instead of `README.md` for some tests since it's immutable.
### Removed