PackageTrack
Sign in Get early access

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 2024
2017 2018 2019 2020 2021 2022 2023 2024 2025 2026
Release Pre-release Withdrawn

Releases

latest 26
  1. 0.6.1 06 Jun 2024
    Release notes

    chore: Release volatile version 0.6.1

    Open source →
  2. 0.6.0 06 Jun 2024 withdrawn
    Release notes

    chore: Release volatile version 0.6.0

    Open source →
    Release notes
    • Breaking: feat: introduce RestrictAccess<To> and generalize restrict to 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, and as_raw_ptr by @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

    Open source →
  3. 0.5.4 26 Apr 2024
    Release notes

    chore: Release volatile version 0.5.4

    Open source →
    Release notes
    • 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
    Open source →
  4. 0.5.3 21 Apr 2024
    Release notes

    chore: Release volatile version 0.5.3

    Open source →
    Release notes
    • 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::restrict and VolatilePtr::restrict by @mkroening in https://github.com/rust-osdev/volatile/pull/47
    • Add VolatileRef::borrow and VolatileRef::borrow_mut by @mkroening in https://github.com/rust-osdev/volatile/pull/46
    • Add support for nested map_field operations by @phil-opp in https://github.com/rust-osdev/volatile/pull/50
    • docs: remove unused NonNull imports 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
    Open source →
  5. 0.5.3-rc.2 21 Apr 2024 pre-release
    Release notes

    chore: Release volatile version 0.5.3-rc.2

    Open source →
  6. 0.5.3-rc.1 21 Apr 2024 pre-release

    Nothing published for this version

  7. 0.5.2 22 Mar 2024
    Release notes
    • Add implementations for fmt::Pointer, PartialEq, Eq, PartialOrd, Ord and Hash.
    • Update very_unstable feature to latest nightly
    • Remove Sized requirement for Send and Sync impls on VolatileRef
    Open source →
  8. 0.5.1 24 Jun 2023
    Release notes
    • Fix: Add missing documentation of the map macro
    Open source →
  9. 0.5.0 24 Jun 2023
    Release notes
    • 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: VolatilePtr and VolatileRef
      • VolatilePtr provides safe read and write access to volatile values. Like raw pointers, it implements Copy and is !Sync.
      • VolatileRef is a pointer type that respects Rust's aliasing rules. It doesn't implement Copy, requires a &mut reference for modification, and implements Sync. It can converted to temporary VolatilePtr instances through the as_ptr/as_mut_ptr methods.
    • 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".
    Open source →
  10. 0.4.6 17 Jan 2023
    Release notes
    • Fix UB in slice methods when Deref returns different references (#27)
    Open source →
  11. 0.4.5 24 Apr 2022
    Release notes
    • Remove the const_generics feature flag (#25)
    Open source →
  12. 0.4.4 09 Mar 2021
    Release notes
    • Replace feature "range_bounds_assert_len" with "slice_range" (#21)
      • Fixes the unstable feature on the latest nightly.
    Open source →
  13. 0.4.3 23 Dec 2020
    Release notes
    • Add methods to restrict access (#19)
    Open source →
  14. 0.4.2 31 Oct 2020
    Release notes
    • Change slice::check_range to RangeBounds::assert_len (#16)
      • Fixes build on latest nightly.
    Open source →
  15. 0.4.1 21 Sep 2020
    Release notes
    • Small documentation and metadata improvements
    Open source →
  16. 0.4.0 21 Sep 2020
    Release notes
    • Breaking: Rewrite crate to operate on reference values (#13)
    Open source →
  17. 0.3.0 29 Jul 2020
    Release notes
    • Breaking: Remove Debug and Clone derives for WriteOnly (#12)
    Open source →
  18. 0.2.7 29 Jul 2020
    Release notes
    • Derive Default for Volatile, WriteOnly and ReadOnly (#10)
    Open source →
  19. 0.2.6 17 Jan 2019

    Nothing published for this version

  20. 0.2.5 28 Oct 2018

    Nothing published for this version

  21. 0.2.4 14 Apr 2018

    Nothing published for this version

  22. 0.2.3 23 Jan 2017

    Nothing published for this version

  23. 0.2.2 16 Jan 2017

    Nothing published for this version

  24. 0.2.1 22 Dec 2016

    Nothing published for this version

  25. 0.2.0 04 Nov 2016

    Nothing published for this version

  26. 0.1.0 03 Oct 2016

    Nothing published for this version

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive