Skip to content

1.8.0

Choose a tag to compare

@github-actions github-actions released this 20 Sep 14:19
· 406 commits to main since this release
  • 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.