The bits-atomic package
Atomic operations including CAS (compare-and-swap), fetch & add and variants suitable for low-level shared-memory synchronization.
The implementation is using GCC's builtin atomic operations (available in GCC >= 4) in C wrappers called through the FFI. See these links for background:
GCC manual: http://gcc.gnu.org/onlinedocs/gcc/Atomic-Builtins.html
GCC wiki: http://gcc.gnu.org/wiki/Atomic
Portability: This package is primarily developed on a Linux system, but should work wherever GCC >= 4 is available. It has been confirmed as working on OSX. On Windows, it should work with Cygwin but currently fails for vanilla Haskell-Platform 2010.1.0.0 as it still packages GCC 3.x. An installer for updated versions of GCC is available at http://www.mingw.org/ and should make this package work in connection with Haskell-Platform. Feedback on compatibility would be appreciated.
Testing: The following commands can be used to compile and run the test suite:
cabal unpack bits-atomic && cd bits-atomic-* # if not yet locally available cabal configure -ftest cabal build cabal test
Recent changes:
0.1.3: Documentation updates, especially on portability. No functional changes.
0.1.2: Avoid using System.FilePath in Setup.hs to fix build failure on hackage
Properties
| Versions | 0.1.0, 0.1.1, 0.1.2, 0.1.3 |
|---|---|
| Dependencies | base (≥4 & <6) |
| License | BSD3 |
| Author | Gabriel Wicke <wicke@wikidev.net> |
| Maintainer | Gabriel Wicke <wicke@wikidev.net> |
| Stability | experimental |
| Category | Data, Concurrency, Foreign |
| Source repository | hg clone http://dev.wikidev.net/hg/bits-atomic/ |
| Executables | test |
| Upload date | Sun Sep 5 07:54:05 UTC 2010 |
| Uploaded by | GabrielWicke |
| Built on | ghc-6.12, ghc-7.0, ghc-7.2 |
| Distributions | NixOS: 0.1.3, FreeBSD: 0.1.3 |
Modules
- Data
- Bits
Downloads
- bits-atomic-0.1.3.tar.gz (Cabal source package)
- package description (included in the package)