+2.4.0
+ - issue #81: bug in gc::DHP when extending thread's retired array,
+ thanks to gtroxler (https://github.com/gtroxler)
+ - Improved CMake scripts for simplifying libcds intergration with
+ other projects:
+ find_package(LibCDS)
+ add_library(mylib INTERFACE)
+ target_link_libraries(mylib INTERFACE LibCDS::cds)
+ Thansk to Louis Dionne (https://github.com/ldionne
+
+2.3.0 31.07.2017
+ General release
+ - Changed: cds::gc::HP is totally refactored:
+ - simplified internal structures;
+ - added ability to specify an external allocator for internal data;
+ - external API for gc::HP is slightly changed: now scan type
+ cannot be changed on the fly; it can be specified only in
+ construction time.
+ - Changed: cds::gc::DHP is totally refactored to overcome some internal
+ limitations. Now gc::DHP is fully adaptive variant of Hazard Pointer
+ SMR, any dependencies on count of thread are removed, count of retired
+ data and hazard pointers per thread are increased automaticaly by perforce.
+ External API of gc::DHP class is changed: now only initial count
+ of hazard pointers can be specified in the constructor. Like new gc::HP,
+ the new gc::DHP supports an external allocator.
+ - Changed: exception handling. Now, exceptions raise by invoking new
+ cds::throw_exception() function. If you compile your code with exception disabled,
+ the function prints an exception message to stdout and calls abort()
+ instead of throwing.
+ - Flat Combining: fixed memory-order bug that can lead to crash on weak ordered
+ architecture like PowerPC or ARM
+ - Added: erase_at( iterator ) function to MichaelHashSet/Map and SplitListSet/Map
+ based on IterableList
+ - Fixed a bug in BronsonAVLTreeMap::extract_min()/extract_max()/clear().
+ - Removed: signal-handled threaded uRCU (cds::urcu::signal_threaded) due
+ bad performance
+ - Added more flat-combining queue tests, thanks to Marsel Galimullin.
+ - Changed cmake scripts to support MacOS and ARMv7/ARMv8 (64 bit),
+ thanks to Michail Komarov (https://github.com/Nemo1369)
+ - Stress tests: removed command line parameter --detail-level and
+ envvar CDSTEST_DETAIL_LEVEL for reducing compile time and executable size.
+ To make full testset compile libcds with -DCDS_STRESS_TEST_LEVEL=N where
+ N is 1 or 2.
+ - Changed: refactoring cds::backoff::exponential and cds::backoff::delay
+ back-off strategies to avoid static data members in template classes.
+ - The library is extensively tested on x86-64, PowerPC and AArch64,
+ thanks to GCC Compile Farm project
+
+2.2.0 04.01.2017
+ General release
+ - Changed: CMake is used for build libcds. Ancient build.sh has been removed
+ - Changed: unit and stress tests are migrated to googletest framework
+ - Added: IterableList - an implementation of ordered list with
+ thread-safe iterator. MichaelSet/Map and SplitListSet/Map support
+ this type of ordered list and thread-safe iterable too.
+ - Added: wait strategies for flat combining technique. Based on
+ research by Marsel Galimullin and Nikolai Rapotkin.
+ - Fixed: SkipList erase() and find() bugs that cause to infinite loop
+ or to program crash in rare case.
+ - Fixed: serious bug in MichaelSet::emplace() function
+ New node was created twice from the arguments by move semantics.
+ However, move semantics may change internal state of the argument
+ that can lead to an incorrect element and even an incorrect key
+ that breaks the set logic.
+ - Fixed: bug in FeldmanHashSet::erase_at( iterator ): due an error
+ in precondition checking the function may incorrectly return false.
+ - Fixed: possible double-free case in flat combining algorithm.
+ Thanks to Amila Jayasekara who pointed me to this problem
+ - Changed: cds::opt::buffer option is divided to initialized
+ (cds::opt::v::initialized_dynamic_buffer, cds::opt::v::initialized_static_buffer)
+ and uninitialized (cds::opt::v::uninitialized_dynamic_buffer, cds::opt::v::uninitialized_static_buffer)
+ ones. The old cds::opt::v::dynamic_buffer and cds::opt::v::static_buffer classes
+ are removed.
+ - Removed: TsigasCysleQueue (due undecidable ABA-problem)
+ - Removed: Michael's allocator cds/memory/michael/allocator.h
+ - Fixed: use-after-free bug in VyukovMPMCCycleQueue internal buffer.
+ To prevent this bug the queue uses an uninitialized buffer now.
+ - Fixed: rare priority inversion bug in MSPriorityQueue
+ - Added: for minimizing runtime of stress test the detail level for some test is added.
+ Command line argument --detail-level=N specifies what test should be ran: each
+ test with level not greater than N will be ran. Instead of command line arg
+ the enviromnent variable CDSTEST_DETAIL_LEVEL=N may be used.
+ By default, the detail level is 0 that means only limited set of the test will be ran.
+
+2.1.0 06.01.2016
+ General release
+ - Added: FeldmanHashSet/Map - an interesting hash map algorithm
+ based on multi-level array, requires perfect hashing or fixed-sized keys.
+ Supports thread-safe bidirectional iterators.
+ - Added: BronsonAVLTreeMap - Bronson's et al AVL tree implementation
+ - Added: CMake build script, thanks to Eugeny Kalishenko
+ - Changed: SplitList performance improving, thanks to Mike Krinkin
+ - Changed: semantic of member functions extract(), get() and its
+ variants for MichaelList RCU-based specialization: extract() does not
+ require RCU locking, get() now returns special wrapper object of type raw_ptr,
+ see doc.
+ Thus, semantics of extract()/get() of all RCU-based set and maps based on
+ MichaelList (MichaelSet/Map, SplitListSet/Map) has been changed too.
+ - Changed: SplitListSet/Map functions get() and get_with() return special wrapper
+ object of type raw_ptr, see doc.
+ - Removed: SplitListSet/Map force_dispose() function.
+ - cds::lock namespace is renamed to cds::sync. All classes defined in cds::lock namespace
+ are moved to cds::sync with new names (for example, cds::lock::SpinLock is renamed to
+ cds::sync::spin_lock). cds::lock namespace and its contents is deprecated, it is kept
+ for backward compatibility.
+ - The library has been checked by ThreadSanitizer, a lot of bugs has been fixed
+ - Added support for clang 3.7 with libc++
+
+2.0.0 30.12.2014