Fixed a memory leak in flat-combining algorithm
[libcds.git] / change.log
index 7960a2d2658bf5d15266cb381780e805414fd2c3..1615cd508d9881c4aa95ce37455a2c6151180d88 100644 (file)
@@ -1,4 +1,43 @@
-2.1.0
+2.2.0
+    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)
+    - 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
       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
     General release