Portable atomic types including support for 128-bit atomics, atomic float, etc.
APACHE-2.0 License
Bot releases are visible (Hide)
Published by github-actions[bot] about 2 years ago
Implement workaround for std cpuid bug due to LLVM bug (rust-lang/rust#101346, llvm/llvm-project#57550).
Published by github-actions[bot] about 2 years ago
Optimize atomic load/store on no-std pre-v6 ARM when portable_atomic_unsafe_assume_single_core
cfg is used. (#36)
Support pre-power8 powerpc64le. powerpc64le's default cpu version is power8, but you can technically compile it for the old cpu using the unsafe -C target-cpu
rustc flag.
Published by github-actions[bot] about 2 years ago
Use track_caller when debug assertions are enabled on Rust 1.46+.
Make powerpc64 128-bit atomics compatible with Miri and ThreadSanitizer on LLVM 15+.
Document that 128-bit atomics are compatible with Miri and ThreadSanitizer on recent nightly.
Published by github-actions[bot] about 2 years ago
Always provide atomic CAS for MSP430 and AVR. (#31)
This previously required unsafe cfg portable_atomic_unsafe_assume_single_core
, but since all MSP430 and AVR are single-core, we can safely provide atomic CAS based on disabling interrupts.
Support fence
and compiler_fence
on MSP430. (On MSP430, the standard library's fences are currently unavailable due to LLVM errors.)
Update safety requirements for unsafe cfg portable_atomic_unsafe_assume_single_core
to mention use of privileged instructions to disable interrupts.
Atomic operations based on disabling interrupts on single-core systems are now considered lock-free.
The previous behavior was inconsistent because we consider the pre-v6 ARM Linux's atomic operations provided in a similar way by the Linux kernel to be lock-free.
Respect -Zallow-features
.
Published by github-actions[bot] about 2 years ago
Fix build error on old Miri.
Documentation improvements.
Published by github-actions[bot] about 2 years ago
Published by github-actions[bot] about 2 years ago
Provide stable equivalent of #![feature(strict_provenance_atomic_ptr)]
. (#23)
AtomicPtr::fetch_ptr_{add,sub}
AtomicPtr::fetch_byte_{add,sub}
AtomicPtr::fetch_{or,and,xor}
These APIs are compatible with strict-provenance on cfg(miri)
. Otherwise, they are compatible with permissive-provenance.
Once #![feature(strict_provenance_atomic_ptr)]
is stabilized, these APIs will be strict-provenance compatible in all cases from the version in which it is stabilized.
Provide stable equivalent of #![feature(atomic_bool_fetch_not)]
. (#24)
AtomicBool::fetch_not
Optimize x86_64 128-bit RMWs. (#22)
Optimize x86_64 outline-atomics.
Optimize inline assemblies on ARM and AArch64.
Revert thumbv6m atomic load/store changes made in 0.3.5. This is because rust-lang/rust#99595 has been reverted, so this is no longer needed.
Published by github-actions[bot] about 2 years ago
specs
directory.Published by github-actions[bot] about 2 years ago
Published by github-actions[bot] over 2 years ago
Published by github-actions[bot] over 2 years ago
Support native 128-bit atomic operations for s390x (currently nightly-only).
Add AtomicF{32,64}::fetch_abs
.
Add #[must_use]
to constructors.
Use 128-bit atomic operation mappings same as LLVM, on aarch64.
Remove parking_lot
optional feature to allow the use of this crate within global allocators.
Published by github-actions[bot] over 2 years ago
Published by github-actions[bot] over 2 years ago
Remove i128
feature. Atomic{I,U}128
are now always enabled.
Add outline-atomics
feature. Currently, this is the same as the 0.1's i128-dynamic
, except that fallback
feature is not implicitly enabled.
Remove i128-dynamic
feature in favor of outline-atomics
feature.
Add AtomicF{32,64}::as_bits
.
Published by github-actions[bot] over 2 years ago