Concurrency Kit 0.6.0 has been released. This release contains a critical bug fix to ck_epoch idle early exit (all users of ck_epoch are recommended to upgrade), support for AArch64 (including LSE), cygwin support, improved GCC back-end support and more.
aarch64: Thanks to Olivier Houchard for adding intial support for AArch64. Thanks to Alexey Kopytov akopytov@gmail... for adding support for LSE, enabled by passing
--enable-lse to configure.
ck_epoch: The core algorithm (including lock-free improvements) is not affected by this change. An optimization was introduced a while ago to allow synchronize to succeed on an idle system. Unfortunately, this optimization was incorrect. The fix is highly targeted. ck_epoch will only short-circuit if all threads are seen as idle for a given epoch. This could be improved further to track idle threads across epochs but would require more substantive validation. Essentially, we would want to eliminate threads observed as idle from the scan step. We may revisit this in a future release if benchmarks identify it as a worthy optimization for real-world systems. Thanks to Julie Zhao julie.zhao@sparkpost... for reporting the problem and helping me investigate (issue is not reproducible on our current fleet).
ck_pr/gcc: Olivier cleaned-up the GCC back-end so it doesn't generate warnings re:constness. This port is meant to be used in cases where a first-class ck_pr implementation is not available.
cygwin: Thanks to Harry Bowden hbowden@digitalriver... for adding cygwin support.
documentation: Minor fixes / improvements to the documentation.
Thanks to all contributors of this release.