libcds v2.3.0 Release Notes

Release Date: 2017-07-31 // over 6 years ago
    • ๐Ÿ”จ 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