mvdnes / spin-rs

Spin-based synchronization primitives
MIT License
485 stars 92 forks source link

Update portable-atomic to 1 #139

Closed taiki-e closed 1 year ago

taiki-e commented 1 year ago

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.

portable-atomic is not used in spin's public API and the (cfg) interfaces of portable-atomic 0.3 and portable-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 (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.

zesterer commented 1 year ago

Thanks!

zesterer commented 1 year ago

Did you need this in a release?