Releases: taiki-e/portable-atomic
1.12.0
-
Fix build error on no-std pre-v6 Arm targets due to the recent upstream change. (83f6f3e)
-
Support
unsafe-assume-single-corefeature /portable_atomic_unsafe_assume_single_corecfg for targets with CAS. (38e9572) -
Improve compile-time detection of s390x target feature. (5ae0ef5)
-
Documentation improvements. (c84f720)
1.11.1
-
Fix build error when building aarch64/arm64ec/powerpc64/s390x targets for Miri or ThreadSanitizer since nightly-2025-05-31.
-
aarch64: Optimize atomic floats when FEAT_LSFE is enabled. (#201)
-
Improve compile-time detection of RISC-V Zacas extension. (b7634e2)
-
Improve run-time detection on linux-musl. (7fdad7f)
1.11.0
-
Work around nightly-2025-02-24 rustc regression causing "cannot use value of type
*mut Tfor inline assembly" error on RISC-V without A extension, MSP430, and pre-v6 no-std Arm targets. (eeb0235) -
Support
AtomicF16andAtomicF128for unstablef16andf128under unstable cfgs. (#200) -
RISC-V Zacas extension support is no longer experimental. (#206)
-
Improve support of run-time detection and outline-atomics:
- riscv: Enable run-time detection of Zacas extension by default on Linux/Android. (#207)
- aarch64: Support run-time detection of FEAT_LRCPC3/FEAT_LSE128 on FreeBSD. (6a5075d)
- powerpc64: Support run-time detection of quadword-atomics on AIX (currently disabled by default because detection support for AIX is experimental). (#102)
1.10.0
-
Update to stabilized s390x and Arm64EC inline assembly. (97645c1, e1d1a97)
-
Make
get_mutconst fnon Rust 1.83+. (0dea68c) -
Make
from_ptrconst fnon Rust 1.83+. (align to the std atomic change in Rust 1.84) (50532d8) -
Various optimizations:
-
Improve support of run-time detection and outline-atomics:
-
Support RISC-V Zacas extension on pre-1.82 rustc. (#194)
-
Improve compile-time detection of RISC-V Zaamo/Zabha extensions. (673137a)
-
Respect
RUSTC_BOOTSTRAP=-1recently added in nightly in rustc version detection. (5b2847a)
portable-atomic-util 0.2.4
-
Add unstable
portable_atomic_unstable_coerce_unsizedcfg (requires Rust nightly). (#195, thanks @brodycj) -
Respect
RUSTC_BOOTSTRAP=-1recently added in nightly in rustc version detection. (5b2847a)
portable-atomic-util 0.2.3
-
Add
new_uninit/new_uninit_slice/assume_inittoArcat Rust 1.36+. (align to the stdArcchange in Rust 1.82) (362dc9a) -
Support
make_mutonArc<[T]>andArc<str>at Rust 1.36+. (align to the stdArcchange in Rust 1.81) (362dc9a)
1.9.0
-
RISC-V without A-extension: Support RMW when Zaamo extension enabled (even when
unsafe-assume-single-coredisabled). (#185, 9983a8b)
See "operations don't require disabling interrupts" list ininterruptmodule's readme for the operations provided. -
Support run-time detection of RISC-V Zacas extension (currently disabled by default). (#183)
-
Support 128-bit atomics on Arm64EC (currently nightly-only) (#184)
-
Improve compile-time detection of powerpc64 quadword-atomics. (3eb8507)
1.8.0
-
Improve diagnostics when method that requires CAS is unavailable. (#181)
Before:
error[E0599]: no method named `compare_exchange` found for struct `portable_atomic::AtomicUsize` in the current scope --> src/race.rs:60:24 | 60 | self.inner.compare_exchange(0, value.get(), Ordering::AcqRel, Ordering::Acquire); | ^^^^^^^^^^^^^^^^ method not found in `AtomicUsize`After:
error[E0277]: `compare_exchange` requires atomic CAS but not available on this target by default --> src/race.rs:60:24 | 60 | self.inner.compare_exchange(0, value.get(), Ordering::AcqRel, Ordering::Acquire); | ^^^^^^^^^^^^^^^^ this associated function is not available on this target by default | = help: the trait `HasCompareExchange` is not implemented for `&portable_atomic::AtomicUsize` = note: consider enabling one of the `unsafe-assume-single-core` or `critical-section` Cargo features = note: see <https://docs.rs/portable-atomic/latest/portable_atomic/#optional-features> for more. -
Improve compile error messages for some other cases (19716ac, 61dcaaa)
-
Various improvements to RISC-V.
- riscv64: Support 128-bit atomics when Zacas extension enabled. (173) This is currently marked as experimental because LLVM marking the corresponding target feature as experimental.
- riscv32: Support 64-bit atomics when Zacas extension enabled. (173) This is currently marked as experimental because LLVM marking the corresponding target feature as experimental.
- Improvements for RISC-V without A-extension:
- Support zaamo target feature. When building for single-core RISC-V without A-extension, this is equivalent to force-amo feature (8abba4b)
- Support zabha target feature. (694364a)
- Strengthen SeqCst store to improve compatibility with code that uses atomic instruction mapping that differs from LLVM and GCC. (5b10b15)
-
Improve support of run-time detection and outline-atomics:
- aarch64: Support run-time detection of FEAT_LRCPC3/FEAT_LSE128 for load/store. (#174)
- aarch64: Support run-time detection of FEAT_LSE2 on OpenBSD. (4f8c735)
- aarch64: Support run-time detection of FEAT_LSE/FEAT_LSE2 on illumos (currently disabled by default because illumos AArch64 port is experimental). (#175)
- powerpc64: Support run-time detection on OpenBSD 7.6+ (currently disabled by default for compatibility with old versions). (09a967b)
-
aarch64: Support FEAT_LRCPC3/FEAT_LSE128 with pre-16 LLVM. (#178)
-
aarch64: Improve compile-time detection of FEAT_LSE2/FEAT_LRCPC3/FEAT_LSE128. (10d47de)
-
Relax minimal version of
serde(supported via optional feature) to 1.0.60.
1.7.0
-
Support run-time detection for cmpxchg16b on x86_64 on pre-1.69 rustc. (#154)
-
Make
into_innerconst fnon Rust 1.56+. (align to the std atomic change in Rust 1.79) (dee1f89) -
Work around rustc_codegen_gcc bug on x86_64. (d938f77)
-
Optimize x86_64 atomics.
-
Make rustc version detection robust for custom toolchains. (f8ea85e)
-
Respect
RUSTC_WRAPPERin rustc version detection. -
Our build script is now less likely to be re-run unnecessarily in versions where the cargo bug fix is available (cargo 1.79+). (52c277b)