volatile
Volatile wrapper types for raw pointers
0.6.1
6.1M downloads/mo
#4087 most downloaded on crates.io
rust-osdev/volatile
What this package is like to depend on
Last release 2 years ago
no release in 18 months
Release timing varies
gaps range from 4 weeks to 1.5 years
Most releases are documented
notes for 15 of 23 stable releases
1 version withdrawn
withdrawn after publishing
10 years old
26 releases · first in 2016
0 releases in the last 12 months
see the full history below
Release timeline
26 releases · Oct 2016 to Jun 2024Releases
latest 26-
0.6.106 Jun 2024 -
0.6.006 Jun 2024 withdrawnRelease notes
Open source →- Breaking: feat: introduce
RestrictAccess<To>and generalizerestrictto all access types by @mkroening in https://github.com/rust-osdev/volatile/pull/60 - feat: implement derive macro for all access types by @mkroening in https://github.com/rust-osdev/volatile/pull/61
- fix: add
#[must_use]to volatile types,read, andas_raw_ptrby @mkroening in https://github.com/rust-osdev/volatile/pull/58 - Add a semver checks CI job by @phil-opp in https://github.com/rust-osdev/volatile/pull/63
Full Changelog: https://github.com/rust-osdev/volatile/compare/v0.5.4...0.6.0
- Breaking: feat: introduce
-
0.5.426 Apr 2024Release notes
Open source →- fix(access): properly seal access traits by @mkroening in https://github.com/rust-osdev/volatile/pull/59
- fix(macro): support
#[repr(align(N))]in#[derive(VolatileFieldAccess)]macro by @mkroening in https://github.com/rust-osdev/volatile/pull/57 - Fix warnings by @mkroening in https://github.com/rust-osdev/volatile/pull/56
-
0.5.321 Apr 2024Release notes
Open source →- Add
#[derive(VolatileFieldAccess)]for easy, access-limited field-based access to structs by @mkroening in https://github.com/rust-osdev/volatile/pull/49 - Add
VolatileRef::restrictandVolatilePtr::restrictby @mkroening in https://github.com/rust-osdev/volatile/pull/47 - Add
VolatileRef::borrowandVolatileRef::borrow_mutby @mkroening in https://github.com/rust-osdev/volatile/pull/46 - Add support for nested
map_fieldoperations by @phil-opp in https://github.com/rust-osdev/volatile/pull/50 - docs: remove unused
NonNullimports by @mkroening in https://github.com/rust-osdev/volatile/pull/48 - fix(Cargo.toml): add categories by @mkroening in https://github.com/rust-osdev/volatile/pull/52
- Add
-
0.5.3-rc.221 Apr 2024 pre-release -
0.5.3-rc.121 Apr 2024 pre-releaseNothing published for this version
-
0.5.222 Mar 2024Release notes
Open source →- Add implementations for
fmt::Pointer,PartialEq,Eq,PartialOrd,OrdandHash. - Update
very_unstablefeature to latest nightly - Remove
Sizedrequirement forSendandSyncimpls onVolatileRef
- Add implementations for
-
0.5.124 Jun 2023 -
0.5.024 Jun 2023Release notes
Open source →- Breaking: New design based on raw pointers
- The previous reference-based design was unsound because it allowed the compiler to insert spurious reads.
- The new design features two wrapper types for raw pointers:
VolatilePtrandVolatileRef VolatilePtrprovides safe read and write access to volatile values. Like raw pointers, it implementsCopyand is!Sync.VolatileRefis a pointer type that respects Rust's aliasing rules. It doesn't implementCopy, requires a&mutreference for modification, and implementsSync. It can converted to temporaryVolatilePtrinstances through theas_ptr/as_mut_ptrmethods.
- We now provide methods for volatile slice operations and a
map!macro for struct field projection. These advanced features are gated behind a cargo feature named "unstable".
- Breaking: New design based on raw pointers
-
0.4.617 Jan 2023 -
0.4.524 Apr 2022 -
0.4.409 Mar 2021Release notes
Open source →- Replace feature "range_bounds_assert_len" with "slice_range" (#21)
- Fixes the
unstablefeature on the latest nightly.
- Fixes the
- Replace feature "range_bounds_assert_len" with "slice_range" (#21)
-
0.4.323 Dec 2020 -
0.4.231 Oct 2020Release notes
Open source →- Change
slice::check_rangetoRangeBounds::assert_len(#16)- Fixes build on latest nightly.
- Change
-
0.4.121 Sep 2020 -
0.4.021 Sep 2020 -
0.3.029 Jul 2020 -
0.2.729 Jul 2020 -
0.2.617 Jan 2019Nothing published for this version
-
0.2.528 Oct 2018Nothing published for this version
-
0.2.414 Apr 2018Nothing published for this version
-
0.2.323 Jan 2017Nothing published for this version
-
0.2.216 Jan 2017Nothing published for this version
-
0.2.122 Dec 2016Nothing published for this version
-
0.2.004 Nov 2016Nothing published for this version
-
0.1.003 Oct 2016Nothing published for this version