1 # SPDX-FileCopyrightText: 2011-2023 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
3 # SPDX-License-Identifier: CC-BY-4.0
5 2023-02-14 Userspace RCU 0.14.0
6 * Fix: urcu-bp: only teardown call-rcu worker in destructor
7 * Fix: rculfhash: urcu_die() takes positive error value
8 * Fix: call_rcu: teardown default call_rcu worker on application exit
9 * Fix: join worker thread in call_rcu_data_free
10 * Docs: clarify grace period polling API
11 * Document grace period polling in rcu-api.md
12 * Implement poll rcu stress test in rcutorture
13 * urcu-memb,mb,signal: Implement grace period polling
14 * Fix: auto-resize hash table destroy deadlock
15 * Fix building on MSYS2
16 * rculfhash: Include rculfhash-internal.h from local directory
17 * Remove "Darwin" from "should also work on list"
18 * Merge branch 'adah1972-improve-md'
19 * Add semicolons at the end of function prototypes
20 * Wrap a file name in backticks
21 * Wrap command-line options in backticks
23 * Wrap URLs in angle brackets
25 * Fix: Always check pthread_create for failures
26 * Disable signals in URCU background threads
27 * Fix: futex.h: include headers outside extern C
28 * Fix: add missing unused attribute to _rcu_dereference
29 * Fix: change method used by _rcu_dereference to strip type constness
30 * Fix: remove type constness in URCU_FORCE_CAST's C++ version
31 * Move extern "C" down in include/urcu/urcu-bp.h
32 * fix: ifdef linux specific cpu count compat
33 * Add unit tests for possible_cpus_array_len
34 * fix: sysconf(_SC_NPROCESSORS_CONF) can be less than max cpu id
35 * Fix: revise obsolete command in README.md
36 * Fix: workqueue: remove unused variable "ret"
37 * Fix: urcu-qsbr: futex wait: handle spurious futex wakeups
38 * Fix: urcu: futex wait: handle spurious futex wakeups
39 * Fix: urcu-wait: futex wait: handle spurious futex wakeups
40 * Fix: defer_rcu: futex wait: handle spurious futex wakeups
41 * Fix: call_rcu: futex wait: handle spurious futex wakeups
42 * Fix: workqueue: futex wait: handle spurious futex wakeups
43 * Fix: Use %lu rather than %ld to print count
44 * Update ABI definition files
45 * Bump version current and age
46 * alpha: allocate membarrier system call number
47 * Bump version to 0.14.0-pre
48 * Improved test framework
49 * rculfhash: introduce cds_lfht_node_init_deleted
50 * Fix: changelog: v0.13.0 was released in 2021
51 * cleanup: i386 arch detection
52 * fix: properly detect 'cmpxchg' on x86-32
53 * fix: use urcu-tls compat with c++ compiler
55 * fix: remove autoconf features default value in help message
56 * fix: add missing pkgconfig file for memb flavour lib
57 * Cleanup: Tests: Remove useless pre-C99 compatibility code from tap.h
58 * Document C99 and C++11 requirement in README.md
59 * Always use '__thread' for Thread local storage except on MSVC
60 * Fix: powerpc32: transparent unions alter calling convention
61 * fix: don't use C++ thread_local on MacOs
62 * wfcqueue API: implement overloaded wrappers with templates
63 * wfcqueue: combine C++ API cds_wfcq_head_cast with overloading
64 * wfstack C++ API: implement overloaded wrappers with templates
65 * lfstack C++ API: implement overloaded wrappers with templates
66 * wfstack: combine C++ API cds_wfs_stack_cast with overloading
67 * lfstack: combine C++ API cds_lfs_stack_cast with overloading
68 * fix: test_build tap plan
69 * Test C++ build of list head init
70 * Fix order of initializers in CDS_LIST_HEAD_INIT
71 * unit tests: test wfcqueue, wfstack, lfstack empty check functions in C++
72 * wfcqueue: implement C++ API based on function overloading
73 * wfstack: implement C++ API based on function overloading
74 * lfstack: implement C++ API based on function overloading
75 * Fix tap.h: remove extra semicolon in pass/fail macros
77 * Build and run regression and unit tests as C++ programs
78 * Add --enable-Werror configure switch
79 * Add `urcu_posix_assert()` as `assert()` replacement
80 * Rename `urcu_assert()` to `urcu_assert_debug()`
81 * cleanup: spelling fixes in comments
82 * Make temporary variable in _rcu_dereference non-const
83 * (tls-ie2) Fix: x86 and s390: uatomic __hp() macro C++ support
84 * Fix: x86 and s390: uatomic __hp() macro clang support
85 * Fix: x86 and s390 uatomic: __hp() macro warning with gcc 11
87 2021-06-03 Userspace RCU 0.13.0
88 * Document known ABI issue in README.md
89 * Add serialized ABI definition files
90 * bump SONAME major to 8
91 * Remove all SONAME(6) ABI aliases
92 * .gitignore: list ignored Makefiles
93 * tests: Add a simple compile test for caa_get_cycles
94 * fix: clock_gettime on macOs
95 * Fix: rculist header: use parenthesis around macro parameters
96 * Fix: rcuhlist header: use parenthesis around macro parameters
97 * Fix: hlist header: use parenthesis around macro parameters
98 * Fix: list.h: use parenthesis around macro parameters, caa_container_of()
99 * Fix: hlist iteration relies on undefined behavior
100 * Fix: use __atomic_load() rather than atomic load explicit
101 * Fix: use atomic load memory_order_consume for rcu_dereference on C11/C++11
102 * fix: we used weak symbols not weak aliases
103 * fix: include 'sys/endian.h' on FreeBSD
104 * fix: warnings on non-Linux platforms
105 * fix: HAVE_SCHED_SETAFFINITY is not defined
106 * configure: enable extended compiler warnings
107 * cleanup: explicitly mark unused parameters (-Wunused-parameter)
108 * fix: shadowed local variable (-Wshadow)
109 * cleanup: all functions have declarations (-Wmissing-prototypes)
110 * Import libtap from babeltrace
111 * cleanup: add 'noreturn' attribute to '_uatomic_link_error'
112 * fix: add missing 'S' to AC_CHECK_PROGS
113 * README.md: Document supported Glibc version
114 * README: cleanup stale MacOS information
115 * Bump version to 0.13.0-pre
116 * configure: standardise include path
117 * Remove glibc < 2.4 compat code for sched_setaffinity
118 * configure: regroup automake conditionals
119 * Introduce AE_FEATURE to manage configure features
120 * configure: regroup library checks
121 * configure: regroup and expand C header and program checks
122 * configure: regroup and expand C compiler checks
123 * configure: host specific config
124 * tests: Move tap-driver.sh out of the autotools aux directory
125 * configure: Set autotools baseline
126 * configure: centralize version information
127 * fix: exclude clang from GCC version blacklists
128 * aarch64: blacklist gcc prior to 5.1
129 * Fix: configure: support Autoconf 2.70
130 * Don't force a target and optimization level on ARMv7
131 * Use DMB only on ARMv7
132 * Blacklist GCC 4.4.0, 4.4.1 and 4.4.2 on ARM
133 * Cleanup: Move ARM specific code to urcu/arch/arm.h
134 * fix: bump tests thread limit to 4096
135 * fix: reorder x86 arch detection
136 * fix: typo in futex syscall define check
137 * Compile time futex syscall detection
138 * Static arch and uatomic headers
139 * Add git-review config
140 * cleanup: Improve wording of CONFIG_RCU_DEBUG description
141 * fix: explicitly include urcu/config.h in files using CONFIG_RCU_ defines
142 * Fix typo in README.md
143 * fix: add -lurcu-common to pkg-config libs for each flavor
144 * call_rcu: Fix race between rcu_barrier() and call_rcu_data_free()
145 * Cleanup: tls-compat.h: add parentheses around expression (coding style)
146 * Fix: tls-compat.h exposes compiler-dependent public configuration
147 * Fix: tap array subscript has type char warning
149 2020-04-09 Userspace RCU 0.12.0
150 * tls-compat.h: introduce DEFINE_URCU_TLS_INIT
151 * Use _umtx_op for futex on FreeBSD
152 * Add FreeBSD, DragonFly to syscall-compat.h
153 * urcu-bp: perform thread registration on urcu_bp_register_thread
154 * Require automake >= 1.12
155 * cds_lfht_is_node_deleted parameter can be marked const
156 * Fix: provide errno as argument to urcu_die()
157 * Fix: rculfhash worker needs to unblock to SIGRCU
158 * Cleanup: test_perthreadlock_timing: handle pthread mutex errors
159 * Fix: SONAME bump to 6.1.0
160 * Cleanup: remove unused variable from configure.ac check
161 * Fix: urcu/futex.h: users of struct timespec should include time.h
163 2019-05-06 Userspace RCU 0.11.0
164 * Bump library version to 6:0:1
165 * Cleanup: update code layout to fix old gcc warning
166 * Fix: typo CPPLAGS in examples Makefile
167 * Harmonize pprint macro across projects
168 * Check for TLS support after CC detection
169 * Update macros from the autotools archive
170 * tap-driver.sh: flush stdout after each test result
171 * Update dead link in lgpl-relicensing.txt
172 * Add multiflavor compat identifiers
173 * Cleanup: missing sign compare fixes
174 * Cleanup: enable signed/unsigned compare compiler warning
175 * Cleanup: compiler warning on 32-bit architectures
176 * config.h.in: rename CONFIG_RCU_MULTIFLAVOR to CONFIG_RCU_HAVE_MULTIFLAVOR
177 * rculfhash: implement iterator debugging config option
178 * Fix: examples silent rules on Solaris
179 * Add missing fall through annotations
180 * Fix: symbol aliases with TLS compat
181 * Port: no symbols aliases on MacOS
182 * Add -Wextra to CFLAGS
183 * Add silent mode to examples Makefiles
184 * doc: update examples to API changes
185 * test multiflavor single compile unit
186 * Update README following API changes
187 * Use new header locations for includes from urcu code
188 * Update call-rcu.h and defer.h comments and include guards
189 * rculfqueue.h: do not include urcu-call-rcu.h
190 * rculfhash: support use with multiple flavors per compile unit
191 * rculfhash: do not include urcu-call-rcu.h from public API
192 * Refactor liburcu to support many flavors per compile unit
193 * Fix: only wait if work queue is empty in real-time mode
194 * Fix: don't wait after completion of a work queue job batch
195 * Fix: don't wait after completion of job batch if work queue is empty
196 * Fix: workqueue: struct urcu_work vs rcu_head mixup
197 * Cleanup: workqueue: update comments referring to call-rcu
198 * Fix: mixup between URCU_WORKQUEUE_RT and URCU_CALL_RCU_RT
199 * test_rwlock: Add per-thread count to verbose output
200 * Add *.exe to gitignore for Cygwin
201 * Fix: pthread_rwlock initialization on Cygwin
202 * Fix: compat_futex_noasync on Cygwin
203 * wfcqueue: allow defining CDS_WFCQ_WAIT_SLEEP to override `poll'
204 * Update documentation for call_rcu before/after fork
205 * Add support for the RISC-V architecture
206 * Tests: Add tap-driver.sh for automake < 1.12
207 * Tests: Replace prove by autotools tap runner
208 * liburcu-bp: Use membarrier private expedited when available
209 * liburcu: Use membarrier private expedited when available
210 * rculfhash: improve error handling of mmap backend
211 * Fix: don't use overlapping mmap mappings on Cygwin
212 * Tests fix: errors in shell scripts
213 * Revert "Use initial-exec tls model"
214 * Use initial-exec tls model
215 * Fix: don't use membarrier SHARED syscall command in liburcu-bp
216 * Tests fix: add missing Cygwin thread id
217 * Fix: assignment from incompatible pointer type warnings
218 * Tests fix: unused variable warnings
219 * Fix: add missing m68k headers to dist
220 * Bump version to 0.11-pre
222 2017-06-12 Userspace RCU 0.10.0
223 * Bump library soname due to urcu flavor structure change
224 * Cleanup: use mutex_lock() wrapper in rculfhash
225 * Use workqueue in rculfhash
226 * Implement urcu workqueues internal API
227 * Add support for m68k architecture
228 * Set -Wall globally in AM_CFLAGS
229 * Fix: remove double use of PTHREAD_CFLAGS
230 * Re-add PTHREAD_CFLAGS to global CFLAGS
231 * Fix: Don't override user variables within the build system
232 * Add report at the end of configure
233 * uatomic-api docs: use the third-person singular
234 * Add --enable-rcu-debug to configure
235 * ARM32: use dmb ish (inner shareable domain) for smp barriers
236 * Cleanup: remove cmm_wmb() from rcu_xchg_pointer and rcu_cmpxchg_pointer
237 * Fix: uatomic arm32: add missing release barrier before uatomic_xchg
238 * Tests: Add verbose support to test script
239 * Fix: add missing CONFIG_RCU_FORCE_SYS_MEMBARRIER to urcu/config.h.in
240 * Allow forcing the use of sys membarrier
241 * Fix: rcutorture: work-around signal issue on mac os x
242 * Fix: rcutorture should register thread using call_rcu
243 * Fix: add missing backslash in Makefile.am
244 * Fix: Do not use wildcards in include/Makefile.am
245 * Bump version to 0.10-pre
246 * Fix: check for rand_r() in compat-rand.h
247 * Fix: Move rand-compat to private src dir
248 * Fix: remove AC_FUNC_MALLOC from configure.ac
249 * Cleanup: Re-organise source dir
250 * Cleanup: remove leftover manual pthread detection
251 * Fix: update ax_pthread macro to handle newer clang
252 * Update library current version due to adding destroy API
253 * Fix: Use pthread_self to get threadid on OSX
254 * Fix: examples: use destroy API for queues/stacks
255 * Update library age due to new stack/queue destroy API
256 * Fix: tests: invoke destroy APIs for queues/stacks
257 * Fix: add missing destroy functions to queues/stack APIs
258 * Fix: add missing __cds_wfcq_init for LGPL API
259 * Fix: memory leak on hash table destroy
260 * Fix: Add failover for platforms without nproc
261 * Fix: use clock_get_time for caa_get_cycles fallback on MacOSX
262 * Fix: syscall-compat.h MacOSX support
263 * Fix: Add solaris-build.md to dist
264 * rculfhash: Documentation: clarify need for grace period before "re-using"
265 * Port: build shared libraries in Cygwin
266 * Port: fix compatibility header for Cygwin
267 * Add GNU Hurd support to syscall-compat.h
268 * Add support for aarch64_be
269 * Fix: urcu-bp: re-initialize list head on library exit
270 * bootstrap: Standardize on autoreconf -vi
271 * Harmonize bootstrap script across projects
272 * Fix: examples make distcheck failure
273 * wfcqueue: add C++ compatibility API
274 * Fix: CDS_WFCQ_WOULDBLOCK typing for c++
275 * Fix: configure.ac: check for possibly required libs for clock_gettime
276 * Support for NIOS2 architecture
277 * urcu_ref_get_safe: introduce new API
278 * Fix: handle reference count overflow
279 * Fix: compat_futex should work-around futex signal-restart kernel bug
280 * Support for Xeon-Phi with newer MPSS
281 * sparc64: allocate membarrier system call number
282 * hppa: allocate membarrier system call number
283 * Fix build on non-Linux Debian ports
284 * Fix: urcu-signal: smp_mb_master() needs registry lock
285 * Fix: rculfhash only needs to include urcu-pointers.h
286 * Fix: out-of-tree benchmark/regtest
287 * Fix: add missing regtest and benchmark files to dist tarball
288 * Fix: add missing run.sh to benchmark makefile
290 2015-10-16 Userspace RCU 0.9.0
291 * Bump soname major to 4
292 * Cleanup: remove trailing tab
293 * Fix: Use proper macro to detect stdbool.h
294 * Configure: Add missing checks
295 * Port: Add Solaris build instructions
296 * Fix: regtest outputs valid TAP protocol
297 * Port: Detect nproc bin name in benchmark scripts
298 * Port: Add Solaris getcpu support
299 * Port: Fixes to build system for portability
300 * Port: Add Solaris support to tests/common/thread-id.h
301 * Port: Add Solaris support to urcu/syscall-compat.h
302 * Port: replace bzero() by memset()
303 * Port: make bootstrap script work on most shell
304 * tests: rcutorture: use parameters rather than random
305 * Fix: only define membarrier system call on Linux
307 * Fix: cast caa_cycles_t to unsigned long long
308 * caa_get_cycles: caa_ prefix for type, use CLOCK_MONOTONIC
309 * Cleanup: remove trailing whitespaces at EOL
310 * Cleanup: move generic caa_get_cycles to arch/generic.h
311 * tile: allocate membarrier system call number
312 * ia64: allocate membarrier system call number
313 * aarch64: allocate membarrier system call number
314 * powerpc64le: use "ppc" architecture
315 * arm: allocate membarrier system call number
316 * s390: allocate membarrier system call number
317 * ppc: allocate membarrier system call number
318 * lfstack: relax constraints on node re-use
319 * Fix: format string signedness
320 * Cleanup: tests: Branch condition evaluates to a garbage value
321 * Fix: test: unchecked return value
322 * Fix: test: side-effect in assertion
323 * x86: allocate membarrier system call number
324 * urcu-bp: use sys_membarrier when available
325 * Cleanup: urcu: remove unused membarrier "group" parameter
326 * urcu/ref.h: implement urcu_ref_get_unless_zero()
327 * Fix: compat_futex: uninitialized ret variable
328 * Fix: compat_futex_noasync: don't override return value
329 * Fix: dynamic fallback to compat futex on sys_futex ENOSYS
330 * Detect RCU read-side overflows
331 * Detect RCU read-side underflows
332 * Introduce urcu_assert and registration check
333 * Fix: volatile in assert()
334 * Update following changes to sys_membarrier ABI
335 * uatomic: Specify complete types for atomic function calls
336 * Cleanup: remove unused return value warning from tests
337 * Fix: handle sys_futex() FUTEX_WAIT interrupted by signal
338 * Fix: compat_futex.c: *uaddr should be read as volatile
339 * Cleanup: cast poll delay return value to void
340 * tests: Convert unit tests to TAP
341 * Fix: make benchmark test run in oot build
342 * Fix: call_rcu_thread() affinity failure
343 * Cleanup: cast poll delay return value to void
344 * Cleanup: cast poll delay return value to void
345 * Cleanup: cast poll delay return value to void
346 * Cleanup: cast poll delay return value to void
347 * Cleanup: cast poll() return value to void for delays
348 * urcu: fix deprecation warning with new glibc
349 * urcu: add cds_list_for_each_entry_safe_from macro
350 * Fix: deadlock when thread join is issued in read-side C.S.
351 * Fix: rename RCU_DEBUG to DEBUG_RCU in urcu-qsbr.h
352 * Cleanup some c99 pedantic warnings
353 * Mark braced-groups within expressions with __extension__
354 * Fix: compat_futex_noasync race condition
355 * tests: Use stderr redirection for time output
356 * Fix: use space after rpath for OS X ld
357 * Fix: move transparent union attribute after union declaration for clang
358 * Configure: add check for used type
359 * Configure: add missing check of headers
360 * Configure: add missing check for funcs: memset, strerror
361 * Fix: documentation: urcu-pointer.h: s/rcu_dereference_pointer/rcu_dereference/
362 * urcu-bp/urcu-qsbr: remove unneeded DEBUG_YIELD code
363 * Fix: call rcu should call internal RCU API
364 * Fix: silence gcc -Wextra warning
365 * compiler: use __GNUC__ instead of the undefined __GNUC_MAJOR__
366 * Fix: lfstack reversed empty/non-empty return value
367 * lfstack: fix: add missing __cds_lfs_init
368 * wfstack: add missing union parameters
369 * Fix: preserve example files' timestamps when copying
370 * wfstack: implement mutex-free wfstack with transparent union
371 * wfcqueue: Implement mutex-free wfcqueue head with transparent union
372 * lfstack: Implement mutex-free stack head with transparent union (v2)
373 * rculfhash: remove duplicated code
374 * rculfhash: handle pthread_create failures
375 * rculfhash: fall back to single-threaded resize on calloc failure
376 * x86: drop extra semi-colon in caa_cpu_relax
377 * Cleanup: tests: cast console write return value as void
378 * Modernize doc using Markdown
379 * Fix: update automake following README to README.md change
380 * Modernize README using Markdown
381 * Fix: incorrect parenthesis in cds_hlist_for_each_entry_safe_2
382 * Fix: Use after free in rcu_barrier()
383 * Fix: rcu_barrier(): uninitialized futex field
384 * call_rcu threads should clear their PAUSED flag when they unpause
385 * test_urcu_fork: test many fork, with 3 children deep
386 * Update list of supported architectures in README
387 * Add support for hppa/PA-RISC architecture
388 * Use autoconf AM_MAINTAINER_MODE
389 * Use gcc atomics on aarch64/powerpc64le
390 * Fix: move wait loop increment before first conditional block
391 * Fix: high cpu usage in synchronize_rcu with long RCU read-side C.S.
392 * Fix: out of tree build: doc/examples
393 * Fix: out of tree build tests/common
394 * tests/unit: use lib rather than source
395 * automake: Rename INCLUDES to AM_CPPFLAGS (new name)
396 * tests regressions: use lib rather than recompile from source
397 * tests: use common lib rather than recompile compat sources
398 * urcu tests: use lib rather than compile from source
399 * urcu mb tests: use lib rather than recompile from source
400 * urcu signal tests: use library rather than recompile source
401 * tests: move yield debug to common test library
402 * tests urcu bp: use lib rather than recompile source
403 * test_urcu_defer: link on urcu lib rather than recompile source
404 * tests/benchmark: use urcu qsbr lib rather than recompile from source
405 * Pass the CC variable to the example Makefiles
406 * Fix: urcu-bp interaction with threads vs constructors/destructors
407 * x86 barrier for Xeon Phi: use rsp on x86-64
408 * Set RCU_HAVE_FENCE to false on Intel Xeon Phi
409 * Fix undefined NULL pointer arithmetic in hlist
410 * Cleanup: Check for pthread in Libc
411 * Cleanup: Android: Do not redefine gettid
412 * Fix undefined NULL pointer arithmetic
413 * Android: implement rand_r()
414 * Android: do not redefine gettid on Android
415 * Android: add a compat layer for 'syscall.h'
416 * Android: do not link pthread on Android
417 * Android: configure.ac Android check
418 * Blacklist ARM gcc 4.8.0, 4.8.1, 4.8.2
419 * rculfhash: document max_nr_buckets = 0
420 * Library major version number (soname) increment to 3
421 * Fix: tls-compat multi-lib conflict
422 * Use cross compiler for doc examples
423 * Add lttng-dev mailing list to readme
424 * wfcqueue: remove misleading comment
425 * gcc warning fixes: -Wsign-compare and -Wextra
426 * Fix: urcu-qsbr: reversed logic on RCU_DEBUG
427 * Fix: urcu-bp segfault in glibc pthread_kill()
428 * Fix urcu-bp: don't move registry
429 * Fix: compat futex duplicated lock and completion
430 * Fix: i386 compat code duplicated mutex instances
431 * Fix: urcu-bp: Bulletproof RCU arena resize bug
432 * Fix: test_mutex.c uninitialized mutex
434 2013-09-06 Userspace RCU 0.8.0
435 * Fix: hash table growth (for small tables) should be limited
436 * Fix: doc/examples cross-build
437 * Introduce URCU_INLINE_SMALL_FUNCTIONS
438 * Add missing tests/common/Makefile.am
439 * README: document make check/regtest/bench
440 * tests: split in check, regtest and bench targets
441 * Cleanup: doc/examples makefile
442 * Fix: doc/examples VPATH build
443 * doc/examples: Move the LIBS after the OBJECTS in the Makefile
444 * Document build work-around on MacOS X
445 * Fix tests: use of uninitialized variables
446 * test_urcu_hash*: initialize TLS seeds
447 * doc/examples: cds_lfht_for_each_entry_duplicate
448 * doc/examples: cds_lfht_lookup
449 * doc/examples: cds_lfht_destroy
450 * doc/examples: cds_lfht_add_replace
451 * doc/examples: cds_lfht_add_unique
452 * doc/examples: cds_lfht_add/cds_lfht_del
453 * doc/examples: add rculfqueue example
454 * doc/examples: add synchronize_rcu()
455 * doc/examples: add bp flavor
456 * doc/examples: add dist toplevel makefile
457 * doc/examples: add membarrier flavor
458 * doc/examples: document call_rcu()
459 * doc/examples: update qsbr example
460 * urcu signal: remove assertion on exit
461 * doc/examples: signal flavor
462 * doc/examples: add mb flavor
463 * doc/examples: update qsbr
464 * doc/examples: introduce urcu-flavors examples directory
465 * doc/examples: enhance rcu-flavor-qsbr example
466 * doc/examples: rename qsbr-minimal to rcu-flavor-qsbr
467 * doc/examples: automake stop on error
468 * doc/examples: hlist
469 * hlist/rcuhlist update
470 * doc/examples: fix typo in list example
471 * rcuhlist: make pointer stores atomic
472 * hlist, rcuhlist: cleanup coding style
473 * doc/examples: lfstack
474 * doc/examples: update cds_wfs_pop_all_blocking
475 * doc/examples: cds_wfs_pop_all_blocking
476 * doc/examples: cds_wfs_pop
477 * doc/examples: add missing Makefile
478 * doc/examples: cds_wfs_push
479 * doc/wfcqueue: cds_wfcq_splice
480 * doc/examples: add cds_wfcq_dequeue
481 * doc/examples: wfcq needs to link against urcu-common
482 * doc/examples: update queue comment
483 * doc/examples: fix make clean
484 * gitignore: add qsbr-minimal
485 * doc/examples: cds_wfcq_enqueue
486 * doc/examples: Move LIBS to each makefile
487 * doc/examples: cds_list_for_each_rcu
488 * doc/examples: cds_list_for_each_entry_rcu
489 * doc/examples: cds_list_replace_rcu
490 * doc/examples: cds_list_add_tail_rcu
491 * doc/examples: cds_list_del_rcu
492 * doc/examples: cds_list_add_rcu
493 * rculist: ensure atomic updates of next pointers
494 * rculist: implement cds_list_add_tail_rcu
495 * rculist.h and list.h style cleanup
496 * example makefile: add missing cd ..
498 * Fix: examples Makefile on FreeBSD
499 * hash table test: don't redefine CACHE_LINE_SIZE
500 * tests: use thread-id.h wrapper
501 * Implement thread-id.h wrapper
502 * tests: add missing unsigned long casts to pthread_self()
503 * Fix: don't build examples in static builds
504 * Add QSBR minimal example
505 * compiler.h: implement CAA_ARRAY_SIZE()
506 * document rcu barrier
507 * rcu barrier: handle OOM die urcu_die
508 * Implement rcu_barrier()
509 * rculfhash: document destroy context limitations
512 * Update README testing info about FreeBSD
513 * test: fix api.h missing if brackets
514 * tests: fix incorrect counter
515 * Fix: membarrier fallback symbol conflict
516 * Fix: Use a filled signal mask to disable all signals
517 * urcu-bp: introduce struct urcu_gp
518 * Fix: struct urcu_gp broke multiflavor
519 * Cleanup test usage printout
520 * wfstack tests: use pop "last" state info
521 * wfstack: return whether pop is popping the last element
522 * wfcqueue tests: use dequeue empty state
523 * wfcqueue: return whether dequeue is dequeuing last element
524 * urcu: avoid false sharing for rcu_gp_ctr
525 * urcu: make the code of urcu-qsbr as normal urcu
526 * rculfhash: detect if resize/destroy are called within RCU read-side C.S.
527 * Documentation: rculfhash: cds_lfht_resize not within read-side C.S.
528 * fix: rculfhash don't change qsbr online state
529 * Add rcu_read_ongoing() API to each urcu flavor
530 * Add "sparc" host cpu to configure.ac
531 * futex: include syscall.h instead of sys/syscall.h
532 * Add tab to output in order to allow easy nesting of tables.
533 * Remove urcu-api-list.sh from dist tarball
534 * Add urcu-api-list.sh script
535 * list: implement cds_list_for_each_safe()
536 * Fix: tests/api.h use cpuset.h
537 * Fix hurd-i386: move cpuset tests outside of sched_setaffinity conditional
538 * Fix tests: finer-grained use of CPU_SET, CPU_ZERO and cpu_set_t
540 * Fix build on architectures with HAVE_SCHED_GETCPU but without HAVE_SYSCONF
541 * README: document that Clang 3.0 (based on LLVM 3.0) is supported
542 * clang: silence "unused expression result" warning
543 * rculfhash: add assertions on node alignment
544 * Spelling cleanups within comments and documentation
545 * Fix configure checks for Tile
547 * doc/cds-api.txt: expand documentation
548 * README: document each API file
550 * Add compilation support for the TileGX architecture
551 * wfstack: add nonblocking to _LGPL_SOURCE API
552 * Discourage use of pthread_atfork() for call_rcu handlers
553 * Fix call_rcu fork handling
554 * test: fork handling
555 * rculfhash: add cds_lfht_replace to the write operations in the comments
556 * urcu: fix comments for cds_list_for_each_prev()
557 * documentation: fix rcu-api.txt duplicates
558 * test wfcq: remove unneeded urcu.h include
559 * test wfs: remove unneeded urcu.h include
560 * urcu: declare test_urcu_multiflavor functions
561 * urcu: remove the wrong comma
562 * wfstack: implement nonblocking pop and next
563 * wfcqueue: document first/next return values
564 * wfstack: update comments about cds_wfs_empty/first being wait-free
565 * wfstack API: rename cds_wfs_first_blocking to cds_wfs_first
566 * wfstack test: test if number of push to empty vs pop_all match
567 * wfstack: document first/next return values
568 * test wfstack: enforce external mutex if needed by default
569 * test wfcqueue: enforce external mutex if needed by default
570 * urcu-mb/signal/membarrier: batch concurrent synchronize_rcu()
571 * urcu-wait: move queue management code into urcu-wait.h
572 * urcu-wait: move wait code into separate file
573 * urcu-qsbr: batch concurrent synchronize_rcu()
574 * tests: use standard malloc/free for synchronize_rcu()
575 * urcu-bp: move quiescent threads to separate list
576 * urcu-mb/signal/membarrier: move quiescent threads to separate list
577 * urcu-qsbr: move offline threads to separate list
578 * urcu-bp: improve 2-phase wait scheme
579 * urcu-mb/signal/membarrier: improve 2-phase wait scheme
580 * urcu-qsbr: improve 2-phase wait scheme
581 * wfcqueue: implement mutex-free splice
582 * wfcqueue: document empty criterion
583 * urcu-call-rcu: use wait-free splice return value
584 * test wfcqueue: add tests for queue state return value
585 * wfcqueue: enqueue and splice return queue state
586 * Fix: wfcqueue nonblocking dequeue
587 * wfcqueue: Fix lock and unlock functions
588 * runtests: Make path of time binary configurable
589 * urcu-qsbr: skip Q.S. reporting if already reported
590 * Fix TLS detection: test with linker, add --disable-compiler-tls
591 * Cleanup: cast pthread_self() return value to unsigned long
592 * Fallback mechanism not working on platform where TLS is unsupported
593 * Revert "Fix: cross-build: configure.ac should use --target, not --host"
594 * Fix: cross-build: configure.ac should use --target, not --host
595 * test_urcu_wfcq: add splice and nosync tests
596 * test_urcu_wfs: cleanup
597 * test_urcu_lfs: cleanup
598 * Fix static linking: add missing static for _defer_rcu
599 * tests: report error value for make check
600 * Add multiflavor test program
601 * Fix static linking: fix symbol name namespaces
602 * Fix static linking: add missing static to thr_defer
603 * Fix static linking: add missing static
604 * deprecation: fix build with gcc < 4.5
605 * wfstack.c: update copyright notice
606 * Update wfstack copyright notice
607 * Comment fix: update associated LGPL header name
608 * Update cds-api.txt following API deprecations
610 * Deprecate rculfstack
611 * wfcqueue: introduce nonblocking API
612 * lfstack: test pop_all and pop
613 * lfstack: implement empty, pop_all and iterators, document API
614 * lfstack: implement test
615 * lfstack: implement lock-free stack
616 * wfstack: implement pop_all and iteration tests
617 * wfstack: implement cds_wfs_pop_all and iterators, document API
618 * rculfhash test: fix trivial memleak and return node leak and errors
619 * rculfhash: add missing extern
620 * Cleanup: fix cppcheck errors
621 * wfcqueue: remove ancient comment
622 * test_urcu_lfq: remove rcu_defer_register_thread() from test_urcu_lfq
623 * test_urcu_lfq: test for the proper pointer
624 * test_urcu_lfs: remove rcu_defer_register_thread() from test_urcu_lfs
625 * test_urcu_lfs: test for the proper pointer
626 * wfcqueue: clarify locking usage
627 * Document APIs in README
628 * Test cleanup: replace "l" parameter by "loops"
629 * Add wfcqueue header to cds.h
630 * Fix: urcu-bp, urcu, urcu-qsbr should include wfcqueue
631 * Fix: call_rcu list corruption on teardown (documentation)
632 * call_rcu: remove head field alignement, explain wfcqueue motivation
633 * wfcqueue: update credits in patch documentation
634 * wfcqueue documentation: hint at for_each iterators
635 * Fix urcu-call-rcu-impl.h: false-sharing
636 * call_rcu: use wfcqueue, eliminate false-sharing
638 * wfcqueue: implement concurrency-efficient queue
639 * Ensure that read-side functions meet 10-line LGPL criterion
640 * tls-compat.h: document sigaltstack(2) limitation
641 * urcu: add notice to URCU_TLS() for it is not strictly async-signal-safe
642 * Document sigaltstack(2) limitation
643 * Documentation: update LICENSE file
645 2012-08-27 Userspace RCU 0.7.4
646 * rculfhash API documentation: document destroy RCU read-lock constraint
647 * Fix: rculfhash should be offline while waiting for resize to complete
648 * Add missing entry to gitignore
649 * urcu: move busy-wait code and name it ___cds_wfq_node_sync_next()
650 * urcu: fix compat_futex_noasync()
651 * urcu: add hint to DEFINE_URCU_TLS() for compound types
652 * Fix: CAA_BUILD_BUG_ON should refer to CAA_BUILD_BUG_ON_ZERO
654 * Compatibility: remove bash-ismsm from test scripts
655 * Fix inappropriate lib behavior: don't call exit()
656 * Fix: re-enable compatibility with autoconf < 2.64
657 * Fix c99 compatibility: use __asm__ and __volatile__ in public headers
658 * Fix c99 compatibility: use __typeof__ instead of typeof in public headers
659 * warning fix: tests urcutorture for NetBSD 5
661 2012-06-01 Userspace RCU 0.7.3
662 * Fix tests: make dist lib dependency
663 * Update README for OS supported, tests dependency
664 * Add CodingStyle to tarball
665 * Add coding style document
666 * Test fix: test_perthreadlock uninitialized mutex
667 * tests: support FreeBSD short "time" args
668 * freebsd 8.2 fix: define MAP_ANONYMOUS for compatibility
670 2012-05-24 Userspace RCU 0.7.2
671 * Fix library compatibility
673 2012-05-24 Userspace RCU 0.7.1
674 * fix: uatomic_set return value compile fix for non-x86 arch.
676 2012-05-21 Userspace RCU 0.7.0
677 * Cleanup: header comments coding style
678 * Document uatomic operations
679 * Update return value of "set" operations
680 * Fix mremap wrapper for NetBSD 5
681 * Use urcu/tls-compat.h
682 * Implement urcu/tls-compat.h
683 * Add TLS detection m4 macro
684 * document concurrent data structures
685 * documentation: refer to rcu-api.txt
686 * Move API.txt to doc/rcu-api.txt, install in system doc/
687 * rculfhash: document implied memory barriers
688 * rculfhash: Ensure future-proof memory barrier semantic consistency
689 * API cleanup: use "uatomic_*" in cmm_smp_mb__ API
690 * uatomic: add memory barrier API for and/or/add/sub/inc/sub
691 * rculfhash: add runhash.sh test script
692 * rculfhash tests: add missing check
693 * rculfhash: fix: race between replace and del operations
694 * rculfhash: replace unneeded rcu_dereference by CMM_LOAD_SHARED
695 * rculfhash: use do {} while (0) for dbg_printf()
696 * rculfhash: cleanup typo
697 * rculfhash: update API comments
698 * rculfhash: update comments in implementation
699 * rculfhash tests: add long hash chains tests
700 * rculfhash tests: add uniqueness test
701 * rculfhash test: print test name
702 * rculfhash: stress requirement in documentation
703 * rculfhash: fix typo
704 * rculfhash tests: use array of callbacks to modularize
705 * rculfhash tests: modularize tests
706 * rculfhash: document ordering guarantees
707 * rculfhash: document linearizability guarantees
708 * rculfhash: update removal comment
709 * Add missing files to .gitignore
710 * Fix out-of-tree build
711 * rculfhash: check malloc NULL pointer
712 * Fix uatomic sign cast
713 * Remove unused jhash.h file
714 * Fix: use known license text, fix incorrect FSF address
715 * Fix: add missing sched.h include in rculfhash.c
716 * Allow tests to run on architectures without per-cpu call_rcu support
717 * Hash table test: FreeBSD compatibility fix
718 * tests: define _GNU_SOURCE instead of __USE_GNU
719 * RCU lock-free hash table: implement cds_lfht_is_node_deleted()
720 * Define _GNU_SOURCE to access CPU_ZERO() macro in uClibc
721 * Install ChangeLog and README into system's doc
722 * Fix AC_LANG_SOURCE usage: only takes one parameter
723 * Fix autoconf futex check
724 * configure.ac: Use AC_LANG_SOURCE for if else macros
725 * Refresh autoconf files
727 * rculfhash: add comment about hash seed randomness within test program
728 * readme: state correct GCC dependency for ARM
729 * rculfhash: remove an invocation of bit_reverse_ulong() when adding
730 * rculfhash: remove unneeded conversion
731 * rculfhash: remove unneeded clear_flag()
732 * cds_lfht_replace: add checks for old/new node hash/value match
733 * rculfhash: use node instead of iter argument for deletion
734 * rculfhash: number of logically removed nodes should not appear in API
735 * Document that flags could be represented on 2 bits
736 * Add missing REMOVAL_OWNER_FLAG comment to cds_lfht_node comment
737 * _cds_lfht_del is not used for buckets anymore, remove parameter
738 * rculfhash: Relax atomicity guarantees required by removal operation
739 * remove unneeded "return;"
740 * simplify the deletion for bucket node
741 * Remove unneeded code
742 * Cleanup DEFINE_RCU_FLAVOR()
743 * Add cds_lfht_ prefix to fls_ulong, get_count_order_ulong, get_count_order_u32
744 * Merge RCU Lock-Free Resizable Hash Table
746 2011-12-12 Userspace RCU 0.6.7
747 * Add compat file for test urcu wfs
748 * Add missing compat file for wfq test
749 * hlist.h: Add missing stddef.h include for NULL
750 * call_rcu: Add missing call_rcu_before_fork and
751 call_rcu_after_fork_parent declarations
752 * Describe autotools/libtool/automake version dependency
753 * Remove m4_ifdef for AC_PROG_LIBTOOL (deprecated)
754 * Support older autotools
755 * Apply autoupdate to configure.ac
756 * Fix build for amd64 environment (for FreeBSD 8.2)
757 * Add missing rcu_dereference_sym_bp
758 * Install test scripts in the dist tarball
760 2011-11-03 Userspace RCU 0.6.6
761 * qsbr vs call_rcu : remove exit assertion
762 * Rename likely/unlikely to caa_likely/caa_unlikely
763 * Reinsert missing test_urcu_*.c files (missing in rename)
764 * rename test_qsbr to test_urcu_qsbr
765 * urcu-pointer: fix rcu_set_pointer unset return value
766 * Enhance API.txt documentation, add to Makefile as EXTRA_DIST
768 2011-09-29 Userspace RCU 0.6.5
769 * call_rcu: Document call_rcu requirements
770 * call_rcu: fix error handling of malloc error
771 * urcu call_rcu: Use RCU read-side protection for per-cpu call_rcu data
772 * urcu,call_rcu: Cleanup call_rcu_data pointers before use in child
773 * urcu,call_rcu: avoid create call_rcu_data for child when unneed
774 * urcu,defer_rcu: Make defer_rcu encoding more compact for marker
775 * urcu_defer: Use cancellation flag instead of pthread_cancel()
776 * urcu,call_rcu: protects call_rcu_data_list when remove node
777 * Create default call rcu data upon per-cpu call-rcu teardown
778 * powerpc: use __NO_LWSYNC__ check to use appropriate lwsync/sync opcode
779 * cmm: provide lightweight smp_rmb/smp_wmb on PPC
780 * atomic: provide seq_cst semantics on powerpc
781 * avoid leaking crdp for failed path
782 * Return -EEXIST when the old cpu call_rcu_data has not been removed
783 * protect writing to per_cpu_call_rcu_data[*]
784 * wake up default call_rcu thread after we move the leftover callbacks
785 * avoid memory leak in call_rcu_data_free()
786 * urcu call_rcu: fix use after free()
787 * use get_cpu_call_rcu_data() for get_call_rcu_data()
788 * init maxcpus before use
789 * call_rcu implementation: add missing static
790 * Document QSBR interaction with mutexes
791 * urcu-pointer: implement URCU_FORCE_CAST for C++ compatibility of urcu-pointer.h
792 * urcu-qsbr: use rcu_thread_offline/rcu_thread_online instead of inlining them
793 * Pair all_cpu call_rcu create with free
794 * QSBR: add missing wakeups in synchronize_rcu code
795 * cmm: do not generate code for smp_rmb/smp_wmb on x86_64
796 * cmm: let per-arch files provide cmm_smp_* barriers
797 * Optimize caa_get_cycles() for PowerPC64
798 * lfq/lfs tests: use call_rcu
799 * list: Add cds_list_first_entry
800 * rculfstack/queue: define _LGPL_SOURCE around static header include
801 * Add __rcu annotation (unimplemented)
802 * Fix incorrect fsf address in header files
803 * wfstack: push returns prior stack emptiness state
804 * Make lf stack push return if the stack was empty
805 * Document caa_container_of
806 * urcu-bp: do not call munmap for NULL registry at exit
807 * urcu libraries can directly use the _LGPL_SOURCE wfqueue
808 * rculfstack: document "push"
809 * Add runall.sh to tarball
810 * Fix build order of liburcu-cds-common
811 * Fix missing check for SYS_membarrier in map header
812 * urcu-qsbr: avoid useless futex wakeups and burning CPU for long grace periods
813 * api: reimplement BUILD_BUG_ON in compiler.h
814 * test api cleanup: remove unused primitives
815 * put thread offline while waiting for the init flag
816 * urcu: move private definitions to .c file
817 * urcu-bp: move private definitions to .c file
818 * urcu-qsbr: move private definitions to .c file
819 * rcutorture: fix rcutorture-qsbr
820 * wfqueue: fix type-incorrect assignment
821 * Fix tests Makefile EXTRA_DIST to use api.h
822 * Fix choice of default flavour in urcu/map/urcu.h
823 * api: remove list/hlist
824 * api: remove arch-specific files
825 * api: make api_gcc.h a superset of the other headers
826 * tests api: remove atomics
827 * put thread offline while waiting for the init flag
828 * urcu: move private definitions to .c file
829 * urcu-bp: move private definitions to .c file
830 * urcu-qsbr: move private definitions to .c file
831 * rcutorture: fix rcutorture-qsbr
832 * wfqueue: fix type-incorrect assignment
833 * Use caa_ prefix for min() and max()
835 2011-07-21 Userspace RCU 0.6.4
836 * uatomic: Fix ARM build errors in uatomic.
837 * urcu tests: hold mutex across use of custom allocator.
838 * Portability fixes to support FreeBSD 8.2.
840 2011-06-27 Userspace RCU 0.6.3
841 * uatomic: Fix i386 compatibility build errors in uatomic.
843 2011-06-13 Userspace RCU 0.6.2
844 * Fix build on powerpc.
846 2011-06-13 Userspace RCU 0.6.1
847 * Add missing headers into release tarball:
848 urcu-call-rcu-impl.h and urcu-defer-impl.h
850 2011-06-10 Userspace RCU 0.6.0
851 * Added call_rcu() support, graciously contributed by Paul E. McKenney.
852 * Added urcu/cds.h and merged all "Concurrent Data Containers" (CDS)
853 into a single .so: liburcu-cds.so to have a single header/shared
854 object holding all concurrency-aware data containers. It provides
855 support for RCU lists, queues and stacks at the moment.
856 * liburcu 0.6.0 now allows linking a single application with multiple
857 flavors of RCU. This required a library API change which is
858 incompatible with older 0.5.x liburcu. The .so version number
859 is therefore bumped from 0 to 1 (e.g. liburcu.so.1).
860 * Added "atfork" handling API, documented in README. Only useful for
861 processes using fork() without following exec().
862 * Renaming the following files, keeping the old files (producing a
864 urcu/uatomic_arch.h -> urcu/uatomic.h
865 urcu/urcu-futex.h -> urcu/futex.h
866 urcu/urcu_ref.h -> urcu/ref.h
868 2011-03-04 Userspace RCU 0.5.4
869 * urcu-bp: Update fork() handling
873 extern void rcu_bp_before_fork(void);
874 extern void rcu_bp_after_fork_parent(void);
875 extern void rcu_bp_after_fork_child(void);
877 to handle fork gracefully. These disable signals and hold
878 the registry mutex across forks. (this flavor of the liburcu
879 library ("bp" for "bulletproof") is mainly used by UST, the
882 2011-03-03 Userspace RCU 0.5.3
883 * Add support for older ARM single-CPU architecturess (pre-ARMv7)
884 (thanks to Jason Wessel from WindRiver).
885 * Fix ARMv7 cmm_rmb/cmm_wmb primitives (use a dmb barrier).
886 * Remove leftover list_t type from urcu/list.h (namespace cleanup).
887 * urcu_defer: handle malloc error value.
888 * Update README file to describe urcu interaction with fork() when not
890 by an exec() system call.
892 2010-11-18 Userspace RCU 0.5.2
893 * Fix renaming error introduced in 0.5.0.
895 2010-11-18 Userspace RCU 0.5.1
896 * Fix renaming error introduced in 0.5.0. (incomplete fix)
898 2010-11-18 Userspace RCU 0.5.0
899 * Version 0.5.0 changes the API presented by memory model,
900 architecture abstraction and data structure primitives in
901 headers. The prefixes are, respectively:
902 - cmm_ : Concurrent Memory Model
903 - caa_ : Concurrent Architecture Abstraction
904 - cds_ : Concurrent Data Structures
906 2010-03-04 Userspace RCU 0.4.2
907 * Add generic uatomic ops support.
908 * Bugfix in urcu-bp. (rare garbage collection bug occurring in
909 multithreaded environment). Only affects urcu-bp users (UST).
911 2010-02-12 Userspace RCU 0.4.1
912 * s390: compilation fix.
914 2010-01-30 Userspace RCU 0.4.0
915 * API change: SIGURCU -> SIGRCU
916 * API changes: standardize on rcu_ prefix.
917 * API change: urcu_init -> rcu_init.
918 * urcu/config.h options renamed to CONFIG_RCU_HAVE_FENCE,
919 CONFIG_RCU_HAVE_FUTEX, CONFIG_RCU_SMP, CONFIG_RCU_COMPAT_ARCH.
920 ((moving from URCU -> RCU).
921 * library names changes: liburcu becomes the "default" version, using
922 sys_membarrier() when available, and using liburcu-mb as a
924 * The signal-based liburcu is renamed from liburcu to
925 liburcu-signal. People previously using the signal-based
926 "liburcu" will automatically be moved to the "default" liburcu
929 2009-11-16 Userspace RCU 0.3.1
930 * Add support for sparcv9 32-bit build.
931 * Update build system to use --host instead of --target.
933 2009-11-03 Userspace RCU 0.3.0
934 * API change for the "deferred work" interface.
936 2009-10-14 Userspace RCU 0.2.3
938 * Automated architecture detection, with i386 fallback.
939 * Detect if NR_futex is on the system, fallback on portable
941 * Add configure mode for UP-only systems.
943 2009-10-02 Userspace RCU 0.2.2
944 * Phases out rcu_publish_content() api.
945 * Adds type checking to urcu-pointer.h pointer exchange primitives.
947 2009-10-02 Userspace RCU 0.2.1
948 * small header dependency fix for rculist.h.
949 * new "liburcu-bp.so" : "Bulletproof RCU", made especially for
950 the UST userspace tracer. It's a library that sacrifices a bit
951 of read-side performance for automatically monitoring thread
952 creation/removal. See README for details.
954 2009-10-01 Userspace RCU 0.2
955 * Clarify usage of rcu_cmpxchg_pointer, rcu_xchg_pointer,
958 2009-09-29 Userspace RCU 0.1