[Announcement] Planning for Swift Atomics 1.2

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.

21 Likes

Thanks everyone! The new release is now out: https://github.com/apple/swift-atomics/releases/tag/1.2.0.

7 Likes

since the release notes don’t link any API reference, here is swift-atomics 1.2 documentation on swiftinit:

https://swiftinit.org/docs/swift-atomics/atomics

there is a change where DoubleWord has moved from _AtomicShims.DoubleWord to Atomics.DoubleWord, but this is unlikely to affect anyone in practice.

1 Like