passenger 6.2.1 → 6.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG +37 -15
- data/build/cxx_tests.rb +2 -0
- data/build/support/cxx_dependency_map.rb +3 -63
- data/src/agent/Core/Config.h +1 -1
- data/src/agent/Core/Controller/Config.h +1 -1
- data/src/agent/Shared/ApiServerUtils.h +1 -1
- data/src/agent/Watchdog/Config.h +1 -1
- data/src/apache2_module/Hooks.cpp +13 -0
- data/src/apache2_module/Utils.h +14 -0
- data/src/cxx_supportlib/Constants.h +1 -1
- data/src/cxx_supportlib/FileTools/FileManip.cpp +27 -3
- data/src/cxx_supportlib/InstanceDirectory.h +30 -3
- data/src/cxx_supportlib/ServerKit/Errors.h +1 -1
- data/src/cxx_supportlib/ServerKit/HttpHeaderParser.h +1 -1
- data/src/cxx_supportlib/ServerKit/HttpHeaderParserState.h +1 -1
- data/src/cxx_supportlib/ServerKit/HttpRequest.h +1 -1
- data/src/cxx_supportlib/ServerKit/llerrors.h +3 -3
- data/src/cxx_supportlib/ServerKit/llversion.h +1 -1
- data/src/cxx_supportlib/{ServerKit/llhttp_api.c → vendor-copy/llhttp/api.c} +30 -23
- data/src/cxx_supportlib/{ServerKit → vendor-copy/llhttp}/llhttp.c +1756 -1645
- data/src/cxx_supportlib/{ServerKit → vendor-copy/llhttp}/llhttp.h +35 -13
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/classification.hpp +19 -0
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/formatter.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/trim_all.hpp +0 -2
- data/src/cxx_supportlib/vendor-modified/boost/assert.hpp +20 -13
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_x86.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/atomic/thread_pause.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/bind/mem_fn.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/debug.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx03.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx11.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx14.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx17.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx20.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx23.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/auto_link.hpp +6 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang_version.hpp +10 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/visualc.hpp +5 -3
- data/src/cxx_supportlib/vendor-modified/boost/config/detail/cxx_composite.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/workaround.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/adaptive_pool.hpp +57 -53
- data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +10 -10
- data/src/cxx_supportlib/vendor-modified/boost/container/allocator_traits.hpp +34 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/container_fwd.hpp +14 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +176 -2287
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool.hpp +13 -9
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool_impl.hpp +186 -70
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/algorithm.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/aligned_allocation.hpp +149 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_helpers.hpp +35 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_lib.h +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/bit_utilities.hpp +133 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/compare_functors.hpp +18 -3
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_begin.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_end.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/container_rebind.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +20 -10
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/deque_impl.hpp +2744 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/dispatch_uses_allocator.hpp +202 -104
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/dlmalloc.hpp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +161 -85
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_constructible.hpp +180 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterators.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/math_functions.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/mpl.hpp +16 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/mutex.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/next_capacity.hpp +9 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool.hpp +18 -14
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool_impl.hpp +256 -41
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/operator_new_helpers.hpp +75 -24
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair.hpp +1 -56
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/placement_new.hpp +16 -3
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_common_alloc.hpp +1 -7
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/range_utils.hpp +196 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/std_fwd.hpp +33 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +124 -69
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/workaround.hpp +109 -7
- data/src/cxx_supportlib/vendor-modified/boost/container/devector.hpp +168 -162
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/nest.hpp +2978 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/pmr/nest.hpp +45 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_all_of.hpp +43 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_any_of.hpp +42 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_copy.hpp +229 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_copy_if.hpp +270 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_copy_n.hpp +308 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_count.hpp +101 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_count_if.hpp +100 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_equal.hpp +268 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_fill.hpp +101 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_fill_n.hpp +171 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_find.hpp +110 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_find_if.hpp +110 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_find_if_not.hpp +43 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_find_last.hpp +179 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_find_last_if.hpp +179 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_find_last_if_not.hpp +43 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_for_each.hpp +92 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_generate.hpp +90 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_generate_n.hpp +162 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_is_partitioned.hpp +46 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_is_sorted.hpp +49 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_is_sorted_until.hpp +169 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_iterator_traits.hpp +382 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_merge.hpp +428 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_mismatch.hpp +350 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_none_of.hpp +98 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_partition.hpp +296 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_partition_copy.hpp +105 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_partition_point.hpp +116 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_remove.hpp +57 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_remove_copy.hpp +207 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_remove_copy_if.hpp +223 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_remove_if.hpp +57 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_replace.hpp +90 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_replace_if.hpp +90 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_reverse.hpp +245 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_reverse_copy.hpp +229 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_search.hpp +211 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_search_n.hpp +476 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_set_difference.hpp +300 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_set_intersection.hpp +287 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_set_symmetric_difference.hpp +306 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_set_union.hpp +294 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_stable_partition.hpp +153 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_swap_ranges.hpp +92 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/segmented_transform.hpp +93 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/experimental/wrapped_iterator.hpp +142 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +642 -417
- data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +141 -30
- data/src/cxx_supportlib/vendor-modified/boost/container/hub.hpp +2426 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +65 -57
- data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +247 -68
- data/src/cxx_supportlib/vendor-modified/boost/container/new_allocator.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/node_allocator.hpp +39 -33
- data/src/cxx_supportlib/vendor-modified/boost/container/options.hpp +156 -23
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/global_resource.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/hub.hpp +43 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/memory_resource.hpp +5 -3
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/monotonic_buffer_resource.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/polymorphic_allocator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/resource_adaptor.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/segtor.hpp +45 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/scoped_allocator.hpp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/segtor.hpp +905 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +148 -35
- data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +59 -52
- data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +632 -5
- data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +66 -60
- data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +46 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +612 -317
- data/src/cxx_supportlib/vendor-modified/boost/container/uses_allocator.hpp +54 -111
- data/src/cxx_supportlib/vendor-modified/boost/container/uses_allocator_construction.hpp +100 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/uses_allocator_fwd.hpp +1 -3
- data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +233 -116
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash.hpp +5 -1
- data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test.hpp +17 -10
- data/src/cxx_supportlib/vendor-modified/boost/date_time/period.hpp +1 -3
- data/src/cxx_supportlib/vendor-modified/boost/describe/detail/config.hpp +16 -0
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/encoder.hpp +114 -0
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/error_info_impl.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/requires_cxx11.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/type_info.hpp +211 -1
- data/src/cxx_supportlib/vendor-modified/boost/exception/diagnostic_information.hpp +59 -0
- data/src/cxx_supportlib/vendor-modified/boost/exception/exception.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/exception/info.hpp +34 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree.hpp +0 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree.hpp +12 -3
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/derivation_value_traits.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/ebo_functor_holder.hpp +29 -174
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/generic_hook.hpp +18 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/key_nodeptr_comp.hpp +0 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/workaround.hpp +4 -5
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/hashtable.hpp +20 -11
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/list.hpp +42 -14
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist.hpp +58 -22
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/iterator/advance.hpp +5 -1
- data/src/cxx_supportlib/vendor-modified/boost/iterator/distance.hpp +8 -2
- data/src/cxx_supportlib/vendor-modified/boost/iterator/is_iterator.hpp +9 -0
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/bad_lexical_cast.hpp +11 -1
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/buffer_view.hpp +9 -1
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/config.hpp +22 -0
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical.hpp +15 -7
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +23 -11
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_numeric.hpp +11 -1
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/inf_nan.hpp +9 -1
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/is_character.hpp +11 -2
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_basic_unlockedbuf.hpp +10 -1
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_char_constants.hpp +8 -1
- data/src/cxx_supportlib/vendor-modified/boost/{detail → lexical_cast/detail}/lcast_precision.hpp +13 -1
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_unsigned_converters.hpp +11 -1
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/widest_char.hpp +10 -2
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/try_lexical_convert.hpp +15 -2
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast.hpp +11 -1
- data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/once_atomic.cpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/thread.cpp +48 -46
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/meta_utils.hpp +23 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/move_helpers.hpp +24 -24
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/nsec_clock.hpp +12 -4
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/type_traits.hpp +76 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/workaround.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/traits.hpp +11 -0
- data/src/cxx_supportlib/vendor-modified/boost/mp11/algorithm.hpp +58 -37
- data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_copy_if.hpp +1 -2
- data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_map_find.hpp +17 -9
- data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_remove_if.hpp +1 -2
- data/src/cxx_supportlib/vendor-modified/boost/mp11/integer_sequence.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/mp11/version.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/none_t.hpp +6 -1
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_common_defs.hpp +188 -0
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_factory_support.hpp +0 -6
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_hash.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_nonmember_interface.hpp +117 -0
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_reference_spec.hpp +108 -83
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_relops.hpp +39 -39
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_select_implementation.hpp +37 -0
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_swap.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_trivially_copyable_base.hpp +8 -8
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/union_optional.hpp +724 -0
- data/src/cxx_supportlib/vendor-modified/boost/optional/optional.hpp +93 -220
- data/src/cxx_supportlib/vendor-modified/boost/optional/optional_fwd.hpp +14 -4
- data/src/cxx_supportlib/vendor-modified/boost/optional/optional_io.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/random/binomial_distribution.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/random/uniform_int_distribution.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/rational.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/static_assert.hpp +4 -6
- data/src/cxx_supportlib/vendor-modified/boost/system/api_config.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/config.hpp +16 -0
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_category.hpp +13 -13
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_category_impl.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/detail/sync_deque_base.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/detail/sync_queue_base.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/thread.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/experimental/parallel/v2/task_region.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/future.hpp +30 -28
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/once.hpp +6 -3
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/once_atomic.hpp +5 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/pthread_helpers.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/shared_mutex.hpp +16 -16
- data/src/cxx_supportlib/vendor-modified/boost/thread/v2/shared_mutex.hpp +26 -26
- data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_map.hpp +196 -6
- data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_set.hpp +191 -6
- data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_node_map.hpp +196 -5
- data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_node_set.hpp +192 -5
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/concurrent_table.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/core.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/table.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/implementation.hpp +52 -16
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/ranges_support.hpp +104 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/type_traits.hpp +1 -14
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/unordered_printers.hpp +10 -4
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map.hpp +121 -3
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set.hpp +118 -3
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map.hpp +338 -1
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_map.hpp +121 -3
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_set.hpp +118 -3
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set.hpp +333 -1
- data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/jsoncpp/json-forwards.h +276 -143
- data/src/cxx_supportlib/vendor-modified/jsoncpp/json.h +1262 -771
- data/src/cxx_supportlib/vendor-modified/jsoncpp/jsoncpp.cpp +1704 -1586
- data/src/nginx_module/ContentHandler.c +35 -0
- data/src/ruby_supportlib/phusion_passenger/common_library.rb +6 -6
- data/src/ruby_supportlib/phusion_passenger/utils/json.rb +25 -2
- data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller.rb +12 -1
- data/src/ruby_supportlib/phusion_passenger.rb +1 -1
- metadata +73 -8
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_utility.hpp +0 -41
- /data/src/cxx_supportlib/{ServerKit/llhttp_http.c → vendor-copy/llhttp/http.c} +0 -0
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/* Fast open-addressing, node-based concurrent hashset.
|
|
2
2
|
*
|
|
3
3
|
* Copyright 2023 Christian Mazakas.
|
|
4
|
-
* Copyright 2023-
|
|
4
|
+
* Copyright 2023-2026 Joaquin M Lopez Munoz.
|
|
5
|
+
* Copyright 2026 Braden Ganetsky
|
|
5
6
|
* Distributed under the Boost Software License, Version 1.0.
|
|
6
7
|
* (See accompanying file LICENSE_1_0.txt or copy at
|
|
7
8
|
* http://www.boost.org/LICENSE_1_0.txt)
|
|
@@ -18,6 +19,7 @@
|
|
|
18
19
|
#include <boost/unordered/detail/foa/element_type.hpp>
|
|
19
20
|
#include <boost/unordered/detail/foa/node_set_handle.hpp>
|
|
20
21
|
#include <boost/unordered/detail/foa/node_set_types.hpp>
|
|
22
|
+
#include <boost/unordered/detail/ranges_support.hpp>
|
|
21
23
|
#include <boost/unordered/detail/type_traits.hpp>
|
|
22
24
|
#include <boost/unordered/unordered_node_set_fwd.hpp>
|
|
23
25
|
|
|
@@ -106,6 +108,21 @@ namespace boost {
|
|
|
106
108
|
this->insert(f, l);
|
|
107
109
|
}
|
|
108
110
|
|
|
111
|
+
#if !defined(BOOST_UNORDERED_NO_RANGES)
|
|
112
|
+
template<
|
|
113
|
+
detail::convertible_to_from_range_t FromRangeT,
|
|
114
|
+
detail::container_compatible_range<value_type> R
|
|
115
|
+
>
|
|
116
|
+
concurrent_node_set(FromRangeT&&, R&& rg,
|
|
117
|
+
size_type n = detail::foa::default_bucket_count,
|
|
118
|
+
const hasher& hf = hasher(), const key_equal& eql = key_equal(),
|
|
119
|
+
const allocator_type& a = allocator_type())
|
|
120
|
+
: table_(n, hf, eql, a)
|
|
121
|
+
{
|
|
122
|
+
this->insert_range(std::forward<R>(rg));
|
|
123
|
+
}
|
|
124
|
+
#endif
|
|
125
|
+
|
|
109
126
|
concurrent_node_set(concurrent_node_set const& rhs)
|
|
110
127
|
: table_(rhs.table_,
|
|
111
128
|
boost::allocator_select_on_container_copy_construction(
|
|
@@ -125,6 +142,19 @@ namespace boost {
|
|
|
125
142
|
{
|
|
126
143
|
}
|
|
127
144
|
|
|
145
|
+
#if !defined(BOOST_UNORDERED_NO_RANGES)
|
|
146
|
+
template<
|
|
147
|
+
detail::convertible_to_from_range_t FromRangeT,
|
|
148
|
+
detail::container_compatible_range<value_type> R
|
|
149
|
+
>
|
|
150
|
+
concurrent_node_set(
|
|
151
|
+
FromRangeT&& fr, R&& rg, allocator_type const& a)
|
|
152
|
+
: concurrent_node_set(
|
|
153
|
+
fr, std::forward<R>(rg), 0, hasher(), key_equal(), a)
|
|
154
|
+
{
|
|
155
|
+
}
|
|
156
|
+
#endif
|
|
157
|
+
|
|
128
158
|
explicit concurrent_node_set(allocator_type const& a)
|
|
129
159
|
: table_(detail::foa::default_bucket_count, hasher(), key_equal(), a)
|
|
130
160
|
{
|
|
@@ -175,6 +205,29 @@ namespace boost {
|
|
|
175
205
|
{
|
|
176
206
|
}
|
|
177
207
|
|
|
208
|
+
#if !defined(BOOST_UNORDERED_NO_RANGES)
|
|
209
|
+
template<
|
|
210
|
+
detail::convertible_to_from_range_t FromRangeT,
|
|
211
|
+
detail::container_compatible_range<value_type> R
|
|
212
|
+
>
|
|
213
|
+
concurrent_node_set(
|
|
214
|
+
FromRangeT&& fr, R&& rg, size_type n, const allocator_type& a)
|
|
215
|
+
: concurrent_node_set(
|
|
216
|
+
fr, std::forward<R>(rg), n, hasher(), key_equal(), a)
|
|
217
|
+
{
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
template<
|
|
221
|
+
detail::convertible_to_from_range_t FromRangeT,
|
|
222
|
+
detail::container_compatible_range<value_type> R
|
|
223
|
+
>
|
|
224
|
+
concurrent_node_set(FromRangeT&& fr, R&& rg, size_type n,
|
|
225
|
+
const hasher& hf, const allocator_type& a)
|
|
226
|
+
: concurrent_node_set(fr, std::forward<R>(rg), n, hf, key_equal(), a)
|
|
227
|
+
{
|
|
228
|
+
}
|
|
229
|
+
#endif
|
|
230
|
+
|
|
178
231
|
concurrent_node_set(
|
|
179
232
|
std::initializer_list<value_type> il, const allocator_type& a)
|
|
180
233
|
: concurrent_node_set(
|
|
@@ -194,9 +247,10 @@ namespace boost {
|
|
|
194
247
|
{
|
|
195
248
|
}
|
|
196
249
|
|
|
197
|
-
template <
|
|
250
|
+
template <typename Key2,
|
|
251
|
+
typename std::enable_if<std::is_same<Key, Key2>::value, int>::type = 0>
|
|
198
252
|
concurrent_node_set(
|
|
199
|
-
unordered_node_set<
|
|
253
|
+
unordered_node_set<Key2, Hash, Pred, Allocator>&& other)
|
|
200
254
|
: table_(std::move(other.table_))
|
|
201
255
|
{
|
|
202
256
|
}
|
|
@@ -436,12 +490,26 @@ namespace boost {
|
|
|
436
490
|
size_type insert(InputIterator begin, InputIterator end)
|
|
437
491
|
{
|
|
438
492
|
size_type count_elements = 0;
|
|
439
|
-
for (auto pos = begin; pos != end; ++pos
|
|
440
|
-
table_.emplace(*pos);
|
|
493
|
+
for (auto pos = begin; pos != end; ++pos) {
|
|
494
|
+
if (table_.emplace(*pos)) ++count_elements;
|
|
441
495
|
}
|
|
442
496
|
return count_elements;
|
|
443
497
|
}
|
|
444
498
|
|
|
499
|
+
#if !defined(BOOST_UNORDERED_NO_RANGES)
|
|
500
|
+
template<detail::container_compatible_range<value_type> R>
|
|
501
|
+
size_type insert_range(R&& rg)
|
|
502
|
+
{
|
|
503
|
+
size_type count_elements = 0;
|
|
504
|
+
auto first = std::ranges::begin(rg);
|
|
505
|
+
auto last = std::ranges::end(rg);
|
|
506
|
+
while (first != last) {
|
|
507
|
+
if (table_.emplace(*first++)) ++count_elements;
|
|
508
|
+
}
|
|
509
|
+
return count_elements;
|
|
510
|
+
}
|
|
511
|
+
#endif
|
|
512
|
+
|
|
445
513
|
size_type insert(std::initializer_list<value_type> ilist)
|
|
446
514
|
{
|
|
447
515
|
return this->insert(ilist.begin(), ilist.end());
|
|
@@ -501,6 +569,21 @@ namespace boost {
|
|
|
501
569
|
return count_elements;
|
|
502
570
|
}
|
|
503
571
|
|
|
572
|
+
#if !defined(BOOST_UNORDERED_NO_RANGES)
|
|
573
|
+
template<detail::container_compatible_range<value_type> R, class F>
|
|
574
|
+
size_type insert_range_or_visit(R&& rg, F f)
|
|
575
|
+
{
|
|
576
|
+
BOOST_UNORDERED_STATIC_ASSERT_CONST_INVOCABLE(F)
|
|
577
|
+
size_type count_elements = 0;
|
|
578
|
+
auto first = std::ranges::begin(rg);
|
|
579
|
+
auto last = std::ranges::end(rg);
|
|
580
|
+
for (; first != last; ++first, ++count_elements) {
|
|
581
|
+
table_.emplace_or_visit(*first, f);
|
|
582
|
+
}
|
|
583
|
+
return count_elements;
|
|
584
|
+
}
|
|
585
|
+
#endif
|
|
586
|
+
|
|
504
587
|
template <class F>
|
|
505
588
|
size_type insert_or_visit(std::initializer_list<value_type> ilist, F f)
|
|
506
589
|
{
|
|
@@ -564,6 +647,21 @@ namespace boost {
|
|
|
564
647
|
return count_elements;
|
|
565
648
|
}
|
|
566
649
|
|
|
650
|
+
#if !defined(BOOST_UNORDERED_NO_RANGES)
|
|
651
|
+
template<detail::container_compatible_range<value_type> R, class F>
|
|
652
|
+
size_type insert_range_or_cvisit(R&& rg, F f)
|
|
653
|
+
{
|
|
654
|
+
BOOST_UNORDERED_STATIC_ASSERT_CONST_INVOCABLE(F)
|
|
655
|
+
size_type count_elements = 0;
|
|
656
|
+
auto first = std::ranges::begin(rg);
|
|
657
|
+
auto last = std::ranges::end(rg);
|
|
658
|
+
for (; first != last; ++first, ++count_elements) {
|
|
659
|
+
table_.emplace_or_cvisit(*first, f);
|
|
660
|
+
}
|
|
661
|
+
return count_elements;
|
|
662
|
+
}
|
|
663
|
+
#endif
|
|
664
|
+
|
|
567
665
|
template <class F>
|
|
568
666
|
size_type insert_or_cvisit(std::initializer_list<value_type> ilist, F f)
|
|
569
667
|
{
|
|
@@ -633,6 +731,24 @@ namespace boost {
|
|
|
633
731
|
return count_elements;
|
|
634
732
|
}
|
|
635
733
|
|
|
734
|
+
#if !defined(BOOST_UNORDERED_NO_RANGES)
|
|
735
|
+
template<
|
|
736
|
+
detail::container_compatible_range<value_type> R, class F1, class F2
|
|
737
|
+
>
|
|
738
|
+
size_type insert_range_and_visit(R&& rg, F1 f1, F2 f2)
|
|
739
|
+
{
|
|
740
|
+
BOOST_UNORDERED_STATIC_ASSERT_CONST_INVOCABLE(F1)
|
|
741
|
+
BOOST_UNORDERED_STATIC_ASSERT_CONST_INVOCABLE(F2)
|
|
742
|
+
size_type count_elements = 0;
|
|
743
|
+
auto first = std::ranges::begin(rg);
|
|
744
|
+
auto last = std::ranges::end(rg);
|
|
745
|
+
for (; first != last; ++first, ++count_elements) {
|
|
746
|
+
table_.emplace_and_visit(*first, f1, f2);
|
|
747
|
+
}
|
|
748
|
+
return count_elements;
|
|
749
|
+
}
|
|
750
|
+
#endif
|
|
751
|
+
|
|
636
752
|
template <class F1, class F2>
|
|
637
753
|
size_type insert_and_visit(
|
|
638
754
|
std::initializer_list<value_type> ilist, F1 f1, F2 f2)
|
|
@@ -706,6 +822,24 @@ namespace boost {
|
|
|
706
822
|
return count_elements;
|
|
707
823
|
}
|
|
708
824
|
|
|
825
|
+
#if !defined(BOOST_UNORDERED_NO_RANGES)
|
|
826
|
+
template<
|
|
827
|
+
detail::container_compatible_range<value_type> R, class F1, class F2
|
|
828
|
+
>
|
|
829
|
+
size_type insert_range_and_cvisit(R&& rg, F1 f1, F2 f2)
|
|
830
|
+
{
|
|
831
|
+
BOOST_UNORDERED_STATIC_ASSERT_CONST_INVOCABLE(F1)
|
|
832
|
+
BOOST_UNORDERED_STATIC_ASSERT_CONST_INVOCABLE(F2)
|
|
833
|
+
size_type count_elements = 0;
|
|
834
|
+
auto first = std::ranges::begin(rg);
|
|
835
|
+
auto last = std::ranges::end(rg);
|
|
836
|
+
for (; first != last; ++first, ++count_elements) {
|
|
837
|
+
table_.emplace_and_cvisit(*first, f1, f2);
|
|
838
|
+
}
|
|
839
|
+
return count_elements;
|
|
840
|
+
}
|
|
841
|
+
#endif
|
|
842
|
+
|
|
709
843
|
template <class F1, class F2>
|
|
710
844
|
size_type insert_and_cvisit(
|
|
711
845
|
std::initializer_list<value_type> ilist, F1 f1, F2 f2)
|
|
@@ -1000,6 +1134,26 @@ namespace boost {
|
|
|
1000
1134
|
typename std::iterator_traits<InputIterator>::value_type, Hash, Pred,
|
|
1001
1135
|
Allocator>;
|
|
1002
1136
|
|
|
1137
|
+
#if !defined(BOOST_UNORDERED_NO_RANGES)
|
|
1138
|
+
template <
|
|
1139
|
+
boost::unordered::detail::convertible_to_from_range_t FromRangeT,
|
|
1140
|
+
std::ranges::input_range R,
|
|
1141
|
+
class Hash =
|
|
1142
|
+
boost::hash<std::ranges::range_value_t<R> >,
|
|
1143
|
+
class Pred =
|
|
1144
|
+
std::equal_to<std::ranges::range_value_t<R> >,
|
|
1145
|
+
class Allocator = std::allocator<std::ranges::range_value_t<R> >,
|
|
1146
|
+
class = std::enable_if_t<detail::is_hash_v<Hash> >,
|
|
1147
|
+
class = std::enable_if_t<detail::is_pred_v<Pred> >,
|
|
1148
|
+
class = std::enable_if_t<detail::is_allocator_v<Allocator> > >
|
|
1149
|
+
concurrent_node_set(FromRangeT&&, R&&,
|
|
1150
|
+
std::size_t = boost::unordered::detail::foa::default_bucket_count,
|
|
1151
|
+
Hash = Hash(), Pred = Pred(), Allocator = Allocator())
|
|
1152
|
+
-> concurrent_node_set<std::ranges::range_value_t<R>,
|
|
1153
|
+
Hash, Pred, Allocator>;
|
|
1154
|
+
#endif
|
|
1155
|
+
|
|
1156
|
+
|
|
1003
1157
|
template <class T, class Hash = boost::hash<T>,
|
|
1004
1158
|
class Pred = std::equal_to<T>, class Allocator = std::allocator<T>,
|
|
1005
1159
|
class = std::enable_if_t<detail::is_hash_v<Hash> >,
|
|
@@ -1041,6 +1195,39 @@ namespace boost {
|
|
|
1041
1195
|
std::equal_to<typename std::iterator_traits<InputIterator>::value_type>,
|
|
1042
1196
|
Allocator>;
|
|
1043
1197
|
|
|
1198
|
+
#if !defined(BOOST_UNORDERED_NO_RANGES)
|
|
1199
|
+
template <boost::unordered::detail::convertible_to_from_range_t FromRangeT,
|
|
1200
|
+
std::ranges::input_range R,
|
|
1201
|
+
class Allocator,
|
|
1202
|
+
class = std::enable_if_t<detail::is_allocator_v<Allocator> > >
|
|
1203
|
+
concurrent_node_set(FromRangeT&&, R&&, std::size_t, Allocator)
|
|
1204
|
+
-> concurrent_node_set<std::ranges::range_value_t<R>,
|
|
1205
|
+
boost::hash<std::ranges::range_value_t<R> >,
|
|
1206
|
+
std::equal_to<std::ranges::range_value_t<R> >,
|
|
1207
|
+
Allocator>;
|
|
1208
|
+
|
|
1209
|
+
template <boost::unordered::detail::convertible_to_from_range_t FromRangeT,
|
|
1210
|
+
std::ranges::input_range R,
|
|
1211
|
+
class Hash, class Allocator,
|
|
1212
|
+
class = std::enable_if_t<detail::is_hash_v<Hash> >,
|
|
1213
|
+
class = std::enable_if_t<detail::is_allocator_v<Allocator> > >
|
|
1214
|
+
concurrent_node_set(
|
|
1215
|
+
FromRangeT&&, R&&, std::size_t, Hash, Allocator)
|
|
1216
|
+
-> concurrent_node_set<std::ranges::range_value_t<R>,
|
|
1217
|
+
Hash, std::equal_to<std::ranges::range_value_t<R> >,
|
|
1218
|
+
Allocator>;
|
|
1219
|
+
|
|
1220
|
+
template <boost::unordered::detail::convertible_to_from_range_t FromRangeT,
|
|
1221
|
+
std::ranges::input_range R,
|
|
1222
|
+
class Allocator,
|
|
1223
|
+
class = std::enable_if_t<detail::is_allocator_v<Allocator> > >
|
|
1224
|
+
concurrent_node_set(FromRangeT&&, R&&, Allocator)
|
|
1225
|
+
-> concurrent_node_set<std::ranges::range_value_t<R>,
|
|
1226
|
+
boost::hash<std::ranges::range_value_t<R> >,
|
|
1227
|
+
std::equal_to<std::ranges::range_value_t<R> >,
|
|
1228
|
+
Allocator>;
|
|
1229
|
+
#endif
|
|
1230
|
+
|
|
1044
1231
|
template <class T, class Allocator,
|
|
1045
1232
|
class = std::enable_if_t<detail::is_allocator_v<Allocator> > >
|
|
1046
1233
|
concurrent_node_set(std::initializer_list<T>, std::size_t, Allocator)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* Fast open-addressing concurrent hash table.
|
|
2
2
|
*
|
|
3
|
-
* Copyright 2023-
|
|
3
|
+
* Copyright 2023-2026 Joaquin M Lopez Munoz.
|
|
4
4
|
* Copyright 2024 Braden Ganetsky.
|
|
5
5
|
* Distributed under the Boost Software License, Version 1.0.
|
|
6
6
|
* (See accompanying file LICENSE_1_0.txt or copy at
|
|
@@ -697,9 +697,9 @@ public:
|
|
|
697
697
|
}
|
|
698
698
|
|
|
699
699
|
/* Optimizations for maps for (k,v) to avoid eagerly constructing value */
|
|
700
|
-
template <typename K, typename V>
|
|
700
|
+
template <typename K, typename V, typename Table = concurrent_table>
|
|
701
701
|
BOOST_FORCEINLINE auto emplace(K&& k, V&& v) ->
|
|
702
|
-
typename std::enable_if<is_emplace_kv_able<
|
|
702
|
+
typename std::enable_if<is_emplace_kv_able<Table, K>::value,
|
|
703
703
|
bool>::type
|
|
704
704
|
{
|
|
705
705
|
alloc_cted_or_fwded_key_type<type_policy, Allocator, K&&> x(
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* Common base for Boost.Unordered open-addressing tables.
|
|
2
2
|
*
|
|
3
|
-
* Copyright 2022-
|
|
3
|
+
* Copyright 2022-2026 Joaquin M Lopez Munoz.
|
|
4
4
|
* Copyright 2023 Christian Mazakas.
|
|
5
5
|
* Copyright 2024 Braden Ganetsky.
|
|
6
6
|
* Distributed under the Boost Software License, Version 1.0.
|
|
@@ -1349,7 +1349,7 @@ template <typename Container, typename K>
|
|
|
1349
1349
|
using is_emplace_kv_able = std::integral_constant<bool,
|
|
1350
1350
|
is_map<Container>::value &&
|
|
1351
1351
|
(is_similar<K, typename Container::key_type>::value ||
|
|
1352
|
-
|
|
1352
|
+
std::is_move_constructible<typename Container::key_type>::value)>;
|
|
1353
1353
|
|
|
1354
1354
|
/* table_core. The TypePolicy template parameter is used to generate
|
|
1355
1355
|
* instantiations suitable for either maps or sets, and introduces non-standard
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* Fast open-addressing hash table.
|
|
2
2
|
*
|
|
3
|
-
* Copyright 2022-
|
|
3
|
+
* Copyright 2022-2026 Joaquin M Lopez Munoz.
|
|
4
4
|
* Copyright 2023 Christian Mazakas.
|
|
5
5
|
* Copyright 2024 Braden Ganetsky.
|
|
6
6
|
* Distributed under the Boost Software License, Version 1.0.
|
|
@@ -422,9 +422,9 @@ public:
|
|
|
422
422
|
}
|
|
423
423
|
|
|
424
424
|
/* Optimizations for maps for (k,v) to avoid eagerly constructing value */
|
|
425
|
-
template <typename K, typename V>
|
|
425
|
+
template <typename K, typename V, typename Table = table>
|
|
426
426
|
BOOST_FORCEINLINE
|
|
427
|
-
typename std::enable_if<is_emplace_kv_able<
|
|
427
|
+
typename std::enable_if<is_emplace_kv_able<Table, K>::value,
|
|
428
428
|
std::pair<iterator, bool> >::type
|
|
429
429
|
emplace(K&& k, V&& v)
|
|
430
430
|
{
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Copyright (C) 2003-2004 Jeremy B. Maitin-Shepard.
|
|
2
2
|
// Copyright (C) 2005-2016 Daniel James
|
|
3
|
-
// Copyright (C) 2022-
|
|
3
|
+
// Copyright (C) 2022-2026 Joaquin M Lopez Munoz.
|
|
4
4
|
// Copyright (C) 2022-2023 Christian Mazakas
|
|
5
5
|
// Copyright (C) 2024 Braden Ganetsky
|
|
6
6
|
//
|
|
@@ -18,12 +18,14 @@
|
|
|
18
18
|
#include <boost/unordered/detail/allocator_constructed.hpp>
|
|
19
19
|
#include <boost/unordered/detail/fca.hpp>
|
|
20
20
|
#include <boost/unordered/detail/opt_storage.hpp>
|
|
21
|
+
#include <boost/unordered/detail/ranges_support.hpp>
|
|
21
22
|
#include <boost/unordered/detail/serialize_tracked_address.hpp>
|
|
22
23
|
#include <boost/unordered/detail/static_assert.hpp>
|
|
23
24
|
#include <boost/unordered/detail/type_traits.hpp>
|
|
24
25
|
#include <boost/unordered/detail/unordered_printers.hpp>
|
|
25
26
|
|
|
26
27
|
#include <boost/assert.hpp>
|
|
28
|
+
#include <boost/config/workaround.hpp>
|
|
27
29
|
#include <boost/core/allocator_traits.hpp>
|
|
28
30
|
#include <boost/core/bit.hpp>
|
|
29
31
|
#include <boost/core/invoke_swap.hpp>
|
|
@@ -174,6 +176,29 @@ namespace boost {
|
|
|
174
176
|
boost::unordered::detail::insert_size(i, j), num_buckets);
|
|
175
177
|
}
|
|
176
178
|
|
|
179
|
+
#if !defined(BOOST_UNORDERED_NO_RANGES)
|
|
180
|
+
template<std::ranges::input_range R>
|
|
181
|
+
inline std::size_t insert_size(R&& rg)
|
|
182
|
+
{
|
|
183
|
+
if constexpr (std::ranges::sized_range<R>)
|
|
184
|
+
return std::ranges::size(std::forward<R>(rg));
|
|
185
|
+
else if constexpr (std::ranges::forward_range<R>)
|
|
186
|
+
return std::ranges::distance(std::forward<R>(rg));
|
|
187
|
+
else
|
|
188
|
+
return 1;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
template <std::ranges::input_range R>
|
|
192
|
+
inline std::size_t initial_size(R&& rg,
|
|
193
|
+
std::size_t num_buckets =
|
|
194
|
+
boost::unordered::detail::default_bucket_count)
|
|
195
|
+
{
|
|
196
|
+
return (std::max)(
|
|
197
|
+
boost::unordered::detail::insert_size(std::forward<R>(rg)),
|
|
198
|
+
num_buckets);
|
|
199
|
+
}
|
|
200
|
+
#endif
|
|
201
|
+
|
|
177
202
|
//////////////////////////////////////////////////////////////////////////
|
|
178
203
|
// compressed
|
|
179
204
|
|
|
@@ -954,10 +979,14 @@ namespace boost {
|
|
|
954
979
|
|
|
955
980
|
inline std::size_t double_to_size(double f)
|
|
956
981
|
{
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
982
|
+
#if BOOST_WORKAROUND(BOOST_CLANG_VERSION, < 30900)
|
|
983
|
+
// https://github.com/boostorg/unordered/pull/354
|
|
984
|
+
volatile
|
|
985
|
+
#endif
|
|
986
|
+
const double double_size_t_max =
|
|
987
|
+
static_cast<double>((std::numeric_limits<std::size_t>::max)());
|
|
988
|
+
return f >= double_size_t_max?
|
|
989
|
+
(std::numeric_limits<std::size_t>::max)(): static_cast<std::size_t>(f);
|
|
961
990
|
}
|
|
962
991
|
|
|
963
992
|
//////////////////////////////////////////////////////////////////////////
|
|
@@ -1781,7 +1810,7 @@ namespace boost {
|
|
|
1781
1810
|
|
|
1782
1811
|
static std::size_t min_buckets(std::size_t num_elements, float mlf)
|
|
1783
1812
|
{
|
|
1784
|
-
std::size_t num_buckets =
|
|
1813
|
+
std::size_t num_buckets = boost::unordered::detail::double_to_size(
|
|
1785
1814
|
std::ceil(static_cast<float>(num_elements) / mlf));
|
|
1786
1815
|
|
|
1787
1816
|
if (num_buckets == 0 && num_elements > 0) { // mlf == inf
|
|
@@ -2150,8 +2179,8 @@ namespace boost {
|
|
|
2150
2179
|
// if hash function throws, or inserting > 1 element, basic exception
|
|
2151
2180
|
// safety strong otherwise
|
|
2152
2181
|
|
|
2153
|
-
template <class InputIt>
|
|
2154
|
-
void insert_range_unique(no_key, InputIt i,
|
|
2182
|
+
template <class InputIt, class Sentinel>
|
|
2183
|
+
void insert_range_unique(no_key, InputIt i, Sentinel j)
|
|
2155
2184
|
{
|
|
2156
2185
|
hasher const& hf = this->hash_function();
|
|
2157
2186
|
node_allocator_type alloc = this->node_alloc();
|
|
@@ -2538,14 +2567,20 @@ namespace boost {
|
|
|
2538
2567
|
|
|
2539
2568
|
// if hash function throws, or inserting > 1 element, basic exception
|
|
2540
2569
|
// safety. Strong otherwise
|
|
2541
|
-
template <class I>
|
|
2570
|
+
template <class I, class S>
|
|
2542
2571
|
typename boost::unordered::detail::enable_if_forward<I, void>::type
|
|
2543
|
-
insert_range_equiv(I i,
|
|
2572
|
+
insert_range_equiv(I i, S j)
|
|
2544
2573
|
{
|
|
2545
2574
|
if (i == j)
|
|
2546
2575
|
return;
|
|
2547
2576
|
|
|
2577
|
+
#if !defined(BOOST_UNORDERED_NO_RANGES)
|
|
2578
|
+
std::size_t distance = static_cast<std::size_t>(
|
|
2579
|
+
std::ranges::distance(i, j));
|
|
2580
|
+
#else
|
|
2548
2581
|
std::size_t distance = static_cast<std::size_t>(std::distance(i, j));
|
|
2582
|
+
#endif
|
|
2583
|
+
|
|
2549
2584
|
if (distance == 1) {
|
|
2550
2585
|
emplace_equiv(boost::unordered::detail::func::construct_node(
|
|
2551
2586
|
this->node_alloc(), *i));
|
|
@@ -2561,9 +2596,9 @@ namespace boost {
|
|
|
2561
2596
|
}
|
|
2562
2597
|
}
|
|
2563
2598
|
|
|
2564
|
-
template <class I>
|
|
2599
|
+
template <class I, class S>
|
|
2565
2600
|
typename boost::unordered::detail::disable_if_forward<I, void>::type
|
|
2566
|
-
insert_range_equiv(I i,
|
|
2601
|
+
insert_range_equiv(I i, S j)
|
|
2567
2602
|
{
|
|
2568
2603
|
for (; i != j; ++i) {
|
|
2569
2604
|
emplace_equiv(boost::unordered::detail::func::construct_node(
|
|
@@ -2712,8 +2747,9 @@ namespace boost {
|
|
|
2712
2747
|
inline void table<Types>::reserve_for_insert(std::size_t num_elements)
|
|
2713
2748
|
{
|
|
2714
2749
|
if (num_elements > max_load_) {
|
|
2715
|
-
std::size_t const num_buckets =
|
|
2716
|
-
1.0f + std::ceil(static_cast<float>(num_elements) / mlf_))
|
|
2750
|
+
std::size_t const num_buckets = (std::max)(
|
|
2751
|
+
static_cast<std::size_t>(1.0f + std::ceil(static_cast<float>(num_elements) / mlf_)),
|
|
2752
|
+
static_cast<std::size_t>(bucket_count() + 1));
|
|
2717
2753
|
|
|
2718
2754
|
this->rehash_impl(num_buckets);
|
|
2719
2755
|
}
|
|
@@ -2851,10 +2887,10 @@ namespace boost {
|
|
|
2851
2887
|
return no_key();
|
|
2852
2888
|
}
|
|
2853
2889
|
|
|
2854
|
-
template <class Arg1, class Arg2>
|
|
2890
|
+
template <class Arg1, class Arg2, class Key = key_type>
|
|
2855
2891
|
static typename std::conditional<
|
|
2856
2892
|
(is_similar<Arg1, key_type>::value ||
|
|
2857
|
-
|
|
2893
|
+
std::is_move_constructible<Key>::value),
|
|
2858
2894
|
converting_key, no_key>::type
|
|
2859
2895
|
extract(Arg1 const&, Arg2 const&)
|
|
2860
2896
|
{
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/* Copyright 2026 Joaquin M Lopez Munoz.
|
|
2
|
+
* Distributed under the Boost Software License, Version 1.0.
|
|
3
|
+
* (See accompanying file LICENSE_1_0.txt or copy at
|
|
4
|
+
* http://www.boost.org/LICENSE_1_0.txt)
|
|
5
|
+
*
|
|
6
|
+
* See https://www.boost.org/libs/unordered for library home page.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
#ifndef BOOST_UNORDERED_DETAIL_RANGES_SUPPORT_HPP
|
|
10
|
+
#define BOOST_UNORDERED_DETAIL_RANGES_SUPPORT_HPP
|
|
11
|
+
|
|
12
|
+
#include <boost/config.hpp>
|
|
13
|
+
#include <boost/config/workaround.hpp>
|
|
14
|
+
|
|
15
|
+
#if defined(BOOST_NO_CXX20_HDR_CONCEPTS) || defined(BOOST_NO_CXX20_HDR_RANGES)
|
|
16
|
+
#define BOOST_UNORDERED_NO_RANGES
|
|
17
|
+
#elif BOOST_WORKAROUND(BOOST_CLANG_VERSION, < 170100) && \
|
|
18
|
+
defined(BOOST_LIBSTDCXX_VERSION)
|
|
19
|
+
/* https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109647
|
|
20
|
+
* https://github.com/llvm/llvm-project/issues/49620
|
|
21
|
+
*/
|
|
22
|
+
#define BOOST_UNORDERED_NO_RANGES
|
|
23
|
+
#endif
|
|
24
|
+
|
|
25
|
+
#if !defined(BOOST_UNORDERED_NO_RANGES)
|
|
26
|
+
#include <concepts>
|
|
27
|
+
#include <functional>
|
|
28
|
+
#include <ranges>
|
|
29
|
+
#include <tuple>
|
|
30
|
+
#include <type_traits>
|
|
31
|
+
#include <utility>
|
|
32
|
+
|
|
33
|
+
namespace boost {
|
|
34
|
+
namespace unordered {
|
|
35
|
+
|
|
36
|
+
struct from_range_t { explicit from_range_t() = default; };
|
|
37
|
+
inline constexpr from_range_t from_range{};
|
|
38
|
+
|
|
39
|
+
namespace detail {
|
|
40
|
+
|
|
41
|
+
/* Existence of std::from_range_t is governed by feature macro
|
|
42
|
+
* __cpp_lib_containers_ranges, but at least one stdlib implementation
|
|
43
|
+
* (GCC 14.1) does not honor it, hence the workadound below: code picks
|
|
44
|
+
* std::from_range_t if it exists, boost::unordered::from_range_t otherwise.
|
|
45
|
+
* Technique explained at
|
|
46
|
+
https://bannalia.blogspot.com/2016/09/compile-time-checking-existence-of.html
|
|
47
|
+
*/
|
|
48
|
+
|
|
49
|
+
struct from_range_t_hook{};
|
|
50
|
+
|
|
51
|
+
} /* namespace detail */
|
|
52
|
+
} /* namespace unordered */
|
|
53
|
+
} /* namespace boost */
|
|
54
|
+
|
|
55
|
+
namespace std {
|
|
56
|
+
|
|
57
|
+
template<> struct hash< ::boost::unordered::detail::from_range_t_hook>
|
|
58
|
+
{
|
|
59
|
+
using from_range_t_type = decltype([] {
|
|
60
|
+
using namespace ::boost::unordered;
|
|
61
|
+
return from_range_t{};
|
|
62
|
+
}());
|
|
63
|
+
|
|
64
|
+
/* make standard happy */
|
|
65
|
+
std::size_t operator()(
|
|
66
|
+
const ::boost::unordered::detail::from_range_t_hook&) const;
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
} /* namespace std */
|
|
70
|
+
|
|
71
|
+
namespace boost {
|
|
72
|
+
namespace unordered {
|
|
73
|
+
namespace detail {
|
|
74
|
+
|
|
75
|
+
template<typename T>
|
|
76
|
+
concept convertible_to_from_range_t =
|
|
77
|
+
std::is_convertible_v<T, boost::unordered::from_range_t> ||
|
|
78
|
+
std::is_convertible_v<T, std::hash<from_range_t_hook>::from_range_t_type>;
|
|
79
|
+
|
|
80
|
+
template<class R, class T>
|
|
81
|
+
concept container_compatible_range =
|
|
82
|
+
std::ranges::input_range<R> &&
|
|
83
|
+
std::convertible_to<std::ranges::range_reference_t<R>, T>;
|
|
84
|
+
|
|
85
|
+
template<std::ranges::input_range Range>
|
|
86
|
+
using range_key_t =
|
|
87
|
+
std::remove_cvref_t<
|
|
88
|
+
std::tuple_element_t<0, std::ranges::range_value_t<Range>>>;
|
|
89
|
+
|
|
90
|
+
template<std::ranges::input_range Range>
|
|
91
|
+
using range_mapped_t =
|
|
92
|
+
std::remove_cvref_t<
|
|
93
|
+
std::tuple_element_t<1, std::ranges::range_value_t<Range>>>;
|
|
94
|
+
|
|
95
|
+
template<std::ranges::input_range Range>
|
|
96
|
+
using range_to_alloc_t =
|
|
97
|
+
std::pair<const range_key_t<Range>, range_mapped_t<Range>>;
|
|
98
|
+
|
|
99
|
+
} /* namespace detail */
|
|
100
|
+
} /* namespace unordered */
|
|
101
|
+
} /* namespace boost */
|
|
102
|
+
|
|
103
|
+
#endif /* !defined(BOOST_UNORDERED_NO_RANGES) */
|
|
104
|
+
#endif
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
// Copyright (C) 2022-2023 Christian Mazakas
|
|
2
2
|
// Copyright (C) 2024 Braden Ganetsky
|
|
3
|
+
// Copyright (C) 2026 Joaquin M Lopez Munoz
|
|
3
4
|
//
|
|
4
5
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
|
5
6
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
@@ -49,20 +50,6 @@ namespace boost {
|
|
|
49
50
|
|
|
50
51
|
template <typename... Ts> using void_t = typename make_void<Ts...>::type;
|
|
51
52
|
|
|
52
|
-
template <class T, class = void> struct is_complete : std::false_type
|
|
53
|
-
{
|
|
54
|
-
};
|
|
55
|
-
|
|
56
|
-
template <class T>
|
|
57
|
-
struct is_complete<T, void_t<int[sizeof(T)]> > : std::true_type
|
|
58
|
-
{
|
|
59
|
-
};
|
|
60
|
-
|
|
61
|
-
template <class T>
|
|
62
|
-
using is_complete_and_move_constructible =
|
|
63
|
-
typename std::conditional<is_complete<T>::value,
|
|
64
|
-
std::is_move_constructible<T>, std::false_type>::type;
|
|
65
|
-
|
|
66
53
|
#if BOOST_WORKAROUND(BOOST_LIBSTDCXX_VERSION, < 50000)
|
|
67
54
|
/* std::is_trivially_default_constructible not provided */
|
|
68
55
|
template <class T>
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
// Copyright 2024-
|
|
1
|
+
// Copyright 2024-2026 Braden Ganetsky
|
|
2
2
|
// Distributed under the Boost Software License, Version 1.0.
|
|
3
3
|
// https://www.boost.org/LICENSE_1_0.txt
|
|
4
4
|
|
|
5
|
-
// Generated on
|
|
5
|
+
// Generated on 2026-01-24T00:34:53
|
|
6
6
|
|
|
7
7
|
#ifndef BOOST_UNORDERED_DETAIL_UNORDERED_PRINTERS_HPP
|
|
8
8
|
#define BOOST_UNORDERED_DETAIL_UNORDERED_PRINTERS_HPP
|
|
@@ -29,8 +29,14 @@ __asm__(".pushsection \".debug_gdb_scripts\", \"MS\",%progbits,1\n"
|
|
|
29
29
|
".ascii \" return n\\n\"\n"
|
|
30
30
|
|
|
31
31
|
".ascii \" def maybe_unwrap_foa_element(e):\\n\"\n"
|
|
32
|
-
".ascii \"
|
|
33
|
-
".ascii \"
|
|
32
|
+
".ascii \" # Sometimes the complex typedefs can't be resolved through a pointer\\n\"\n"
|
|
33
|
+
".ascii \" if e.type.strip_typedefs().code == gdb.TYPE_CODE_PTR:\\n\"\n"
|
|
34
|
+
".ascii \" foa_element = e.dereference()\\n\"\n"
|
|
35
|
+
".ascii \" else:\\n\"\n"
|
|
36
|
+
".ascii \" foa_element = e\\n\"\n"
|
|
37
|
+
|
|
38
|
+
".ascii \" if f\\\"{foa_element.type.strip_typedefs()}\\\".startswith(\\\"boost::unordered::detail::foa::element_type<\\\"):\\n\"\n"
|
|
39
|
+
".ascii \" return foa_element[\\\"p\\\"]\\n\"\n"
|
|
34
40
|
".ascii \" else:\\n\"\n"
|
|
35
41
|
".ascii \" return e\\n\"\n"
|
|
36
42
|
|