uatomic/x86: Remove redundant memory barriers
[urcu.git] / ChangeLog
index 817582c2c7fa31002ee49367c3cbee32bef30801..a7fd3497dbf9d213876c1eed188a4b669ebe9dcc 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,436 @@
+# SPDX-FileCopyrightText: 2011-2023 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
+#
+# SPDX-License-Identifier: CC-BY-4.0
+
+2023-02-14 Userspace RCU 0.14.0
+       * Fix: urcu-bp: only teardown call-rcu worker in destructor
+       * Fix: rculfhash: urcu_die() takes positive error value
+       * Fix: call_rcu: teardown default call_rcu worker on application exit
+       * Fix: join worker thread in call_rcu_data_free
+       * Docs: clarify grace period polling API
+       * Document grace period polling in rcu-api.md
+       * Implement poll rcu stress test in rcutorture
+       * urcu-memb,mb,signal: Implement grace period polling
+       * Fix: auto-resize hash table destroy deadlock
+       * Fix building on MSYS2
+       * rculfhash: Include rculfhash-internal.h from local directory
+       * Remove "Darwin" from "should also work on list"
+       * Merge branch 'adah1972-improve-md'
+       * Add semicolons at the end of function prototypes
+       * Wrap a file name in backticks
+       * Wrap command-line options in backticks
+       * Fix a wrong format
+       * Wrap URLs in angle brackets
+       * Fix Markdown issues
+       * Fix: Always check pthread_create for failures
+       * Disable signals in URCU background threads
+       * Fix: futex.h: include headers outside extern C
+       * Fix: add missing unused attribute to _rcu_dereference
+       * Fix: change method used by _rcu_dereference to strip type constness
+       * Fix: remove type constness in URCU_FORCE_CAST's C++ version
+       * Move extern "C" down in include/urcu/urcu-bp.h
+       * fix: ifdef linux specific cpu count compat
+       * Add unit tests for possible_cpus_array_len
+       * fix: sysconf(_SC_NPROCESSORS_CONF) can be less than max cpu id
+       * Fix: revise obsolete command in README.md
+       * Fix: workqueue: remove unused variable "ret"
+       * Fix: urcu-qsbr: futex wait: handle spurious futex wakeups
+       * Fix: urcu: futex wait: handle spurious futex wakeups
+       * Fix: urcu-wait: futex wait: handle spurious futex wakeups
+       * Fix: defer_rcu: futex wait: handle spurious futex wakeups
+       * Fix: call_rcu: futex wait: handle spurious futex wakeups
+       * Fix: workqueue: futex wait: handle spurious futex wakeups
+       * Fix: Use %lu rather than %ld to print count
+       * Update ABI definition files
+       * Bump version current and age
+       * alpha: allocate membarrier system call number
+       * Bump version to 0.14.0-pre
+       * Improved test framework
+       * rculfhash: introduce cds_lfht_node_init_deleted
+       * Fix: changelog: v0.13.0 was released in 2021
+       * cleanup: i386 arch detection
+       * fix: properly detect 'cmpxchg' on x86-32
+       * fix: use urcu-tls compat with c++ compiler
+       * Fix typo
+       * fix: remove autoconf features default value in help message
+       * fix: add missing pkgconfig file for memb flavour lib
+       * Cleanup: Tests: Remove useless pre-C99 compatibility code from tap.h
+       * Document C99 and C++11 requirement in README.md
+       * Always use '__thread' for Thread local storage except on MSVC
+       * Fix: powerpc32: transparent unions alter calling convention
+       * fix: don't use C++ thread_local on MacOs
+       * wfcqueue API: implement overloaded wrappers with templates
+       * wfcqueue: combine C++ API cds_wfcq_head_cast with overloading
+       * wfstack C++ API: implement overloaded wrappers with templates
+       * lfstack C++ API: implement overloaded wrappers with templates
+       * wfstack: combine C++ API cds_wfs_stack_cast with overloading
+       * lfstack: combine C++ API cds_lfs_stack_cast with overloading
+       * fix: test_build tap plan
+       * Test C++ build of list head init
+       * Fix order of initializers in CDS_LIST_HEAD_INIT
+       * unit tests: test wfcqueue, wfstack, lfstack empty check functions in C++
+       * wfcqueue: implement C++ API based on function overloading
+       * wfstack: implement C++ API based on function overloading
+       * lfstack: implement C++ API based on function overloading
+       * Fix tap.h: remove extra semicolon in pass/fail macros
+       * Add C++ build tests
+       * Build and run regression and unit tests as C++ programs
+       * Add --enable-Werror configure switch
+       * Add `urcu_posix_assert()` as `assert()` replacement
+       * Rename `urcu_assert()` to `urcu_assert_debug()`
+       * cleanup: spelling fixes in comments
+       * Make temporary variable in _rcu_dereference non-const
+       * (tls-ie2) Fix: x86 and s390: uatomic __hp() macro C++ support
+       * Fix: x86 and s390: uatomic __hp() macro clang support
+       * Fix: x86 and s390 uatomic: __hp() macro warning with gcc 11
+
+2021-06-03 Userspace RCU 0.13.0
+       * Document known ABI issue in README.md
+       * Add serialized ABI definition files
+       * bump SONAME major to 8
+       * Remove all SONAME(6) ABI aliases
+       * .gitignore: list ignored Makefiles
+       * tests: Add a simple compile test for caa_get_cycles
+       * fix: clock_gettime on macOs
+       * Fix: rculist header: use parenthesis around macro parameters
+       * Fix: rcuhlist header: use parenthesis around macro parameters
+       * Fix: hlist header: use parenthesis around macro parameters
+       * Fix: list.h: use parenthesis around macro parameters, caa_container_of()
+       * Fix: hlist iteration relies on undefined behavior
+       * Fix: use __atomic_load() rather than atomic load explicit
+       * Fix: use atomic load memory_order_consume for rcu_dereference on C11/C++11
+       * fix: we used weak symbols not weak aliases
+       * fix: include 'sys/endian.h' on FreeBSD
+       * fix: warnings on non-Linux platforms
+       * fix: HAVE_SCHED_SETAFFINITY is not defined
+       * configure: enable extended compiler warnings
+       * cleanup: explicitly mark unused parameters (-Wunused-parameter)
+       * fix: shadowed local variable (-Wshadow)
+       * cleanup: all functions have declarations (-Wmissing-prototypes)
+       * Import libtap from babeltrace
+       * cleanup: add 'noreturn' attribute to '_uatomic_link_error'
+       * fix: add missing 'S' to AC_CHECK_PROGS
+       * README.md: Document supported Glibc version
+       * README: cleanup stale MacOS information
+       * Bump version to 0.13.0-pre
+       * configure: standardise include path
+       * Remove glibc < 2.4 compat code for sched_setaffinity
+       * configure: regroup automake conditionals
+       * Introduce AE_FEATURE to manage configure features
+       * configure: regroup library checks
+       * configure: regroup and expand C header and program checks
+       * configure: regroup and expand C compiler checks
+       * configure: host specific config
+       * tests: Move tap-driver.sh out of the autotools aux directory
+       * configure: Set autotools baseline
+       * configure: centralize version information
+       * fix: exclude clang from GCC version blacklists
+       * aarch64: blacklist gcc prior to 5.1
+       * Fix: configure: support Autoconf 2.70
+       * Don't force a target and optimization level on ARMv7
+       * Use DMB only on ARMv7
+       * Blacklist GCC 4.4.0, 4.4.1 and 4.4.2 on ARM
+       * Cleanup: Move ARM specific code to urcu/arch/arm.h
+       * fix: bump tests thread limit to 4096
+       * fix: reorder x86 arch detection
+       * fix: typo in futex syscall define check
+       * Compile time futex syscall detection
+       * Static arch and uatomic headers
+       * Add git-review config
+       * cleanup: Improve wording of CONFIG_RCU_DEBUG description
+       * fix: explicitly include urcu/config.h in files using CONFIG_RCU_ defines
+       * Fix typo in README.md
+       * fix: add -lurcu-common to pkg-config libs for each flavor
+       * call_rcu: Fix race between rcu_barrier() and call_rcu_data_free()
+       * Cleanup: tls-compat.h: add parentheses around expression (coding style)
+       * Fix: tls-compat.h exposes compiler-dependent public configuration
+       * Fix: tap array subscript has type char warning
+
+2020-04-09 Userspace RCU 0.12.0
+       * tls-compat.h: introduce DEFINE_URCU_TLS_INIT
+       * Use _umtx_op for futex on FreeBSD
+       * Add FreeBSD, DragonFly to syscall-compat.h
+       * urcu-bp: perform thread registration on urcu_bp_register_thread
+       * Require automake >= 1.12
+       * cds_lfht_is_node_deleted parameter can be marked const
+       * Fix: provide errno as argument to urcu_die()
+       * Fix: rculfhash worker needs to unblock to SIGRCU
+       * Cleanup: test_perthreadlock_timing: handle pthread mutex errors
+       * Fix: SONAME bump to 6.1.0
+       * Cleanup: remove unused variable from configure.ac check
+       * Fix: urcu/futex.h: users of struct timespec should include time.h
+
+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
+
+2017-06-12 Userspace RCU 0.10.0
+       * Bump library soname due to urcu flavor structure change
+       * Cleanup: use mutex_lock() wrapper in rculfhash
+       * Use workqueue in rculfhash
+       * Implement urcu workqueues internal API
+       * Add support for m68k architecture
+       * Set -Wall globally in AM_CFLAGS
+       * Fix: remove double use of PTHREAD_CFLAGS
+       * Re-add PTHREAD_CFLAGS to global CFLAGS
+       * Fix: Don't override user variables within the build system
+       * Add report at the end of configure
+       * uatomic-api docs: use the third-person singular
+       * Add --enable-rcu-debug to configure
+       * ARM32: use dmb ish (inner shareable domain) for smp barriers
+       * Cleanup: remove cmm_wmb() from rcu_xchg_pointer and rcu_cmpxchg_pointer
+       * Fix: uatomic arm32: add missing release barrier before uatomic_xchg
+       * Tests: Add verbose support to test script
+       * Fix: add missing CONFIG_RCU_FORCE_SYS_MEMBARRIER to urcu/config.h.in
+       * Allow forcing the use of sys membarrier
+       * Fix: rcutorture: work-around signal issue on mac os x
+       * Fix: rcutorture should register thread using call_rcu
+       * Fix: add missing backslash in Makefile.am
+       * Fix: Do not use wildcards in include/Makefile.am
+       * Bump version to 0.10-pre
+       * Fix: check for rand_r() in compat-rand.h
+       * Fix: Move rand-compat to private src dir
+       * Fix: remove AC_FUNC_MALLOC from configure.ac
+       * Cleanup: Re-organise source dir
+       * Cleanup: remove leftover manual pthread detection
+       * Fix: update ax_pthread macro to handle newer clang
+       * Update library current version due to adding destroy API
+       * Fix: Use pthread_self to get threadid on OSX
+       * Fix: examples: use destroy API for queues/stacks
+       * Update library age due to new stack/queue destroy API
+       * Fix: tests: invoke destroy APIs for queues/stacks
+       * Fix: add missing destroy functions to queues/stack APIs
+       * Fix: add missing __cds_wfcq_init for LGPL API
+       * Fix: memory leak on hash table destroy
+       * Fix: Add failover for platforms without nproc
+       * Fix: use clock_get_time for caa_get_cycles fallback on MacOSX
+       * Fix: syscall-compat.h MacOSX support
+       * Fix: Add solaris-build.md to dist
+       * rculfhash: Documentation: clarify need for grace period before "re-using"
+       * Port: build shared libraries in Cygwin
+       * Port: fix compatibility header for Cygwin
+       * Add GNU Hurd support to syscall-compat.h
+       * Add support for aarch64_be
+       * Fix: urcu-bp: re-initialize list head on library exit
+       * bootstrap: Standardize on autoreconf -vi
+       * Harmonize bootstrap script across projects
+       * Fix: examples make distcheck failure
+       * wfcqueue: add C++ compatibility API
+       * Fix: CDS_WFCQ_WOULDBLOCK typing for c++
+       * Fix: configure.ac: check for possibly required libs for clock_gettime
+       * Support for NIOS2 architecture
+       * urcu_ref_get_safe: introduce new API
+       * Fix: handle reference count overflow
+       * Fix: compat_futex should work-around futex signal-restart kernel bug
+       * Support for Xeon-Phi with newer MPSS
+       * sparc64: allocate membarrier system call number
+       * hppa: allocate membarrier system call number
+       * Fix build on non-Linux Debian ports
+       * Fix: urcu-signal: smp_mb_master() needs registry lock
+       * Fix: rculfhash only needs to include urcu-pointers.h
+       * Fix: out-of-tree benchmark/regtest
+       * Fix: add missing regtest and benchmark files to dist tarball
+       * Fix: add missing run.sh to benchmark makefile
+
+2015-10-16 Userspace RCU 0.9.0
+       * Bump soname major to 4
+       * Cleanup: remove trailing tab
+       * Fix: Use proper macro to detect stdbool.h
+       * Configure: Add missing checks
+       * Port: Add Solaris build instructions
+       * Fix: regtest outputs valid TAP protocol
+       * Port: Detect nproc bin name in benchmark scripts
+       * Port: Add Solaris getcpu support
+       * Port: Fixes to build system for portability
+       * Port: Add Solaris support to tests/common/thread-id.h
+       * Port: Add Solaris support to urcu/syscall-compat.h
+       * Port: replace bzero() by memset()
+       * Port: make bootstrap script work on most shell
+       * tests: rcutorture: use parameters rather than random
+       * Fix: only define membarrier system call on Linux
+       * Refactor tests
+       * Fix: cast caa_cycles_t to unsigned long long
+       * caa_get_cycles: caa_ prefix for type, use CLOCK_MONOTONIC
+       * Cleanup: remove trailing whitespaces at EOL
+       * Cleanup: move generic caa_get_cycles to arch/generic.h
+       * tile: allocate membarrier system call number
+       * ia64: allocate membarrier system call number
+       * aarch64: allocate membarrier system call number
+       * powerpc64le: use "ppc" architecture
+       * arm: allocate membarrier system call number
+       * s390: allocate membarrier system call number
+       * ppc: allocate membarrier system call number
+       * lfstack: relax constraints on node re-use
+       * Fix: format string signedness
+       * Cleanup: tests: Branch condition evaluates to a garbage value
+       * Fix: test: unchecked return value
+       * Fix: test: side-effect in assertion
+       * x86: allocate membarrier system call number
+       * urcu-bp: use sys_membarrier when available
+       * Cleanup: urcu: remove unused membarrier "group" parameter
+       * urcu/ref.h: implement urcu_ref_get_unless_zero()
+       * Fix: compat_futex: uninitialized ret variable
+       * Fix: compat_futex_noasync: don't override return value
+       * Fix: dynamic fallback to compat futex on sys_futex ENOSYS
+       * Detect RCU read-side overflows
+       * Detect RCU read-side underflows
+       * Introduce urcu_assert and registration check
+       * Fix: volatile in assert()
+       * Update following changes to sys_membarrier ABI
+       * uatomic: Specify complete types for atomic function calls
+       * Cleanup: remove unused return value warning from tests
+       * Fix: handle sys_futex() FUTEX_WAIT interrupted by signal
+       * Fix: compat_futex.c: *uaddr should be read as volatile
+       * Cleanup: cast poll delay return value to void
+       * tests: Convert unit tests to TAP
+       * Fix: make benchmark test run in oot build
+       * Fix: call_rcu_thread() affinity failure
+       * Cleanup: cast poll delay return value to void
+       * Cleanup: cast poll delay return value to void
+       * Cleanup: cast poll delay return value to void
+       * Cleanup: cast poll delay return value to void
+       * Cleanup: cast poll() return value to void for delays
+       * urcu: fix deprecation warning with new glibc
+       * urcu: add cds_list_for_each_entry_safe_from macro
+       * Fix: deadlock when thread join is issued in read-side C.S.
+       * Fix: rename RCU_DEBUG to DEBUG_RCU in urcu-qsbr.h
+       * Cleanup some c99 pedantic warnings
+       * Mark braced-groups within expressions with __extension__
+       * Fix: compat_futex_noasync race condition
+       * tests: Use stderr redirection for time output
+       * Fix: use space after rpath for OS X ld
+       * Fix: move transparent union attribute after union declaration for clang
+       * Configure: add check for used type
+       * Configure: add missing check of headers
+       * Configure: add missing check for funcs: memset, strerror
+       * Fix: documentation: urcu-pointer.h: s/rcu_dereference_pointer/rcu_dereference/
+       * urcu-bp/urcu-qsbr: remove unneeded DEBUG_YIELD code
+       * Fix: call rcu should call internal RCU API
+       * Fix: silence gcc -Wextra warning
+       * compiler: use __GNUC__ instead of the undefined __GNUC_MAJOR__
+       * Fix: lfstack reversed empty/non-empty return value
+       * lfstack: fix: add missing __cds_lfs_init
+       * wfstack: add missing union parameters
+       * Fix: preserve example files' timestamps when copying
+       * wfstack: implement mutex-free wfstack with transparent union
+       * wfcqueue: Implement mutex-free wfcqueue head with transparent union
+       * lfstack: Implement mutex-free stack head with transparent union (v2)
+       * rculfhash: remove duplicated code
+       * rculfhash: handle pthread_create failures
+       * rculfhash: fall back to single-threaded resize on calloc failure
+       * x86: drop extra semi-colon in caa_cpu_relax
+       * Cleanup: tests: cast console write return value as void
+       * Modernize doc using Markdown
+       * Fix: update automake following README to README.md change
+       * Modernize README using Markdown
+       * Fix: incorrect parenthesis in cds_hlist_for_each_entry_safe_2
+       * Fix: Use after free in rcu_barrier()
+       * Fix: rcu_barrier(): uninitialized futex field
+       * call_rcu threads should clear their PAUSED flag when they unpause
+       * test_urcu_fork: test many fork, with 3 children deep
+       * Update list of supported architectures in README
+       * Add support for hppa/PA-RISC architecture
+       * Use autoconf AM_MAINTAINER_MODE
+       * Use gcc atomics on aarch64/powerpc64le
+       * Fix: move wait loop increment before first conditional block
+       * Fix: high cpu usage in synchronize_rcu with long RCU read-side C.S.
+       * Fix: out of tree build: doc/examples
+       * Fix: out of tree build tests/common
+       * tests/unit: use lib rather than source
+       * automake: Rename INCLUDES to AM_CPPFLAGS (new name)
+       * tests regressions: use lib rather than recompile from source
+       * tests: use common lib rather than recompile compat sources
+       * urcu tests: use lib rather than compile from source
+       * urcu mb tests: use lib rather than recompile from source
+       * urcu signal tests: use library rather than recompile source
+       * tests: move yield debug to common test library
+       * tests urcu bp: use lib rather than recompile source
+       * test_urcu_defer: link on urcu lib rather than recompile source
+       * tests/benchmark: use urcu qsbr lib rather than recompile from source
+       * Pass the CC variable to the example Makefiles
+       * Fix: urcu-bp interaction with threads vs constructors/destructors
+       * x86 barrier for Xeon Phi: use rsp on x86-64
+       * Set RCU_HAVE_FENCE to false on Intel Xeon Phi
+       * Fix undefined NULL pointer arithmetic in hlist
+       * Cleanup: Check for pthread in Libc
+       * Cleanup: Android: Do not redefine gettid
+       * Fix undefined NULL pointer arithmetic
+       * Android: implement rand_r()
+       * Android: do not redefine gettid on Android
+       * Android: add a compat layer for 'syscall.h'
+       * Android: do not link pthread on Android
+       * Android: configure.ac Android check
+       * Blacklist ARM gcc 4.8.0, 4.8.1, 4.8.2
+       * rculfhash: document max_nr_buckets = 0
+       * Library major version number (soname) increment to 3
+       * Fix: tls-compat multi-lib conflict
+       * Use cross compiler for doc examples
+       * Add lttng-dev mailing list to readme
+       * wfcqueue: remove misleading comment
+       * gcc warning fixes: -Wsign-compare and -Wextra
+       * Fix: urcu-qsbr: reversed logic on RCU_DEBUG
+       * Fix: urcu-bp segfault in glibc pthread_kill()
+       * Fix urcu-bp: don't move registry
+       * Fix: compat futex duplicated lock and completion
+       * Fix: i386 compat code duplicated mutex instances
+       * Fix: urcu-bp: Bulletproof RCU arena resize bug
+       * Fix: test_mutex.c uninitialized mutex
+
 2013-09-06 Userspace RCU 0.8.0
        * Fix: hash table growth (for small tables) should be limited
        * Fix: doc/examples cross-build
This page took 0.027219 seconds and 4 git commands to generate.