After GHC 7.4 a new
casMutVar# primop became available, but it's difficult to
use safely, because pointer equality is a highly unstable property in Haskell.
This library provides a safer method based on the concept of "Tickets".
Also, this library uses the "foreign primop" capability of GHC to add access to
other variants that may be of interest, specifically, compare and swap inside
Note that as of GHC 7.8, the relevant primops have been included in GHC itself.
This library is engineered to work pre- and post-GHC-7.8, while exposing the
Changes in 0.3:
- Major internal change. Duplicate the barrier code from the GHC RTS and thus
enable support for executables that are NOT built with '-threaded'.
Changes in 0.4:
Further internal changes, duplicate 'cas' routine well as barriers.
Unboxed counter variant that uses movable "ByteArray"s on the GHC
Changes in 0.5:
- Remove dependency on bits-atomic unless a flag is turned on.
Changes in 0.5.0.2:
- IMPORTANT BUGFIXES - don't use earlier versions. They have been marked
Changes in 0.6.1
- This is a good version to use for GHC 7.8.3. It includes portability and bug
fixes and adds atomicModifyIORefCAS.
Changes in 0.7:
- This release adds support for GHC 7.10 and its expanded library of (now
Changes in 0.8:
- Implements additional fetch primops available in GHC 7.10
Changes in 0.8.0.4:
- Internal changes to support forthcoming GHC 8.0.