Maintenance release
- Added: apply( Func f ) method to containers based on flat combining.
This method allows to execute any function over underlying container
in exclusive mode.
- Removed: -fno-strict-aliasing requirement
- Fixed: a serious bug in WeakRingBuffer::front()
- Fixed: memcpy bug in CuckooHash with store_hash feature
Maintenance release
find_package(LibCDS)
add_library(mylib INTERFACE)
target_link_libraries(mylib INTERFACE LibCDS::cds)
Thansk to Louis Dionne (https://github.com/ldionne)
This is bugfix release:
Added: StripedSet, StripedMap - hash set and hash map implementation based on fine-grained lock-striping technique
Added: CuckooSet, CuckooMap - implementation of cuckoo hashing algorithm based on fine-grained lock-striping technique
Added: SkipListSet, SkipListMap - implementation of lock-free skip list
Added: template <typename... args=""> emplace(Args&&... args) member function for all containers in cds::container namespace. This function is available only if the compiler supports new C++11 features - variadic templates and move semantics.... read more</typename...>
1. Add: MichaelDeque - deque lock-free algo discovered by Maged Michael
2. Add: BasketQueue - Michael's queue modification discovered by Nir Shavit et al.
3. Add: support of Clang 3.0, 3.1 compiler for amd64, x86 (tested on Linux with boost 1.49)
4. Fixed: solving problem of 8-byte atomic data alignment on 32-bit platforms
5. Fixed bug 3536393: OptimisticQueue core dump
General release
1. Added: C++11 atomic operations support. The library has been rewritten for using std::atomic class and operations proposed in C++11 Standard. If the compiler does not support the standard <atomic> library, own partial implementation declared in cds/cxx11_atomic.h is used. cxx11_atomic.h contains implementation for lock-free part of C++11 <atomic> header needed for libcds.
2. Added: support for C++11 feature (if applicable):
- inline namespace (for GCC 4.4+)
- function =default and =delete specifiers (for GCC 4.4+)
3. Changed: the main reclamation cycle ("liberate" function) of cds::gc::PTB memory reclamation schema has been optimized. Previous implementation could lead to unbounded memory consumption under high contention.
4. Changed: the internal structure of cds::intrusive::OptimisticQueue is greatly simplified. The interface of the class is slightly changed.
5. Fixed: some problem with cds::gc::HRC memory reclamation schema that could be the cause of occasional program crash.
6. Fixed: an error in node reclamation algo in queue implementation (MSQueue, MoirQueue, OptimisticQueue). As an result of the error, some items could be lost with memory leaks.
7. Changed: cds::concept namespace and its content has been removed
8. Added support for Microsoft Visual C++ 11 Beta
9. Added support for GCC 4.7
This version is completely rewritten to support intrusive version of lock-free containers
and more lightweight garbage collectors interface.
The class hierarchy and interfaces have been completely reimplemented from scratch.
1. Added: intrusive containers. Many lock-free containers in libcds have the intrusive
counterparts. The library is fully refactored to support intrusive containers.
Class hierarchy is changed: almost all non-intrusive container classes are based
on their intrusive versions.
Two new namespace is added:
cds::intrusive - for intrusive containers
cds::container - for non-intrusive containers
Namespaces by container type (cds::queue, cds::map and so on) have been removed.
2. Added: New option-based approach is used for class declaration instead
old traits-based one. This approach allows to declare template arguments
in position-independent manner that is very useful for complex template declarations.
Option-based declarations use C++0x variadic templates if compiler supports it (GCC),
otherwise (MS VC) an emulation is used.
3. Changed: garbage collectors interface is generalized. cds::gc::GC (where GC is
one of HP, HRC, PTB) classes has been added.
4. Removed: tagged pointer GC. This GC
- unsafe for complex data structure
- x86-specific since it requires double-width CAS primitive
- memory-consuming since it requires separate free-list for each type stored in the containers
5. Default threading model is changed (see doc for cds::threading namespace):
- for Windows and MSVC++, CDS_THREADING_WIN_TLS is the default now
- for *nix and GCC, CDS_THREADING_PTHREAD is the default now
6. Added GCC 4.6 support (constexpr)
7. Added Microsoft Visual Studio 2010 (vc10) solution
This is general release. New features:
1. Added: cds::Initialize and cds::Terminate functions that initializes and frees library's internal structures.
2. Added: cds::memory::michael::Heap - Michael's lock-free allocator
3. Added: Exponential back-off strategy for spinning
4. Added: cds::queue::vyukov_mpmc_bounded - bounded queue
developed by Dmitry Vyukov (http://www.1024cores.net)
5. Added: support for FreeBSD amd64, x86
This is bug-fix release.
1. [Bug 3157201] Added implementation of threading manager based on Windows TLS API, see cds::threading::wintls::Manager. Added CDS_THREADING_WIN_TLS macro. See docs for cds::threading namespace for details.
2. Fixed bug in cds::threading::pthread::Manager: ptb_gc has not been initialized properly.
3. New function
template <typename T, typename FUNC>
bool erase( const key_type& key, T& dest, FUNC func ) ;
has been added to all map classes.... read more
This is bug-fix release
Changes:
1. [Bug 3130852] cds::queue::TZCyclicQueue::empty() has been corrected
2. [Bug 3128161] It seems, GCC 4.4 has a bug in __thread on x86 and x86_64. New "threading model"
CDS_THREADING_AUTODETECT has been added. See docs of cds::threading namespace for details
3. Fixed errors in the "Pass-the-Buck" garbage collector (namespace cds::gc::ptb)
4. [Bug 3128148] The code is aligned with the C++ standard (minor violations has been removed)
5. [Bug 3141654] missing break statement for atomic store - fixed
6. Added in-place scan strategy to cds::gc::hzp::GarbageCollector. The strategy does not allocate any memory.
7. Fixed bugs in HRC and tagged GC