Simplifications, mostly.
-
Changes the default memory ordering parameters in SwiftAtomics. The defaults are now
.acquire
for loading operations,.release
for storing operations, and.acqrel
for read-modify-write operations. -
Removes the
load()
function onAtomicReference
.
load
required locking, and it failed once every several million attempts (under contention), and that just wasn't good enough. (It fails seldom enough that what I thought had been extensive testing prior to version 4.2.0 was in fact insufficient.) There's been a fair bit of trying to fix it in the last year, but nothing has completely worked. The correct solution may require collaboration with Swift's ARC reference-counting runtime, and therefore will have to wait until a similar type appears in the standard library.