libcds v2.2.0 Release Notes
Release Date: 2017-01-04 // about 7 years ago-
- ๐ 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()
andfind()
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 oldcds::opt::v::dynamic_buffer
andcds::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 variableCDSTEST_DETAIL_LEVEL=N
may be used. By default, the detail level is 0 that means only limited set of the test will be ran.