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 toPrimitiveAtom::Impl
. As a consequence, these traits are now implemented forAtomic<T>
unconditionally. (#14)
0.4.1 - 2024-03-04
- Add const fn
Atomic::from_impl
to allow creatingstatic
Atomic
s #11 - Add
Atom
&AtomLogic
impl for small, pow2-sized integer arrays #12 - Fix CI badge in README
0.4.0 - 2022-04-09
-
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 likethumbv7em-none-eabi
, asAtomicU64
is not available there. Now it compiles, but there is noAtom
impl foru64
orf64
, 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 nocfg
flags available on stable yet. -
Relax
derive
for structs by only requiringAtom
for the inner field, notPrimitiveAtom
. -
Derive macro uses
syn
,quote
andproc-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
- This library is now
no_std
compatible. All paths tostd
items were replaced bycore
. (Thanks @eivindbergem #5)
0.3.2 - 2021-10-02
Atom
andAtomInteger
impl forOption<std::num::NonZero*>
0.3.1 - 2021-06-18
Atom
impl forstd::ptr::NonNull<T>
andOption<NonNull<T>>
Atom
andAtomLogic
impl forstd::num::Wrapping<T>
Atom
forstd::num::NonZero*
types
0.3.0 - 2021-06-18
- 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 bycompare_exchange
. Seestd
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 allAtomic<T>
, not onlyT: AtomicInteger
.
0.2.0 - 2020-07-30
- The minimal required Rust version is now 1.45
- Add
serde
feature which implementsSerialize
andDeserialize
for atomic types as appropriate (#2)
- Some methods previously gated by the
nightly
feature are now always available (they were stabilized in Rust 1.45).
- Remove
nightly
feature.This meansatomig
no longer usescfg(target_has_atomic)
gates. They will be added once they get stabilized.
- Everything.