Messages in this thread | | | Date | Mon, 6 May 2019 16:32:54 -0400 (EDT) | From | Mathieu Desnoyers <> | Subject | [RELEASE] Userspace RCU 0.11 |
| |
Hi,
This is a 0.11 release of the Userspace RCU project.
liburcu is a LGPLv2.1 userspace RCU (read-copy-update) library. This data synchronization library provides read-side access which scales linearly with the number of cores. It does so by allowing multiple copies of a given data structure to live at the same time, and by monitoring the data structure accesses to detect grace periods after which memory reclamation is possible.
liburcu-cds provides efficient data structures based on RCU and lock-free algorithms. Those structures include hash tables, queues, stacks, and doubly-linked lists.
Here is the high-level view of the changes introduced in this release:
* Allow combining many urcu flavors within the same compile unit. Prefix public APIs with urcu_<flavor>_ prefix. Keep old symbols as aliases for backward compatibility.
* liburcu flavors public headers are moved, including them from previous headers for backward compatibility:
urcu-bp.h -> urcu/urcu-bp.h urcu-qsbr.h -> urcu/urcu-qsbr.h urcu.h -> urcu/urcu-memb.h urcu.h (after #define RCU_MEMBARRIER) -> urcu/urcu-memb.h urcu.h (after #define RCU_MB) -> urcu/urcu-mb.h urcu.h (after #define RCU_SIGNAL) -> urcu/urcu-mb.h
* The library liburcu is renamed to liburcu-memb, keeping the old library name as alias for backward compatibility.
* RCU lock-free hash table debugging:
--enable-cds-lfht-iter-debug is introduced.
Building liburcu with --enable-cds-lfht-iter-debug and rebuilding application to match the ABI change allows finding cases where the hash table iterator is re-purposed to be used on a different hash table while still being used to iterate on a hash table.
This option alters the rculfhash ABI. Make sure to compile both library and application with matching configuration.
* Added support for RISC-V architecture.
* Use membarrier PRIVATE_EXPEDITED when available from liburcu-bp and liburcu-memb flavors.
The backward compatibility header files, library shared objects, and symbols will be kept for a few liburcu versions before being removed, at which point a major soname bump will happen.
As always, feedback is welcome!
Thanks,
Mathieu
Changelog:
2019-05-06 Userspace RCU 0.11.0 * Bump library version to 6:0:1 * Cleanup: update code layout to fix old gcc warning * Fix: typo CPPLAGS in examples Makefile * Harmonize pprint macro across projects * Check for TLS support after CC detection * Update macros from the autotools archive * tap-driver.sh: flush stdout after each test result * Update dead link in lgpl-relicensing.txt * Add multiflavor compat identifiers * Cleanup: missing sign compare fixes * Cleanup: enable signed/unsigned compare compiler warning * Cleanup: compiler warning on 32-bit architectures * config.h.in: rename CONFIG_RCU_MULTIFLAVOR to CONFIG_RCU_HAVE_MULTIFLAVOR * rculfhash: implement iterator debugging config option * Fix: examples silent rules on Solaris * Add missing fall through annotations * Fix: symbol aliases with TLS compat * Port: no symbols aliases on MacOS * Add -Wextra to CFLAGS * Add silent mode to examples Makefiles * doc: update examples to API changes * test multiflavor single compile unit * Update README following API changes * Use new header locations for includes from urcu code * Update call-rcu.h and defer.h comments and include guards * rculfqueue.h: do not include urcu-call-rcu.h * rculfhash: support use with multiple flavors per compile unit * rculfhash: do not include urcu-call-rcu.h from public API * Refactor liburcu to support many flavors per compile unit * Fix: only wait if work queue is empty in real-time mode * Fix: don't wait after completion of a work queue job batch * Fix: don't wait after completion of job batch if work queue is empty * Fix: workqueue: struct urcu_work vs rcu_head mixup * Cleanup: workqueue: update comments referring to call-rcu * Fix: mixup between URCU_WORKQUEUE_RT and URCU_CALL_RCU_RT * test_rwlock: Add per-thread count to verbose output * Add *.exe to gitignore for Cygwin * Fix: pthread_rwlock initialization on Cygwin * Fix: compat_futex_noasync on Cygwin * wfcqueue: allow defining CDS_WFCQ_WAIT_SLEEP to override `poll' * Update documentation for call_rcu before/after fork * Add support for the RISC-V architecture * Tests: Add tap-driver.sh for automake < 1.12 * Tests: Replace prove by autotools tap runner * liburcu-bp: Use membarrier private expedited when available * liburcu: Use membarrier private expedited when available * rculfhash: improve error handling of mmap backend * Fix: don't use overlapping mmap mappings on Cygwin * Tests fix: errors in shell scripts * Revert "Use initial-exec tls model" * Use initial-exec tls model * Fix: don't use membarrier SHARED syscall command in liburcu-bp * Tests fix: add missing Cygwin thread id * Fix: assignment from incompatible pointer type warnings * Tests fix: unused variable warnings * Fix: add missing m68k headers to dist * Bump version to 0.11-pre
Project website: http://liburcu.org Git repository: git://git.liburcu.org/urcu.git
-- Mathieu Desnoyers EfficiOS Inc. http://www.efficios.com
| |