Version 0.7.15
[userspace-rcu.git] / ChangeLog
1 2015-09-09 Userspace RCU 0.7.15
2 * Disable sys_membarrier
3 * uatomic: Specify complete types for atomic function calls
4 * Fix: handle sys_futex() FUTEX_WAIT interrupted by signal
5 * Fix: compat_futex.c: *uaddr should be read as volatile
6 * Fix: call_rcu_thread() affinity failure
7 * urcu: fix deprecation warning with new glibc
8
9 2015-04-28 Userspace RCU 0.7.14
10 * Fix: call rcu should call internal RCU API
11 * Fix: deadlock when thread join is issued in read-side C.S.
12 * Fix: rename RCU_DEBUG to DEBUG_RCU in urcu-qsbr.h
13 * Mark braced-groups within expressions with __extension__
14 * Fix: compat_futex_noasync race condition
15 * Fix: documentation: urcu-pointer.h: s/rcu_dereference_pointer/rcu_dereference/
16 * Fix: silence gcc -Wextra warning
17
18 2014-10-21 Userspace RCU 0.7.13
19 * rculfhash: remove duplicated code
20 * rculfhash: handle pthread_create failures
21 * rculfhash: fall back to single-threaded resize on calloc failure
22 * x86: drop extra semi-colon in caa_cpu_relax
23 * call_rcu threads should clear their PAUSED flag when they unpause
24 * Fix: bring back dummy rcu_bp_exit symbol
25
26 2014-03-08 Userspace RCU 0.7.12
27 * Fix: move wait loop increment before first conditional block
28
29 2014-03-01 Userspace RCU 0.7.11
30 * Fix: high cpu usage in synchronize_rcu with long RCU read-side C.S.
31
32 2014-02-28 Userspace RCU 0.7.10
33 * Fix: urcu-bp interaction with threads vs constructors/destructors
34 * Fix undefined NULL pointer arithmetic
35 * Blacklist ARM gcc 4.8.0, 4.8.1, 4.8.2
36 * rculfhash: document max_nr_buckets = 0
37
38 2013-11-12 Userspace RCU 0.7.9
39 * tls-compat: fix comment typo
40 * Keep ABI compatible with already compiled LGPL applications
41 * Fix: tls-compat multi-lib conflict
42 * gcc warning fixes: -Wsign-compare and -Wextra
43 * Fix: urcu-qsbr: reversed logic on RCU_DEBUG
44 * Fix: urcu-bp segfault in glibc pthread_kill()
45 * Fix urcu-bp: don't move registry
46 * Fix: compat futex duplicated lock and completion
47 * Fix: i386 compat code duplicated mutex instances
48 * Fix: urcu-bp: Bulletproof RCU arena resize bug
49 * Fix: test_mutex.c uninitialized mutex
50
51 2013-09-06 Userspace RCU 0.7.8
52 * Fix: hash table growth (for small tables) should be limited
53 * Document build work-around on MacOS X
54 * Fix tests: use of uninitialized variables
55 * tests: add missing unsigned long casts to pthread_self()
56
57 2013-06-18 Userspace RCU 0.7.7
58 * rculfhash: document destroy context limitation
59 * Fix: Use a filled signal mask to disable all signals
60 * Document: rculfhash destroy and resize side-effect in 0.7
61 * Add "sparc" host cpu to configure.ac
62 * Fix: tests/api.h use cpuset.h
63 * Fix hurd-i386: move cpuset tests outside of sched_setaffinity conditional
64 * Fix tests: finer-grained use of CPU_SET, CPU_ZERO and cpu_set_t
65 * Test for CPU_SET
66 * Fix build on architectures with HAVE_SCHED_GETCPU but without HAVE_SYSCONF
67 * README: document that Clang 3.0 (based on LLVM 3.0) is supported
68 * clang: silence "unused expression result" warning
69 * rculfhash: add assertions on node alignment
70 * uatomic: style fix
71
72 2013-01-09 Userspace RCU 0.7.6
73 * Discourage use of pthread_atfork() for call_rcu handlers
74 * Fix call_rcu fork handling
75 * test: fork handling
76 * Fix TLS detection: test with linker, add --disable-compiler-tls
77 * Cleanup: cast pthread_self() return value to unsigned long
78 * Fallback mechanism not working on platform where TLS is unsupported
79
80 2012-10-12 Userspace RCU 0.7.5
81 * 19cf3ae Fix: call_rcu list corruption on teardown
82 * Ensure that read-side functions meet 10-line LGPL criterion
83 * tls-compat.h: document sigaltstack(2) limitation
84 * urcu: add notice to URCU_TLS() for it is not strictly async-signal-safe
85 * Document sigaltstack(2) limitation
86 * Documentation: update LICENSE file
87
88 2012-08-27 Userspace RCU 0.7.4
89 * rculfhash API documentation: document destroy RCU read-lock constraint
90 * Fix: rculfhash should be offline while waiting for resize to complete
91 * Add missing entry to gitignore
92 * urcu: move busy-wait code and name it ___cds_wfq_node_sync_next()
93 * urcu: fix compat_futex_noasync()
94 * urcu: add hint to DEFINE_URCU_TLS() for compound types
95 * Fix: CAA_BUILD_BUG_ON should refer to CAA_BUILD_BUG_ON_ZERO
96 * Add MIPS support
97 * Compatibility: remove bash-ismsm from test scripts
98 * Fix inappropriate lib behavior: don't call exit()
99 * Fix: re-enable compatibility with autoconf < 2.64
100 * Fix c99 compatibility: use __asm__ and __volatile__ in public headers
101 * Fix c99 compatibility: use __typeof__ instead of typeof in public headers
102 * warning fix: tests urcutorture for NetBSD 5
103
104 2012-06-01 Userspace RCU 0.7.3
105 * Fix tests: make dist lib dependency
106 * Update README for OS supported, tests dependency
107 * Add CodingStyle to tarball
108 * Add coding style document
109 * Test fix: test_perthreadlock uninitialized mutex
110 * tests: support FreeBSD short "time" args
111 * freebsd 8.2 fix: define MAP_ANONYMOUS for compatibility
112
113 2012-05-24 Userspace RCU 0.7.2
114 * Fix library compatibility
115
116 2012-05-24 Userspace RCU 0.7.1
117 * fix: uatomic_set return value compile fix for non-x86 arch.
118
119 2012-05-21 Userspace RCU 0.7.0
120 * Cleanup: header comments coding style
121 * Document uatomic operations
122 * Update return value of "set" operations
123 * Fix mremap wrapper for NetBSD 5
124 * Use urcu/tls-compat.h
125 * Implement urcu/tls-compat.h
126 * Add TLS detection m4 macro
127 * document concurrent data structures
128 * documentation: refer to rcu-api.txt
129 * Move API.txt to doc/rcu-api.txt, install in system doc/
130 * rculfhash: document implied memory barriers
131 * rculfhash: Ensure future-proof memory barrier semantic consistency
132 * API cleanup: use "uatomic_*" in cmm_smp_mb__ API
133 * uatomic: add memory barrier API for and/or/add/sub/inc/sub
134 * rculfhash: add runhash.sh test script
135 * rculfhash tests: add missing check
136 * rculfhash: fix: race between replace and del operations
137 * rculfhash: replace unneeded rcu_dereference by CMM_LOAD_SHARED
138 * rculfhash: use do {} while (0) for dbg_printf()
139 * rculfhash: cleanup typo
140 * rculfhash: update API comments
141 * rculfhash: update comments in implementation
142 * rculfhash tests: add long hash chains tests
143 * rculfhash tests: add uniqueness test
144 * rculfhash test: print test name
145 * rculfhash: stress requirement in documentation
146 * rculfhash: fix typo
147 * rculfhash tests: use array of callbacks to modularize
148 * rculfhash tests: modularize tests
149 * rculfhash: document ordering guarantees
150 * rculfhash: document linearizability guarantees
151 * rculfhash: update removal comment
152 * Add missing files to .gitignore
153 * Fix out-of-tree build
154 * rculfhash: check malloc NULL pointer
155 * Fix uatomic sign cast
156 * Remove unused jhash.h file
157 * Fix: use known license text, fix incorrect FSF address
158 * Fix: add missing sched.h include in rculfhash.c
159 * Allow tests to run on architectures without per-cpu call_rcu support
160 * Hash table test: FreeBSD compatibility fix
161 * tests: define _GNU_SOURCE instead of __USE_GNU
162 * RCU lock-free hash table: implement cds_lfht_is_node_deleted()
163 * Define _GNU_SOURCE to access CPU_ZERO() macro in uClibc
164 * Install ChangeLog and README into system's doc
165 * Fix AC_LANG_SOURCE usage: only takes one parameter
166 * Fix autoconf futex check
167 * configure.ac: Use AC_LANG_SOURCE for if else macros
168 * Refresh autoconf files
169 * Update gitignore
170 * rculfhash: add comment about hash seed randomness within test program
171 * readme: state correct GCC dependency for ARM
172 * rculfhash: remove an invocation of bit_reverse_ulong() when adding
173 * rculfhash: remove unneeded conversion
174 * rculfhash: remove unneeded clear_flag()
175 * cds_lfht_replace: add checks for old/new node hash/value match
176 * rculfhash: use node instead of iter argument for deletion
177 * rculfhash: number of logically removed nodes should not appear in API
178 * Document that flags could be represented on 2 bits
179 * Add missing REMOVAL_OWNER_FLAG comment to cds_lfht_node comment
180 * _cds_lfht_del is not used for buckets anymore, remove parameter
181 * rculfhash: Relax atomicity guarantees required by removal operation
182 * remove unneeded "return;"
183 * simplify the deletion for bucket node
184 * Remove unneeded code
185 * Cleanup DEFINE_RCU_FLAVOR()
186 * Add cds_lfht_ prefix to fls_ulong, get_count_order_ulong, get_count_order_u32
187 * Merge RCU Lock-Free Resizable Hash Table
188
189 2011-12-12 Userspace RCU 0.6.7
190 * Add compat file for test urcu wfs
191 * Add missing compat file for wfq test
192 * hlist.h: Add missing stddef.h include for NULL
193 * call_rcu: Add missing call_rcu_before_fork and
194 call_rcu_after_fork_parent declarations
195 * Describe autotools/libtool/automake version dependency
196 * Remove m4_ifdef for AC_PROG_LIBTOOL (deprecated)
197 * Support older autotools
198 * Apply autoupdate to configure.ac
199 * Fix build for amd64 environment (for FreeBSD 8.2)
200 * Add missing rcu_dereference_sym_bp
201 * Install test scripts in the dist tarball
202
203 2011-11-03 Userspace RCU 0.6.6
204 * qsbr vs call_rcu : remove exit assertion
205 * Rename likely/unlikely to caa_likely/caa_unlikely
206 * Reinsert missing test_urcu_*.c files (missing in rename)
207 * rename test_qsbr to test_urcu_qsbr
208 * urcu-pointer: fix rcu_set_pointer unset return value
209 * Enhance API.txt documentation, add to Makefile as EXTRA_DIST
210
211 2011-09-29 Userspace RCU 0.6.5
212 * call_rcu: Document call_rcu requirements
213 * call_rcu: fix error handling of malloc error
214 * urcu call_rcu: Use RCU read-side protection for per-cpu call_rcu data
215 * urcu,call_rcu: Cleanup call_rcu_data pointers before use in child
216 * urcu,call_rcu: avoid create call_rcu_data for child when unneed
217 * urcu,defer_rcu: Make defer_rcu encoding more compact for marker
218 * urcu_defer: Use cancellation flag instead of pthread_cancel()
219 * urcu,call_rcu: protects call_rcu_data_list when remove node
220 * Create default call rcu data upon per-cpu call-rcu teardown
221 * powerpc: use __NO_LWSYNC__ check to use appropriate lwsync/sync opcode
222 * cmm: provide lightweight smp_rmb/smp_wmb on PPC
223 * atomic: provide seq_cst semantics on powerpc
224 * avoid leaking crdp for failed path
225 * Return -EEXIST when the old cpu call_rcu_data has not been removed
226 * protect writing to per_cpu_call_rcu_data[*]
227 * wake up default call_rcu thread after we move the leftover callbacks
228 * avoid memory leak in call_rcu_data_free()
229 * urcu call_rcu: fix use after free()
230 * use get_cpu_call_rcu_data() for get_call_rcu_data()
231 * init maxcpus before use
232 * call_rcu implementation: add missing static
233 * Document QSBR interaction with mutexes
234 * urcu-pointer: implement URCU_FORCE_CAST for C++ compatibility of urcu-pointer.h
235 * urcu-qsbr: use rcu_thread_offline/rcu_thread_online instead of inlining them
236 * Pair all_cpu call_rcu create with free
237 * QSBR: add missing wakeups in synchronize_rcu code
238 * cmm: do not generate code for smp_rmb/smp_wmb on x86_64
239 * cmm: let per-arch files provide cmm_smp_* barriers
240 * Optimize caa_get_cycles() for PowerPC64
241 * lfq/lfs tests: use call_rcu
242 * list: Add cds_list_first_entry
243 * rculfstack/queue: define _LGPL_SOURCE around static header include
244 * Add __rcu annotation (unimplemented)
245 * Fix incorrect fsf address in header files
246 * wfstack: push returns prior stack emptiness state
247 * Make lf stack push return if the stack was empty
248 * Document caa_container_of
249 * urcu-bp: do not call munmap for NULL registry at exit
250 * urcu libraries can directly use the _LGPL_SOURCE wfqueue
251 * rculfstack: document "push"
252 * Add runall.sh to tarball
253 * Fix build order of liburcu-cds-common
254 * Fix missing check for SYS_membarrier in map header
255 * urcu-qsbr: avoid useless futex wakeups and burning CPU for long grace periods
256 * api: reimplement BUILD_BUG_ON in compiler.h
257 * test api cleanup: remove unused primitives
258 * put thread offline while waiting for the init flag
259 * urcu: move private definitions to .c file
260 * urcu-bp: move private definitions to .c file
261 * urcu-qsbr: move private definitions to .c file
262 * rcutorture: fix rcutorture-qsbr
263 * wfqueue: fix type-incorrect assignment
264 * Fix tests Makefile EXTRA_DIST to use api.h
265 * Fix choice of default flavour in urcu/map/urcu.h
266 * api: remove list/hlist
267 * api: remove arch-specific files
268 * api: make api_gcc.h a superset of the other headers
269 * tests api: remove atomics
270 * put thread offline while waiting for the init flag
271 * urcu: move private definitions to .c file
272 * urcu-bp: move private definitions to .c file
273 * urcu-qsbr: move private definitions to .c file
274 * rcutorture: fix rcutorture-qsbr
275 * wfqueue: fix type-incorrect assignment
276 * Use caa_ prefix for min() and max()
277
278 2011-07-21 Userspace RCU 0.6.4
279 * uatomic: Fix ARM build errors in uatomic.
280 * urcu tests: hold mutex across use of custom allocator.
281 * Portability fixes to support FreeBSD 8.2.
282
283 2011-06-27 Userspace RCU 0.6.3
284 * uatomic: Fix i386 compatibility build errors in uatomic.
285
286 2011-06-13 Userspace RCU 0.6.2
287 * Fix build on powerpc.
288
289 2011-06-13 Userspace RCU 0.6.1
290 * Add missing headers into release tarball:
291 urcu-call-rcu-impl.h and urcu-defer-impl.h
292
293 2011-06-10 Userspace RCU 0.6.0
294 * Added call_rcu() support, graciously contributed by Paul E. McKenney.
295 * Added urcu/cds.h and merged all "Concurrent Data Containers" (CDS)
296 into a single .so: liburcu-cds.so to have a single header/shared
297 object holding all concurrency-aware data containers. It provides
298 support for RCU lists, queues and stacks at the moment.
299 * liburcu 0.6.0 now allows linking a single application with multiple
300 flavors of RCU. This required a library API change which is
301 incompatible with older 0.5.x liburcu. The .so version number
302 is therefore bumped from 0 to 1 (e.g. liburcu.so.1).
303 * Added "atfork" handling API, documented in README. Only useful for
304 processes using fork() without following exec().
305 * Renaming the following files, keeping the old files (producing a
306 compiler warning):
307 urcu/uatomic_arch.h -> urcu/uatomic.h
308 urcu/urcu-futex.h -> urcu/futex.h
309 urcu/urcu_ref.h -> urcu/ref.h
310
311 2011-03-04 Userspace RCU 0.5.4
312 * urcu-bp: Update fork() handling
313
314 Introduce
315
316 extern void rcu_bp_before_fork(void);
317 extern void rcu_bp_after_fork_parent(void);
318 extern void rcu_bp_after_fork_child(void);
319
320 to handle fork gracefully. These disable signals and hold
321 the registry mutex across forks. (this flavor of the liburcu
322 library ("bp" for "bulletproof") is mainly used by UST, the
323 user-space tracer).
324
325 2011-03-03 Userspace RCU 0.5.3
326 * Add support for older ARM single-CPU architecturess (pre-ARMv7)
327 (thanks to Jason Wessel from WindRiver).
328 * Fix ARMv7 cmm_rmb/cmm_wmb primitives (use a dmb barrier).
329 * Remove leftover list_t type from urcu/list.h (namespace cleanup).
330 * urcu_defer: handle malloc error value.
331 * Update README file to describe urcu interaction with fork() when not
332 * followed
333 by an exec() system call.
334
335 2010-11-18 Userspace RCU 0.5.2
336 * Fix renaming error introduced in 0.5.0.
337
338 2010-11-18 Userspace RCU 0.5.1
339 * Fix renaming error introduced in 0.5.0. (incomplete fix)
340
341 2010-11-18 Userspace RCU 0.5.0
342 * Version 0.5.0 changes the API presented by memory model,
343 architecture abstraction and data structure primitives in
344 headers. The prefixes are, respectively:
345 - cmm_ : Concurrent Memory Model
346 - caa_ : Concurrent Architecture Abstraction
347 - cds_ : Concurrent Data Structures
348
349 2010-03-04 Userspace RCU 0.4.2
350 * Add generic uatomic ops support.
351 * Bugfix in urcu-bp. (rare garbage collection bug occurring in
352 multithreaded environment). Only affects urcu-bp users (UST).
353
354 2010-02-12 Userspace RCU 0.4.1
355 * s390: compilation fix.
356
357 2010-01-30 Userspace RCU 0.4.0
358 * API change: SIGURCU -> SIGRCU
359 * API changes: standardize on rcu_ prefix.
360 * API change: urcu_init -> rcu_init.
361 * urcu/config.h options renamed to CONFIG_RCU_HAVE_FENCE,
362 CONFIG_RCU_HAVE_FUTEX, CONFIG_RCU_SMP, CONFIG_RCU_COMPAT_ARCH.
363 ((moving from URCU -> RCU).
364 * library names changes: liburcu becomes the "default" version, using
365 sys_membarrier() when available, and using liburcu-mb as a
366 fallback.
367 * The signal-based liburcu is renamed from liburcu to
368 liburcu-signal. People previously using the signal-based
369 "liburcu" will automatically be moved to the "default" liburcu
370 version.
371
372 2009-11-16 Userspace RCU 0.3.1
373 * Add support for sparcv9 32-bit build.
374 * Update build system to use --host instead of --target.
375
376 2009-11-03 Userspace RCU 0.3.0
377 * API change for the "deferred work" interface.
378
379 2009-10-14 Userspace RCU 0.2.3
380 * Move to autotools.
381 * Automated architecture detection, with i386 fallback.
382 * Detect if NR_futex is on the system, fallback on portable
383 alternatives.
384 * Add configure mode for UP-only systems.
385
386 2009-10-02 Userspace RCU 0.2.2
387 * Phases out rcu_publish_content() api.
388 * Adds type checking to urcu-pointer.h pointer exchange primitives.
389
390 2009-10-02 Userspace RCU 0.2.1
391 * small header dependency fix for rculist.h.
392 * new "liburcu-bp.so" : "Bulletproof RCU", made especially for
393 the UST userspace tracer. It's a library that sacrifices a bit
394 of read-side performance for automatically monitoring thread
395 creation/removal. See README for details.
396
397 2009-10-01 Userspace RCU 0.2
398 * Clarify usage of rcu_cmpxchg_pointer, rcu_xchg_pointer,
399 rcu_set_pointer.
400
401 2009-09-29 Userspace RCU 0.1
402 * Initial release.
This page took 0.038064 seconds and 4 git commands to generate.