Compare commits

...

724 Commits

Author SHA1 Message Date
joaquintides 3e76b1cf68 [skip ci] beautified some badges 2023-11-19 18:45:21 +01:00
joaquintides 22f29718e4 changed drone badges 2023-11-19 09:48:38 +01:00
joaquintides f7c7f8fdd2 [skip ci] added Drone badges 2023-11-18 11:30:47 +01:00
joaquintides 7fd94b9df7 Fix/bucket iterator indirection operator (#220 rewrite) (#221)
* Add tests for member of pointer operator for bucket iterators

* Fix erroneous conversion from node* to value_type* in bucket iterators

Originally caughy by vslashg  from PR https://github.com/boostorg/unordered/pull/220

* Update change log

* Update GHA config to use containers in C++20 builds for clang-14 as it's incompatible with libstdc++-13

* fixed Python installation problem

* tried variation of former fix

* tried another variation of former fix

* tried yet another variation

* editorial

---------

Co-authored-by: Christian Mazakas <christian.mazakas@gmail.com>
2023-11-17 08:51:40 +01:00
joaquintides 1c0e54ee3e updated boost::unordered_[multi]set and boost::unordered_(flat|node)_map benchmarks 2023-11-06 18:20:36 +01:00
joaquintides 329022b23c removed unnecesary picture tags README.md 2023-10-31 09:38:53 +01:00
joaquintides 47f5be3a3f typo 2023-10-31 08:59:21 +01:00
joaquintides de2ac0ce33 revamped README.md 2023-10-29 18:46:51 +01:00
joaquintides 42df4f2749 removed lifting of swap and ==/!= operations 2023-10-22 20:16:05 +02:00
joaquintides dbe93c765c asserted allocator equality on unordered_node_(map|set)::merge and updated docs 2023-10-21 12:35:59 +02:00
joaquintides ea4fc5e66d fine-tuned element prefetching in unprotected_bulk_visit 2023-10-18 18:20:22 +02:00
Peter Dimov 0e19223e5b Replace uses of boost::enable_if_t in deduction guides with std::enable_if_t 2023-10-12 13:13:56 +03:00
joaquintides 8ee48fe909 Feature/bulk visit (#217) 2023-10-11 12:50:28 +02:00
joaquintides ef0b3a0cd8 fixed #201 2023-10-04 17:38:33 +02:00
Christian Mazakas 44b669a71c Merge pull request #215 from cmazakas/cxx03_deprecation
cxx03 deprecation
2023-09-29 14:59:59 -07:00
Christian Mazakas 554ce65a69 Remove unnecessary forced inlining of bool conversion 2023-09-29 10:52:34 -07:00
Christian Mazakas c37d9a3bf1 Clean up tests to properly use boost::unordered::piecewise_construct and ensure it's a humble alias for its std counterpart 2023-09-29 08:29:06 -07:00
Christian Mazakas 4fcc6a9cab Manually implement explicit boolean conversion, removing header dependency on Core's polyfill 2023-09-29 08:03:49 -07:00
Christian Mazakas 0d61746fa3 Remove unnecessary requires_cxx11 header 2023-09-29 08:03:11 -07:00
Christian Mazakas 20559cbe5c Remove extraneous whitespace introduced by a clang-format bug 2023-09-29 07:44:52 -07:00
Christian Mazakas 6728ffcf6d Cleanup polyfilled type traits helpers to derive from integral constant 2023-09-29 07:42:58 -07:00
Christian Mazakas 9f5f8b1b48 Update maintainers list in libraries.json 2023-09-28 21:27:46 -07:00
Christian Mazakas aedebff4e1 Remove extraneous header include of Core's addressof impl 2023-09-28 21:27:46 -07:00
Christian Mazakas 47fa9cd17e Pull triviality type traits into internal type_traits header 2023-09-28 21:27:46 -07:00
Christian Mazakas a0e1bc295a Update libraries.json 2023-09-28 12:54:51 -07:00
Christian Mazakas f5bd5bc3d0 Cleanup default-constructiblity check for gcc-4 2023-09-28 12:52:13 -07:00
Christian Mazakas 630031706b Remove project test requirements and remove problematic CI entries 2023-09-28 09:51:47 -07:00
Christian Mazakas 9bc7876583 Update foa to be gcc-4.8 compliant 2023-09-28 08:31:14 -07:00
Christian Mazakas b482890453 Update testing requirements to re-enable gcc-4.8 and above 2023-09-28 08:27:12 -07:00
Christian Mazakas bc764d34cf Remove extraneous workarounds for gcc-4 in foa core header 2023-09-27 13:03:15 -07:00
Christian Mazakas a9da328e1d Add missing copyright to static_assert() header 2023-09-27 13:03:15 -07:00
Christian Mazakas 087f2052fc Update include paths to use ContainerHash instead of Functional for hash 2023-09-27 13:03:15 -07:00
Christian Mazakas 51a75c0fd0 Replace usage of make_void with void_t 2023-09-27 13:03:15 -07:00
Christian Mazakas ce5033c4a0 Update out-of-line definitions in prime_fmod to be conditional on pre-c++17 support 2023-09-27 13:03:15 -07:00
Christian Mazakas bcbb13e0cf Add missing licensing to opt_storage header 2023-09-27 13:03:15 -07:00
Christian Mazakas 7aac692162 Replace all usages of boost::addressof with their std counterpart 2023-09-27 13:03:15 -07:00
Christian Mazakas f1729bb8a1 Remove unused choice<n> helper structs 2023-09-27 12:21:15 -07:00
Christian Mazakas b4884b7201 Relocate piecewise_construct to impl file, remove unnecessary fwd header 2023-09-27 12:21:15 -07:00
Christian Mazakas b0a13f896f Remove problematic characters from clang GHA job names 2023-09-27 11:44:45 -07:00
joaquintides cb86544fcf updated docs to reflect C++03 support drop 2023-09-27 11:44:45 -07:00
Christian Mazakas 6c97eabbb3 Refactor prime_fmod_size policy to use static members in lieu of namespace-scope ones 2023-09-27 11:44:45 -07:00
Christian Mazakas 968c2e9c11 Split clang GHA jobs 2023-09-27 11:44:45 -07:00
Christian Mazakas 53a6566a98 Split up GHA gcc-12 sanitizer jobs 2023-09-27 11:44:45 -07:00
Christian Mazakas 9b1ec6cbce Reinstate boost::unordered::piecewise_construct
Maintain backwards-compatibility for users instead of forcing them to change to `std::`
2023-09-27 11:44:45 -07:00
Christian Mazakas 3f3b2128ec Update extract() SFINAE to be friendly to msvc-14.0
msvc-14.0 seems to require the parameter pack be explicitly mentioned though no other compilers seem to have this issue
2023-09-27 11:44:45 -07:00
Christian Mazakas d3e6be7356 Replace boost::addressof with std::addressof
For some reason, gcc-5 and 6 don't like Boost's impl here but the std one seems to work
2023-09-27 11:44:45 -07:00
Christian Mazakas 423eb08f00 Work around bugs in gcc's analysis
Under `-m32 -O3` builds, it seems like gcc gets confused by the usage of malloc and calloc so we opt into the C++ versions, operator new and delete
2023-09-27 11:44:45 -07:00
Christian Mazakas 777f2084a3 Remove dependency on TypeTraits 2023-09-27 11:44:45 -07:00
Christian Mazakas e5bf418c3d Add missing Boost.Tuple #include 2023-09-27 11:44:45 -07:00
Christian Mazakas 9d8beff688 Remove dependency on Boost.Tuple 2023-09-27 11:44:45 -07:00
Christian Mazakas 91f63697a7 Replace <boost/limits> with STL <limits> 2023-09-27 11:44:44 -07:00
Christian Mazakas 22344ab27f Add missing <algorithm> include for std::max 2023-09-27 11:44:44 -07:00
Christian Mazakas d742ee3a3b Remove unnecessary BOOST_UNORDERED_USE_MOVE tests 2023-09-27 11:44:44 -07:00
Christian Mazakas d881d4d5e2 Remove Boost.StaticAssert 2023-09-27 11:44:44 -07:00
Christian Mazakas 15318f0e46 Refactor prime_fmod_size impl to no longer use Boost.Preprocessor 2023-09-27 11:44:44 -07:00
Christian Mazakas e32f72d69c Remove dependency on Boost.Utility in implementation.hpp 2023-09-27 11:44:44 -07:00
Christian Mazakas e37e749b0b Remove Boost.PP from implementation.hpp 2023-09-27 11:44:44 -07:00
Christian Mazakas b02d013d44 Add missing <algorithm> include 2023-09-27 11:44:44 -07:00
Christian Mazakas 33dbd7cd76 Remove dependency on Boost.Move 2023-09-27 11:44:44 -07:00
Christian Mazakas 8f382e874d Remove BOOST_COPYABLE_AND_MOVABLE 2023-09-27 11:44:44 -07:00
Christian Mazakas bce9b5927a Remove BOOST_MOVABLE_BUT_NOT_COPYABLE 2023-09-27 11:44:44 -07:00
Christian Mazakas c6aa90651c Final cleanup of BOOST_NO_CXX11_* 2023-09-27 11:44:44 -07:00
Christian Mazakas cddb7cb8b1 Remove BOOST_NO_CXX11_NOEXCEPT 2023-09-27 11:44:44 -07:00
Christian Mazakas a36a7327eb Remove BOOST_NO_CXX11_ALLOCATOR 2023-09-27 11:44:44 -07:00
Christian Mazakas d2dc503e4a Remove BOOST_NO_CXX11_DEFAULTED_FUNCTIONS 2023-09-27 11:44:44 -07:00
Christian Mazakas 0c7b51cc16 Remove BOOST_NO_CXX11_RVALUE_REFERENCES 2023-09-27 11:44:44 -07:00
Christian Mazakas 3f0f8efbba Remove BOOST_NO_CXX11_VARIADIC_TEMPLATES 2023-09-27 11:44:44 -07:00
Christian Mazakas 8d59040ece Remove BOOST_COPY_ASSIGN_REF 2023-09-27 11:44:44 -07:00
Christian Mazakas 15d04295d6 Disable self-move warnings for gcc in node_handle_tests 2023-09-27 11:44:44 -07:00
Christian Mazakas 866ab46385 Remove BOOST_FWD_REF 2023-09-27 11:44:44 -07:00
Christian Mazakas 4cd1827104 Remove BOOST_RV_REF 2023-09-27 11:44:44 -07:00
Christian Mazakas 3bd7e93ac6 Remove BOOST_UNORDERED_TUPLE_ARGS 2023-09-27 11:44:44 -07:00
Christian Mazakas 1d991d065e Remove BOOST_UNORDERED_EMPLACE_LIMIT 2023-09-27 11:44:44 -07:00
Christian Mazakas 8782036a88 Remove BOOST_UNORDERED_HAVE_PIECEWISE_CONSTRUCT 2023-09-27 11:44:44 -07:00
Christian Mazakas f088a5b9b9 Remove usage of boost::forward 2023-09-27 11:44:44 -07:00
Christian Mazakas 16386f586f Remove usage of BOOST_UNORDERED_CXX11_CONSTRUCTION 2023-09-27 11:44:44 -07:00
Christian Mazakas 59a7fa09ba Remove usage of BOOST_NO_CXX11_HDR_TYPE_TRAITS 2023-09-27 11:44:44 -07:00
Christian Mazakas 8cbd9ad80a Remove BOOST_NO_CXX11_HDR_INITIALIZER_LIST checks 2023-09-27 11:44:44 -07:00
Christian Mazakas b0ee2b5116 Remove BOOST_UNORDERED_EMPLACE_TEMPLATE machinery 2023-09-27 11:44:44 -07:00
Christian Mazakas adb91ac06d Replace boost::move with std::move 2023-09-27 11:44:44 -07:00
Christian Mazakas 11322de29f Remove BOOST_CONSTEXPR 2023-09-27 11:44:44 -07:00
Christian Mazakas 0c90a84aa0 Add missing #include for Boost.Assert 2023-09-27 11:44:44 -07:00
Christian Mazakas aa16d1b8a9 Remove BOOST_NOEXCEPT 2023-09-27 11:44:44 -07:00
joaquintides 6b65c8f230 fixed assignment bug with POCXA, fancy, unequal allocators (#214) 2023-09-26 20:08:13 +02:00
Christian Mazakas b445ff639d Merge pull request #213 from cmazakas/self-include-tests
self-include tests
2023-09-22 13:02:45 -07:00
Christian Mazakas 08187c7a1f Swap _include_tests suffix for _hpp 2023-09-19 12:27:19 -07:00
Christian Mazakas 6953014874 Update self-include tests to use a significantly shorter mangling scheme for msvc targets 2023-09-19 11:42:23 -07:00
Christian Mazakas 7b24cf6607 Cleanup self-include tests to compile solely as object files 2023-09-19 08:51:12 -07:00
Christian Mazakas 6f0a715541 Update drone.bat to abbreviate paths
Our generated executable names exceed the MAX_PATH length Win32 imposes
2023-09-18 15:32:48 -07:00
Christian Mazakas 85c7900339 Add missing element_type includes 2023-09-18 13:25:21 -07:00
Christian Mazakas c0cd51bd2a Update test jamfile to glob for project headers and create self-include tests 2023-09-18 13:25:21 -07:00
joaquintides 73891c6ec8 Merge pull request #212 from boostorg/feature/concurrent_flat_set
Feature/concurrent_flat_set
2023-09-16 18:36:36 +02:00
joaquintides 82f4d9899c stylistic/editorial 2023-09-16 12:17:07 +02:00
joaquintides cad3509a17 added boost::concurrent_flat_set to mmap_tests 2023-09-16 11:18:39 +02:00
joaquintides 44582ecbb9 removed unused typedefs 2023-09-16 10:18:36 +02:00
joaquintides 9e38e3c578 typos 2023-09-16 10:15:36 +02:00
joaquintides d5d6a18298 removed unused utilities 2023-09-16 10:15:36 +02:00
joaquintides 88f8228079 tested concurrent_flat_set 2023-09-16 10:15:36 +02:00
joaquintides 31c3ce97de avoided sign-conversion warning 2023-09-16 10:15:36 +02:00
joaquintides 651f209e20 shut down VS warning 2023-09-16 10:15:36 +02:00
joaquintides d9d4ff1676 removed unused typedef 2023-09-16 10:15:36 +02:00
joaquintides 2ce456768d completed concurrent_flat_set testing 2023-09-16 10:15:36 +02:00
joaquintides 65d4a9cafa fixed try_emplace tests after (value|init)_type_generator removal in helpers.hpp 2023-09-16 10:15:36 +02:00
joaquintides 8d2a5c25ea tested boost::concurrent_flat_set 2023-09-16 10:15:05 +02:00
joaquintides 49f0929466 documented boost::concurrent_flat_set 2023-09-16 09:50:22 +02:00
joaquintides 0673c5653c added boost::concurrent_flat_set 2023-09-16 09:50:22 +02:00
Christian Mazakas a3a1ab6ad2 Merge pull request #211 from boostorg/fix/gh-189
fix/gh-189
2023-09-15 14:59:00 -07:00
Christian Mazakas 7d639e2e86 Update docs noexcept specification for move assignment 2023-09-15 09:50:33 -07:00
Christian Mazakas 32b9f06fe5 Update release notes to include fancy pointer support 2023-09-15 09:50:33 -07:00
Christian Mazakas 3d302980d4 Update mmap_tests to use Boost.UUID to mangle executable names
CIs can run multiple instances of the test suite at once resulting in duplicate shm_names which is disastrous for each test
2023-09-15 09:50:33 -07:00
Christian Mazakas 1dc1962b8c Update cfoa's assign tests to cover fancy and plain pointers for flat_map<-> concurrent interop 2023-09-15 09:50:33 -07:00
Christian Mazakas a0c7112652 Update arrays transfer in table_core moves constructors to be exception-safe 2023-09-15 09:50:33 -07:00
Christian Mazakas b031b61b94 Update docs on rehashing behavior in face of fancy pointer changes 2023-09-15 09:50:33 -07:00
Christian Mazakas b9fe4ed789 Clean up how group_accesses are setup for concurrent_table_arrays 2023-09-15 09:50:33 -07:00
Christian Mazakas c707bcb6d8 Refactor table_iterator to avoid extraneous amounts of boost::to_address 2023-09-15 09:50:33 -07:00
Christian Mazakas 771943e291 Add to_pointer helper for converting raw pointers to fancy
This helps us avoid an unconditional nullptr check when the user's pointer type is fancy
2023-09-15 09:50:33 -07:00
Christian Mazakas 675e30bd95 Clean up dummy_groups and groups allocation 2023-09-15 09:50:33 -07:00
Christian Mazakas 2cab340749 Replace direct accesses of fancy pointers with getters 2023-09-15 09:50:33 -07:00
Christian Mazakas c3786357a6 Update noexcept specification to accomodate for throwing arrays::new_ 2023-09-15 09:50:33 -07:00
Christian Mazakas 33ee8ea302 Disable mmap_tests for cygwin targets
Interprocess tries to erroneously call ftruncate without the corresponding header being included.
2023-09-15 08:22:31 -07:00
Christian Mazakas 583225ad9f Update docs about relaxed Allocator requirements 2023-09-15 08:22:31 -07:00
Christian Mazakas c16a3f2a4a Update table_iterators to store fancy pointers 2023-08-30 09:57:22 -07:00
Christian Mazakas 1d93fa12a2 Update mmap_tests to include iterators 2023-08-30 09:57:22 -07:00
Christian Mazakas f4f322b94d Update requirements for TypeIndex 2023-08-30 09:57:22 -07:00
Christian Mazakas 3299b31787 Update tests to accomodate foa containers allocating groups when the pointer type is fancy 2023-08-30 09:57:22 -07:00
Christian Mazakas 95a37b0d3d Update foa-based containers to store only fancy pointers 2023-08-30 09:57:20 -07:00
Christian Mazakas 4d6ebc7eb3 Update test fancy pointers to be Nullable, add rebind alias template 2023-08-30 09:56:28 -07:00
Christian Mazakas a0679e5ffe Add mmap_tests 2023-08-30 09:56:28 -07:00
Christian Mazakas b01f9ee15d Refactor Jamfile, add C++11 as compiler minimum 2023-08-30 09:56:28 -07:00
Christian Mazakas 215d8e82cb Merge pull request #207 from boostorg/feature/serialization_support
Feature/serialization support
2023-08-29 10:50:21 -07:00
Christian Mazakas 067884a4e2 Merge pull request #210 from boostorg/fix/gh-205
Fix for issue #205
2023-08-28 10:38:13 -07:00
joaquintides ca2a46f290 complied with https://github.com/boostorg/core/commit/5f6fe65 2023-08-25 19:45:16 +02:00
joaquintides d007a5a7bd renamed serialize_node_pointer as serialize_tracked_address (editorial) 2023-08-25 11:34:39 +02:00
joaquintides b0195297f0 simplified dtor call, s/&/boost::addressof 2023-08-18 21:07:58 +02:00
joaquintides 52061a7c64 typo 2023-08-18 21:03:12 +02:00
joaquintides 829a4a1620 worked around lack of std::shuffle in VS2010 2023-08-18 10:35:55 +02:00
joaquintides 6dd58f4e9c added missing carriage return 2023-08-17 10:28:45 +02:00
joaquintides a2ad7966ea removed serialization tests from UBSAN runs 2023-08-17 10:21:54 +02:00
joaquintides 9d897faece added cfoa_serialization_tests 2023-08-17 10:21:54 +02:00
joaquintides 389e967484 added embarrassingly absent BOOST_TEST 2023-08-17 10:21:54 +02:00
joaquintides 0365be763a dealt with serialization_tests's big executable size 2023-08-17 10:21:54 +02:00
joaquintides fc3fca4264 reverted prior (didn't work) 2023-08-17 10:21:54 +02:00
joaquintides bf0ae6e63a marked UB-incurring boost::archive::xml_oarchive ctor/dtor as no_sanitize 2023-08-17 10:21:54 +02:00
joaquintides 9057369f93 refactored to work around GCC 4.4 hiccups with std::pair<X*,...> p(0,...) 2023-08-17 10:21:54 +02:00
joaquintides aec9c48cf4 restored passing of working directory 2023-08-17 10:21:54 +02:00
joaquintides 3968ff0567 uploaded generate_legacy_archives.cpp for preservation 2023-08-17 10:21:54 +02:00
joaquintides 8170716156 de-constified values in legacy_serialization_test to appease some defective C++03 compilers 2023-08-17 10:21:54 +02:00
joaquintides 651727508b removed unneeded working directory passing 2023-08-17 10:21:54 +02:00
joaquintides b3b4853dfa added legacy serialization tests 2023-08-17 10:21:54 +02:00
joaquintides 1f3980986d avoided sign-compare warnings 2023-08-17 10:21:54 +02:00
joaquintides 4e458f0054 added foa_exception_tests 2023-08-17 10:21:54 +02:00
joaquintides 8fe3ebc7b3 simplified serialization building 2023-08-17 10:21:54 +02:00
joaquintides cf298cba7f removed spurious macro definition 2023-08-17 10:21:54 +02:00
joaquintides d83efc5ea4 added first tests of serialization support 2023-08-17 10:21:54 +02:00
joaquintides ff9d08a917 adapted to iterators (eventually) holding fancy pointers 2023-08-17 10:21:54 +02:00
joaquintides e1a30831fe editorial 2023-08-17 10:21:54 +02:00
joaquintides 34e5773a4a documented serialization support 2023-08-17 10:21:45 +02:00
joaquintides c26137f2dd unnamed unused arg 2023-08-17 10:20:25 +02:00
joaquintides 1264805a59 avoided type shadowing 2023-08-17 10:20:25 +02:00
joaquintides bfb6520107 unnamed unused args 2023-08-17 10:20:25 +02:00
joaquintides ab867a65f4 unnamed unused args 2023-08-17 10:20:25 +02:00
joaquintides 5239b101e2 added serialization support (pending docs and testing) 2023-08-17 10:20:25 +02:00
Christian Mazakas c5f64ed1d3 Prevent erroneous copying of groups data, update max load to properly propagate 2023-08-16 10:22:08 -07:00
Christian Mazakas a06498f5ce Add tests catching erroneous copying of groups data 2023-08-16 10:21:27 -07:00
joaquintides bcd8969b9a editorial 2023-08-12 12:43:29 +02:00
joaquintides bc7e77f239 Merge pull request #200 from boostorg/feature/detect_reentrancy
Feature/detect reentrancy
2023-08-12 11:58:29 +02:00
joaquintides 66222eee6a Merge branch 'develop' into feature/detect_reentrancy 2023-08-12 09:54:22 +02:00
joaquintides ee1974dc87 Merge pull request #198 from boostorg/feature/concurrent_unordered_interop
Feature/concurrent unordered interop
2023-08-12 09:48:08 +02:00
Christian Mazakas 4918bb6b7e Add tests for interop assignment 2023-08-11 12:35:44 -07:00
Christian Mazakas e563c89b1c Remove extraneous typename 2023-08-11 12:35:44 -07:00
Christian Mazakas ce076782fd Add tests for interop constructors 2023-08-11 12:35:44 -07:00
joaquintides b206513a11 fixed friend declarations 2023-08-11 12:35:44 -07:00
joaquintides bf4a5efd2d documented concurrent/unordered interop 2023-08-11 12:35:40 -07:00
joaquintides 6b6dde4f97 stylistic 2023-08-11 12:35:13 -07:00
joaquintides ac1a236de6 added concurrent_flat_map(unordered_flat_map&&) 2023-08-11 12:35:13 -07:00
joaquintides d4adcd9b71 added missing std::move's 2023-08-11 12:35:13 -07:00
joaquintides c046b916f8 fix atomic_size_control copy ctor 2023-08-11 12:35:13 -07:00
joaquintides 4be37cfdaf avoided premature instantiation of concurrent_table 2023-08-11 12:35:13 -07:00
joaquintides 6994a37b23 used direct arrays construction in place of empty_initialize
(arrays_type not default constructible)
2023-08-11 12:35:13 -07:00
joaquintides 6bf84067b3 added unordered_flat_map(concurrent_flat_map&&) 2023-08-11 12:35:13 -07:00
Christian Mazakas 48ff743d06 Merge pull request #199 from boostorg/feature/visit_until
Feature/visit until
2023-08-11 12:26:13 -07:00
Christian Mazakas 5339bf67d9 Add missing #include's 2023-08-03 10:52:03 -07:00
joaquintides 1979ce98a2 documented BOOST_UNORDERED_DISABLE_REENTRANCY_CHECK 2023-07-28 18:22:20 +02:00
Christian Mazakas a22c133c3d Add tests for visit_while 2023-07-26 10:14:11 -07:00
joaquintides f919ce532a repositioned LCOV annotations 2023-07-26 16:50:25 +02:00
joaquintides 30187f7743 excluded code from coverage analysis 2023-07-26 12:47:31 +02:00
joaquintides dd30162c9e simplified reentrancy check config 2023-07-25 09:18:53 +02:00
joaquintides fde765c494 added reentrancy check to release notes 2023-07-24 20:31:32 +02:00
joaquintides 9c476ef72a typo 2023-07-24 20:19:09 +02:00
joaquintides 470abf41d8 dropped [c]visit_until 2023-07-24 20:13:18 +02:00
joaquintides a3626b5095 fixed reentrancy checking for scoped_bilock 2023-07-24 19:44:09 +02:00
joaquintides 948151bd7d added RVO enabler 2023-07-24 18:43:20 +02:00
joaquintides f965298154 added reentrancy checking 2023-07-24 18:29:30 +02:00
joaquintides 5a4d93a72d documented [c]visit_(until|while) 2023-07-21 19:39:43 +02:00
joaquintides bee4ed2e5f implemented [c]visit_(until|while) 2023-07-21 18:16:28 +02:00
joaquintides bd24dfd284 updated concurrent map benchmark plots 2023-07-18 18:19:13 +02:00
joaquintides faf54eef0d Merge pull request #196 from sdarwin/gha_runners
Self-hosted github actions runners
2023-07-13 10:12:44 +02:00
sdarwin 97b52879f5 Self-hosted github actions runners 2023-07-12 14:42:51 -06:00
Peter Dimov 9a7d1d336a Update ci.yml 2023-06-26 21:41:13 +03:00
Peter Dimov 3fc18d56ac Remove latch_tests.cpp 2023-06-26 16:13:20 +03:00
Peter Dimov 6bcf457b46 Use boost::compat::latch 2023-06-26 10:32:52 +03:00
Peter Dimov 01b2369700 Update .appveyor.yml 2023-06-26 02:45:47 +03:00
Peter Dimov fcb3f0e82a Decrease iterations in rw_spinlock_test8 to avoid timeouts 2023-06-26 02:42:12 +03:00
Peter Dimov 1e4deb10a1 Add rw_spinlock tests 2023-06-25 19:03:02 +03:00
joaquintides 6ee93f17e4 [skip ci] updated boost::unordered_(flat|node)_map benchmarks 2023-06-22 19:21:02 +02:00
joaquintides 7e41e08a57 updated boost::concurrent_flat_map benchmarks 2023-06-22 09:02:24 +02:00
Christian Mazakas 7a6c8eca09 Merge pull request #194 from boostorg/fix/extra-semicolon
Remove extraneous semicolons
2023-06-21 15:35:05 -07:00
Christian Mazakas dce386068b Remove extraneous semicolons 2023-06-21 07:46:53 -07:00
Peter Dimov 7d39b68e46 Fix -Wsign-conversion issue 2023-06-20 21:36:25 +03:00
Peter Dimov 79a59bce72 Change the backoff algorithm of rw_spinlock 2023-06-20 21:36:25 +03:00
Peter Dimov 717048e868 Split Appveyor jobs to avoid timeouts 2023-06-20 17:49:15 +03:00
joaquintides de8c2a5ad9 Merge pull request #193 from boostorg/feature/proxy-erase
Feature/proxy erase
2023-06-20 11:49:27 +02:00
joaquintides 678f8802f4 [skip ci] updated boost::unordered_[multi]set benchmarks 2023-06-20 09:53:25 +02:00
Christian Mazakas 704b3c7a4b Update docs to describe the returned proxy type as "convertible to iterator" 2023-06-19 14:33:10 -07:00
Christian Mazakas 671b68f4d1 Restart drone CI 2023-06-19 10:45:37 -07:00
Christian Mazakas b2a4b22c89 Remove erroneous asserts from the test suite
These asserts were erroneously being removed in release builds of the tests which is never the intention
2023-06-19 09:21:48 -07:00
joaquintides 2eebe157fd refactored proxy_erase to reduce template instantiations and strengthen misuse avoidance 2023-06-19 08:21:13 -07:00
joaquintides 2b6cfe4f3c documented proxy erase(iterator) 2023-06-19 08:21:13 -07:00
Christian Mazakas 2f7bba0c21 Implement proxy erase(iterator) 2023-06-19 08:21:13 -07:00
joaquintides d65d9a65b7 Merge pull request #188 from boostorg/feature/cfoa
Feature/cfoa
2023-06-17 17:25:56 +02:00
joaquintides 67913ed99a re-enabled CI on feature/* branches 2023-06-17 17:21:09 +02:00
joaquintides 0440cd3183 widened previous workaround 2023-06-17 09:37:17 +02:00
Christian Mazakas 3a3148cc16 Add workaround for gcc-5.4 deficiencies in copy elision and new() construction 2023-06-16 14:16:26 -07:00
Christian Mazakas f51070ab21 Update free function erase_if() to support non-copyable predicates 2023-06-16 14:16:26 -07:00
Christian Mazakas ac5a99da31 Add max_size() impl 2023-06-15 22:15:57 -07:00
Christian Mazakas 6fed6ea5ad Remove extraneous fwd.hpp include from public facing headers 2023-06-15 22:15:57 -07:00
Christian Mazakas c51c06492a Update iterator range insert to use emplace() vs insert() to avoid copies in certain cases 2023-06-15 22:15:57 -07:00
Christian Mazakas f604efe866 Add missing const reference qualifiers to allocator_type constructor parameters 2023-06-15 22:15:57 -07:00
Christian Mazakas e8ec858313 Refactor type policies used by containers into their own dedicated headers 2023-06-15 22:15:57 -07:00
Christian Mazakas bc8996559b Remove unnecessary backticks from static_assert() messages 2023-06-15 22:15:57 -07:00
Christian Mazakas 449e1a30d3 Remove outdated reference to proposed synopsis 2023-06-15 22:15:57 -07:00
joaquintides c2484f05f0 avoided old GCC/Clang hiccup with {} for aggregate copy construction 2023-06-09 21:31:30 +02:00
joaquintides f7e2132bdb Merge branch 'feature/cfoa' of https://github.com/boostorg/unordered into feature/cfoa 2023-06-09 21:20:36 +02:00
joaquintides 07a8b2b14d stylistic 2023-06-09 08:55:25 -07:00
joaquintides 2eac49f0ed added copy ctor for cache_aligned_size_control 2023-06-09 08:55:25 -07:00
joaquintides 6a8d7857e2 fixed unqualified swap call 2023-06-09 08:55:25 -07:00
joaquintides ef34ec5e87 added missing #include 2023-06-09 08:55:25 -07:00
joaquintides 518a5d2e1e refactored padding into a clean design 2023-06-09 08:55:25 -07:00
joaquintides 3ea8a768ca added padding between and around ml and size_ 2023-06-09 08:55:25 -07:00
joaquintides 4b877d363a updated concurrent_flat_map benchmarks 2023-06-09 08:55:25 -07:00
Christian Mazakas 2395db7bb9 Cleanup docs 2023-06-09 08:55:25 -07:00
joaquintides 7327053eea updated concurrent_flat_map benchmarks 2023-06-08 09:34:05 +02:00
Christian Mazakas af19d99b70 Clean up CI to pre-debugging state 2023-06-07 10:05:19 -07:00
joaquintides 64f9370fff implemented cacheline alignment without extended alignas 2023-06-07 11:30:52 +02:00
joaquintides ca193de243 added missing #include 2023-06-07 11:28:00 +02:00
Christian Mazakas 2914925b4d Explicitly disable ccache in GHA runner file 2023-06-06 09:14:00 -07:00
Christian Mazakas bc37851725 Remove usage of ccache from problematic gcc-12 sanitizer actions 2023-06-06 08:51:59 -07:00
Christian Mazakas f89a31849c Fix workaround for cfoa_fwd_tests 2023-06-06 08:27:55 -07:00
Christian Mazakas ec945810eb Remove problematic test from clang-3.7 runner 2023-06-05 15:56:06 -07:00
Christian Mazakas 68ddaba57a Update cfoa's fwd header to be in line with the others 2023-06-05 15:47:41 -07:00
Christian Mazakas c48c2afc56 Add gcc-13 and Ubuntu 23.04 to Drone CI 2023-06-05 14:24:38 -07:00
Christian Mazakas 01a5dd0dd1 Add concurrent_flat_map to link tests for foa 2023-06-05 14:19:18 -07:00
Christian Mazakas 300a8e61bd Add ubsan + asan jobs to gcc-12 2023-06-05 11:16:34 -07:00
joaquintides 1d2be664a0 added boost::concurrent_flat_map benchmarks 2023-06-05 20:08:32 +02:00
Christian Mazakas e6b1ef9e1e Add ubsan gcc-12 runners to drone 2023-06-05 09:32:11 -07:00
Christian Mazakas 4efb55146a Update gcc used for code coverage collection 2023-06-02 15:08:29 -07:00
Christian Mazakas 8877d21237 Replace dependency on SmartPtr with primitives in Core 2023-06-02 14:14:18 -07:00
Christian Mazakas 44c50cd2ea Resolve potential ambiguities during insertion by introducing a member function template 2023-06-01 14:19:14 -07:00
Christian Mazakas e7c1e1a56e Clean up raii count checkers to avoid extraneous assertions 2023-06-01 14:18:54 -07:00
Christian Mazakas 9a22f8fbee Add missing dependency on SmartPtr 2023-05-31 09:14:44 -07:00
Christian Mazakas 51520de04b Add allocator using fancy pointers to insert_tests 2023-05-31 07:30:37 -07:00
Christian Mazakas 6e0f76f4c2 Add missing FindThreads to CML 2023-05-30 14:52:45 -07:00
Christian Mazakas 06aa4b5c19 Cleanup test CML 2023-05-30 13:24:21 -07:00
Christian Mazakas 332540c857 Attempt to fix CMake tests 2023-05-30 12:05:10 -07:00
Christian Mazakas fdedb6c957 Add merge exceptions tests for cfoa 2023-05-30 09:19:50 -07:00
joaquintides 7aaa2e9452 polished BOOST_UNORDERED_PREFETCH[_ELEMENTS] 2023-05-28 19:09:14 +02:00
Christian Mazakas 950e640fcf Update concurrent_table to use macro-based prefetching 2023-05-26 21:06:01 -07:00
Christian Mazakas 7874625c08 Replace prefetch_elements() with macro so builtins aren't optimized away by DSE 2023-05-26 20:56:52 -07:00
Christian Mazakas 2ab4225473 Add workaround for gcc-12 and above where the prefetch call is ignored 2023-05-26 08:16:02 -07:00
Christian Mazakas c5df4ec069 Remove unused test 2023-05-25 08:41:26 -07:00
Christian Mazakas 55d79204be Add exceptions tests for cfoa assign ops 2023-05-24 15:23:09 -07:00
Christian Mazakas f5d5299b88 Flesh out constructor exception tests 2023-05-24 11:06:45 -07:00
joaquintides 253a9bccf6 fixed leak in throwing allocator-extended move ctor 2023-05-24 09:19:31 +02:00
Christian Mazakas 61f11a58ee Push up failing test case for code review purposes 2023-05-23 15:28:14 -07:00
Christian Mazakas e78dc311e3 Clean up erase tests 2023-05-23 08:43:10 -07:00
Christian Mazakas a5748c2e8b Add initial container population to insert iterator range tests 2023-05-22 15:24:36 -07:00
Christian Mazakas 146c5cb6be Clean up exception tests 2023-05-22 14:19:21 -07:00
Christian Mazakas c63a88032d Loosen restrictions on erase exceptions tests to accomodate runs where there are no successful erasures 2023-05-22 12:10:10 -07:00
Christian Mazakas 3ad164267a Update duration of erase operations to trigger successful erasures when only 2 threads are available 2023-05-22 11:37:07 -07:00
Christian Mazakas a9203ed93c Clean up erase_tests 2023-05-22 10:17:36 -07:00
Christian Mazakas 16550ded0c Add exceptional erase tests 2023-05-22 10:17:36 -07:00
joaquintides b4c75abca9 typo 2023-05-22 09:49:00 +02:00
joaquintides a696bdecf6 editorial 2023-05-21 13:10:46 +02:00
joaquintides 8865a940fc editorial 2023-05-21 12:55:23 +02:00
joaquintides 2a28698c8c editorial 2023-05-21 12:43:45 +02:00
joaquintides 96f5983f88 fixed initializer_list insert requirements 2023-05-21 12:39:02 +02:00
joaquintides ddb1148a31 reformulated static member initialization to appease VS2015 2023-05-20 12:16:30 +02:00
Christian Mazakas ffcae204ee Add insert_exception_tests 2023-05-19 12:33:23 -07:00
joaquintides f28527c4d8 removed double separating line 2023-05-19 11:28:08 +02:00
joaquintides 528f7d4b12 title cased some sections 2023-05-19 11:17:56 +02:00
joaquintides a140de4254 typos/editorial 2023-05-19 10:51:00 +02:00
Christian Mazakas f1bc948be8 Update table formatting in intro to use monospaced font 2023-05-18 13:14:58 -07:00
joaquintides 3d640ac032 refactored to modernize and improve flow 2023-05-18 20:18:58 +02:00
Christian Mazakas ff10b287e2 Remove unreliable check from swap_tests 2023-05-17 13:36:56 -07:00
Christian Mazakas 4a416501c8 Fix misuse of ctad macro 2023-05-17 10:14:45 -07:00
Christian Mazakas bf06fa97e3 Add deduction guides 2023-05-17 09:38:29 -07:00
Christian Mazakas fcf6fee0f6 Make usage of forceinline consistent with the underlying concurrent_table 2023-05-16 15:42:47 -07:00
Christian Mazakas 8ddfc8ec7a Update execution policies to accept by forwarding reference 2023-05-16 14:33:41 -07:00
Christian Mazakas 5f249bc681 Add fwd header 2023-05-16 13:31:35 -07:00
Christian Mazakas dbd1a929e6 Remove unnenecessary spinning 2023-05-16 12:34:50 -07:00
Christian Mazakas 32ff2f145e Add initial draft of equality tests 2023-05-16 11:55:56 -07:00
Christian Mazakas 63026fd320 Clean up tests to avoid needless yields and extraneous spurious wakeups 2023-05-16 09:19:43 -07:00
Christian Mazakas 6295c7f0d4 Add free function erase_if() 2023-05-15 13:40:33 -07:00
Christian Mazakas c3879e238d Add free function swap() 2023-05-15 07:54:19 -07:00
joaquintides 9260bff8f8 editorial 2023-05-15 10:20:45 +02:00
joaquintides f48fc70f4b typos/editorial 2023-05-14 11:13:48 +02:00
joaquintides 48f703132e added implementation description for cfoa 2023-05-13 19:29:41 +02:00
joaquintides 69ee0039e0 added implementation rationale for concurrent hashmap 2023-05-13 19:29:08 +02:00
joaquintides add01e2dfd added compliance section for concurrent hashmap 2023-05-13 19:28:43 +02:00
joaquintides 4b4db3dfb3 fixed links 2023-05-13 10:00:35 +02:00
joaquintides 81480feeb4 fixed regression at unprotected_emplace 2023-05-12 12:45:31 +02:00
joaquintides d615a08f76 made operator [==|!=] templated again to accommodate fwd declarations 2023-05-12 12:33:27 +02:00
joaquintides dacc1c8234 made operator[==|!=] non-templated 2023-05-12 11:41:50 +02:00
joaquintides 511e2b3272 refactored to provide equality comparison from table_core 2023-05-12 11:24:20 +02:00
Christian Mazakas bcf5d0cf13 Attempt to disable extraneous runs on CI 2023-05-11 08:39:29 -07:00
Christian Mazakas 80a1904d92 Fix call_count check in rehash_tests 2023-05-11 08:39:16 -07:00
Christian Mazakas 21afc69894 Add initial tests for rehash(), reserve() 2023-05-10 13:22:02 -07:00
Christian Mazakas c90b72a643 Squelch gcc self-move warning for version 13 2023-05-09 14:00:14 -07:00
Christian Mazakas c2c34f96a3 Improve robustness of merge_tests to schedule merges without spurious wakeups and in a wider stride of insertions 2023-05-09 14:00:14 -07:00
joaquintides 69ba1c7c00 editorial 2023-05-09 19:53:56 +02:00
joaquintides ba25041fc8 added tutorial on boost::concurrent_flat_map 2023-05-08 18:37:36 +02:00
joaquintides 02197674f4 prevented VS C4800 warning 2023-05-06 12:44:07 +02:00
Christian Mazakas f0fe62d6ab Add count(), contains() 2023-05-05 15:41:23 -07:00
Christian Mazakas 53328766b9 Return size_type instead of size_t 2023-05-05 15:41:08 -07:00
Christian Mazakas 5b775345ba Clean up concurrent_table's merge impl 2023-05-05 11:47:20 -07:00
Christian Mazakas 99b0868283 Add initial impl of merge() 2023-05-05 10:20:52 -07:00
joaquintides 1c98a4a8f1 changed all titles to Title Casing 2023-05-05 18:56:33 +02:00
joaquintides bf73366117 typo 2023-05-05 17:55:53 +02:00
joaquintides 719394c522 Split important info int separate paragraphs 2023-05-05 17:55:02 +02:00
joaquintides 03fccc1947 refined concurrency requirements and guarantees 2023-05-05 17:37:20 +02:00
joaquintides 814264082f fixed BNF syntax 2023-05-04 19:19:37 +02:00
joaquintides 70e3dc4628 Changed the return type of iterator/initializer_list insert[_or_[c]visit] and merge to size_type 2023-05-04 19:16:39 +02:00
joaquintides b72dbef1a9 added equality comparison to reference 2023-05-04 18:51:03 +02:00
joaquintides 26924c73b9 fixed space reservation in concurrent_table::operator=(std::initializer_list) 2023-05-04 18:09:28 +02:00
Christian Mazakas 23e720a968 Split up Drone jobs even further due to extended runtimes 2023-05-03 15:32:06 -07:00
Christian Mazakas 4fb7751b55 Add missing #include 2023-05-03 11:37:32 -07:00
Christian Mazakas 3c0fb0fa1b Attempt to fix flaky CI 2023-05-03 11:37:32 -07:00
Christian Mazakas 3fe0807ae9 Add test that intermixes insertion and visitation
Attempt to test the happens-before and synchronizes-with relationship, looking for potential bugs on weakly-ordered models
2023-05-03 11:37:32 -07:00
joaquintides dfb4f2a28a added reference for boost::concurrent_flat_map 2023-05-03 17:53:13 +02:00
Christian Mazakas cc4cfc7ef2 Fix bug in swap_test iteration logic that caused early termination of the swap loop 2023-05-02 15:57:16 -07:00
Christian Mazakas a9bf367d6e Test if being the kind of program that calls yield() pays dividends for flaky CI failures 2023-05-02 15:44:21 -07:00
Christian Mazakas 2ea0dbf30e Add impl of member function swap() 2023-05-02 13:44:27 -07:00
Christian Mazakas 40c4d456f3 Clean up for CI 2023-05-01 15:21:25 -07:00
Christian Mazakas 011b7a5969 Add initial impl of clear 2023-05-01 11:58:58 -07:00
Christian Mazakas c52ad849ea Add policy check that excludes unsequenced policies
It's technically UB for the callable in an unsequenced policy to acquire a lock so we add static_assert()s to catch potential user error.
2023-05-01 11:58:58 -07:00
joaquintides 615ce1e9b6 refactored unprotected_rehash_if_full out 2023-04-29 11:35:11 +02:00
Christian Mazakas bee9a3cb1a Split Drone jobs to help with CI timeouts and load 2023-04-28 14:10:58 -07:00
Christian Mazakas 081932221f Attempt to fix flaky assign_tests 2023-04-28 13:42:28 -07:00
Christian Mazakas 135c9586af Add fuzzy test mixing copy-assignment with insertion 2023-04-27 15:23:21 -07:00
Christian Mazakas 187fd3e71e Implement initializer_list assignment 2023-04-27 12:00:42 -07:00
Christian Mazakas 0959df1896 Flesh out move assignment tests 2023-04-27 09:30:49 -07:00
Christian Mazakas 7833a8359d Use Core's allocator access to handle allocator_traits not having uniform support in early C++11 compilers 2023-04-26 13:58:20 -07:00
Christian Mazakas 212c6a1e4d Add prototype of move assignment 2023-04-26 12:54:04 -07:00
Christian Mazakas d7acb7e8b8 Fix capturing in latch_tests 2023-04-26 12:54:04 -07:00
joaquintides 0bc4f2c4b9 refactored foa::concurrent_table::merge internals 2023-04-26 13:39:38 +02:00
Christian Mazakas 2b612ed120 Flesh out assign_tests 2023-04-25 13:14:08 -07:00
Christian Mazakas a7c15e86fc Update num_threads to use the concurrent hint from the stdlib 2023-04-25 12:18:15 -07:00
joaquintides 4c117ab20a made merge blocking 2023-04-25 15:53:18 +02:00
Christian Mazakas e9c6a0fef5 Add polyfill implementation of std::latch 2023-04-24 13:29:35 -07:00
Christian Mazakas ac216a93c8 Add tests back in 2023-04-24 13:29:07 -07:00
joaquintides e49fef5f9a commented out all tests except those for cfoa 2023-04-23 17:27:50 +02:00
Christian Mazakas 26ab9ff584 Add prototype copy assignment operator 2023-04-21 15:56:22 -07:00
Christian Mazakas 1e92d9f545 Refactor stateful_allocator to test helpers 2023-04-21 13:33:18 -07:00
Christian Mazakas 2cf72093b1 Update test to spin until the container is non-empty 2023-04-21 10:44:06 -07:00
Christian Mazakas 88d4d64edf Add last remaining constructors 2023-04-21 10:33:21 -07:00
joaquintides 7f7e577e77 polished description 2023-04-21 09:13:28 +02:00
Christian Mazakas 80d7203d78 Add more iterator constructor overloads 2023-04-20 15:35:04 -07:00
Christian Mazakas 5dfed4deec Update thread_runner to block on hand-rolled barrier, add yield points to hash, key_equal 2023-04-20 14:34:01 -07:00
Christian Mazakas e08f9f11a1 Add more constructors 2023-04-20 12:58:29 -07:00
Christian Mazakas c304284773 Update tests to use condition variables for work synchronization instead of sleeps 2023-04-20 12:58:29 -07:00
joaquintides 0e8affcc07 [skip ci] editorial 2023-04-20 20:40:10 +02:00
joaquintides ba00dbd65a Merge branch 'feature/cfoa' of https://github.com/boostorg/unordered into feature/cfoa 2023-04-20 18:50:29 +02:00
joaquintides c214fb44a3 completed internal code documentation 2023-04-20 18:49:42 +02:00
Christian Mazakas c704788718 Fix flaky test by starting insertion thread earlier 2023-04-20 09:25:33 -07:00
joaquintides a91efeb237 refactored size_/ml swap 2023-04-20 17:29:21 +02:00
Christian Mazakas 7812b26d3a Add allocator aware move constructors 2023-04-19 15:18:53 -07:00
Christian Mazakas 8bd07e17c3 Add forced inlining to keep msvc benchmarks on par with raw concurrent_table 2023-04-19 10:52:41 -07:00
Christian Mazakas b3c0368ab5 Clean up typedef names to avoid conflicts 2023-04-19 09:35:47 -07:00
Christian Mazakas 37edc392a5 Add allocator-aware copy constructor 2023-04-19 09:35:38 -07:00
Christian Mazakas fb403bc233 Add explicit allocator constructor 2023-04-18 15:36:12 -07:00
Christian Mazakas 910b8de697 Add iterator range + allocator constructor, continue to clean up constructor_tests 2023-04-18 15:11:53 -07:00
Christian Mazakas 3aff995ae0 Clean up constructor_tests 2023-04-18 13:38:24 -07:00
Christian Mazakas 68c018fda6 Clean up usage of decltype to help msvc-14.3 2023-04-18 12:30:34 -07:00
Christian Mazakas a9ad06139e Add move constructor 2023-04-18 12:00:08 -07:00
joaquintides 9a0e5e9ea8 dispensed with std::array 2023-04-15 12:13:40 +02:00
joaquintides b1a52d0236 explicitly declared guards' copy ctors as it prevents VS from doing spurious copies (!) 2023-04-15 09:51:01 +02:00
joaquintides 1723358298 refactored to deICE Clang<=3.8 and for clarity 2023-04-14 10:48:26 +02:00
Christian Mazakas 6bf0e93a41 Remove size check as the insertion thread may not have started by the time the check happens 2023-04-13 13:30:56 -07:00
joaquintides 0e5ef25a69 added workaround for GCC<=5 having problems with return {...} syntax 2023-04-13 19:31:20 +02:00
joaquintides ab84a922cf added workaround for lack of std::is_trivially_copy_assignable in GCC<5.0 2023-04-13 13:00:29 +02:00
Christian Mazakas d8bc38f154 Clean up tag dispatch for group_type copy assignment 2023-04-12 14:41:36 -07:00
Christian Mazakas ecd4a82ed5 Add test for select_on_container_copy_construction Allocator requirement 2023-04-12 13:58:01 -07:00
Christian Mazakas 0898219edc Test empty visitation 2023-04-12 12:23:16 -07:00
Christian Mazakas d9b62d24dc Begin work on constructors 2023-04-12 12:22:59 -07:00
Christian Mazakas b771278813 Fix copy assignment warning in gcc 2023-04-12 12:22:38 -07:00
joaquintides 2226a7238d adjusted arg constness in erase and erase_if 2023-04-11 16:32:47 +02:00
joaquintides 00c6a93a56 restored invocability static asserts 2023-04-10 11:03:11 +02:00
joaquintides 8ea1cbbd64 s/BOOST_ASSERT/BOOST_TEST to avoid unused var warnings 2023-04-10 10:17:05 +02:00
joaquintides 81a47ca88d updated more tests affected by change in position of f 2023-04-10 09:05:19 +02:00
joaquintides c54151769f updated insert_or_assign impls to f-last interface 2023-04-09 21:56:12 +02:00
joaquintides e73d5ecdd1 updated tests affected by change in position of f 2023-04-09 20:41:15 +02:00
joaquintides 8a4e987030 made f the last argument in all *_or_[c]visit functions 2023-04-09 20:20:55 +02:00
Christian Mazakas 8544d9f3c8 Clean up test/Jamfile 2023-04-07 12:40:06 -07:00
Christian Mazakas ed80cb14e2 Add visit_all() 2023-04-07 12:39:39 -07:00
Christian Mazakas 91eb2ddbd1 Fix sign comparison warning 2023-04-07 12:39:13 -07:00
Christian Mazakas 3bd28dc3d7 Implement basic version of single element visitation 2023-04-06 13:42:57 -07:00
Christian Mazakas e4d2da40f2 Add missing static_assert()s 2023-04-06 09:36:08 -07:00
Christian Mazakas a004e71dd0 Implement emplace, emplace_or_[c]visit 2023-04-05 13:21:18 -07:00
Christian Mazakas ddcab1c171 Add impl of try_emplace, try_emplace_or_[c]visit 2023-04-04 15:16:52 -07:00
Christian Mazakas e3cbf03f47 Commit missing changes to erase_if() 2023-04-03 14:11:51 -07:00
Christian Mazakas f8fbbc3b76 Add ExecutionPolicy overload of erase_if 2023-04-03 13:15:15 -07:00
Christian Mazakas 52bf2bf7a2 Add insert_or_cvisit() overloads 2023-04-03 08:14:21 -07:00
Christian Mazakas cf39fc4c38 Implement transparent erase_if, unary erase_if 2023-04-03 08:14:21 -07:00
Christian Mazakas 1309361a02 Remove erroneous move() calls 2023-04-03 08:14:21 -07:00
joaquintides 946491489e added workaround for lack of std::is_trivially_constructible in GCC<5.0 2023-04-01 12:06:39 +02:00
joaquintides 19202d2a8d avoided memset-related GCC warning 2023-04-01 09:09:22 +02:00
joaquintides 3be466966d avoided copy elision for the initialization of an atomic 2023-03-31 19:46:59 +02:00
joaquintides d22787c218 use memset for group array initialization only when permissible 2023-03-31 19:36:31 +02:00
joaquintides b86dee9a18 removed BOOST_UNORDERED_EMBEDDED_GROUP_ACCESS support 2023-03-31 18:52:00 +02:00
joaquintides 863984a7c8 fixed erase_if(x,f) return value calculation 2023-03-31 17:28:21 +02:00
joaquintides e9b3ad4a5f reverted 2023-03-31 13:07:02 +02:00
joaquintides e00d700457 experiment with unaligned embedded group 2023-03-31 11:32:29 +02:00
Christian Mazakas 53e20a2a1b Add transparent impl of erase() 2023-03-30 12:41:31 -07:00
Christian Mazakas af4cdf8fab Shorten "transparent" to "transp" 2023-03-30 12:41:18 -07:00
Christian Mazakas 7003e91d44 Harden erase() tests 2023-03-30 11:43:12 -07:00
joaquintides e86bb5cce2 stylistic 2023-03-30 14:50:19 +02:00
joaquintides 6a4728add0 removed implementation of scoped_bilock copy ctor 2023-03-30 12:39:10 +02:00
joaquintides f02afbc815 simplified scoped_bilock impl 2023-03-30 12:13:58 +02:00
joaquintides 6399dfd1e4 made erase_if returned count exact 2023-03-30 10:08:38 +02:00
Christian Mazakas f468fb77e0 Hopefully fix sign-conversion warnings 2023-03-29 15:55:22 -07:00
Christian Mazakas 5e316ebc88 Add initial draft of erase() 2023-03-29 15:00:54 -07:00
Christian Mazakas 0c90585511 Refactor myriad test helpers into separate file 2023-03-29 15:00:32 -07:00
Christian Mazakas 13b4fd7133 Fix sign-compare warnings 2023-03-29 12:16:09 -07:00
joaquintides 27b4c62bd2 fixed initialization of concurrent_table::thread:counter 2023-03-29 20:35:48 +02:00
joaquintides 846de7ca82 added cvisit overloads to concurrent_table 2023-03-29 19:17:57 +02:00
joaquintides 62cf58d1ca sprinkled some inlines 2023-03-29 18:29:15 +02:00
joaquintides 4482031329 made concurrent_table::thread_counter static 2023-03-29 16:45:15 +02:00
Christian Mazakas 7b1af37b9c Update RAII counters to use unsigned integers instead of signed 2023-03-28 14:37:52 -07:00
Christian Mazakas 1c48f665ea Add alias target for foa container tests 2023-03-28 14:30:29 -07:00
Christian Mazakas e4072747bb Implement insert_or_visit() 2023-03-28 14:28:42 -07:00
Christian Mazakas ce674c8007 Add transparent insert_or_assign 2023-03-27 15:06:28 -07:00
joaquintides 45ebc1e555 fixed call ambiguities in insert_or_visit 2023-03-27 13:39:14 +02:00
joaquintides 02c3bd4072 stylistic 2023-03-27 11:32:07 +02:00
joaquintides 5f4172c13f refactored visitation an const-protection of args to visitation functions 2023-03-27 10:17:25 +02:00
joaquintides 40c5c6907a fixed const-casting in erase_if(foa::table&,...) 2023-03-25 18:50:25 +01:00
joaquintides 8dbe380d6c changed predicate arg to an lvalue ref to avoid ADL ambiguities 2023-03-25 17:37:02 +01:00
joaquintides 37ff9de0db fixed remaining errors in erase_if(foa::table&,...) 2023-03-25 17:35:37 +01:00
joaquintides ae9f35073b avoided sign conversion warning 2023-03-25 17:17:00 +01:00
joaquintides a85df27d4c fixed previous commit 2023-03-25 12:47:19 +01:00
joaquintides 88c70b885d fixed previous commit 2023-03-25 12:37:10 +01:00
joaquintides 240f5f94b1 moved erase_if_impl from foa::table_core into foa::table 2023-03-25 12:31:49 +01:00
joaquintides 7415721f7d completed shared/exclusive visitation 2023-03-25 12:28:44 +01:00
Christian Mazakas 8b5539756b Partially implement insert_or_assign() 2023-03-24 14:35:01 -07:00
joaquintides 49ac1035bb (partially) implemented shared/exclusive visitation 2023-03-24 19:49:59 +01:00
joaquintides d085c40541 relaxed all ops of atomic_integral 2023-03-24 18:37:53 +01:00
Christian Mazakas 99d5b9b1bb Avoid unsupported typedef on earlier compilers 2023-03-24 08:57:51 -07:00
Christian Mazakas ad86f9211b Flesh out tests for insertion 2023-03-23 10:59:50 -07:00
Christian Mazakas d9515fdc2f Add insert(initializer_list) 2023-03-23 10:59:50 -07:00
Christian Mazakas eedbc6bcf7 Add missing stdlib= to drone.sh 2023-03-23 10:59:50 -07:00
joaquintides 297fb2e8c4 abode by TSan on Neon 2023-03-23 09:41:36 +01:00
Christian Mazakas 99eab2dfb1 Fix missing quotes in jsonnet file 2023-03-22 15:14:16 -07:00
Christian Mazakas 1070c9b69e Attempt to add tsan to Drone CI 2023-03-22 15:11:55 -07:00
Christian Mazakas 9e6b5a7e43 Add tsan OSX job 2023-03-22 15:07:36 -07:00
Christian Mazakas e1f11e840c update clang tsan job to use libc++ 2023-03-22 13:55:42 -07:00
Christian Mazakas f2d4f1968b Explicitly add B2_TARGETS to script invocation 2023-03-22 12:49:05 -07:00
joaquintides 4a7116b996 partially restored prior commit to nail down problem with Clang x86 2023-03-22 20:16:09 +01:00
joaquintides 41584e73d9 partially reverted prior commit to nail down problem with Clang x86 2023-03-22 20:09:53 +01:00
joaquintides 52453cb5a4 Merge branch 'feature/cfoa' of https://github.com/boostorg/unordered into feature/cfoa 2023-03-22 19:25:10 +01:00
joaquintides 44b918896d tried relaxing atomic operations 2023-03-22 19:24:46 +01:00
Christian Mazakas ff356ac083 Fix typo in GHA ci.yml 2023-03-22 11:20:03 -07:00
Christian Mazakas 3064801a89 Attempt to add tsan to GHA 2023-03-22 11:19:13 -07:00
Christian Mazakas e9d9f19e76 Flesh out insert_tests 2023-03-22 10:47:01 -07:00
Christian Mazakas 9b85c38e37 Add rehash, add missing move in insert() 2023-03-22 10:46:19 -07:00
joaquintides 0b2829c793 hardened TSan detection 2023-03-21 20:03:35 +01:00
joaquintides a9c2d1daa5 abode by TSan on SSE2 2023-03-21 19:41:55 +01:00
joaquintides d29815b3a8 group-synchronized earlier in unprotected_norehash_emplace_or_visit 2023-03-21 14:47:43 +01:00
joaquintides 7ed7878278 fixed 3df435d4d3 fix 2023-03-21 11:50:21 +01:00
Christian Mazakas 4c927cd2f2 Implement myriad insert() overloads, get first threaded test working 2023-03-20 16:00:54 -07:00
joaquintides 2fae05ed31 made concurrent_table use table_core's automatic capacity growth formula 2023-03-20 12:43:57 -07:00
joaquintides 41abb96d83 avoided sign conversion warning 2023-03-20 12:43:57 -07:00
joaquintides 63f51e7c41 fixed concurrent_table_arrays::delete_ 2023-03-20 12:43:57 -07:00
joaquintides ba4f321934 removed unused typedef 2023-03-20 12:43:57 -07:00
joaquintides 68563fab72 removed unused typedef 2023-03-20 12:43:57 -07:00
joaquintides d8e9503869 made table_arrays non-aggregate for the benefit of older compilers 2023-03-20 12:43:57 -07:00
joaquintides 86e998cbc7 fixed UB in dummy_group_accesses 2023-03-20 12:43:57 -07:00
joaquintides ce722e4d56 avoided shadowing 2023-03-20 12:43:57 -07:00
joaquintides 77eaab4803 provided concurrent_table_arrays ctor to satisfy older compilers 2023-03-20 12:43:57 -07:00
joaquintides 96562f4c3b hardened non-embedded group_access 2023-03-20 12:43:57 -07:00
joaquintides d66ceaf7fe avoided std::atomic_* aliases 2023-03-20 12:43:57 -07:00
joaquintides 2e44769247 added preliminary version of non-embedded group_access 2023-03-20 12:43:57 -07:00
joaquintides e64fd45760 removed inefficient group15::match_really_occupied 2023-03-20 12:43:57 -07:00
joaquintides 454fc7501e extended shutting down VS C4324 warning 2023-03-20 12:43:57 -07:00
joaquintides a89c62728a removed unnecessary mutable 2023-03-20 12:43:57 -07:00
joaquintides 1d8c0f91f8 avoided name hiding 2023-03-20 12:43:57 -07:00
joaquintides 25ba8e4dfc shut down VS C4324 warning 2023-03-20 12:43:57 -07:00
joaquintides fb4437219f fixed memory ordering in atomic_integral 2023-03-20 12:43:57 -07:00
joaquintides 0d1fdae84c implemented safe concurrent_table::load_factor 2023-03-20 12:43:57 -07:00
joaquintides c5debf11cf added explicit disabling/enabling of parallel algorithms 2023-03-20 12:43:57 -07:00
Christian Mazakas 9e4f89aa43 Continue fleshing out insert_tests 2023-03-20 12:43:57 -07:00
Christian Mazakas 12935eb695 Add minimal prototype of concurrent_flat_map 2023-03-20 12:43:57 -07:00
Christian Mazakas 2386188d69 Relocate macros needed by test suite into detail/fwd.hpp 2023-03-20 12:43:57 -07:00
Christian Mazakas e4b32f7f5e Update rw_spinlock impl to mirror github.com/pdimov's impl 2023-03-20 12:43:57 -07:00
Christian Mazakas 3df435d4d3 Temporarily suppress warning about memset'ing non-trivial types by using a constructor loop 2023-03-20 12:43:57 -07:00
Christian Mazakas ed076facc4 Stabilize ABI of cacheline_protected by hardcoding its alignment to 64 2023-03-20 12:43:57 -07:00
Christian Mazakas b09c5bdcf0 Add missing <execution> header 2023-03-20 12:43:57 -07:00
Christian Mazakas 6abb94bb68 Silence unused variable warnings in for_all_elements_exec 2023-03-20 12:43:57 -07:00
Christian Mazakas d2b1f095c8 Update atomic_uint nsdmi to eschew potentially deleted copy constructor 2023-03-20 12:43:57 -07:00
joaquintides 3d34571654 tried yest another variation for for_all_elements_while 2023-03-20 12:43:57 -07:00
joaquintides d683b3ac3e disabled use of match_really_occupied in for_all_elements_while 2023-03-20 12:43:57 -07:00
joaquintides e16a8737f4 shut down GCC Winterference-size 2023-03-20 12:43:57 -07:00
joaquintides 8f348aea26 temporarily disabled parallel algorithms 2023-03-20 12:43:57 -07:00
joaquintides 9a8ba2bdff re-enabled match_really_occupied in for_all_elements_while 2023-03-20 12:43:57 -07:00
joaquintides 3aaefdcc78 completed concurrent_table's API 2023-03-20 12:43:57 -07:00
joaquintides ca59ed8c50 avoided usage of match_really_occupied on for_all_elements_while (used by rehash) 2023-03-20 12:43:57 -07:00
joaquintides ff78ef25c0 removed unnecessary forwards and captures 2023-03-20 12:43:57 -07:00
joaquintides ec487b5c6c stylistic 2023-03-20 12:43:57 -07:00
joaquintides 0a03ed8170 weakened atomic_integral ops, fixed some trivial bugs 2023-03-20 12:43:57 -07:00
joaquintides 5881dcc2b2 done reverse unlock in multimutex 2023-03-20 12:43:57 -07:00
joaquintides 2070cbe2cc fixed regression in table_core(table_core&&) 2023-03-20 12:43:57 -07:00
joaquintides 8198b9c57c dropped erroneous call to user-provided f 2023-03-20 12:43:57 -07:00
joaquintides c35e9fc631 made slot setting on insertion exception safe 2023-03-20 12:43:57 -07:00
joaquintides f244ba55de switched from available to size_ 2023-03-20 12:43:57 -07:00
joaquintides 5e225fe46c micro-optimized reserve_available 2023-03-20 12:43:57 -07:00
joaquintides 06535e518e uploaded first draft of foa::concurrent_table 2023-03-20 12:43:57 -07:00
joaquintides 81584c22cf swapped member order in alloc_cted_insert_type to suppress padding warnings 2023-03-20 12:43:57 -07:00
joaquintides 83040211e8 recovered warninng supression pragmas 2023-03-20 12:43:56 -07:00
joaquintides 4ed301df97 refactored insert_type creation in emplace 2023-03-20 12:43:56 -07:00
joaquintides 8010f506a6 added SizeImpl and fixed some size arithmetic bugs 2023-03-20 12:43:56 -07:00
joaquintides 840ea1ce5c refactored some more for future concurrent_table 2023-03-20 12:43:56 -07:00
joaquintides 447306bfb9 stylistic 2023-03-20 12:43:56 -07:00
joaquintides 4569c1bec0 changed type of N to std::size_t 2023-03-20 12:43:56 -07:00
joaquintides 37ad547e18 more fixed sign issues in Neon ops 2023-03-20 12:43:56 -07:00
joaquintides e037ee8d82 fixed syntax error 2023-03-20 12:43:56 -07:00
joaquintides 9bbadfdb34 fixed sign issues in Neon ops 2023-03-20 12:43:56 -07:00
joaquintides c1b63f68c8 added missing op to plain_integral 2023-03-20 12:43:56 -07:00
joaquintides 0590e3bf8c typo 2023-03-20 12:43:56 -07:00
joaquintides 8f17f5f548 fixed static_assert 2023-03-20 12:43:56 -07:00
joaquintides 3a8bea9e1d parameterized group15 and core 2023-03-20 12:43:56 -07:00
joaquintides b33b354818 extended caae8eb9ac9a47dd224b81f22efe8ea34b084d54 to rest of "using typename"s 2023-03-20 12:43:56 -07:00
joaquintides b08837b93e added missing template keyword 2023-03-20 12:43:56 -07:00
joaquintides b3b840df30 extended Wshadow supression to foa::table 2023-03-20 12:43:56 -07:00
joaquintides 2ef47f0813 reformulated using to workaround VS problem 2023-03-20 12:43:56 -07:00
joaquintides 27f5513911 published max_load_factor 2023-03-20 12:43:56 -07:00
joaquintides a5100a9d35 fixed incomplete porting of PR187 2023-03-20 12:43:56 -07:00
joaquintides ccbc639677 made table_core protected interface public 2023-03-20 12:43:56 -07:00
joaquintides 18725a682d fixed previous fix 2023-03-20 12:43:56 -07:00
joaquintides dac1135199 fixed usage syntax for destroy_on_exit 2023-03-20 12:43:56 -07:00
joaquintides ead55a8938 s/noexcept(...)/noexcept(noexcept(...)) 2023-03-20 12:43:56 -07:00
joaquintides 8f39001ff0 fixed trivial syntax error 2023-03-20 12:43:56 -07:00
joaquintides 8b056b902e split foa::table in table and core in preparation for foa::concurrent_table 2023-03-20 12:43:56 -07:00
Christian Mazakas 5724adbbe9 Merge pull request #187 from boostorg/feature/foa_fast_iteration
Feature/foa fast iteration
2023-03-20 12:43:29 -07:00
joaquintides 1c5640cfbe s/BOOST_UNORDERED_ASSUME/BOOST_ASSERT 2023-03-08 19:12:46 +01:00
joaquintides 4d982e133e added is-not-end assumption on table_iterator::increment 2023-03-08 18:29:55 +01:00
joaquintides 1bf193b8fc updated release notes 2023-03-06 21:46:42 +01:00
joaquintides 7faec20f26 Merge branch 'feature/foa_fast_iteration' of https://github.com/boostorg/unordered into feature/foa_fast_iteration 2023-03-06 21:44:55 +01:00
joaquintides ced8b45add fixed UB with begin when using fast iteration 2023-03-06 12:44:10 -08:00
joaquintides 15c9bc40f7 added fast table_iterator::increment variant for regular-layout groups 2023-03-06 12:44:10 -08:00
joaquintides 9aedb95296 Merge pull request #185 from boostorg/fix/uses-allocator 2023-03-06 21:38:13 +01:00
Christian Mazakas e56cb4418c Remove extraneous information from TypePolicy's construct, destroy docs 2023-03-06 09:48:26 -08:00
Christian Mazakas 1ae21c6d1a Remove extraneous typedef from destroy_on_exit 2023-03-06 09:47:33 -08:00
Peter Dimov 82acad3794 Increase GHA timeout to 180 minutes 2023-03-06 17:04:06 +02:00
joaquintides c50461528c fixed UB with begin when using fast iteration 2023-03-06 13:50:25 +01:00
joaquintides bd08e49255 added fast table_iterator::increment variant for regular-layout groups 2023-03-06 11:56:49 +01:00
Peter Dimov dbba3cec7b Add C++03 deprecation notice 2023-03-06 09:43:45 +02:00
Christian Mazakas 6c5b5b3186 Update comments on type policy to include changes to construct, destroy and move 2023-03-03 11:33:32 -08:00
Christian Mazakas 47dd02a4b3 Add bugfix notes to release notes 2023-03-03 11:18:41 -08:00
Christian Mazakas 8429d1a6aa Refactor node_handle to directly store element_type by modularizing and extending it 2023-03-03 11:17:38 -08:00
Christian Mazakas 86d3f9f632 Refactor move(init_type&) to handle defects in C++20 versions of libstdc++ for gcc versions <=12 2023-03-03 11:17:38 -08:00
Christian Mazakas 48e92afd92 Refactor drop_guard into destroy_on_exit 2023-03-03 11:17:38 -08:00
Christian Mazakas 5a5c31de35 Rename storage to uninitialized_storage 2023-03-03 11:17:38 -08:00
Christian Mazakas 088941dc7b Clean up usage of Allocators for flat containers 2023-03-03 11:17:38 -08:00
Christian Mazakas 5f6f1691e5 Format node_map 2023-03-03 11:17:38 -08:00
Christian Mazakas 45d6c07be6 Update emplace() to no longer needlessly rebind its allocator 2023-03-03 11:17:38 -08:00
Christian Mazakas 5c63cd2bdb Update drone to run using the same branches as listed in GHA's ci.yml 2023-03-03 11:17:38 -08:00
Christian Mazakas 86318c1e88 Update foa to construct stack-locals with the user's Allocator during emplace() 2023-03-03 11:17:38 -08:00
Christian Mazakas 0ff1fa0f6e Add test that ensures proper uses-allocator construction is followed 2023-03-03 11:17:38 -08:00
Christian Mazakas d90bf0c438 Merge pull request #186 from boostorg/cxx03-deprecation
Update changelog to reflect planned C++03 deprecation
2023-03-01 09:53:24 -08:00
Christian Mazakas dc63438e22 Add missing end-of-list marker to compliance section 2023-03-01 09:37:49 -08:00
Christian Mazakas 0a3ac26f00 Update changelog to reflect planned C++03 deprecation 2023-02-28 15:44:44 -08:00
joaquintides c64ed1caa3 Feature/SIMD config (#184)
* added BOOST_UNORDERED_[ENABLE|DISABLE]_[SSE2|LITTLE_ENDIAN_NEON]
* renamed and refactored
* removed #undefs of SIMD usage macros
2023-02-26 16:39:50 +01:00
joaquintides efc33b18be Merge pull request #182 from boostorg/feature/unordered_node_map_docs
Feature/unordered node map docs
2023-02-25 10:20:05 +01:00
joaquintides c189d8d5e8 updated boost::unordered_(flat|node)_map benchmarks 2023-02-25 10:03:10 +01:00
joaquintides 886227db3b updated link to P2363 2023-02-24 09:58:51 +01:00
joaquintides 719eb90d03 fixed copy&paste error 2023-02-24 08:59:45 +01:00
joaquintides fadb686bc5 added boost::unordered_node_map to benchmarks 2023-02-23 20:17:01 +01:00
Christian Mazakas aebefaef0d Merge pull request #183 from boostorg/unordered_node_map_rc
Node Map Release Candidate
2023-02-22 08:39:59 -08:00
Christian Mazakas 63a564e8ff Update foa comments for changes in TypePolicy 2023-02-21 11:12:33 -08:00
Christian Mazakas 16c1593368 Remove extraneous copy constructor from flat set's type policy 2023-02-21 07:53:09 -08:00
Christian Mazakas 53580a3070 Fix bug in hint-based overload for node_type insertion where elements were erroneously reallocated 2023-02-19 21:26:06 -08:00
Christian Mazakas d26aeed68f Update node_handle tests to cover address stability for inserted nodes when using the hint-based overloads 2023-02-19 21:26:06 -08:00
Christian Mazakas 73eefd2b5d Rename Node{X}Types to TypePolicy in node-based foa containers 2023-02-19 21:26:06 -08:00
Christian Mazakas 3df600d069 Remove extraneous construct() overloads from the flat foa-based containers 2023-02-19 21:26:06 -08:00
Christian Mazakas a1adacdfe2 Refactor erase_on_exit to use a const_iterator so callsites can avoid a const cast 2023-02-19 21:26:06 -08:00
Christian Mazakas f405fa9118 Rename foa's emplace_dispatch to emplace_value 2023-02-19 21:26:06 -08:00
Christian Mazakas 7b5d6e7c29 Fix typos in code comments in foa 2023-02-19 21:26:06 -08:00
Christian Mazakas 7d0ba7178e Clean up naming in delete_ impl to use storage_traits for foa 2023-02-19 21:26:06 -08:00
Christian Mazakas df5e2c3aca Remove extraneous commented out code from foa 2023-02-19 21:26:06 -08:00
Christian Mazakas 343e344582 Reify implementation of node_handle's swap 2023-02-19 21:26:06 -08:00
Christian Mazakas 34ed463bea Reify implementation of node_handle's move assignment operator 2023-02-19 21:26:06 -08:00
Christian Mazakas 5986f75d16 Refactor node_handle's clear() member function to reset() 2023-02-19 21:26:06 -08:00
Christian Mazakas b08810c0c4 Add missing copyright notice to foa.hpp 2023-02-19 21:26:06 -08:00
Christian Mazakas 7c608ae7bc Include missing extract tests in transparent_tests 2023-02-19 21:25:25 -08:00
joaquintides d51cee35d5 updated open-addressing benchmark info 2023-02-18 12:31:26 +01:00
joaquintides d0289b4c7b editorial 2023-02-18 12:13:14 +01:00
Christian Mazakas bc7ba9cb3b Implement internal foa updates + node_handle for node-based containers 2023-02-14 10:55:35 -08:00
Christian Mazakas 6b10c8a4d3 Update unordered_flat_map for new type traits 2023-02-14 10:55:35 -08:00
Christian Mazakas b9805c7309 Update unordered_flat_set for new type traits 2023-02-14 10:55:35 -08:00
Christian Mazakas 844460fd22 Add unordered_node_map 2023-02-14 10:55:35 -08:00
Christian Mazakas a600278d27 Add unordered_node_set 2023-02-14 10:55:35 -08:00
Christian Mazakas 4398ffe8c9 Add foa-based node containers to node_handle_tests 2023-02-14 10:55:35 -08:00
Christian Mazakas eed1eeedeb Add foa-based node containers to extract_tests 2023-02-14 10:55:35 -08:00
Christian Mazakas 8c0c230f78 Add foa-based node containers to the exception tests 2023-02-14 10:55:35 -08:00
Christian Mazakas e96ec1e79a Add foa-based node containers to transparent_tests 2023-02-14 10:55:35 -08:00
Christian Mazakas be7dd51fab Add foa-based node containers to swap_tests 2023-02-14 10:55:35 -08:00
Christian Mazakas 4dec95840b Add foa-based node containers to simple_tests 2023-02-14 10:55:35 -08:00
Christian Mazakas d44fb36581 Add foa-based node containers to scoped_allocator tests 2023-02-14 10:55:35 -08:00
Christian Mazakas 9d3bbe27db Add foa-based node containers to scary_tests 2023-02-14 10:55:35 -08:00
Christian Mazakas 13ed4afc95 Add foa-based node containers to reserve_tests 2023-02-14 10:55:35 -08:00
Christian Mazakas b3f54e74a7 Add foa-based node containers to rehash_tests 2023-02-14 10:55:35 -08:00
Christian Mazakas d6374e2718 Add foa-based node containers to post_move_tests 2023-02-14 10:55:35 -08:00
Christian Mazakas 74156b6b06 Add foa-based node containers to noexcept_tests 2023-02-14 10:55:35 -08:00
Christian Mazakas 965048d3e6 Add foa-based node containers to move_tests 2023-02-14 10:55:35 -08:00
Christian Mazakas 36dfe6b98b Add foa-based node containers to merge_tests 2023-02-14 10:55:35 -08:00
Christian Mazakas e4e89bdbde Add foa-based node containers to max_load_tests 2023-02-14 10:55:35 -08:00
Christian Mazakas 85a9d8d81d Add foa-based node containers to load_factor_tests 2023-02-14 10:55:35 -08:00
Christian Mazakas b21ad13bbb Add foa-based node containers to link tests 2023-02-14 10:55:35 -08:00
Christian Mazakas f0d10308e3 Add foa-based node containers to insert_tests 2023-02-14 10:55:35 -08:00
Christian Mazakas f240e587cb Add foa-based node containers to insert_hint_tests 2023-02-14 10:55:35 -08:00
Christian Mazakas 2a7dc9e40e Add foa-based node containers to init_type_insert_tests 2023-02-14 10:55:35 -08:00
Christian Mazakas 99b8d0063b Add foa-based node containers to incomplete_test 2023-02-14 10:55:35 -08:00
Christian Mazakas c6aff9278a Add foa-based node containers to fwd_set_test 2023-02-14 10:55:35 -08:00
Christian Mazakas 129497133e Add foa-based node containers to fwd_map_test 2023-02-14 10:55:35 -08:00
Christian Mazakas eaa9ff0cec Add foa-based node containers to find_tests 2023-02-14 10:55:35 -08:00
Christian Mazakas fa735864a3 Add foa-based node containers to erase_tests 2023-02-14 10:55:35 -08:00
Christian Mazakas 0ce180e19b Add foa-based node containers to erase_if tests 2023-02-14 10:55:35 -08:00
Christian Mazakas e578b7eee3 Add foa-based node containers to equivalent_keys_tests 2023-02-14 10:55:35 -08:00
Christian Mazakas 1844695b0c Add foa-based node containers to equality_tests 2023-02-14 10:55:35 -08:00
Christian Mazakas 54b9adbdbc Add foa-based node containers to emplace_tests 2023-02-14 10:55:35 -08:00
Christian Mazakas 8b71656cd7 Add foa-based node containers to copy_tests 2023-02-14 10:55:35 -08:00
Christian Mazakas a858ef5688 Add foa-based node containers to contains_tests 2023-02-14 10:55:35 -08:00
Christian Mazakas 18395c8d21 Add foa-based node containers to constructor_tests 2023-02-14 10:55:35 -08:00
Christian Mazakas e68ec5c9a9 Add foa-based node containers to compile_set tests 2023-02-14 10:55:35 -08:00
Christian Mazakas d3b264345d Add foa-based node containers to compile_map tests 2023-02-14 10:55:35 -08:00
Christian Mazakas f1e1733c06 Add foa-based node containers to at_tests 2023-02-14 10:55:35 -08:00
Christian Mazakas 66ffbdb881 Add foa-based node containers to assign_tests 2023-02-14 10:55:35 -08:00
Christian Mazakas f7f5466ed2 Add necessary #include's and typedefs for test suite to use foa-based node containers 2023-02-14 10:55:35 -08:00
Christian Mazakas 83410fcabe Add -Wunused-template to tests run with the clang-14 toolset 2023-02-14 10:55:35 -08:00
Christian Mazakas 1ee91d494d Fix bug in impl of test::exception::less::operator() 2023-02-14 10:55:35 -08:00
Christian Mazakas e8fe550d6c Add less_tests to track bug in test::exception::less::operator() impl 2023-02-14 10:55:35 -08:00
Christian Mazakas 5b0fe7f655 Update test::compare_range to use BOOST_TEST_ALL_WITH 2023-02-14 10:55:35 -08:00
Christian Mazakas ba439437bf Add osx 12 to gha ci matrix 2023-02-14 10:55:35 -08:00
joaquintides aa6eef135e editorial 2023-02-13 18:40:36 +01:00
joaquintides 1dd085daaa added unordered_node_[map|set] containers to the tutorial 2023-02-13 13:29:52 +01:00
joaquintides 2a8f50bcb7 added reference for unordered_node_set 2023-02-12 18:32:26 +01:00
joaquintides 866c58a879 typo 2023-02-12 17:35:02 +01:00
joaquintides c9a75a56c2 added reference for unordered_node_map 2023-02-11 13:23:34 +01:00
joaquintides e1861aa3d9 updated copyright notes 2023-02-11 13:23:12 +01:00
joaquintides 242c7cb93a updated release notes 2023-02-11 13:22:55 +01:00
joaquintides 0597463902 Merge pull request #181 from boostorg/feature/mulx_docs
Documented the new mulx-based mixing algorithm
2023-02-09 09:06:51 +01:00
joaquintides 14d80725eb documented the new mulx-based mixing algorithm 2023-02-08 20:07:23 +01:00
Peter Dimov a74962bc3c Revert reversion of 32 bit mulx multiplier 2023-01-30 20:03:01 +02:00
Peter Dimov cafa1f2278 Revert "Update mulx multipliers"
This reverts commit 9bc471310e.
2023-01-30 10:17:12 +02:00
joaquintides 40d5097d99 fixed sign-conversion warning in Neon group15::match 2023-01-28 10:27:40 +01:00
Peter Dimov 958aea3a61 Merge branch 'develop' into feature/mulx 2023-01-27 22:03:03 +02:00
Peter Dimov 6846eb53fd Change architecture of macOS 12.4 job to arm64 2023-01-27 21:24:28 +02:00
Peter Dimov 3b3ba7d6f7 Avoid false -Warray-bounds positive under mingw32 gcc-12 2023-01-27 20:35:14 +02:00
Peter Dimov 22135bd845 Merge branch 'develop' into feature/mulx 2023-01-27 18:39:46 +02:00
Peter Dimov 141550f585 Update cmake_subdir_test 2023-01-27 18:39:06 +02:00
Peter Dimov d750b39e1e Fix /RTCc failure in mulx32 2023-01-27 18:37:23 +02:00
Peter Dimov 055587acf4 Update cmake_subdir_test 2023-01-27 17:56:00 +02:00
Peter Dimov 0f8dd003a3 Switch default mixing policy from xmx to mulx 2023-01-27 08:15:37 +02:00
Peter Dimov 9bc471310e Update mulx multipliers 2023-01-27 08:00:40 +02:00
Peter Dimov e56aac2e98 Merge branch 'develop' into feature/mulx 2023-01-27 07:58:45 +02:00
Peter Dimov 09a3275357 Add /doc/pdf/ to .gitignore 2023-01-12 01:35:35 +02:00
Christian Mazakas a3c1e643dc Merge pull request #177 from cmazakas/feature/p2363
Feature/p2363
2022-12-20 10:55:20 -08:00
joaquintides 955f94350b typo 2022-12-20 16:46:08 +01:00
joaquintides 1955e4f36a fixed constraint notes in transparent insert with hint 2022-12-20 11:35:15 +01:00
joaquintides 644295db3a added release notes for feature/p2363 2022-12-19 13:24:04 -08:00
joaquintides 0391b6dafc documented P2363 overloads for unordered_flat_set 2022-12-19 13:24:04 -08:00
joaquintides c646f3e3ca documented P2363 overloads for unordered_flat_map 2022-12-19 13:24:04 -08:00
joaquintides 0e9523a0a4 documented P2363 overloads for unordered_multiset 2022-12-19 13:24:04 -08:00
joaquintides 24d8449831 documented P2363 overloads for unordered_set 2022-12-19 13:24:04 -08:00
joaquintides 59d0accce0 documented P2363 overloads for unordered/unordered_multimap 2022-12-19 12:46:46 -08:00
joaquintides 61aedca940 documented P2363 overloads for unordered_map 2022-12-19 12:46:46 -08:00
Christian Mazakas 3fb516367f Add transparent try_emplace() docs to unordered_map 2022-12-19 12:46:46 -08:00
Christian Mazakas 7d77f1d478 Add transparent insert() overloads to unordered_[flat]_set 2022-12-19 12:46:46 -08:00
Christian Mazakas 7572de875c Add transparent insert tests for set containers 2022-12-19 12:46:46 -08:00
Christian Mazakas 63d907cde7 Merge pull request #174 from boostorg/feature/pr165_refactor
feature/pr165 refactor
2022-12-15 10:45:10 -08:00
joaquintides f0037d336d added narrow_cast 2022-12-14 10:39:32 -08:00
Christian Mazakas 8b14b7cddc Add tests for narrow_cast 2022-12-14 10:39:32 -08:00
Christian Mazakas 6c60524fb7 Implement transparent bucket() 2022-12-13 14:28:19 -08:00
Christian Mazakas 8b1dcd3da3 Add tests for transparent bucket() 2022-12-13 14:28:19 -08:00
Christian Mazakas 0e980577b0 Add transparent at() 2022-12-13 14:28:19 -08:00
Christian Mazakas 1f4244ec27 Add tests for transparent at() 2022-12-13 14:28:19 -08:00
Christian Mazakas dfbff823a9 Add transparent subscript 2022-12-13 14:28:19 -08:00
Christian Mazakas b85e17085f Add tests for transparent subscript operator 2022-12-13 14:28:19 -08:00
Christian Mazakas 0a879c1063 Implement transparent insert_or_assign() 2022-12-13 14:28:19 -08:00
Christian Mazakas 01d508b6af Improve naming in insert_or_assign() 2022-12-13 14:28:19 -08:00
Christian Mazakas 7709950111 Add transparent insert_or_assign() tests 2022-12-13 14:28:19 -08:00
Christian Mazakas 1ede59e662 Improve naming in are_transparent 2022-12-13 14:28:19 -08:00
Christian Mazakas bf2b521789 Add transparent try_emplace() 2022-12-13 14:28:19 -08:00
Christian Mazakas ee1515189b Add transparent tests for unordered_map's try_emplace() 2022-12-13 14:28:19 -08:00
Christian Mazakas eb33ad3e3f Merge pull request #173 from cmazakas/fix/exception-guarantees
Exception Guarantees
2022-12-13 14:22:29 -08:00
Christian Mazakas 0ad6ccb0b9 Update FOA noexcept docs for move assignment, swap 2022-12-13 13:53:29 -08:00
Christian Mazakas 0ab4e12502 Update noexcept tests for new FOA requirements 2022-12-13 13:53:29 -08:00
Christian Mazakas c8910e8007 Update FOA move assignment operator to uphold the strong guarantee for Hash, KeyEqual 2022-12-13 13:53:29 -08:00
Christian Mazakas 2043f98593 Add strong exception guarantees around Hash, KeyEqual for move_assign_exception_tests 2022-12-13 13:53:29 -08:00
Christian Mazakas 260b573d8d Update FOA implementation to exhibit strong guarantee for Hash, KeyEqual in copy assignment 2022-12-13 13:53:29 -08:00
Christian Mazakas 4ac3dcc90c Update assign_exception_tests to assert strong guarantee around Hash, KeyEqual pairing 2022-12-13 13:53:29 -08:00
Christian Mazakas 75ea43823e Update test Hash, KeyEqual to be nothrow swappable 2022-12-13 13:53:29 -08:00
Christian Mazakas b1d43d3ca5 Update FOA containers to require nothrow swappability of Hash, KeyEqual members and ensure that throwing assertions uphold strong guarantee 2022-12-13 13:53:29 -08:00
Christian Mazakas 534170a942 Remove foa-related macro used for relaxing invariant checking in check_equivalent_keys 2022-12-13 13:53:29 -08:00
Christian Mazakas 7befee3bd6 Update swap_exception_tests to exclude FOA containers and add test for throwing asserts when comparing allocators 2022-12-13 13:53:29 -08:00
Christian Mazakas 01deb2fd61 Merge pull request #176 from boostorg/feature/foa_fast_copy_fix
feature/foa fast copy fix
2022-12-13 13:52:59 -08:00
joaquintides 91eddbabe8 restricted memcpy to allocators known to not have fancy construct() 2022-12-13 09:35:28 -08:00
Christian Mazakas 47e205487d Fix potential integer overflow in test::hash<int> 2022-12-13 09:35:28 -08:00
Christian Mazakas 2c1c99407e Update copy_tests to test a trivially copyable value_type with an Allocator with defined construct() 2022-12-13 09:35:28 -08:00
joaquintides 6be2bf89b6 Merge pull request #175 from boostorg/feature/optimized_try_emplace
feature/optimized_try_emplace
2022-12-13 09:24:56 +01:00
joaquintides 5eda445db0 optimized try_emplace and extended it for future use in boost::unordered_flat_set heterogeneous insert 2022-12-11 18:49:21 +01:00
Christian Mazakas 63f07daa88 Merge pull request #172 from boostorg/feature/foa_fast_copy
feature/foa fast copy
2022-12-09 10:05:54 -08:00
Peter Dimov 7040c57750 Add mulx_mix 2022-12-08 21:43:57 +02:00
joaquintides 1d99854979 worked around missing std::is_trivially_copy_constructible in GCC<=4.9 2022-11-07 17:41:47 +01:00
joaquintides 5a4071d4f0 silenced bogus CGG warning 2022-11-07 13:47:43 +01:00
joaquintides c30e93544d implemented copy_elements_from with fast branch, introduced for_all_elements_while 2022-11-07 12:31:26 +01:00
357 changed files with 40936 additions and 7174 deletions
+63 -33
View File
@@ -31,96 +31,126 @@ environment:
B2_VARIANT: debug,release
matrix:
- FLAVOR: Visual Studio 2008, 2010, 2012
- FLAVOR: Visual Studio 2015
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
B2_TOOLSET: msvc-9.0,msvc-10.0,msvc-11.0
B2_ADDRESS_MODEL: 32 # No 64bit support
B2_TOOLSET: msvc-14.0
- FLAVOR: Visual Studio 2013, 2015
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
B2_TOOLSET: msvc-12.0,msvc-14.0
- FLAVOR: Visual Studio 2017
- FLAVOR: Visual Studio 2017, C++14
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
B2_CXXSTD: 14,17
B2_CXXSTD: 14
B2_TOOLSET: msvc-14.1
- FLAVOR: Visual Studio 2017
- FLAVOR: Visual Studio 2017, C++17
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
B2_CXXSTD: 17
B2_TOOLSET: msvc-14.1
- FLAVOR: Visual Studio 2017, C++latest
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
B2_CXXSTD: latest
B2_TOOLSET: msvc-14.1
- FLAVOR: cygwin (32-bit)
- FLAVOR: cygwin (32-bit, C++11)
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
ADDPATH: C:\cygwin\bin;
B2_ADDRESS_MODEL: 32
B2_CXXSTD: 03,11,14,1z
B2_CXXSTD: 11
B2_TOOLSET: gcc
- FLAVOR: cygwin (64-bit)
- FLAVOR: cygwin (32-bit, C++14)
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
ADDPATH: C:\cygwin64\bin;
B2_ADDRESS_MODEL: 64
B2_CXXSTD: 03,11,14,1z
ADDPATH: C:\cygwin\bin;
B2_ADDRESS_MODEL: 32
B2_CXXSTD: 14
B2_TOOLSET: gcc
- FLAVOR: cygwin (64-bit, latest)
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2022
ADDPATH: C:\cygwin64\bin;
B2_ADDRESS_MODEL: 64
B2_CXXSTD: 03
- FLAVOR: cygwin (32-bit, C++1z)
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
ADDPATH: C:\cygwin\bin;
B2_ADDRESS_MODEL: 32
B2_CXXSTD: 1z
B2_TOOLSET: gcc
B2_FLAGS: "include=libs/unordered/test/unordered include=libs/unordered/test/exception"
- FLAVOR: cygwin (64-bit, latest)
- FLAVOR: cygwin (64-bit, latest, C++11)
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2022
ADDPATH: C:\cygwin64\bin;
B2_ADDRESS_MODEL: 64
B2_CXXSTD: 11
B2_TOOLSET: gcc
B2_FLAGS: "include=libs/unordered/test/unordered include=libs/unordered/test/exception"
B2_VARIANT: release
- FLAVOR: cygwin (64-bit, latest)
- FLAVOR: cygwin (64-bit, latest, C++14)
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2022
ADDPATH: C:\cygwin64\bin;
B2_ADDRESS_MODEL: 64
B2_CXXSTD: 14
B2_TOOLSET: gcc
B2_FLAGS: "include=libs/unordered/test/unordered include=libs/unordered/test/exception"
B2_VARIANT: release
- FLAVOR: cygwin (64-bit, latest)
- FLAVOR: cygwin (64-bit, latest, C++1z)
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2022
ADDPATH: C:\cygwin64\bin;
B2_ADDRESS_MODEL: 64
B2_CXXSTD: 1z
B2_TOOLSET: gcc
B2_FLAGS: "include=libs/unordered/test/unordered include=libs/unordered/test/exception"
B2_VARIANT: release
- FLAVOR: mingw-w64, 32 bit
- FLAVOR: mingw-w64, 32 bit, C++11
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
ADDPATH: C:\mingw-w64\i686-8.1.0-posix-dwarf-rt_v6-rev0\mingw32\bin;
B2_CXXSTD: 03,11,14
B2_CXXSTD: 11
B2_TOOLSET: gcc
B2_ADDRESS_MODEL: 32
- FLAVOR: mingw-w64, 32 bit
- FLAVOR: mingw-w64, 32 bit, C++14
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
ADDPATH: C:\mingw-w64\i686-8.1.0-posix-dwarf-rt_v6-rev0\mingw32\bin;
B2_CXXSTD: 17,2a
B2_CXXSTD: 14
B2_TOOLSET: gcc
B2_ADDRESS_MODEL: 32
- FLAVOR: mingw-w64, 64 bit
- FLAVOR: mingw-w64, 32 bit, C++17
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
ADDPATH: C:\mingw-w64\i686-8.1.0-posix-dwarf-rt_v6-rev0\mingw32\bin;
B2_CXXSTD: 17
B2_TOOLSET: gcc
B2_ADDRESS_MODEL: 32
- FLAVOR: mingw-w64, 32 bit, C++2a
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
ADDPATH: C:\mingw-w64\i686-8.1.0-posix-dwarf-rt_v6-rev0\mingw32\bin;
B2_CXXSTD: 2a
B2_TOOLSET: gcc
B2_ADDRESS_MODEL: 32
- FLAVOR: mingw-w64, 64 bit, C++11
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
ADDPATH: C:\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin;
B2_CXXSTD: 03,11,14
B2_CXXSTD: 11
B2_TOOLSET: gcc
B2_ADDRESS_MODEL: 64
- FLAVOR: mingw-w64, 64 bit
- FLAVOR: mingw-w64, 64 bit, C++14
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
ADDPATH: C:\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin;
B2_CXXSTD: 17,2a
B2_CXXSTD: 14
B2_TOOLSET: gcc
B2_ADDRESS_MODEL: 64
- FLAVOR: mingw-w64, 64 bit, C++17
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
ADDPATH: C:\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin;
B2_CXXSTD: 17
B2_TOOLSET: gcc
B2_ADDRESS_MODEL: 64
- FLAVOR: mingw-w64, 64 bit, C++2a
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
ADDPATH: C:\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin;
B2_CXXSTD: 2a
B2_TOOLSET: gcc
B2_ADDRESS_MODEL: 64
+177 -74
View File
@@ -6,11 +6,12 @@ local library = "unordered";
local triggers =
{
branch: [ "master", "develop", "feature/*", "bugfix/*" ]
branch: [ "master", "develop", "feature/*", "bugfix/*", "fix/*", "pr/*" ]
};
local ubsan = { UBSAN: '1', UBSAN_OPTIONS: 'print_stacktrace=1' };
local asan = { ASAN: '1' };
local tsan = { TSAN: '1' };
local linux_pipeline(name, image, environment, packages = "", sources = [], arch = "amd64") =
{
@@ -99,40 +100,16 @@ local windows_pipeline(name, image, environment, arch = "amd64") =
};
[
linux_pipeline(
"Linux 14.04 GCC 4.4 32/64",
"cppalliance/droneubuntu1404:1",
{ TOOLSET: 'gcc', COMPILER: 'g++-4.4', CXXSTD: '98,0x', ADDRMD: '32,64' },
"g++-4.4-multilib",
[ "ppa:ubuntu-toolchain-r/test" ],
),
linux_pipeline(
"Linux 14.04 GCC 4.6 32/64",
"cppalliance/droneubuntu1404:1",
{ TOOLSET: 'gcc', COMPILER: 'g++-4.6', CXXSTD: '98,0x', ADDRMD: '32,64' },
"g++-4.6-multilib",
[ "ppa:ubuntu-toolchain-r/test" ],
),
linux_pipeline(
"Linux 14.04 GCC 4.7 32/64",
"cppalliance/droneubuntu1404:1",
{ TOOLSET: 'gcc', COMPILER: 'g++-4.7', CXXSTD: '98,0x', ADDRMD: '32,64' },
"g++-4.7-multilib",
[ "ppa:ubuntu-toolchain-r/test" ],
),
linux_pipeline(
"Linux 14.04 GCC 4.8* 32/64",
"cppalliance/droneubuntu1404:1",
{ TOOLSET: 'gcc', COMPILER: 'g++', CXXSTD: '03,11', ADDRMD: '32,64' },
{ TOOLSET: 'gcc', COMPILER: 'g++', CXXSTD: '11', ADDRMD: '32,64' },
),
linux_pipeline(
"Linux 14.04 GCC 4.9 32/64",
"cppalliance/droneubuntu1404:1",
{ TOOLSET: 'gcc', COMPILER: 'g++-4.9', CXXSTD: '03,11', ADDRMD: '32,64' },
{ TOOLSET: 'gcc', COMPILER: 'g++-4.9', CXXSTD: '11', ADDRMD: '32,64' },
"g++-4.9-multilib",
[ "ppa:ubuntu-toolchain-r/test" ],
),
@@ -140,226 +117,352 @@ local windows_pipeline(name, image, environment, arch = "amd64") =
linux_pipeline(
"Linux 16.04 GCC 5* 32/64",
"cppalliance/droneubuntu1604:1",
{ TOOLSET: 'gcc', COMPILER: 'g++', CXXSTD: '03,11,14', ADDRMD: '32,64' },
{ TOOLSET: 'gcc', COMPILER: 'g++', CXXSTD: '11,14', ADDRMD: '32,64' },
),
linux_pipeline(
"Linux 18.04 GCC 6 32/64",
"cppalliance/droneubuntu1804:1",
{ TOOLSET: 'gcc', COMPILER: 'g++-6', CXXSTD: '03,11,14', ADDRMD: '32,64' },
{ TOOLSET: 'gcc', COMPILER: 'g++-6', CXXSTD: '11,14', ADDRMD: '32,64' },
"g++-6-multilib",
),
linux_pipeline(
"Linux 18.04 GCC 7* 32/64",
"cppalliance/droneubuntu1804:1",
{ TOOLSET: 'gcc', COMPILER: 'g++', CXXSTD: '03,11,14,17', ADDRMD: '32,64' },
{ TOOLSET: 'gcc', COMPILER: 'g++', CXXSTD: '11,14,17', ADDRMD: '32,64' },
),
linux_pipeline(
"Linux 18.04 GCC 8 32/64",
"Linux 18.04 GCC 8 32/64 (11)",
"cppalliance/droneubuntu1804:1",
{ TOOLSET: 'gcc', COMPILER: 'g++-8', CXXSTD: '03,11,14,17', ADDRMD: '32,64' },
{ TOOLSET: 'gcc', COMPILER: 'g++-8', CXXSTD: '11', ADDRMD: '32,64' },
"g++-8-multilib",
),
linux_pipeline(
"Linux 20.04 GCC 9* 32/64",
"Linux 18.04 GCC 8 32/64 (14,17)",
"cppalliance/droneubuntu1804:1",
{ TOOLSET: 'gcc', COMPILER: 'g++-8', CXXSTD: '14,17', ADDRMD: '32,64' },
"g++-8-multilib",
),
linux_pipeline(
"Linux 20.04 GCC 9* 32/64 (11,14)",
"cppalliance/droneubuntu2004:1",
{ TOOLSET: 'gcc', COMPILER: 'g++', CXXSTD: '03,11,14,17,2a', ADDRMD: '32,64' },
{ TOOLSET: 'gcc', COMPILER: 'g++', CXXSTD: '11,14', ADDRMD: '32,64' },
),
linux_pipeline(
"Linux 20.04 GCC 9* 32/64 (17,2a)",
"cppalliance/droneubuntu2004:1",
{ TOOLSET: 'gcc', COMPILER: 'g++', CXXSTD: '17,2a', ADDRMD: '32,64' },
),
linux_pipeline(
"Linux 20.04 GCC 9* ARM64",
"cppalliance/droneubuntu2004:multiarch",
{ TOOLSET: 'gcc', COMPILER: 'g++', CXXSTD: '03,11,14,17,2a' },
{ TOOLSET: 'gcc', COMPILER: 'g++', CXXSTD: '11,14,17,2a' },
arch="arm64",
),
linux_pipeline(
"Linux 20.04 GCC 9* S390x",
"Linux 20.04 GCC 9* S390x (11,14)",
"cppalliance/droneubuntu2004:multiarch",
{ TOOLSET: 'gcc', COMPILER: 'g++', CXXSTD: '03,11,14,17,2a' },
{ TOOLSET: 'gcc', COMPILER: 'g++', CXXSTD: '11,14' },
arch="s390x",
),
linux_pipeline(
"Linux 20.04 GCC 10 32/64",
"Linux 20.04 GCC 9* S390x (17,2a)",
"cppalliance/droneubuntu2004:multiarch",
{ TOOLSET: 'gcc', COMPILER: 'g++', CXXSTD: '17,2a' },
arch="s390x",
),
linux_pipeline(
"Linux 20.04 GCC 10 32/64 (11,14)",
"cppalliance/droneubuntu2004:1",
{ TOOLSET: 'gcc', COMPILER: 'g++-10', CXXSTD: '03,11,14,17,20', ADDRMD: '32,64' },
{ TOOLSET: 'gcc', COMPILER: 'g++-10', CXXSTD: '11,14', ADDRMD: '32,64' },
"g++-10-multilib",
),
linux_pipeline(
"Linux 22.04 GCC 11* 32/64",
"cppalliance/droneubuntu2204:1",
{ TOOLSET: 'gcc', COMPILER: 'g++', CXXSTD: '03,11,14,17,2a', ADDRMD: '32,64' },
"Linux 20.04 GCC 10 32/64 (17,20)",
"cppalliance/droneubuntu2004:1",
{ TOOLSET: 'gcc', COMPILER: 'g++-10', CXXSTD: '17,20', ADDRMD: '32,64' },
"g++-10-multilib",
),
linux_pipeline(
"Linux 22.04 GCC 12 32 ASAN (03,11,14)",
"Linux 22.04 GCC 11* 32/64 (11,14)",
"cppalliance/droneubuntu2204:1",
{ TOOLSET: 'gcc', COMPILER: 'g++-12', CXXSTD: '03,11,14', ADDRMD: '32' } + asan,
{ TOOLSET: 'gcc', COMPILER: 'g++', CXXSTD: '11,14', ADDRMD: '32,64' },
),
linux_pipeline(
"Linux 22.04 GCC 11* 32/64 (17,2a)",
"cppalliance/droneubuntu2204:1",
{ TOOLSET: 'gcc', COMPILER: 'g++', CXXSTD: '17,2a', ADDRMD: '32,64' },
),
linux_pipeline(
"Linux 22.04 GCC 12 32 ASAN (11,14)",
"cppalliance/droneubuntu2204:1",
{ TOOLSET: 'gcc', COMPILER: 'g++-12', CXXSTD: '11', ADDRMD: '32' } + asan,
"g++-12-multilib",
),
linux_pipeline(
"Linux 22.04 GCC 12 32 ASAN (17,20,2b)",
"Linux 22.04 GCC 12 32 ASAN (14)",
"cppalliance/droneubuntu2204:1",
{ TOOLSET: 'gcc', COMPILER: 'g++-12', CXXSTD: '17,20,2b', ADDRMD: '32' } + asan,
{ TOOLSET: 'gcc', COMPILER: 'g++-12', CXXSTD: '14', ADDRMD: '32' } + asan,
"g++-12-multilib",
),
linux_pipeline(
"Linux 22.04 GCC 12 64 ASAN (03,11,14)",
"Linux 22.04 GCC 12 32 ASAN (17)",
"cppalliance/droneubuntu2204:1",
{ TOOLSET: 'gcc', COMPILER: 'g++-12', CXXSTD: '03,11,14', ADDRMD: '64' } + asan,
{ TOOLSET: 'gcc', COMPILER: 'g++-12', CXXSTD: '17', ADDRMD: '32' } + asan,
"g++-12-multilib",
),
linux_pipeline(
"Linux 22.04 GCC 12 64 ASAN (17,20,2b)",
"Linux 22.04 GCC 12 32 ASAN (20)",
"cppalliance/droneubuntu2204:1",
{ TOOLSET: 'gcc', COMPILER: 'g++-12', CXXSTD: '17,20,2b', ADDRMD: '64' } + asan,
{ TOOLSET: 'gcc', COMPILER: 'g++-12', CXXSTD: '20', ADDRMD: '32' } + asan,
"g++-12-multilib",
),
linux_pipeline(
"Linux 22.04 GCC 12 32 ASAN (2b)",
"cppalliance/droneubuntu2204:1",
{ TOOLSET: 'gcc', COMPILER: 'g++-12', CXXSTD: '2b', ADDRMD: '32' } + asan,
"g++-12-multilib",
),
linux_pipeline(
"Linux 22.04 GCC 12 64 ASAN (11,14)",
"cppalliance/droneubuntu2204:1",
{ TOOLSET: 'gcc', COMPILER: 'g++-12', CXXSTD: '11,14', ADDRMD: '64' } + asan,
"g++-12-multilib",
),
linux_pipeline(
"Linux 22.04 GCC 12 64 ASAN (17)",
"cppalliance/droneubuntu2204:1",
{ TOOLSET: 'gcc', COMPILER: 'g++-12', CXXSTD: '17', ADDRMD: '64' } + asan,
"g++-12-multilib",
),
linux_pipeline(
"Linux 22.04 GCC 12 64 ASAN (20)",
"cppalliance/droneubuntu2204:1",
{ TOOLSET: 'gcc', COMPILER: 'g++-12', CXXSTD: '20', ADDRMD: '64' } + asan,
"g++-12-multilib",
),
linux_pipeline(
"Linux 22.04 GCC 12 64 ASAN (2b)",
"cppalliance/droneubuntu2204:1",
{ TOOLSET: 'gcc', COMPILER: 'g++-12', CXXSTD: '2b', ADDRMD: '64' } + asan,
"g++-12-multilib",
),
linux_pipeline(
"Linux 22.04 GCC 12 64 TSAN (11,14,17,20,2b)",
"cppalliance/droneubuntu2204:1",
{ TOOLSET: 'gcc', COMPILER: 'g++-12', CXXSTD: '11,14,17,20,2b', ADDRMD: '64', TARGET: 'libs/unordered/test//cfoa_tests' } + tsan,
"g++-12-multilib",
),
linux_pipeline(
"Linux 23.04 GCC 13 32/64 (11,14)",
"cppalliance/droneubuntu2304:1",
{ TOOLSET: 'gcc', COMPILER: 'g++-13', CXXSTD: '11,14', ADDRMD: '32,64' },
"g++-13 g++-13-multilib",
),
linux_pipeline(
"Linux 23.04 GCC 13 32/64 (17,20,2b)",
"cppalliance/droneubuntu2304:1",
{ TOOLSET: 'gcc', COMPILER: 'g++-13', CXXSTD: '17,20,2b', ADDRMD: '32,64' },
"g++-13 g++-13-multilib",
),
linux_pipeline(
"Linux 16.04 Clang 3.5",
"cppalliance/droneubuntu1604:1",
{ TOOLSET: 'clang', COMPILER: 'clang++-3.5', CXXSTD: '03,11' },
{ TOOLSET: 'clang', COMPILER: 'clang++-3.5', CXXSTD: '11' },
"clang-3.5",
),
linux_pipeline(
"Linux 16.04 Clang 3.6",
"cppalliance/droneubuntu1604:1",
{ TOOLSET: 'clang', COMPILER: 'clang++-3.6', CXXSTD: '03,11,14' },
{ TOOLSET: 'clang', COMPILER: 'clang++-3.6', CXXSTD: '11,14' },
"clang-3.6",
),
linux_pipeline(
"Linux 16.04 Clang 3.7",
"cppalliance/droneubuntu1604:1",
{ TOOLSET: 'clang', COMPILER: 'clang++-3.7', CXXSTD: '03,11,14' },
{ TOOLSET: 'clang', COMPILER: 'clang++-3.7', CXXSTD: '11,14' },
"clang-3.7",
),
linux_pipeline(
"Linux 16.04 Clang 3.8",
"cppalliance/droneubuntu1604:1",
{ TOOLSET: 'clang', COMPILER: 'clang++-3.8', CXXSTD: '03,11,14' },
{ TOOLSET: 'clang', COMPILER: 'clang++-3.8', CXXSTD: '11,14' },
"clang-3.8",
),
linux_pipeline(
"Linux 18.04 Clang 3.9",
"cppalliance/droneubuntu1804:1",
{ TOOLSET: 'clang', COMPILER: 'clang++-3.9', CXXSTD: '03,11,14' },
{ TOOLSET: 'clang', COMPILER: 'clang++-3.9', CXXSTD: '11,14' },
"clang-3.9",
),
linux_pipeline(
"Linux 18.04 Clang 4.0",
"cppalliance/droneubuntu1804:1",
{ TOOLSET: 'clang', COMPILER: 'clang++-4.0', CXXSTD: '03,11,14' },
{ TOOLSET: 'clang', COMPILER: 'clang++-4.0', CXXSTD: '11,14' },
"clang-4.0",
),
linux_pipeline(
"Linux 18.04 Clang 5.0",
"cppalliance/droneubuntu1804:1",
{ TOOLSET: 'clang', COMPILER: 'clang++-5.0', CXXSTD: '03,11,14,1z' },
{ TOOLSET: 'clang', COMPILER: 'clang++-5.0', CXXSTD: '11,14,1z' },
"clang-5.0",
),
linux_pipeline(
"Linux 18.04 Clang 6.0",
"cppalliance/droneubuntu1804:1",
{ TOOLSET: 'clang', COMPILER: 'clang++-6.0', CXXSTD: '03,11,14,17' },
{ TOOLSET: 'clang', COMPILER: 'clang++-6.0', CXXSTD: '11,14,17' },
"clang-6.0",
),
linux_pipeline(
"Linux 20.04 Clang 7",
"cppalliance/droneubuntu2004:1",
{ TOOLSET: 'clang', COMPILER: 'clang++-7', CXXSTD: '03,11,14,17' },
{ TOOLSET: 'clang', COMPILER: 'clang++-7', CXXSTD: '11,14,17' },
"clang-7",
),
linux_pipeline(
"Linux 20.04 Clang 8",
"cppalliance/droneubuntu2004:1",
{ TOOLSET: 'clang', COMPILER: 'clang++-8', CXXSTD: '03,11,14,17' },
{ TOOLSET: 'clang', COMPILER: 'clang++-8', CXXSTD: '11,14,17' },
"clang-8",
),
linux_pipeline(
"Linux 20.04 Clang 9",
"cppalliance/droneubuntu2004:1",
{ TOOLSET: 'clang', COMPILER: 'clang++-9', CXXSTD: '03,11,14,17,2a' },
{ TOOLSET: 'clang', COMPILER: 'clang++-9', CXXSTD: '11,14,17,2a' },
"clang-9",
),
linux_pipeline(
"Linux 20.04 Clang 10",
"cppalliance/droneubuntu2004:1",
{ TOOLSET: 'clang', COMPILER: 'clang++-10', CXXSTD: '03,11,14,17,2a' },
{ TOOLSET: 'clang', COMPILER: 'clang++-10', CXXSTD: '11,14,17,2a' },
"clang-10",
),
linux_pipeline(
"Linux 20.04 Clang 11",
"cppalliance/droneubuntu2004:1",
{ TOOLSET: 'clang', COMPILER: 'clang++-11', CXXSTD: '03,11,14,17,2a' },
{ TOOLSET: 'clang', COMPILER: 'clang++-11', CXXSTD: '11,14,17,2a' },
"clang-11",
),
linux_pipeline(
"Linux 20.04 Clang 12",
"cppalliance/droneubuntu2004:1",
{ TOOLSET: 'clang', COMPILER: 'clang++-12', CXXSTD: '03,11,14,17,2a' },
{ TOOLSET: 'clang', COMPILER: 'clang++-12', CXXSTD: '11,14,17,2a' },
"clang-12",
),
linux_pipeline(
"Linux 22.04 Clang 13",
"cppalliance/droneubuntu2204:1",
{ TOOLSET: 'clang', COMPILER: 'clang++-13', CXXSTD: '03,11,14,17,20' },
{ TOOLSET: 'clang', COMPILER: 'clang++-13', CXXSTD: '11,14,17,20' },
"clang-13",
),
linux_pipeline(
"Linux 22.04 Clang 14 UBSAN",
"Linux 22.04 Clang 14 UBSAN (11,14)",
"cppalliance/droneubuntu2204:1",
{ TOOLSET: 'clang', COMPILER: 'clang++-14', CXXSTD: '03,11,14,17,20' } + ubsan,
{ TOOLSET: 'clang', COMPILER: 'clang++-14', CXXSTD: '11,14' } + ubsan,
"clang-14",
),
linux_pipeline(
"Linux 22.04 Clang 14 ASAN",
"Linux 22.04 Clang 14 UBSAN (17,20)",
"cppalliance/droneubuntu2204:1",
{ TOOLSET: 'clang', COMPILER: 'clang++-14', CXXSTD: '03,11,14,17,20' } + asan,
{ TOOLSET: 'clang', COMPILER: 'clang++-14', CXXSTD: '17,20' } + ubsan,
"clang-14",
),
linux_pipeline(
"Linux 22.04 Clang 14 ASAN (11,14)",
"cppalliance/droneubuntu2204:1",
{ TOOLSET: 'clang', COMPILER: 'clang++-14', CXXSTD: '11,14' } + asan,
"clang-14",
),
linux_pipeline(
"Linux 22.04 Clang 14 ASAN (17,20)",
"cppalliance/droneubuntu2204:1",
{ TOOLSET: 'clang', COMPILER: 'clang++-14', CXXSTD: '17,20' } + asan,
"clang-14",
),
linux_pipeline(
"Linux 22.04 Clang 14 libc++ 64 TSAN",
"cppalliance/droneubuntu2204:1",
{ TOOLSET: 'clang', COMPILER: 'clang++-14', ADDRMD: '64', TARGET: 'libs/unordered/test//cfoa_tests', CXXSTD: '11,14,17,20', STDLIB: 'libc++' } + tsan,
"clang-14 libc++-14-dev libc++abi-14-dev",
),
linux_pipeline(
"Linux 22.04 Clang 15",
"cppalliance/droneubuntu2204:1",
{ TOOLSET: 'clang', COMPILER: 'clang++-15', CXXSTD: '03,11,14,17,20,2b' },
{ TOOLSET: 'clang', COMPILER: 'clang++-15', CXXSTD: '11,14,17,20,2b' },
"clang-15",
["deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-15 main"],
),
macos_pipeline(
"MacOS 10.15 Xcode 12.2 UBSAN",
{ TOOLSET: 'clang', COMPILER: 'clang++', CXXSTD: '03,11,14,1z' } + ubsan,
"MacOS 10.15 Xcode 12.2 UBSAN (11)",
{ TOOLSET: 'clang', COMPILER: 'clang++', CXXSTD: '11' } + ubsan,
),
macos_pipeline(
"MacOS 10.15 Xcode 12.2 UBSAN (14)",
{ TOOLSET: 'clang', COMPILER: 'clang++', CXXSTD: '14' } + ubsan,
),
macos_pipeline(
"MacOS 10.15 Xcode 12.2 UBSAN (1z)",
{ TOOLSET: 'clang', COMPILER: 'clang++', CXXSTD: '1z' } + ubsan,
),
macos_pipeline(
"MacOS 12.4 Xcode 13.4.1 ASAN",
{ TOOLSET: 'clang', COMPILER: 'clang++', CXXSTD: '03,11,14,1z' } + asan,
xcode_version = "13.4.1", osx_version = "monterey",
{ TOOLSET: 'clang', COMPILER: 'clang++', CXXSTD: '11,14,1z' } + asan,
xcode_version = "13.4.1", osx_version = "monterey", arch = "arm64",
),
macos_pipeline(
"MacOS 12.4 Xcode 13.4.1 TSAN",
{ TOOLSET: 'clang', COMPILER: 'clang++', CXXSTD: '11,14,1z', TARGET: 'libs/unordered/test//cfoa_tests' } + tsan,
xcode_version = "13.4.1", osx_version = "monterey", arch = "arm64",
),
windows_pipeline(
+1 -1
View File
@@ -20,4 +20,4 @@ b2 -d0 headers
if not "%CXXSTD%" == "" set CXXSTD=cxxstd=%CXXSTD%
if not "%ADDRMD%" == "" set ADDRMD=address-model=%ADDRMD%
b2 -j3 libs/%LIBRARY%/test toolset=%TOOLSET% %CXXSTD% %ADDRMD% variant=debug,release embed-manifest-via=linker
b2 --abbreviate-paths -j3 libs/%LIBRARY%/test toolset=%TOOLSET% %CXXSTD% %ADDRMD% variant=debug,release embed-manifest-via=linker
+3 -1
View File
@@ -7,6 +7,8 @@
set -ex
export PATH=~/.local/bin:/usr/local/bin:$PATH
: ${TARGET:="libs/$LIBRARY/test"}
DRONE_BUILD_DIR=$(pwd)
BOOST_BRANCH=develop
@@ -22,4 +24,4 @@ python tools/boostdep/depinst/depinst.py $LIBRARY
./b2 -d0 headers
echo "using $TOOLSET : : $COMPILER ;" > ~/user-config.jam
./b2 -j3 libs/$LIBRARY/test toolset=$TOOLSET cxxstd=$CXXSTD variant=debug,release ${ADDRMD:+address-model=$ADDRMD} ${UBSAN:+undefined-sanitizer=norecover debug-symbols=on} ${ASAN:+address-sanitizer=norecover debug-symbols=on} ${LINKFLAGS:+linkflags=$LINKFLAGS}
./b2 -j3 $TARGET toolset=$TOOLSET cxxstd=$CXXSTD variant=debug,release ${ADDRMD:+address-model=$ADDRMD} ${STDLIB:+stdlib=$STDLIB} ${UBSAN:+undefined-sanitizer=norecover debug-symbols=on} ${ASAN:+address-sanitizer=norecover debug-symbols=on} ${TSAN:+thread-sanitizer=norecover debug-symbols=on} ${LINKFLAGS:+linkflags=$LINKFLAGS}
+89 -43
View File
@@ -32,6 +32,16 @@ env:
CODECOV_NAME: Github Actions
jobs:
runner-selection:
# runs-on: ubuntu-latest
runs-on: ${{ github.repository_owner == 'boostorg' && fromJSON('[ "self-hosted", "linux", "x64", "ubuntu-latest-aws" ]') || 'ubuntu-latest' }}
outputs:
labelmatrix: ${{ steps.aws_hosted_runners.outputs.labelmatrix }}
steps:
- name: AWS Hosted Runners
id: aws_hosted_runners
uses: cppalliance/aws-hosted-runners@v1.0.0
posix:
defaults:
run:
@@ -42,40 +52,71 @@ jobs:
matrix:
include:
# Linux, gcc
- { compiler: gcc-7, cxxstd: '03,11,14,17', os: ubuntu-20.04, install: 'g++-7' }
- { compiler: gcc-8, cxxstd: '03,11,14,17', os: ubuntu-20.04, install: 'g++-8' }
- { compiler: gcc-9, cxxstd: '03,11,14,17', os: ubuntu-20.04, install: 'g++-9' }
- { compiler: gcc-10, cxxstd: '03,11,14,17,20', os: ubuntu-22.04, install: 'g++-10' }
- { compiler: gcc-11, cxxstd: '03,11,14,17,20', os: ubuntu-22.04, install: 'g++-11' }
- { name: "gcc-12 w/ sanitizers (03,11,14)", sanitize: yes,
compiler: gcc-12, cxxstd: '03,11,14', os: ubuntu-22.04, ccache_key: "san1" }
- { name: "gcc-12 w/ sanitizers (17,20,2b)", sanitize: yes,
compiler: gcc-12, cxxstd: '17,20,2b', os: ubuntu-22.04, ccache_key: "san2" }
- { compiler: gcc-7, cxxstd: '11,14,17', os: 'ubuntu-20.04', install: 'g++-7' }
- { compiler: gcc-8, cxxstd: '11,14,17', os: 'ubuntu-20.04', install: 'g++-8' }
- { compiler: gcc-9, cxxstd: '11,14,17', os: 'ubuntu-22.04', install: 'g++-9' }
- { compiler: gcc-10, cxxstd: '11,14,17,20', os: 'ubuntu-22.04', install: 'g++-10' }
- { compiler: gcc-11, cxxstd: '11,14,17,20', os: 'ubuntu-22.04', install: 'g++-11' }
- { name: "gcc-12 w/ sanitizers (11)", sanitize: yes,
compiler: gcc-12, cxxstd: '11', os: 'ubuntu-22.04', ccache_key: "san1" }
- { name: "gcc-12 w/ sanitizers (14)", sanitize: yes,
compiler: gcc-12, cxxstd: '14', os: 'ubuntu-22.04', ccache_key: "san1" }
- { name: "gcc-12 w/ sanitizers (17)", sanitize: yes,
compiler: gcc-12, cxxstd: '17', os: 'ubuntu-22.04', ccache_key: "san2" }
- { name: "gcc-12 w/ sanitizers (20)", sanitize: yes,
compiler: gcc-12, cxxstd: '20', os: 'ubuntu-22.04', ccache_key: "san2" }
- { name: "gcc-12 w/ sanitizers (2b)", sanitize: yes,
compiler: gcc-12, cxxstd: '2b', os: 'ubuntu-22.04', ccache_key: "san2" }
- { name: Collect coverage, coverage: yes,
compiler: gcc-8, cxxstd: '03,11', os: ubuntu-20.04, install: 'g++-8-multilib', address-model: '32,64', ccache_key: "cov" }
compiler: gcc-12, cxxstd: '20', os: 'ubuntu-22.04', install: 'g++-12-multilib', address-model: '32,64', ccache_key: "cov" }
- { name: "cfoa tsan (gcc-12)", cxxstd: '11,14,17,20,2b', os: 'ubuntu-22.04', compiler: gcc-12,
targets: 'libs/unordered/test//cfoa_tests', thread-sanitize: yes, ccache_key: "tsan" }
# Linux, clang, libc++
- { compiler: clang-7, cxxstd: '03,11,14,17', os: ubuntu-20.04, stdlib: libc++, install: 'clang-7 libc++-7-dev libc++abi-7-dev' }
- { compiler: clang-10, cxxstd: '03,11,14,17,20', os: ubuntu-20.04, stdlib: libc++, install: 'clang-10 libc++-10-dev libc++abi-10-dev' }
- { compiler: clang-11, cxxstd: '03,11,14,17,20', os: ubuntu-22.04, stdlib: libc++, install: 'clang-11 libc++-11-dev libc++abi-11-dev' }
# clang-12 doesn't work on ubuntu-22.04, the linker can't find -lunwind for some reason
- { name: "clang-12 w/ sanitizers (03,11,14)", sanitize: yes,
compiler: clang-12, cxxstd: '03,11,14', os: ubuntu-20.04, stdlib: libc++, install: 'clang-12 libc++-12-dev libc++abi-12-dev', ccache_key: "san1" }
- { name: "clang-12 w/ sanitizers (17,20,2b)", sanitize: yes,
compiler: clang-12, cxxstd: '17,20,2b', os: ubuntu-20.04, stdlib: libc++, install: 'clang-12 libc++-12-dev libc++abi-12-dev', ccache_key: "san2" }
- { compiler: clang-13, cxxstd: '03,11,14,17,20,2b', os: ubuntu-22.04, stdlib: libc++, install: 'clang-13 libc++-13-dev libc++abi-13-dev' }
- { compiler: clang-14, cxxstd: '03,11,14,17,20,2b', os: ubuntu-22.04, stdlib: libc++, install: 'clang-14 libc++-14-dev libc++abi-14-dev' }
- { compiler: clang-7, cxxstd: '11,14,17', os: 'ubuntu-20.04', stdlib: libc++, install: 'clang-7 libc++-7-dev libc++abi-7-dev' }
- { compiler: clang-10, cxxstd: '11,14,17,20', os: 'ubuntu-20.04', stdlib: libc++, install: 'clang-10 libc++-10-dev libc++abi-10-dev' }
- { compiler: clang-11, cxxstd: '11,14,17,20', os: 'ubuntu-22.04', stdlib: libc++, install: 'clang-11 libc++-11-dev libc++abi-11-dev' }
# clang-12 doesn't work on 'ubuntu-22.04', the linker can't find -lunwind for some reason
- { name: "clang-12 w/ sanitizers (11,14)", sanitize: yes,
compiler: clang-12, cxxstd: '11,14', os: 'ubuntu-20.04', stdlib: libc++, install: 'clang-12 libc++-12-dev libc++abi-12-dev', ccache_key: "san1" }
- { name: "clang-12 w/ sanitizers (17)", sanitize: yes,
compiler: clang-12, cxxstd: '17', os: 'ubuntu-20.04', stdlib: libc++, install: 'clang-12 libc++-12-dev libc++abi-12-dev', ccache_key: "san2" }
- { name: "clang-12 w/ sanitizers (20)", sanitize: yes,
compiler: clang-12, cxxstd: '20', os: 'ubuntu-20.04', stdlib: libc++, install: 'clang-12 libc++-12-dev libc++abi-12-dev', ccache_key: "san2" }
- { name: "clang-12 w/ sanitizers (2b)", sanitize: yes,
compiler: clang-12, cxxstd: '2b', os: 'ubuntu-20.04', stdlib: libc++, install: 'clang-12 libc++-12-dev libc++abi-12-dev', ccache_key: "san2" }
- { compiler: 'clang-13', cxxstd: '11,14', os: 'ubuntu-22.04', stdlib: libc++, install: 'clang-13 libc++-13-dev libc++abi-13-dev' }
- { compiler: 'clang-13', cxxstd: '17,20,2b', os: 'ubuntu-22.04', stdlib: libc++, install: 'clang-13 libc++-13-dev libc++abi-13-dev' }
# not using libc++ because of https://github.com/llvm/llvm-project/issues/52771
- { name: "clang-14 w/ sanitizers (03,11,14)", sanitize: yes,
compiler: clang-14, cxxstd: '03,11,14', os: ubuntu-22.04, ccache_key: "san1" }
- { name: "clang-14 w/ sanitizers (17,20,2b)", sanitize: yes,
compiler: clang-14, cxxstd: '17,20,2b', os: ubuntu-22.04, ccache_key: "san2" }
- { name: "clang-14 w/ sanitizers (11,14)", sanitize: yes,
compiler: clang-14, cxxstd: '11,14', os: 'ubuntu-22.04', ccache_key: "san1" }
- { name: "clang-14 w/ sanitizers (17)", sanitize: yes,
compiler: clang-14, cxxstd: '17', os: 'ubuntu-22.04', ccache_key: "san2" }
- { name: "clang-14 w/ sanitizers (20)", sanitize: yes,
compiler: clang-14, cxxstd: '20', container: 'ubuntu:22.04', os: 'ubuntu-latest', ccache_key: "san2" }
- { name: "clang-14 w/ sanitizers (2b)", sanitize: yes,
compiler: clang-14, cxxstd: '2b', container: 'ubuntu:22.04', os: 'ubuntu-latest', ccache_key: "san2" }
- { name: "cfoa tsan (clang-14)", cxxstd: '11,14,17,20,2b', os: 'ubuntu-22.04', compiler: clang-14,
targets: 'libs/unordered/test//cfoa_tests', thread-sanitize: yes,
stdlib: libc++, install: 'clang-14 libc++-14-dev libc++abi-14-dev', ccache_key: "tsan" }
- { compiler: 'clang-15', cxxstd: '11,14', os: 'ubuntu-22.04', stdlib: libc++, install: 'clang-15 libc++-15-dev libc++abi-15-dev' }
- { compiler: 'clang-15', cxxstd: '17,20,2b', os: 'ubuntu-22.04', stdlib: libc++, install: 'clang-15 libc++-15-dev libc++abi-15-dev' }
# OSX, clang
- { compiler: clang, cxxstd: '03,11,14,17,2a', os: macos-11, sanitize: yes }
- { compiler: clang, cxxstd: '11,14,17,2a', os: 'macos-11' }
- { compiler: clang, cxxstd: '11,14,17,2a', os: 'macos-12', sanitize: yes, ccache_key: "san1" }
- { compiler: clang, cxxstd: '11,14,17,2a', os: 'macos-12', thread-sanitize: yes, targets: 'libs/unordered/test//cfoa_tests', ccache_key: "tsan" }
- { compiler: clang, cxxstd: '11,14,17,20,2b', os: 'macos-13' }
timeout-minutes: 120
runs-on: ${{matrix.os}}
timeout-minutes: 360
# posix (gcc-12 w/ sanitizers is taking longer than 210 minutes
# timeout-minutes: 210
needs: [runner-selection]
runs-on: ${{ fromJSON(needs.runner-selection.outputs.labelmatrix)[matrix.os] }}
container: ${{matrix.container}}
env: {B2_USE_CCACHE: 1}
@@ -93,7 +134,7 @@ jobs:
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys E1DD270288B4E6030699E45FA1715D88E1DF1F24
for i in {1..${NET_RETRY_COUNT:-3}}; do sudo -E add-apt-repository -y ppa:git-core/ppa && break || sleep 10; done
apt-get -o Acquire::Retries=$NET_RETRY_COUNT update
apt-get -o Acquire::Retries=$NET_RETRY_COUNT install -y g++ python libpython-dev git
apt-get -o Acquire::Retries=$NET_RETRY_COUNT install -y g++ python-is-python3 git
fi
# For jobs not compatible with ccache, use "ccache: no" in the matrix
if [[ "${{ matrix.ccache }}" == "no" ]]; then
@@ -183,6 +224,8 @@ jobs:
B2_COMPILER: ${{matrix.compiler}}
B2_CXXSTD: ${{matrix.cxxstd}}
B2_SANITIZE: ${{matrix.sanitize}}
B2_TSAN: ${{matrix.thread-sanitize}}
B2_TARGETS: ${{matrix.targets}}
B2_STDLIB: ${{matrix.stdlib}}
# More entries can be added in the same way, see the B2_ARGS assignment in ci/enforce.sh for the possible keys.
# B2_DEFINES: ${{matrix.defines}}
@@ -196,7 +239,7 @@ jobs:
- name: Run tests
if: '!matrix.coverity'
run: ci/build.sh
run: B2_TARGETS=${{matrix.targets}} ci/build.sh
- name: Upload coverage
if: matrix.coverage
@@ -217,15 +260,16 @@ jobs:
fail-fast: false
matrix:
include:
- { toolset: msvc-14.0, cxxstd: '14,latest', addrmd: '32,64', os: windows-2019, variant: 'debug,release' }
- { toolset: msvc-14.2, cxxstd: '14,17,20,latest', addrmd: '32,64', os: windows-2019, variant: 'debug,release' }
- { toolset: msvc-14.3, cxxstd: '14,17,20,latest', addrmd: '32,64', os: windows-2022, variant: 'debug,release' }
- { toolset: msvc-14.3, cxxstd: '14', addrmd: '64', os: windows-2022, variant: 'debug', defines: '_ALLOW_RTCc_IN_STL', cxxflags: '/RTCc' }
- { toolset: msvc-14.3, cxxstd: '14', addrmd: '32', os: windows-2022, variant: 'debug', defines: '_ALLOW_RTCc_IN_STL', cxxflags: '"/RTCc /arch:IA32"' }
- { toolset: clang-win, cxxstd: '14,17,latest', addrmd: '32,64', os: windows-2022, variant: 'debug,release' }
- { toolset: gcc, cxxstd: '03,11,14,17,2a', addrmd: '64', os: windows-2019, variant: 'debug,release' }
- { toolset: msvc-14.0, cxxstd: '14,latest', addrmd: '32,64', os: 'windows-2019', variant: 'debug,release' }
- { toolset: msvc-14.2, cxxstd: '14,17,20,latest', addrmd: '32,64', os: 'windows-2019', variant: 'debug,release' }
- { toolset: msvc-14.3, cxxstd: '14,17,20,latest', addrmd: '32,64', os: 'windows-2022', variant: 'debug,release' }
- { toolset: msvc-14.3, cxxstd: '14', addrmd: '64', os: 'windows-2022', variant: 'debug', defines: '_ALLOW_RTCc_IN_STL', cxxflags: '/RTCc' }
- { toolset: msvc-14.3, cxxstd: '14', addrmd: '32', os: 'windows-2022', variant: 'debug', defines: '_ALLOW_RTCc_IN_STL', cxxflags: '"/RTCc /arch:IA32"' }
- { toolset: clang-win, cxxstd: '14,17,latest', addrmd: '32,64', os: 'windows-2022', variant: 'debug,release' }
- { toolset: gcc, cxxstd: '11,14,17,2a', addrmd: '64', os: 'windows-2019', variant: 'debug,release' }
runs-on: ${{matrix.os}}
needs: [runner-selection]
runs-on: ${{ fromJSON(needs.runner-selection.outputs.labelmatrix)[matrix.os] }}
steps:
- uses: actions/checkout@v3
@@ -279,10 +323,11 @@ jobs:
fail-fast: false
matrix:
include:
- { sys: MINGW32, compiler: gcc, cxxstd: '03,11,17,20' }
- { sys: MINGW64, compiler: gcc, cxxstd: '03,11,17,20' }
- { sys: MINGW32, compiler: gcc, cxxstd: '11,17,20' }
- { sys: MINGW64, compiler: gcc, cxxstd: '11,17,20' }
runs-on: windows-latest
needs: [runner-selection]
runs-on: ${{ fromJSON(needs.runner-selection.outputs.labelmatrix)['windows-latest'] }}
steps:
- uses: actions/checkout@v3
@@ -336,11 +381,12 @@ jobs:
fail-fast: false
matrix:
include:
- { os: ubuntu-20.04, build_shared: ON, build_type: Debug, generator: 'Unix Makefiles' }
- { os: windows-2019, build_shared: ON, build_type: Debug, generator: 'Visual Studio 16 2019' }
- { os: 'ubuntu-20.04', build_shared: ON, build_type: Debug, generator: 'Unix Makefiles' }
- { os: 'windows-2019', build_shared: ON, build_type: Debug, generator: 'Visual Studio 16 2019' }
timeout-minutes: 120
runs-on: ${{matrix.os}}
needs: [runner-selection]
runs-on: ${{ fromJSON(needs.runner-selection.outputs.labelmatrix)[matrix.os] }}
steps:
- uses: actions/checkout@v3
+1
View File
@@ -1 +1,2 @@
/doc/html/
/doc/pdf/
+1
View File
@@ -22,6 +22,7 @@ target_link_libraries(boost_unordered
Boost::mp11
Boost::predef
Boost::preprocessor
Boost::static_assert
Boost::throw_exception
Boost::tuple
Boost::type_traits
+56 -32
View File
@@ -1,49 +1,73 @@
# Boost.Unordered
Part of collection of the [Boost C++ Libraries](http://github.com/boostorg).
[![Branch](https://img.shields.io/badge/branch-master-brightgreen.svg)](https://github.com/boostorg/unordered/tree/master) [![CI](https://github.com/boostorg/unordered/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/boostorg/unordered/actions/workflows/ci.yml) [![Drone status](https://img.shields.io/drone/build/boostorg/unordered/master?server=https%3A%2F%2Fdrone.cpp.al&logo=drone&logoColor=%23CCCCCC&label=CI)](https://drone.cpp.al/boostorg/unordered) [![Build status](https://img.shields.io/appveyor/build/cppalliance/unordered/master?logo=appveyor&label=CI)](https://ci.appveyor.com/project/cppalliance/unordered/branch/master) [![codecov](https://codecov.io/gh/boostorg/unordered/branch/master/graph/badge.svg)](https://codecov.io/gh/boostorg/unordered/branch/master) [![Deps](https://img.shields.io/badge/deps-master-brightgreen.svg)](https://pdimov.github.io/boostdep-report/master/unordered.html) [![Documentation](https://img.shields.io/badge/docs-master-brightgreen.svg)](https://www.boost.org/doc/libs/master/libs/unordered/doc/html/unordered.html) [![Enter the Matrix](https://img.shields.io/badge/matrix-master-brightgreen.svg)](http://www.boost.org/development/tests/master/developer/unordered.html)<br/>
[![Branch](https://img.shields.io/badge/branch-develop-brightgreen.svg)](https://github.com/boostorg/unordered/tree/develop) [![CI](https://github.com/boostorg/unordered/actions/workflows/ci.yml/badge.svg?branch=develop)](https://github.com/boostorg/unordered/actions/workflows/ci.yml) [![Drone status](https://img.shields.io/drone/build/boostorg/unordered/develop?server=https%3A%2F%2Fdrone.cpp.al&logo=drone&logoColor=%23CCCCCC&label=CI)](https://drone.cpp.al/boostorg/unordered) [![Build status](https://img.shields.io/appveyor/build/cppalliance/unordered/master?logo=appveyor&label=CI)](https://ci.appveyor.com/project/cppalliance/unordered/branch/develop) [![codecov](https://codecov.io/gh/boostorg/unordered/branch/develop/graph/badge.svg)](https://codecov.io/gh/boostorg/unordered/branch/develop) [![Deps](https://img.shields.io/badge/deps-develop-brightgreen.svg)](https://pdimov.github.io/boostdep-report/develop/unordered.html) [![Documentation](https://img.shields.io/badge/docs-develop-brightgreen.svg)](https://www.boost.org/doc/libs/develop/libs/unordered/doc/html/unordered.html) [![Enter the Matrix](https://img.shields.io/badge/matrix-develop-brightgreen.svg)](http://www.boost.org/development/tests/develop/developer/unordered.html)<br/>
[![BSL 1.0](https://img.shields.io/badge/license-BSL_1.0-blue.svg)](https://www.boost.org/users/license.html) <img alt="C++11 required" src="https://img.shields.io/badge/standard-C%2b%2b11-blue.svg"> <img alt="Header-only library" src="https://img.shields.io/badge/build-header--only-blue.svg">
For accessing data based on key lookup, the C++ standard library offers `std::set`, `std::map`, `std::multiset` and `std::multimap`.
These are generally implemented using balanced binary trees so that lookup time has logarithmic complexity.
That is generally okay, but in many cases a hash table can perform better, as accessing data has constant complexity, on average.
The worst case complexity is linear, but that occurs rarely and with some care, can be avoided.
Boost.Unordered offers a catalog of hash containers with different standards compliance levels, performances and intented usage scenarios:
Also, the existing containers require a 'less than' comparison object to order their elements.
For some data types this is impossible to implement or isnt practical.
In contrast, a hash table only needs an equality function and a hash function for the key.
**`boost::unordered_set` `boost::unordered_map` `boost::unordered_multiset` `boost::unordered_multimap`**
With this in mind, unordered associative containers were added to the C++ standard.
This is an implementation of the containers described in C++11, with some deviations from the standard in order to work with non-C++11 compilers and libraries.
<ul>Fully conformant implementations of <code>std::unordered_[multi](set|map)</code>,
but faster and up to the latest revisions of the standard even if you're working in an older version of C++ (heterogeneous lookup,
<code>try_emplace</code>, <code>contains</code>, etc.)</ul>
**`boost::unordered_flat_set` `boost::unordered_flat_map`**
### License
<ul>The fastest of the lot. Based on open addressing, these containers slightly
deviate from the standard in exchange for top performance.</ul>
Distributed under the [Boost Software License, Version 1.0](http://www.boost.org/LICENSE_1_0.txt).
**`boost::unordered_node_set` `boost::unordered_node_map`**
### Properties
<ul>Variations of <code>boost::unordered_flat_(set|map)</code> providing pointer stability.</ul>
* C++03
* Header-Only
**`boost::concurrent_flat_set` `boost::concurrent_flat_map`**
### Build Status
<ul>High performance for multithreaded scenarios. Introducing a new non-standard, iterator-free API.</ul>
Branch | GH Actions | Appveyor | codecov.io | Deps | Docs | Tests |
:-------------: | ---------- | -------- | ---------- | ---- | ---- | ----- |
[`master`](https://github.com/boostorg/unordered/tree/master) | [![CI](https://github.com/boostorg/unordered/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/boostorg/unordered/actions/workflows/ci.yml) | [![Build status](https://ci.appveyor.com/api/projects/status/github/boostorg/unordered?branch=master&svg=true)](https://ci.appveyor.com/project/danieljames/unordered-qtwe6/branch/master) | [![codecov](https://codecov.io/gh/boostorg/unordered/branch/master/graph/badge.svg)](https://codecov.io/gh/boostorg/unordered/branch/master) | [![Deps](https://img.shields.io/badge/deps-master-brightgreen.svg)](https://pdimov.github.io/boostdep-report/master/unordered.html) | [![Documentation](https://img.shields.io/badge/docs-master-brightgreen.svg)](https://www.boost.org/doc/libs/master/libs/unordered/doc/html/unordered.html) | [![Enter the Matrix](https://img.shields.io/badge/matrix-master-brightgreen.svg)](http://www.boost.org/development/tests/master/developer/unordered.html)
[`develop`](https://github.com/boostorg/unordered/tree/develop) | [![CI](https://github.com/boostorg/unordered/actions/workflows/ci.yml/badge.svg?branch=develop)](https://github.com/boostorg/unordered/actions/workflows/ci.yml) | [![Build status](https://ci.appveyor.com/api/projects/status/github/boostorg/unordered?branch=develop&svg=true)](https://ci.appveyor.com/project/danieljames/unordered-qtwe6/branch/develop) | [![codecov](https://codecov.io/gh/boostorg/unordered/branch/develop/graph/badge.svg)](https://codecov.io/gh/boostorg/unordered/branch/develop) | [![Deps](https://img.shields.io/badge/deps-develop-brightgreen.svg)](https://pdimov.github.io/boostdep-report/develop/unordered.html) | [![Documentation](https://img.shields.io/badge/docs-develop-brightgreen.svg)](https://www.boost.org/doc/libs/develop/libs/unordered/doc/html/unordered.html) | [![Enter the Matrix](https://img.shields.io/badge/matrix-develop-brightgreen.svg)](http://www.boost.org/development/tests/develop/developer/unordered.html)
## Learn about Boost.Unordered
### Directories
* [Online documentation](https://boost.org/libs/unordered)
* [Some benchmarks](https://github.com/boostorg/boost_unordered_benchmarks)
* Technical articles on Boost.Unordered internal design:
* [Advancing the state of the art for `std::unordered_map` implementations](https://bannalia.blogspot.com/2022/06/advancing-state-of-art-for.html)
* [Inside `boost::unordered_flat_map`](https://bannalia.blogspot.com/2022/11/inside-boostunorderedflatmap.html)
* [Inside `boost::concurrent_flat_map`](https://bannalia.blogspot.com/2023/07/inside-boostconcurrentflatmap.html)
* [Bulk visitation in `boost::concurrent_flat_map`](https://bannalia.blogspot.com/2023/10/bulk-visitation-in-boostconcurrentflatm.html)
| Name | Purpose |
| ----------- | ------------------------------ |
| `doc` | documentation |
| `example` | examples |
| `include` | headers |
| `test` | unit tests |
## Get the library
### More information
Boost.Unordered can be installed in a number of ways:
* [Ask questions](http://stackoverflow.com/questions/ask?tags=c%2B%2B,boost,boost-unordered)
* [Report bugs](https://github.com/boostorg/unordered/issues): Be sure to mention Boost version, platform and compiler you're using. A small compilable code sample to reproduce the problem is always good as well.
* Submit your patches as pull requests against **develop** branch. Note that by submitting patches you agree to license your modifications under the [Boost Software License, Version 1.0](http://www.boost.org/LICENSE_1_0.txt).
* Discussions about the library are held on the [Boost developers mailing list](http://www.boost.org/community/groups.html#main). Be sure to read the [discussion policy](http://www.boost.org/community/policy.html) before posting and add the `[unordered]` tag at the beginning of the subject line.
* [Download Boost](https://www.boost.org/users/download/) and you're ready to go (this is a header-only library requiring no building).
* Using Conan 2: In case you don't have it yet, add an entry for Boost in your `conanfile.txt` (the example requires at least Boost 1.83):
```
[requires]
boost/[>=1.83.0]
```
<ul>If you're not using any compiled Boost library, the following will skip building altogether:</ul>
```
[options]
boost:header_only=True
```
* Using vcpkg: Execute the command
```
vcpkg install boost-unordered
```
* Using CMake: [Boost CMake support infrastructure](https://github.com/boostorg/cmake)
allows you to use CMake directly to download, build and consume all of Boost or
some specific libraries.
## Support
* Join the **#boost-unordered** discussion group at [cpplang.slack.com](https://cpplang.slack.com/)
([ask for an invite](https://cppalliance.org/slack/) if youre not a member of this workspace yet)
* Ask in the [Boost Users mailing list](https://lists.boost.org/mailman/listinfo.cgi/boost-users)
(add the `[unordered]` tag at the beginning of the subject line)
* [File an issue](https://github.com/boostorg/unordered/issues)
## Contribute
* [Pull requests](https://github.com/boostorg/unordered/pulls) against **develop** branch are most welcome.
Note that by submitting patches you agree to license your modifications under the [Boost Software License, Version 1.0](http://www.boost.org/LICENSE_1_0.txt).
+10
View File
@@ -1,4 +1,5 @@
// Copyright 2021 Peter Dimov.
// Copyright 2023 Joaquin M Lopez Munoz.
// Distributed under the Boost Software License, Version 1.0.
// https://www.boost.org/LICENSE_1_0.txt
@@ -6,6 +7,7 @@
#define _SILENCE_CXX20_CISO646_REMOVED_WARNING
#include <boost/unordered_map.hpp>
#include <boost/unordered/unordered_node_map.hpp>
#include <boost/unordered/unordered_flat_map.hpp>
#include <boost/core/detail/splitmix64.hpp>
#include <boost/config.hpp>
@@ -272,6 +274,9 @@ template<class K, class V> using std_unordered_map =
template<class K, class V> using boost_unordered_map =
boost::unordered_map<K, V, boost::hash<K>, std::equal_to<K>, allocator_for<K, V>>;
template<class K, class V> using boost_unordered_node_map =
boost::unordered_node_map<K, V, boost::hash<K>, std::equal_to<K>, allocator_for<K, V>>;
template<class K, class V> using boost_unordered_flat_map =
boost::unordered_flat_map<K, V, boost::hash<K>, std::equal_to<K>, allocator_for<K, V>>;
@@ -345,6 +350,9 @@ std::unordered_map<K, V, fnv1a_hash, std::equal_to<K>, allocator_for<K, V>>;
template<class K, class V> using boost_unordered_map_fnv1a =
boost::unordered_map<K, V, fnv1a_hash, std::equal_to<K>, allocator_for<K, V>>;
template<class K, class V> using boost_unordered_node_map_fnv1a =
boost::unordered_node_map<K, V, fnv1a_hash, std::equal_to<K>, allocator_for<K, V>>;
template<class K, class V> using boost_unordered_flat_map_fnv1a =
boost::unordered_flat_map<K, V, fnv1a_hash, std::equal_to<K>, allocator_for<K, V>>;
@@ -373,6 +381,7 @@ int main()
test<std_unordered_map>( "std::unordered_map" );
test<boost_unordered_map>( "boost::unordered_map" );
test<boost_unordered_node_map>( "boost::unordered_node_map" );
test<boost_unordered_flat_map>( "boost::unordered_flat_map" );
#ifdef HAVE_ANKERL_UNORDERED_DENSE
@@ -390,6 +399,7 @@ int main()
test<std_unordered_map_fnv1a>( "std::unordered_map, FNV-1a" );
test<boost_unordered_map_fnv1a>( "boost::unordered_map, FNV-1a" );
test<boost_unordered_node_map_fnv1a>( "boost::unordered_node_map, FNV-1a" );
test<boost_unordered_flat_map_fnv1a>( "boost::unordered_flat_map, FNV-1a" );
#ifdef HAVE_ANKERL_UNORDERED_DENSE
+10
View File
@@ -1,4 +1,5 @@
// Copyright 2021 Peter Dimov.
// Copyright 2023 Joaquin M Lopez Munoz.
// Distributed under the Boost Software License, Version 1.0.
// https://www.boost.org/LICENSE_1_0.txt
@@ -6,6 +7,7 @@
#define _SILENCE_CXX20_CISO646_REMOVED_WARNING
#include <boost/unordered_map.hpp>
#include <boost/unordered/unordered_node_map.hpp>
#include <boost/unordered/unordered_flat_map.hpp>
#include <boost/core/detail/splitmix64.hpp>
#include <boost/config.hpp>
@@ -273,6 +275,9 @@ template<class K, class V> using std_unordered_map =
template<class K, class V> using boost_unordered_map =
boost::unordered_map<K, V, boost::hash<K>, std::equal_to<K>, allocator_for<K, V>>;
template<class K, class V> using boost_unordered_node_map =
boost::unordered_node_map<K, V, boost::hash<K>, std::equal_to<K>, allocator_for<K, V>>;
template<class K, class V> using boost_unordered_flat_map =
boost::unordered_flat_map<K, V, boost::hash<K>, std::equal_to<K>, allocator_for<K, V>>;
@@ -346,6 +351,9 @@ std::unordered_map<K, V, fnv1a_hash, std::equal_to<K>, allocator_for<K, V>>;
template<class K, class V> using boost_unordered_map_fnv1a =
boost::unordered_map<K, V, fnv1a_hash, std::equal_to<K>, allocator_for<K, V>>;
template<class K, class V> using boost_unordered_node_map_fnv1a =
boost::unordered_node_map<K, V, fnv1a_hash, std::equal_to<K>, allocator_for<K, V>>;
template<class K, class V> using boost_unordered_flat_map_fnv1a =
boost::unordered_flat_map<K, V, fnv1a_hash, std::equal_to<K>, allocator_for<K, V>>;
@@ -374,6 +382,7 @@ int main()
test<std_unordered_map>( "std::unordered_map" );
test<boost_unordered_map>( "boost::unordered_map" );
test<boost_unordered_node_map>( "boost::unordered_node_map" );
test<boost_unordered_flat_map>( "boost::unordered_flat_map" );
#ifdef HAVE_ANKERL_UNORDERED_DENSE
@@ -391,6 +400,7 @@ int main()
test<std_unordered_map_fnv1a>( "std::unordered_map, FNV-1a" );
test<boost_unordered_map_fnv1a>( "boost::unordered_map, FNV-1a" );
test<boost_unordered_node_map_fnv1a>( "boost::unordered_node_map, FNV-1a" );
test<boost_unordered_flat_map_fnv1a>( "boost::unordered_flat_map, FNV-1a" );
#ifdef HAVE_ANKERL_UNORDERED_DENSE
+6
View File
@@ -1,4 +1,5 @@
// Copyright 2021 Peter Dimov.
// Copyright 2023 Joaquin M Lopez Munoz.
// Distributed under the Boost Software License, Version 1.0.
// https://www.boost.org/LICENSE_1_0.txt
@@ -6,6 +7,7 @@
#define _SILENCE_CXX20_CISO646_REMOVED_WARNING
#include <boost/unordered_map.hpp>
#include <boost/unordered/unordered_node_map.hpp>
#include <boost/unordered/unordered_flat_map.hpp>
#include <boost/endian/conversion.hpp>
#include <boost/core/detail/splitmix64.hpp>
@@ -289,6 +291,9 @@ template<class K, class V> using std_unordered_map =
template<class K, class V> using boost_unordered_map =
boost::unordered_map<K, V, boost::hash<K>, std::equal_to<K>, allocator_for<K, V>>;
template<class K, class V> using boost_unordered_node_map =
boost::unordered_node_map<K, V, boost::hash<K>, std::equal_to<K>, allocator_for<K, V>>;
template<class K, class V> using boost_unordered_flat_map =
boost::unordered_flat_map<K, V, boost::hash<K>, std::equal_to<K>, allocator_for<K, V>>;
@@ -315,6 +320,7 @@ int main()
test<std_unordered_map>( "std::unordered_map" );
test<boost_unordered_map>( "boost::unordered_map" );
test<boost_unordered_node_map>( "boost::unordered_node_map" );
test<boost_unordered_flat_map>( "boost::unordered_flat_map" );
#ifdef HAVE_ANKERL_UNORDERED_DENSE
+6
View File
@@ -1,4 +1,5 @@
// Copyright 2021 Peter Dimov.
// Copyright 2023 Joaquin M Lopez Munoz.
// Distributed under the Boost Software License, Version 1.0.
// https://www.boost.org/LICENSE_1_0.txt
@@ -6,6 +7,7 @@
#define _SILENCE_CXX20_CISO646_REMOVED_WARNING
#include <boost/unordered_map.hpp>
#include <boost/unordered/unordered_node_map.hpp>
#include <boost/unordered/unordered_flat_map.hpp>
#include <boost/endian/conversion.hpp>
#include <boost/core/detail/splitmix64.hpp>
@@ -289,6 +291,9 @@ template<class K, class V> using std_unordered_map =
template<class K, class V> using boost_unordered_map =
boost::unordered_map<K, V, boost::hash<K>, std::equal_to<K>, allocator_for<K, V>>;
template<class K, class V> using boost_unordered_node_map =
boost::unordered_node_map<K, V, boost::hash<K>, std::equal_to<K>, allocator_for<K, V>>;
template<class K, class V> using boost_unordered_flat_map =
boost::unordered_flat_map<K, V, boost::hash<K>, std::equal_to<K>, allocator_for<K, V>>;
@@ -325,6 +330,7 @@ int main()
#endif
test<boost_unordered_map>( "boost::unordered_map" );
test<boost_unordered_node_map>( "boost::unordered_node_map" );
test<boost_unordered_flat_map>( "boost::unordered_flat_map" );
#ifdef HAVE_ANKERL_UNORDERED_DENSE
+6
View File
@@ -1,4 +1,5 @@
// Copyright 2021, 2022 Peter Dimov.
// Copyright 2023 Joaquin M Lopez Munoz.
// Distributed under the Boost Software License, Version 1.0.
// https://www.boost.org/LICENSE_1_0.txt
@@ -6,6 +7,7 @@
#define _SILENCE_CXX20_CISO646_REMOVED_WARNING
#include <boost/unordered_map.hpp>
#include <boost/unordered/unordered_node_map.hpp>
#include <boost/unordered/unordered_flat_map.hpp>
#include <boost/endian/conversion.hpp>
#include <boost/core/detail/splitmix64.hpp>
@@ -340,6 +342,9 @@ template<class K, class V> using std_unordered_map =
template<class K, class V> using boost_unordered_map =
boost::unordered_map<K, V, boost::hash<K>, std::equal_to<K>, allocator_for<K, V>>;
template<class K, class V> using boost_unordered_node_map =
boost::unordered_node_map<K, V, boost::hash<K>, std::equal_to<K>, allocator_for<K, V>>;
template<class K, class V> using boost_unordered_flat_map =
boost::unordered_flat_map<K, V, boost::hash<K>, std::equal_to<K>, allocator_for<K, V>>;
@@ -366,6 +371,7 @@ int main()
test<std_unordered_map>( "std::unordered_map" );
test<boost_unordered_map>( "boost::unordered_map" );
test<boost_unordered_node_map>( "boost::unordered_node_map" );
test<boost_unordered_flat_map>( "boost::unordered_flat_map" );
#ifdef HAVE_ANKERL_UNORDERED_DENSE
+10
View File
@@ -1,4 +1,5 @@
// Copyright 2021, 2022 Peter Dimov.
// Copyright 2023 Joaquin M Lopez Munoz.
// Distributed under the Boost Software License, Version 1.0.
// https://www.boost.org/LICENSE_1_0.txt
@@ -6,6 +7,7 @@
#define _SILENCE_CXX20_CISO646_REMOVED_WARNING
#include <boost/unordered_map.hpp>
#include <boost/unordered/unordered_node_map.hpp>
#include <boost/unordered/unordered_flat_map.hpp>
#include <boost/regex.hpp>
#ifdef HAVE_ABSEIL
@@ -227,6 +229,9 @@ template<class K, class V> using std_unordered_map =
template<class K, class V> using boost_unordered_map =
boost::unordered_map<K, V, boost::hash<K>, std::equal_to<K>, allocator_for<K, V>>;
template<class K, class V> using boost_unordered_node_map =
boost::unordered_node_map<K, V, boost::hash<K>, std::equal_to<K>, allocator_for<K, V>>;
template<class K, class V> using boost_unordered_flat_map =
boost::unordered_flat_map<K, V, boost::hash<K>, std::equal_to<K>, allocator_for<K, V>>;
@@ -300,6 +305,9 @@ std::unordered_map<K, V, fnv1a_hash, std::equal_to<K>, allocator_for<K, V>>;
template<class K, class V> using boost_unordered_map_fnv1a =
boost::unordered_map<K, V, fnv1a_hash, std::equal_to<K>, allocator_for<K, V>>;
template<class K, class V> using boost_unordered_node_map_fnv1a =
boost::unordered_node_map<K, V, fnv1a_hash, std::equal_to<K>, allocator_for<K, V>>;
template<class K, class V> using boost_unordered_flat_map_fnv1a =
boost::unordered_flat_map<K, V, fnv1a_hash, std::equal_to<K>, allocator_for<K, V>>;
@@ -328,6 +336,7 @@ int main()
test<std_unordered_map>( "std::unordered_map" );
test<boost_unordered_map>( "boost::unordered_map" );
test<boost_unordered_node_map>( "boost::unordered_node_map" );
test<boost_unordered_flat_map>( "boost::unordered_flat_map" );
#ifdef HAVE_ANKERL_UNORDERED_DENSE
@@ -345,6 +354,7 @@ int main()
test<std_unordered_map_fnv1a>( "std::unordered_map, FNV-1a" );
test<boost_unordered_map_fnv1a>( "boost::unordered_map, FNV-1a" );
test<boost_unordered_node_map_fnv1a>( "boost::unordered_node_map, FNV-1a" );
test<boost_unordered_flat_map_fnv1a>( "boost::unordered_flat_map, FNV-1a" );
#ifdef HAVE_ANKERL_UNORDERED_DENSE
+6
View File
@@ -1,4 +1,5 @@
// Copyright 2021, 2022 Peter Dimov.
// Copyright 2023 Joaquin M Lopez Munoz.
// Distributed under the Boost Software License, Version 1.0.
// https://www.boost.org/LICENSE_1_0.txt
@@ -6,6 +7,7 @@
#define _SILENCE_CXX20_CISO646_REMOVED_WARNING
#include <boost/unordered_map.hpp>
#include <boost/unordered/unordered_node_map.hpp>
#include <boost/unordered/unordered_flat_map.hpp>
#include <boost/regex.hpp>
#ifdef HAVE_ABSEIL
@@ -181,6 +183,9 @@ template<class K, class V> using std_unordered_map =
template<class K, class V> using boost_unordered_map =
boost::unordered_map<K, V, boost::hash<K>, std::equal_to<K>, allocator_for<K, V>>;
template<class K, class V> using boost_unordered_node_map =
boost::unordered_node_map<K, V, boost::hash<K>, std::equal_to<K>, allocator_for<K, V>>;
template<class K, class V> using boost_unordered_flat_map =
boost::unordered_flat_map<K, V, boost::hash<K>, std::equal_to<K>, allocator_for<K, V>>;
@@ -207,6 +212,7 @@ int main()
test<std_unordered_map>( "std::unordered_map" );
test<boost_unordered_map>( "boost::unordered_map" );
test<boost_unordered_node_map>( "boost::unordered_node_map" );
test<boost_unordered_flat_map>( "boost::unordered_flat_map" );
#ifdef HAVE_ANKERL_UNORDERED_DENSE
Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Some files were not shown because too many files have changed in this diff Show More