X-Git-Url: http://plrg.eecs.uci.edu/git/?p=libcds.git;a=blobdiff_plain;f=change.log;h=81694eff0ce426e71d8af160b7f75fd405696cec;hp=a427e181f5def203cfa9141256abc51a9ea2532a;hb=3a3e05a161168102d2666e4f606178ee0b4a37c5;hpb=66bd4dba5cae2f5ced55e2a599006da8b443f610 diff --git a/change.log b/change.log index a427e181..81694eff 100644 --- a/change.log +++ b/change.log @@ -1,4 +1,96 @@ -2.1.0 +2.4.0 + - Removed: -fno-strict-aliasing requirement + +2.3.1 01.09.2017 + Maintenance release + - 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 @@ -15,6 +107,8 @@ 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 General release