| # Changelog |
| |
| All notable changes to this project will be documented in this file. |
| |
| The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), |
| and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). |
| |
| ## [Unreleased] |
| |
| No unreleased changes yet |
| |
| ## 1.0.3 - 2023-07-11 |
| |
| - Crate is deprecated, use `portable-atomic` instead. |
| |
| ## 1.0.2 - 2023-03-12 |
| |
| - Add MSP430 support. |
| |
| ## 1.0.1 - 2022-08-12 |
| |
| - Fix `AtomicPtr` accidentally not being available when not polyfilled. |
| |
| ## 1.0.0 - 2022-08-12 |
| |
| - Update to `critical-section` v1.0 |
| |
| ## 0.1.11 - 2022-11-29 |
| |
| - Bump `critical-section` dependency from `0.2` to `1.0`. |
| |
| This is a breaking change if you were relying on the default implementations available on `critical-section 0.2.7` and earlier. |
| They have been removed in `critical-section 0.2.8` because they were **unsound**, since there's no way to guarantee they're correct for the |
| target in use (for example for multi-core embedded targets). Since `critical-section 0.2.8` just forwards to `1.0` now, we decided to change `atomic-polyfill` to use `1.0` directly. |
| |
| If you're seeing a linker error like `undefined symbol: _critical_section_1_0_acquire`, you're affected. To fix it: |
| |
| - If your target supports `std`: Add the `critical-section` dependency to `Cargo.toml` enabling the `std` feature. |
| |
| ```toml |
| [dependencies] |
| critical-section = { version = "1.1", features = ["std"]} |
| ``` |
| |
| - For single-core Cortex-M targets in privileged mode: |
| ```toml |
| [dependencies] |
| cortex-m = { version = "0.7.6", features = ["critical-section-single-core"]} |
| ``` |
| |
| - For single-hart RISC-V targets in privileged mode: |
| ```toml |
| [dependencies] |
| riscv = { version = "0.10", features = ["critical-section-single-hart"]} |
| ``` |
| |
| - For other targets: check if your HAL or architecture-support crate has a `critical-section 1.0` implementation available. Otherwise, [provide your own](https://github.com/rust-embedded/critical-section#providing-an-implementation). |
| |
| ## 0.1.10 - 2022-08-12 |
| |
| - Fix `AtomicPtr` accidentally not being available when not polyfilled. |
| |
| ## 0.1.9 - 2022-08-12 |
| |
| - Switch to only two polyfill levels. |
| |
| The "CAS" level which uses atomic load/store and critical-section based CAS was not |
| sound, because `critical-section` guarantees only "no other critical section can run concurrently", |
| not "no other code can run concurrently". Therefore a CS-based CAS can still race a native atomic store. |
| |
| ## 0.1.8 - 2022-04-12 |
| |
| - Added AVR support. |
| |
| ## 0.1.7 - 2022-03-22 |
| |
| - Added support for xtensa (ESP chips), with and without ESP-IDF. |
| - Reexport `core::sync::atomic::*` as-is for unknown targets, to avoid build failures if they don't have full atomic support. |
| |
| ## 0.1.6 - 2022-02-08 |
| |
| - Add polyfill support for `thumbv4t` targets. (Nintendo Game Boy Advance) |
| - Added `get_mut()` to `AtomicBool`. |
| - Added `into_inner()` to all atomics |
| - Added `fmt::Debug` impl to `AtomicBool`, `AtomicPtr`. |
| - Added `fmt::Pointer` impl to `AtomicPtr`. |
| - Added `From<*mut T>` impl to `AtomicPtr`. |
| - Added `RefUnwindSafe` impl to all atomics. |
| |
| ## 0.1.5 - 2021-11-02 |
| |
| - Updated critical-section to v0.2.5. Fixes `std` implementation to allow reentrant (nested) critical sections. This would previously deadlock. |
| |
| ## 0.1.4 - 2021-09-20 |
| |
| - Added support for RISC-V. |
| - Added support for "full polyfill" level, where load/stores are polyfilled, not just CAS operations. |
| - Added support for `AtomicU64`, `AtomicI64`. |
| |
| ## 0.1.3 - 2021-08-07 |
| |
| - Only import `cortex-m` when needed (#4) |
| - Fix panic on `fetch_update` due to incorrect ordering (#5) |
| |
| ## 0.1.2 - 2021-03-29 |
| |
| - Added missing reexport of `fence` and `compiler_fence` in polyfilled mode. |
| |
| ## 0.1.1 - 2021-03-04 |
| |
| - Added polyfills for AtomicU8, AtomicU16, AtomicUsize, AtomicI8, AtomicI16, AtomicI32, AtomicIsize |
| |
| ## 0.1.0 - 2021-03-04 |
| |
| - First release |