Skip to content

Latest commit

 

History

History
97 lines (76 loc) · 4.06 KB

CHANGELOG.md

File metadata and controls

97 lines (76 loc) · 4.06 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog and this project adheres to Semantic Versioning.

0.4.2 - 2024-10-18

  • Add Send + Sync + Unpin bound to PrimitiveAtom::Impl. As a consequence, these traits are now implemented for Atomic<T> unconditionally. (#14)

0.4.1 - 2024-03-04

  • Add const fn Atomic::from_impl to allow creating static Atomics #11
  • Add Atom & AtomLogic impl for small, pow2-sized integer arrays #12
  • Fix CI badge in README

0.4.0 - 2022-04-09

Changed

  • Breaking: the minimal supported Rust version (MSRV) is now 1.60

  • Use cfg(target_has_atomic) to conditionally disable some impls. Previously, the whole crate just failed to compile on targets like thumbv7em-none-eabi, as AtomicU64 is not available there. Now it compiles, but there is no Atom impl for u64 or f64, for example. This is not yet an optimal solution, as platform support for atomics is not just differentiated by size, but also by whether they support some features. Sadly, for those, there are no cfg flags available on stable yet.

  • Relax derive for structs by only requiring Atom for the inner field, not PrimitiveAtom.

  • Derive macro uses syn, quote and proc-macro2 in version 1.x now. This is semantically irrelevant for you, but might remove the pre-1.x versions of these crates from your dependency graph if atomig was the last to use them.

0.3.3 - 2021-12-30

Changed

  • This library is now no_std compatible. All paths to std items were replaced by core. (Thanks @eivindbergem #5)

0.3.2 - 2021-10-02

Added

  • Atom and AtomInteger impl for Option<std::num::NonZero*>

0.3.1 - 2021-06-18

Added

  • Atom impl for std::ptr::NonNull<T> and Option<NonNull<T>>
  • Atom and AtomLogic impl for std::num::Wrapping<T>
  • Atom for std::num::NonZero* types

0.3.0 - 2021-06-18

Changed

  • Breaking: the minimal supported Rust version (MSRV) is now 1.53
  • Breaking: Remove deprecated method compare_and_swap. This method is deprecated in std and can be easily replaced by compare_exchange. See std docs for the migration.
  • Breaking: all items of traits in the impls module are now considered implementation detail and not part of the public API.
  • Breaking: the traits in the impls module were refactored and a lot changed about all of them. But due to the previous point, you are not supposed to care anymore :P
  • Make fetch_update available to all Atomic<T>, not only T: AtomicInteger.

0.2.0 - 2020-07-30

Breaking

  • The minimal required Rust version is now 1.45

Added

  • Add serde feature which implements Serialize and Deserialize for atomic types as appropriate (#2)

Changed

  • Some methods previously gated by the nightly feature are now always available (they were stabilized in Rust 1.45).

Removed

  • Remove nightly feature.This means atomig no longer uses cfg(target_has_atomic) gates. They will be added once they get stabilized.

0.1.0 - 2019-07-24

Added

  • Everything.