git: 5a585e4ae52b - main - devel/libcds: New port: C++ library of Concurrent Data Structures
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 26 Sep 2022 06:30:35 UTC
The branch main has been updated by yuri: URL: https://cgit.FreeBSD.org/ports/commit/?id=5a585e4ae52b8c1715ca2a64a9bb464b6caed337 commit 5a585e4ae52b8c1715ca2a64a9bb464b6caed337 Author: Yuri Victorovich <yuri@FreeBSD.org> AuthorDate: 2022-09-26 06:29:48 +0000 Commit: Yuri Victorovich <yuri@FreeBSD.org> CommitDate: 2022-09-26 06:30:27 +0000 devel/libcds: New port: C++ library of Concurrent Data Structures --- devel/Makefile | 1 + devel/libcds/Makefile | 22 ++ devel/libcds/distinfo | 3 + devel/libcds/files/patch-test_CMakeLists.txt.gtest | 17 + devel/libcds/pkg-descr | 22 ++ devel/libcds/pkg-plist | 360 +++++++++++++++++++++ 6 files changed, 425 insertions(+) diff --git a/devel/Makefile b/devel/Makefile index dc445d542f75..d91c584b9c15 100644 --- a/devel/Makefile +++ b/devel/Makefile @@ -1120,6 +1120,7 @@ SUBDIR += libcbor SUBDIR += libccid SUBDIR += libcdb + SUBDIR += libcds SUBDIR += libcfu SUBDIR += libchipcard SUBDIR += libcidr diff --git a/devel/libcds/Makefile b/devel/libcds/Makefile new file mode 100644 index 000000000000..878b10c12594 --- /dev/null +++ b/devel/libcds/Makefile @@ -0,0 +1,22 @@ +PORTNAME= libcds +DISTVERSIONPREFIX= v +DISTVERSION= 2.3.3-102 +DISTVERSIONSUFFIX= -g9985d2a8 +CATEGORIES= devel + +MAINTAINER= yuri@FreeBSD.org +COMMENT= C++ library of Concurrent Data Structures +WWW= https://github.com/khizmax/libcds + +LICENSE= BSL +LICENSE_FILE= ${WRKSRC}/LICENSE + +USES= cmake:testing compiler:c++11-lang +USE_LDCONFIG= yes + +USE_GITHUB= yes +GH_ACCOUNT= khizmax + +CMAKE_TESTING_ON= LIBCDS_WITH_TESTS # tests fail to compile, see https://github.com/khizmax/libcds/issues/173 + +.include <bsd.port.mk> diff --git a/devel/libcds/distinfo b/devel/libcds/distinfo new file mode 100644 index 000000000000..bf966ca92815 --- /dev/null +++ b/devel/libcds/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1664166610 +SHA256 (khizmax-libcds-v2.3.3-102-g9985d2a8_GH0.tar.gz) = 9ea263bb20f47e36a0db8f0f891f4da30706378774ab53c09b5dc9763ff2afa0 +SIZE (khizmax-libcds-v2.3.3-102-g9985d2a8_GH0.tar.gz) = 1466062 diff --git a/devel/libcds/files/patch-test_CMakeLists.txt.gtest b/devel/libcds/files/patch-test_CMakeLists.txt.gtest new file mode 100644 index 000000000000..5a6b3b1f5217 --- /dev/null +++ b/devel/libcds/files/patch-test_CMakeLists.txt.gtest @@ -0,0 +1,17 @@ +--- test/CMakeLists.txt.gtest.orig 2022-09-26 04:31:53 UTC ++++ test/CMakeLists.txt.gtest +@@ -5,11 +5,11 @@ project(googletest-download NONE) + include(ExternalProject) + ExternalProject_Add(googletest + GIT_REPOSITORY https://github.com/google/googletest.git +- GIT_TAG master ++ GIT_TAG main + SOURCE_DIR "${CMAKE_BINARY_DIR}/test/googletest-src" + BINARY_DIR "${CMAKE_BINARY_DIR}/test/googletest-build" + CONFIGURE_COMMAND "" + BUILD_COMMAND "" + INSTALL_COMMAND "" + TEST_COMMAND "" +-) +\ No newline at end of file ++) diff --git a/devel/libcds/pkg-descr b/devel/libcds/pkg-descr new file mode 100644 index 000000000000..82d0a586f5cd --- /dev/null +++ b/devel/libcds/pkg-descr @@ -0,0 +1,22 @@ +The Concurrent Data Structures (CDS) library is a collection of concurrent +containers that don't require external (manual) synchronization for shared +access, and safe memory reclamation (SMR) algorithms like Hazard Pointer and +user-space RCU that is used as an epoch-based SMR. + +CDS is mostly header-only template library. Only SMR core implementation is +segregated to .so file. + +The library contains the implementations of the following containers: +* lock-free stack with optional elimination support +* several algo for lock-free queue, including classic Michael & Scott + algorithm and its derivatives, the flat combining queue, the segmented queue. +* several implementation of unordered set/map - lock-free and fine-grained + lock-based +* flat-combining technique +* lock-free skip-list +* lock-free FeldmanHashMap/Set Multi-Level Array Hash with thread-safe + bidirectional iterator support +* Bronson's et al algorithm for fine-grained lock-based AVL tree + +Generally, each container has an intrusive and non-intrusive (STL-like) version +belonging to cds::intrusive and cds::container namespace respectively. diff --git a/devel/libcds/pkg-plist b/devel/libcds/pkg-plist new file mode 100644 index 000000000000..bf6a08210aa4 --- /dev/null +++ b/devel/libcds/pkg-plist @@ -0,0 +1,360 @@ +include/cds/algo/atomic.h +include/cds/algo/backoff_strategy.h +include/cds/algo/base.h +include/cds/algo/bit_reversal.h +include/cds/algo/bitop.h +include/cds/algo/elimination.h +include/cds/algo/elimination_opt.h +include/cds/algo/elimination_tls.h +include/cds/algo/flat_combining.h +include/cds/algo/flat_combining/defs.h +include/cds/algo/flat_combining/kernel.h +include/cds/algo/flat_combining/wait_strategy.h +include/cds/algo/int_algo.h +include/cds/algo/split_bitstring.h +include/cds/compiler/backoff.h +include/cds/compiler/bitop.h +include/cds/compiler/clang/defs.h +include/cds/compiler/cxx11_atomic.h +include/cds/compiler/defs.h +include/cds/compiler/feature_tsan.h +include/cds/compiler/gcc/amd64/backoff.h +include/cds/compiler/gcc/amd64/bitop.h +include/cds/compiler/gcc/amd64/cxx11_atomic.h +include/cds/compiler/gcc/arm7/backoff.h +include/cds/compiler/gcc/arm8/backoff.h +include/cds/compiler/gcc/compiler_barriers.h +include/cds/compiler/gcc/compiler_macro.h +include/cds/compiler/gcc/defs.h +include/cds/compiler/gcc/ia64/backoff.h +include/cds/compiler/gcc/ia64/bitop.h +include/cds/compiler/gcc/ia64/cxx11_atomic.h +include/cds/compiler/gcc/ppc64/backoff.h +include/cds/compiler/gcc/ppc64/bitop.h +include/cds/compiler/gcc/sparc/backoff.h +include/cds/compiler/gcc/sparc/bitop.h +include/cds/compiler/gcc/sparc/cxx11_atomic.h +include/cds/compiler/gcc/x86/backoff.h +include/cds/compiler/gcc/x86/bitop.h +include/cds/compiler/gcc/x86/cxx11_atomic.h +include/cds/compiler/gcc/x86/cxx11_atomic32.h +include/cds/compiler/icl/compiler_barriers.h +include/cds/compiler/icl/defs.h +include/cds/compiler/vc/amd64/backoff.h +include/cds/compiler/vc/amd64/bitop.h +include/cds/compiler/vc/amd64/cxx11_atomic.h +include/cds/compiler/vc/compiler_barriers.h +include/cds/compiler/vc/defs.h +include/cds/compiler/vc/x86/backoff.h +include/cds/compiler/vc/x86/bitop.h +include/cds/compiler/vc/x86/cxx11_atomic.h +include/cds/container/basket_queue.h +include/cds/container/bronson_avltree_map_rcu.h +include/cds/container/cuckoo_map.h +include/cds/container/cuckoo_set.h +include/cds/container/details/base.h +include/cds/container/details/bronson_avltree_base.h +include/cds/container/details/cuckoo_base.h +include/cds/container/details/ellen_bintree_base.h +include/cds/container/details/feldman_hashmap_base.h +include/cds/container/details/feldman_hashset_base.h +include/cds/container/details/guarded_ptr_cast.h +include/cds/container/details/iterable_list_base.h +include/cds/container/details/lazy_list_base.h +include/cds/container/details/make_iterable_kvlist.h +include/cds/container/details/make_iterable_list.h +include/cds/container/details/make_lazy_kvlist.h +include/cds/container/details/make_lazy_list.h +include/cds/container/details/make_michael_kvlist.h +include/cds/container/details/make_michael_list.h +include/cds/container/details/make_skip_list_map.h +include/cds/container/details/make_skip_list_set.h +include/cds/container/details/make_split_list_set.h +include/cds/container/details/make_split_list_set_iterable_list.h +include/cds/container/details/make_split_list_set_lazy_list.h +include/cds/container/details/make_split_list_set_michael_list.h +include/cds/container/details/michael_list_base.h +include/cds/container/details/michael_map_base.h +include/cds/container/details/michael_set_base.h +include/cds/container/details/skip_list_base.h +include/cds/container/details/split_list_base.h +include/cds/container/ellen_bintree_map_dhp.h +include/cds/container/ellen_bintree_map_hp.h +include/cds/container/ellen_bintree_map_rcu.h +include/cds/container/ellen_bintree_set_dhp.h +include/cds/container/ellen_bintree_set_hp.h +include/cds/container/ellen_bintree_set_rcu.h +include/cds/container/fcdeque.h +include/cds/container/fcpriority_queue.h +include/cds/container/fcqueue.h +include/cds/container/fcstack.h +include/cds/container/feldman_hashmap_dhp.h +include/cds/container/feldman_hashmap_hp.h +include/cds/container/feldman_hashmap_rcu.h +include/cds/container/feldman_hashset_dhp.h +include/cds/container/feldman_hashset_hp.h +include/cds/container/feldman_hashset_rcu.h +include/cds/container/impl/bronson_avltree_map_rcu.h +include/cds/container/impl/ellen_bintree_map.h +include/cds/container/impl/ellen_bintree_set.h +include/cds/container/impl/feldman_hashmap.h +include/cds/container/impl/feldman_hashset.h +include/cds/container/impl/iterable_kvlist.h +include/cds/container/impl/iterable_list.h +include/cds/container/impl/lazy_kvlist.h +include/cds/container/impl/lazy_list.h +include/cds/container/impl/michael_kvlist.h +include/cds/container/impl/michael_list.h +include/cds/container/impl/skip_list_map.h +include/cds/container/impl/skip_list_set.h +include/cds/container/iterable_kvlist_dhp.h +include/cds/container/iterable_kvlist_hp.h +include/cds/container/iterable_list_dhp.h +include/cds/container/iterable_list_hp.h +include/cds/container/lazy_kvlist_dhp.h +include/cds/container/lazy_kvlist_hp.h +include/cds/container/lazy_kvlist_nogc.h +include/cds/container/lazy_kvlist_rcu.h +include/cds/container/lazy_list_dhp.h +include/cds/container/lazy_list_hp.h +include/cds/container/lazy_list_nogc.h +include/cds/container/lazy_list_rcu.h +include/cds/container/michael_kvlist_dhp.h +include/cds/container/michael_kvlist_hp.h +include/cds/container/michael_kvlist_nogc.h +include/cds/container/michael_kvlist_rcu.h +include/cds/container/michael_list_dhp.h +include/cds/container/michael_list_hp.h +include/cds/container/michael_list_nogc.h +include/cds/container/michael_list_rcu.h +include/cds/container/michael_map.h +include/cds/container/michael_map_nogc.h +include/cds/container/michael_map_rcu.h +include/cds/container/michael_set.h +include/cds/container/michael_set_nogc.h +include/cds/container/michael_set_rcu.h +include/cds/container/moir_queue.h +include/cds/container/mspriority_queue.h +include/cds/container/msqueue.h +include/cds/container/optimistic_queue.h +include/cds/container/rwqueue.h +include/cds/container/segmented_queue.h +include/cds/container/skip_list_map_dhp.h +include/cds/container/skip_list_map_hp.h +include/cds/container/skip_list_map_nogc.h +include/cds/container/skip_list_map_rcu.h +include/cds/container/skip_list_set_dhp.h +include/cds/container/skip_list_set_hp.h +include/cds/container/skip_list_set_nogc.h +include/cds/container/skip_list_set_rcu.h +include/cds/container/split_list_map.h +include/cds/container/split_list_map_nogc.h +include/cds/container/split_list_map_rcu.h +include/cds/container/split_list_set.h +include/cds/container/split_list_set_nogc.h +include/cds/container/split_list_set_rcu.h +include/cds/container/striped_map.h +include/cds/container/striped_map/boost_flat_map.h +include/cds/container/striped_map/boost_list.h +include/cds/container/striped_map/boost_map.h +include/cds/container/striped_map/boost_slist.h +include/cds/container/striped_map/boost_unordered_map.h +include/cds/container/striped_map/std_hash_map.h +include/cds/container/striped_map/std_list.h +include/cds/container/striped_map/std_map.h +include/cds/container/striped_set.h +include/cds/container/striped_set/adapter.h +include/cds/container/striped_set/boost_flat_set.h +include/cds/container/striped_set/boost_list.h +include/cds/container/striped_set/boost_set.h +include/cds/container/striped_set/boost_slist.h +include/cds/container/striped_set/boost_stable_vector.h +include/cds/container/striped_set/boost_unordered_set.h +include/cds/container/striped_set/boost_vector.h +include/cds/container/striped_set/std_hash_set.h +include/cds/container/striped_set/std_list.h +include/cds/container/striped_set/std_set.h +include/cds/container/striped_set/std_vector.h +include/cds/container/treiber_stack.h +include/cds/container/vyukov_mpmc_cycle_queue.h +include/cds/container/weak_ringbuffer.h +include/cds/details/aligned_allocator.h +include/cds/details/aligned_type.h +include/cds/details/allocator.h +include/cds/details/binary_functor_wrapper.h +include/cds/details/bit_reverse_counter.h +include/cds/details/bitop_generic.h +include/cds/details/bounded_container.h +include/cds/details/defs.h +include/cds/details/is_aligned.h +include/cds/details/make_const_type.h +include/cds/details/marked_ptr.h +include/cds/details/size_t_cast.h +include/cds/details/throw_exception.h +include/cds/details/type_padding.h +include/cds/gc/default_gc.h +include/cds/gc/details/hp_common.h +include/cds/gc/details/retired_ptr.h +include/cds/gc/dhp.h +include/cds/gc/hp.h +include/cds/gc/hp_membar.h +include/cds/gc/nogc.h +include/cds/init.h +include/cds/intrusive/basket_queue.h +include/cds/intrusive/cuckoo_set.h +include/cds/intrusive/details/base.h +include/cds/intrusive/details/ellen_bintree_base.h +include/cds/intrusive/details/feldman_hashset_base.h +include/cds/intrusive/details/iterable_list_base.h +include/cds/intrusive/details/lazy_list_base.h +include/cds/intrusive/details/michael_list_base.h +include/cds/intrusive/details/michael_set_base.h +include/cds/intrusive/details/node_traits.h +include/cds/intrusive/details/raw_ptr_disposer.h +include/cds/intrusive/details/single_link_struct.h +include/cds/intrusive/details/skip_list_base.h +include/cds/intrusive/details/split_list_base.h +include/cds/intrusive/ellen_bintree_dhp.h +include/cds/intrusive/ellen_bintree_hp.h +include/cds/intrusive/ellen_bintree_rcu.h +include/cds/intrusive/fcqueue.h +include/cds/intrusive/fcstack.h +include/cds/intrusive/feldman_hashset_dhp.h +include/cds/intrusive/feldman_hashset_hp.h +include/cds/intrusive/feldman_hashset_rcu.h +include/cds/intrusive/free_list.h +include/cds/intrusive/free_list_cached.h +include/cds/intrusive/free_list_selector.h +include/cds/intrusive/free_list_tagged.h +include/cds/intrusive/impl/ellen_bintree.h +include/cds/intrusive/impl/feldman_hashset.h +include/cds/intrusive/impl/iterable_list.h +include/cds/intrusive/impl/lazy_list.h +include/cds/intrusive/impl/michael_list.h +include/cds/intrusive/impl/skip_list.h +include/cds/intrusive/iterable_list_dhp.h +include/cds/intrusive/iterable_list_hp.h +include/cds/intrusive/lazy_list_dhp.h +include/cds/intrusive/lazy_list_hp.h +include/cds/intrusive/lazy_list_nogc.h +include/cds/intrusive/lazy_list_rcu.h +include/cds/intrusive/michael_list_dhp.h +include/cds/intrusive/michael_list_hp.h +include/cds/intrusive/michael_list_nogc.h +include/cds/intrusive/michael_list_rcu.h +include/cds/intrusive/michael_set.h +include/cds/intrusive/michael_set_nogc.h +include/cds/intrusive/michael_set_rcu.h +include/cds/intrusive/moir_queue.h +include/cds/intrusive/mspriority_queue.h +include/cds/intrusive/msqueue.h +include/cds/intrusive/optimistic_queue.h +include/cds/intrusive/options.h +include/cds/intrusive/segmented_queue.h +include/cds/intrusive/skip_list_dhp.h +include/cds/intrusive/skip_list_hp.h +include/cds/intrusive/skip_list_nogc.h +include/cds/intrusive/skip_list_rcu.h +include/cds/intrusive/split_list.h +include/cds/intrusive/split_list_nogc.h +include/cds/intrusive/split_list_rcu.h +include/cds/intrusive/striped_set.h +include/cds/intrusive/striped_set/adapter.h +include/cds/intrusive/striped_set/boost_avl_set.h +include/cds/intrusive/striped_set/boost_list.h +include/cds/intrusive/striped_set/boost_set.h +include/cds/intrusive/striped_set/boost_sg_set.h +include/cds/intrusive/striped_set/boost_slist.h +include/cds/intrusive/striped_set/boost_splay_set.h +include/cds/intrusive/striped_set/boost_treap_set.h +include/cds/intrusive/striped_set/boost_unordered_set.h +include/cds/intrusive/striped_set/resizing_policy.h +include/cds/intrusive/striped_set/striping_policy.h +include/cds/intrusive/treiber_stack.h +include/cds/intrusive/vyukov_mpmc_cycle_queue.h +include/cds/lock/array.h +include/cds/lock/spinlock.h +include/cds/memory/pool_allocator.h +include/cds/memory/vyukov_queue_pool.h +include/cds/opt/buffer.h +include/cds/opt/compare.h +include/cds/opt/hash.h +include/cds/opt/options.h +include/cds/opt/permutation.h +include/cds/opt/value_cleaner.h +include/cds/os/aix/alloc_aligned.h +include/cds/os/aix/timer.h +include/cds/os/aix/topology.h +include/cds/os/alloc_aligned.h +include/cds/os/details/fake_topology.h +include/cds/os/free_bsd/alloc_aligned.h +include/cds/os/free_bsd/timer.h +include/cds/os/free_bsd/topology.h +include/cds/os/hpux/alloc_aligned.h +include/cds/os/hpux/timer.h +include/cds/os/hpux/topology.h +include/cds/os/libc/alloc_aligned.h +include/cds/os/linux/alloc_aligned.h +include/cds/os/linux/timer.h +include/cds/os/linux/topology.h +include/cds/os/osx/timer.h +include/cds/os/osx/topology.h +include/cds/os/posix/alloc_aligned.h +include/cds/os/posix/fake_topology.h +include/cds/os/posix/thread.h +include/cds/os/posix/timer.h +include/cds/os/sunos/alloc_aligned.h +include/cds/os/sunos/timer.h +include/cds/os/sunos/topology.h +include/cds/os/thread.h +include/cds/os/timer.h +include/cds/os/topology.h +include/cds/os/win/alloc_aligned.h +include/cds/os/win/thread.h +include/cds/os/win/timer.h +include/cds/os/win/topology.h +include/cds/sync/injecting_monitor.h +include/cds/sync/lock_array.h +include/cds/sync/monitor.h +include/cds/sync/pool_monitor.h +include/cds/sync/spinlock.h +include/cds/threading/details/_common.h +include/cds/threading/details/auto_detect.h +include/cds/threading/details/cxx11.h +include/cds/threading/details/cxx11_manager.h +include/cds/threading/details/gcc.h +include/cds/threading/details/gcc_manager.h +include/cds/threading/details/msvc.h +include/cds/threading/details/msvc_manager.h +include/cds/threading/details/pthread.h +include/cds/threading/details/pthread_manager.h +include/cds/threading/details/wintls.h +include/cds/threading/details/wintls_manager.h +include/cds/threading/model.h +include/cds/urcu/details/base.h +include/cds/urcu/details/check_deadlock.h +include/cds/urcu/details/gp.h +include/cds/urcu/details/gp_decl.h +include/cds/urcu/details/gpb.h +include/cds/urcu/details/gpi.h +include/cds/urcu/details/gpt.h +include/cds/urcu/details/sh.h +include/cds/urcu/details/sh_decl.h +include/cds/urcu/details/sig_buffered.h +include/cds/urcu/dispose_thread.h +include/cds/urcu/exempt_ptr.h +include/cds/urcu/general_buffered.h +include/cds/urcu/general_instant.h +include/cds/urcu/general_threaded.h +include/cds/urcu/options.h +include/cds/urcu/raw_ptr.h +include/cds/urcu/signal_buffered.h +include/cds/user_setup/allocator.h +include/cds/user_setup/cache_line.h +include/cds/user_setup/threading.h +include/cds/version.h +lib/cmake/LibCDS/LibCDSConfig-%%CMAKE_BUILD_TYPE%%.cmake +lib/cmake/LibCDS/LibCDSConfig.cmake +lib64/libcds-s.a +lib64/libcds.so +lib64/libcds.so.2.3.3