On dev: vc
[libcds.git] / change.log
index d54711b6a095144fa3d6bef3a2017255205e6158..2a5564899bd791557a09e4ef11dcadeffd6a23e0 100644 (file)
@@ -1,6 +1,64 @@
-2.0.0
+2.2.0
     General release
-    - switch to C++11 standard
+    - 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: 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 in the set and even
+      to an incorrect key that breaks the set logic.
+    - Fixed: bug in FeldmanHashSet::erase_at( iterator ): due an error
+      in precondition checking the function can incorrectly return false.
+    - Fixed: possible double-free case in flat combining algorithm. 
+      Thanks to Amila Jayasekara who points 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 can 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
+    General release
+    - the library has been rewritten to support at least C++11. Compilers: GCC 4.8+, clang 3.3+, 
+      MS Visual C++ 12 (2013) Update 4 an above.
     - Removed: MichaelDeque, reason: the implementation is heavy-weighted, inefficient,
       and, seems, unstable.
     - Removed: cds::gc::HRC garbage collector, reason: the implementation is inefficient 
@@ -23,6 +81,9 @@
     - Changed: guarded_ptr and exempt_ptr have move semantics now. The container's extract() and get()
       member functions return the objects of that type.
     - Changed: improved cds::gc::HP and cds::gc::DHP internal implementation
+    - Changed: map member function insert_key() has been renamed to insert_with()
+    - Changed: cds/cxx11_atomic.h has been renamed to cds/algo/atomic.h
+    - Removed: cds/refcounter.h
 
 1.6.0 23.09.2014
     General release
    10. Added compiler barrier to spin-lock release primitive for x86 and amd64
    11. Makefile script is changed to resolve the problem when an user calls 'make clean' directly.
        Thanks to Tamas Lengyel to point me to this bug.
-   12. The file dictionary.txt is exluded from distributive. This file is used for testing purposes only.
+   12. The file dictionary.txt is excluded from distributive. This file is used for testing purposes only.
        You may create dictionary.txt in this way:
         cd ./tests/data
         perl -X split.pl