I'm preparing a new Swift Atomics release that catches the package up with new features in Swift 5.9, and gets it closer to a first-class, Swift-native atomics implementation:
- The minimum required toolchain release will increase from Swift 5.6 to Swift 5.7.
- [Swift 5.9 only] The package now supports getting built in projects that have C++ interoperability enabled.
- [Swift 5.9 only] The package now implements atomic operations using native Swift builtins, rather than forwarding them to C.
- [Swift 5.9 only] The package now works better when library evolution is enabled. (This still isn't a supported configuration, but issues with importing _AtomicsShims should now be less common.)
- The internals got overhauled to align closer to what we plan to ship in the stdlib in the Swift 5.11 release.
- Minor documentation fixes.
The new version does not include any API-level additions or changes. However, because it is a fundamental rewrite of the package internals, I'm going to ship it under a new minor version number: 1.2.0.
(This version will not yet include the long-planned noncopyable
struct Atomic<T> type that @Alejandro is working on -- that will require Swift compiler/language improvements that aren't shipping yet.)
The current release candidate commit is cd142fd2. To avoid accidental disruption, I encourage folks who depend on the package to try building their code with swift-atomics pinned to this commit (or the
main branch). If you encounter any problems, please report them! You can do so by filing a bug report, or replying to this thread, or by sending me a private forum message. (Thank you!)
Assuming we don't find any blocker issues, I'm planning to tag the new version on Monday, 2023-10-02.