The main change in this release is adding an optional critical-section feature[^1] to support custom critical section implementations with rust-embedded's critical-section crate. (https://github.com/taiki-e/portable-atomic/pull/51) This allows portable-atomic to provide atomic CAS on multicore systems that do not have native atomic CAS instructions.
[^1]: This is a feature, not a cfg; critical-section 1.x doesn't provide the default or opt-in potentially unsound implementation (unlike critical-section 0.x where the implementation for single-core was enabled by default), and users must implement the critical-section implementation that sound for their system by implementing an unsafe trait (or to use the crate that provides such an implementation). So, we have determined that it is okay to treat this as a safe feature.
The main change in this release is adding an optional
critical-section
feature[^1] to support custom critical section implementations with rust-embedded's critical-section crate. (https://github.com/taiki-e/portable-atomic/pull/51) This allowsportable-atomic
to provide atomic CAS on multicore systems that do not have native atomic CAS instructions.portable-atomic
is not used inspin
's public API and the (cfg) interfaces ofportable-atomic
0.3 andportable-atomic
1.x are compatible, so this update should not be a breaking change. (https://github.com/taiki-e/portable-atomic/issues/61#issue-1530014746)[^1]: This is a feature, not a cfg;
critical-section
1.x doesn't provide the default or opt-in potentially unsound implementation (unlikecritical-section
0.x where the implementation for single-core was enabled by default), and users must implement thecritical-section
implementation that sound for their system by implementing an unsafe trait (or to use the crate that provides such an implementation). So, we have determined that it is okay to treat this as a safe feature.