passenger 6.1.0 → 6.1.1

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.
Files changed (440) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +32 -2
  3. data/Rakefile +6 -13
  4. data/bin/passenger-install-apache2-module +15 -19
  5. data/bin/passenger-install-nginx-module +42 -44
  6. data/bin/passenger-status +9 -10
  7. data/build/common_library.rb +4 -4
  8. data/build/support/vendor/cxxcodebuilder/lib/cxxcodebuilder/builder.rb +1 -1
  9. data/build/test_basics.rb +4 -3
  10. data/dev/copy_boost_headers +54 -40
  11. data/dev/ruby_server.rb +1 -1
  12. data/src/agent/Core/Config.h +1 -1
  13. data/src/agent/Core/Controller/Config.h +1 -1
  14. data/src/agent/Watchdog/Config.h +1 -1
  15. data/src/cxx_supportlib/Constants.h +1 -1
  16. data/src/cxx_supportlib/vendor-modified/boost/assert/source_location.hpp +8 -1
  17. data/src/cxx_supportlib/vendor-modified/boost/assert.hpp +6 -0
  18. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic.hpp +94 -110
  19. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic_flag.hpp +2 -2
  20. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic_ref.hpp +14 -14
  21. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/addressof.hpp +3 -3
  22. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_flag_impl.hpp +52 -24
  23. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_impl.hpp +641 -285
  24. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_ref_impl.hpp +593 -260
  25. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_cast.hpp +37 -24
  26. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_fp_cast.hpp +9 -9
  27. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/cas_based_exchange.hpp +3 -3
  28. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/chrono.hpp +93 -0
  29. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/classify.hpp +16 -17
  30. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/config.hpp +25 -34
  31. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_aarch32.hpp +204 -97
  32. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_aarch64.hpp +251 -122
  33. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_alpha.hpp +56 -56
  34. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_arm.hpp +129 -129
  35. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_ppc.hpp +253 -125
  36. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_sparc.hpp +25 -25
  37. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_x86.hpp +193 -126
  38. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_msvc_arm.hpp +57 -57
  39. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_msvc_x86.hpp +96 -97
  40. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_operations_emulated.hpp +24 -24
  41. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_cas_based.hpp +10 -10
  42. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_gcc_atomic.hpp +27 -24
  43. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_gcc_sync.hpp +39 -37
  44. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_linux_arm.hpp +17 -17
  45. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extending_cas_based_arithmetic.hpp +5 -5
  46. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_ops_emulated.hpp +12 -12
  47. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_ops_generic.hpp +21 -21
  48. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_emulated.hpp +30 -30
  49. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_aarch32.hpp +170 -98
  50. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_aarch64.hpp +209 -119
  51. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_arm.hpp +95 -95
  52. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_ppc.hpp +148 -76
  53. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_x86.hpp +293 -123
  54. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_generic.hpp +87 -71
  55. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_msvc_arm.hpp +5 -5
  56. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_msvc_x86.hpp +88 -88
  57. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_operations.hpp +2 -2
  58. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_aarch32.hpp +4 -5
  59. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_aarch64.hpp +4 -4
  60. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_alpha.hpp +4 -4
  61. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_arm.hpp +9 -9
  62. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_ppc.hpp +4 -4
  63. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_sparc.hpp +4 -4
  64. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_x86.hpp +4 -4
  65. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_msvc_arm.hpp +5 -5
  66. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_msvc_x86.hpp +6 -6
  67. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_operations.hpp +2 -2
  68. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_operations_emulated.hpp +2 -2
  69. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_gcc_atomic.hpp +5 -5
  70. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_gcc_sync.hpp +4 -4
  71. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_linux_arm.hpp +7 -7
  72. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_ops_emulated.hpp +7 -7
  73. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_ops_generic.hpp +6 -6
  74. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/futex.hpp +110 -49
  75. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/gcc_atomic_memory_order_utils.hpp +1 -1
  76. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/has_posix_clock_traits.hpp +51 -0
  77. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/int_sizes.hpp +26 -32
  78. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/integral_conversions.hpp +15 -15
  79. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/interlocked.hpp +69 -30
  80. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/intptr.hpp +8 -8
  81. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/lock_pool.hpp +51 -31
  82. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/memory_order_utils.hpp +2 -2
  83. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/once_flag.hpp +2 -2
  84. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_arm_common.hpp +6 -6
  85. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_ppc_common.hpp +4 -4
  86. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/platform.hpp +5 -5
  87. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/storage_traits.hpp +31 -31
  88. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/alignment_of.hpp +2 -3
  89. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/has_unique_object_representations.hpp +2 -5
  90. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_floating_point.hpp +3 -3
  91. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_iec559.hpp +2 -2
  92. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_integral.hpp +3 -3
  93. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_signed.hpp +3 -3
  94. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_trivially_copyable.hpp +20 -13
  95. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_trivially_default_constructible.hpp +13 -13
  96. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/make_signed.hpp +3 -3
  97. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/make_unsigned.hpp +3 -3
  98. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_darwin_ulock.hpp +90 -16
  99. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_dragonfly_umtx.hpp +80 -11
  100. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_emulated.hpp +160 -15
  101. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_freebsd_umtx.hpp +327 -38
  102. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_futex.hpp +276 -33
  103. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_generic.hpp +260 -20
  104. data/src/cxx_supportlib/vendor-modified/boost/atomic/fences.hpp +4 -3
  105. data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic.hpp +14 -18
  106. data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic_flag.hpp +2 -2
  107. data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic_ref.hpp +13 -13
  108. data/src/cxx_supportlib/vendor-modified/boost/atomic/posix_clock_traits_fwd.hpp +59 -0
  109. data/src/cxx_supportlib/vendor-modified/boost/atomic/thread_pause.hpp +102 -0
  110. data/src/cxx_supportlib/vendor-modified/boost/atomic/wait_result.hpp +56 -0
  111. data/src/cxx_supportlib/vendor-modified/boost/atomic.hpp +4 -1
  112. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcpp.hpp +5 -0
  113. data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +1 -1
  114. data/src/cxx_supportlib/vendor-modified/boost/container/allocator_traits.hpp +108 -41
  115. data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +1235 -1009
  116. data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +3 -2
  117. data/src/cxx_supportlib/vendor-modified/boost/container/detail/algorithm.hpp +56 -0
  118. data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_helpers.hpp +1 -0
  119. data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_lib.h +9 -9
  120. data/src/cxx_supportlib/vendor-modified/boost/container/detail/compare_functors.hpp +23 -2
  121. data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_begin.hpp +0 -1
  122. data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +88 -23
  123. data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +2 -1
  124. data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool_impl.hpp +2 -2
  125. data/src/cxx_supportlib/vendor-modified/boost/container/detail/operator_new_helpers.hpp +68 -0
  126. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair.hpp +72 -13
  127. data/src/cxx_supportlib/vendor-modified/boost/container/detail/std_fwd.hpp +13 -0
  128. data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +8 -5
  129. data/src/cxx_supportlib/vendor-modified/boost/container/devector.hpp +31 -10
  130. data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +37 -10
  131. data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +19 -0
  132. data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +23 -1
  133. data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +72 -5
  134. data/src/cxx_supportlib/vendor-modified/boost/container/new_allocator.hpp +3 -10
  135. data/src/cxx_supportlib/vendor-modified/boost/container/options.hpp +54 -23
  136. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/devector.hpp +6 -4
  137. data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +19 -0
  138. data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +32 -5
  139. data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +27 -2
  140. data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +22 -0
  141. data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +37 -17
  142. data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +23 -1
  143. data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +41 -20
  144. data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash.hpp +5 -8
  145. data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash_fwd.hpp +3 -1
  146. data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash_is_avalanching.hpp +57 -0
  147. data/src/cxx_supportlib/vendor-modified/boost/core/bit.hpp +29 -29
  148. data/src/cxx_supportlib/vendor-modified/boost/core/cmath.hpp +3 -3
  149. data/src/cxx_supportlib/vendor-modified/boost/core/data.hpp +15 -1
  150. data/src/cxx_supportlib/vendor-modified/boost/core/default_allocator.hpp +1 -0
  151. data/src/cxx_supportlib/vendor-modified/boost/core/demangle.hpp +1 -1
  152. data/src/cxx_supportlib/vendor-modified/boost/core/detail/assert.hpp +18 -0
  153. data/src/cxx_supportlib/vendor-modified/boost/core/detail/sp_thread_sleep.hpp +2 -2
  154. data/src/cxx_supportlib/vendor-modified/boost/core/detail/static_assert.hpp +42 -0
  155. data/src/cxx_supportlib/vendor-modified/boost/core/detail/string_view.hpp +16 -10
  156. data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test.hpp +35 -27
  157. data/src/cxx_supportlib/vendor-modified/boost/core/scoped_enum.hpp +1 -1
  158. data/src/cxx_supportlib/vendor-modified/boost/core/size.hpp +14 -0
  159. data/src/cxx_supportlib/vendor-modified/boost/core/span.hpp +20 -9
  160. data/src/cxx_supportlib/vendor-modified/boost/cregex.hpp +0 -5
  161. data/src/cxx_supportlib/vendor-modified/boost/describe/detail/config.hpp +8 -0
  162. data/src/cxx_supportlib/vendor-modified/boost/describe/modifiers.hpp +1 -1
  163. data/src/cxx_supportlib/vendor-modified/boost/foreach.hpp +1 -0
  164. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/ebo_functor_holder.hpp +4 -4
  165. data/src/cxx_supportlib/vendor-modified/boost/intrusive/list.hpp +2 -2
  166. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_rebind.hpp +9 -0
  167. data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree_algorithms.hpp +1 -0
  168. data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist.hpp +2 -2
  169. data/src/cxx_supportlib/vendor-modified/boost/iterator/advance.hpp +43 -64
  170. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/config_def.hpp +0 -83
  171. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/config_undef.hpp +1 -5
  172. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/eval_if_default.hpp +44 -0
  173. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/facade_iterator_category.hpp +103 -117
  174. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/type_traits/conjunction.hpp +53 -0
  175. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/type_traits/disjunction.hpp +53 -0
  176. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/type_traits/negation.hpp +53 -0
  177. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/type_traits/type_identity.hpp +54 -0
  178. data/src/cxx_supportlib/vendor-modified/boost/iterator/distance.hpp +32 -38
  179. data/src/cxx_supportlib/vendor-modified/boost/iterator/enable_if_convertible.hpp +84 -0
  180. data/src/cxx_supportlib/vendor-modified/boost/iterator/interoperable.hpp +22 -34
  181. data/src/cxx_supportlib/vendor-modified/boost/iterator/is_iterator.hpp +16 -16
  182. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_adaptor.hpp +162 -309
  183. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_categories.hpp +52 -161
  184. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_concepts.hpp +3 -11
  185. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_facade.hpp +804 -977
  186. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_traits.hpp +24 -17
  187. data/src/cxx_supportlib/vendor-modified/boost/iterator/min_category.hpp +83 -0
  188. data/src/cxx_supportlib/vendor-modified/boost/iterator/minimum_category.hpp +11 -73
  189. data/src/cxx_supportlib/vendor-modified/boost/iterator/reverse_iterator.hpp +56 -57
  190. data/src/cxx_supportlib/vendor-modified/boost/iterator/transform_iterator.hpp +123 -156
  191. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/bad_lexical_cast.hpp +1 -1
  192. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/buffer_view.hpp +1 -1
  193. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical.hpp +36 -33
  194. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +43 -50
  195. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_numeric.hpp +23 -27
  196. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/inf_nan.hpp +1 -1
  197. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/is_character.hpp +10 -11
  198. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_basic_unlockedbuf.hpp +1 -1
  199. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_char_constants.hpp +1 -1
  200. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_unsigned_converters.hpp +6 -7
  201. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/type_traits.hpp +81 -0
  202. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/widest_char.hpp +4 -4
  203. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/try_lexical_convert.hpp +8 -9
  204. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast.hpp +1 -1
  205. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/wide_posix_api.cpp +1 -12
  206. data/src/cxx_supportlib/vendor-modified/boost/memory_order.hpp +8 -26
  207. data/src/cxx_supportlib/vendor-modified/boost/move/detail/iterator_to_raw_pointer.hpp +1 -1
  208. data/src/cxx_supportlib/vendor-modified/boost/move/detail/launder.hpp +1 -1
  209. data/src/cxx_supportlib/vendor-modified/boost/move/detail/std_ns_begin.hpp +6 -0
  210. data/src/cxx_supportlib/vendor-modified/boost/move/detail/unique_ptr_meta_utils.hpp +2 -2
  211. data/src/cxx_supportlib/vendor-modified/boost/mp11/algorithm.hpp +11 -44
  212. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_map_find.hpp +34 -0
  213. data/src/cxx_supportlib/vendor-modified/boost/mp11/set.hpp +33 -1
  214. data/src/cxx_supportlib/vendor-modified/boost/mp11/version.hpp +1 -1
  215. data/src/cxx_supportlib/vendor-modified/boost/mpl/and.hpp +4 -8
  216. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/na_assert.hpp +1 -1
  217. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/ptr_to_ref.hpp +1 -1
  218. data/src/cxx_supportlib/vendor-modified/boost/mpl/bitand.hpp +2 -6
  219. data/src/cxx_supportlib/vendor-modified/boost/mpl/bitor.hpp +2 -6
  220. data/src/cxx_supportlib/vendor-modified/boost/mpl/or.hpp +2 -6
  221. data/src/cxx_supportlib/vendor-modified/boost/pool/pool.hpp +1 -1
  222. data/src/cxx_supportlib/vendor-modified/boost/pool/simple_segregated_storage.hpp +0 -13
  223. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/limits/to_seq_256.hpp +190 -190
  224. data/src/cxx_supportlib/vendor-modified/boost/random/beta_distribution.hpp +12 -2
  225. data/src/cxx_supportlib/vendor-modified/boost/random/detail/config.hpp +4 -0
  226. data/src/cxx_supportlib/vendor-modified/boost/random/detail/size.hpp +41 -0
  227. data/src/cxx_supportlib/vendor-modified/boost/random/detail/xoshiro_base.hpp +472 -0
  228. data/src/cxx_supportlib/vendor-modified/boost/random/discrete_distribution.hpp +7 -10
  229. data/src/cxx_supportlib/vendor-modified/boost/random/gamma_distribution.hpp +1 -1
  230. data/src/cxx_supportlib/vendor-modified/boost/random/generalized_inverse_gaussian_distribution.hpp +339 -0
  231. data/src/cxx_supportlib/vendor-modified/boost/random/hyperexponential_distribution.hpp +12 -14
  232. data/src/cxx_supportlib/vendor-modified/boost/random/inverse_gaussian_distribution.hpp +226 -0
  233. data/src/cxx_supportlib/vendor-modified/boost/random/mersenne_twister.hpp +1 -4
  234. data/src/cxx_supportlib/vendor-modified/boost/random/mixmax.hpp +63 -63
  235. data/src/cxx_supportlib/vendor-modified/boost/random/piecewise_constant_distribution.hpp +7 -10
  236. data/src/cxx_supportlib/vendor-modified/boost/random/piecewise_linear_distribution.hpp +8 -11
  237. data/src/cxx_supportlib/vendor-modified/boost/random/seed_seq.hpp +1 -3
  238. data/src/cxx_supportlib/vendor-modified/boost/random/splitmix64.hpp +1 -4
  239. data/src/cxx_supportlib/vendor-modified/boost/random/xoshiro.hpp +488 -0
  240. data/src/cxx_supportlib/vendor-modified/boost/random.hpp +3 -0
  241. data/src/cxx_supportlib/vendor-modified/boost/range/concepts.hpp +2 -0
  242. data/src/cxx_supportlib/vendor-modified/boost/range/detail/has_member_size.hpp +1 -0
  243. data/src/cxx_supportlib/vendor-modified/boost/range/detail/msvc_has_iterator_workaround.hpp +2 -0
  244. data/src/cxx_supportlib/vendor-modified/boost/range/has_range_iterator.hpp +1 -1
  245. data/src/cxx_supportlib/vendor-modified/boost/range/iterator.hpp +1 -0
  246. data/src/cxx_supportlib/vendor-modified/boost/range/iterator_range_core.hpp +4 -1
  247. data/src/cxx_supportlib/vendor-modified/boost/range/size_type.hpp +1 -1
  248. data/src/cxx_supportlib/vendor-modified/boost/regex/concepts.hpp +35 -18
  249. data/src/cxx_supportlib/vendor-modified/boost/regex/config.hpp +18 -101
  250. data/src/cxx_supportlib/vendor-modified/boost/regex/pattern_except.hpp +0 -4
  251. data/src/cxx_supportlib/vendor-modified/boost/regex/pending/object_cache.hpp +0 -4
  252. data/src/cxx_supportlib/vendor-modified/boost/regex/pending/unicode_iterator.hpp +0 -6
  253. data/src/cxx_supportlib/vendor-modified/boost/regex/regex_traits.hpp +0 -4
  254. data/src/cxx_supportlib/vendor-modified/boost/regex/user.hpp +4 -10
  255. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/basic_regex.hpp +63 -17
  256. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/basic_regex_creator.hpp +71 -16
  257. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/basic_regex_parser.hpp +22 -1
  258. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/c_regex_traits.hpp +11 -4
  259. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/char_regex_traits.hpp +2 -0
  260. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/cpp_regex_traits.hpp +11 -8
  261. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/cregex.hpp +2 -1
  262. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/error_type.hpp +1 -1
  263. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/icu.hpp +40 -38
  264. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/iterator_category.hpp +2 -0
  265. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/iterator_traits.hpp +4 -0
  266. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/match_flags.hpp +39 -37
  267. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/match_results.hpp +46 -9
  268. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/mem_block_cache.hpp +4 -0
  269. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/object_cache.hpp +2 -0
  270. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/pattern_except.hpp +6 -4
  271. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/perl_matcher.hpp +57 -8
  272. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/perl_matcher_common.hpp +21 -6
  273. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/perl_matcher_non_recursive.hpp +18 -3
  274. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regbase.hpp +4 -2
  275. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex.hpp +6 -6
  276. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_format.hpp +23 -18
  277. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_fwd.hpp +9 -9
  278. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_grep.hpp +9 -5
  279. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_iterator.hpp +11 -7
  280. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_match.hpp +10 -7
  281. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_merge.hpp +4 -4
  282. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_raw_buffer.hpp +3 -0
  283. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_replace.hpp +6 -2
  284. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_search.hpp +12 -9
  285. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_split.hpp +6 -3
  286. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_token_iterator.hpp +16 -11
  287. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_traits.hpp +1 -1
  288. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_traits_defaults.hpp +2 -0
  289. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_workaround.hpp +2 -0
  290. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/states.hpp +7 -0
  291. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/sub_match.hpp +54 -49
  292. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/syntax_type.hpp +64 -62
  293. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/u32regex_iterator.hpp +16 -0
  294. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/u32regex_token_iterator.hpp +12 -0
  295. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/unicode_iterator.hpp +6 -4
  296. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/w32_regex_traits.hpp +3 -1
  297. data/src/cxx_supportlib/vendor-modified/boost/regex.hpp +0 -4
  298. data/src/cxx_supportlib/vendor-modified/boost/regex_fwd.hpp +0 -4
  299. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count.hpp +1 -43
  300. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/deprecated_macros.hpp +7 -7
  301. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/shared_count.hpp +2 -77
  302. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base.hpp +1 -64
  303. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_nt.hpp +3 -3
  304. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_impl.hpp +0 -77
  305. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_cxx20_constexpr.hpp +37 -0
  306. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock.hpp +5 -28
  307. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ptr.hpp +41 -40
  308. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_array.hpp +0 -15
  309. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_ptr.hpp +0 -18
  310. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_ptr.hpp +1 -1
  311. data/src/cxx_supportlib/vendor-modified/boost/thread/future.hpp +1 -1
  312. data/src/cxx_supportlib/vendor-modified/boost/tuple/detail/tuple_basic.hpp +1 -0
  313. data/src/cxx_supportlib/vendor-modified/boost/type_traits/integral_constant.hpp +8 -6
  314. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_complete.hpp +31 -10
  315. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/fca.hpp +34 -8
  316. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/core.hpp +6 -4
  317. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/table.hpp +9 -1
  318. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/implementation.hpp +5 -5
  319. data/src/cxx_supportlib/vendor-modified/boost/unordered/{unordered_printers.hpp → detail/unordered_printers.hpp} +34 -36
  320. data/src/cxx_supportlib/vendor-modified/boost/unordered/hash_traits.hpp +6 -49
  321. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map.hpp +6 -1
  322. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set.hpp +6 -1
  323. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_map.hpp +6 -1
  324. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_set.hpp +6 -1
  325. data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
  326. data/src/nginx_module/ContentHandler.c +2 -0
  327. data/src/ruby_supportlib/phusion_passenger/config/download_agent_command.rb +3 -5
  328. data/src/ruby_supportlib/phusion_passenger/config/download_nginx_engine_command.rb +3 -5
  329. data/src/ruby_supportlib/phusion_passenger/config/install_agent_command.rb +3 -5
  330. data/src/ruby_supportlib/phusion_passenger/config/install_standalone_runtime_command.rb +3 -5
  331. data/src/ruby_supportlib/phusion_passenger/config/installation_utils.rb +1 -1
  332. data/src/ruby_supportlib/phusion_passenger/config/nginx_engine_compiler.rb +2 -2
  333. data/src/ruby_supportlib/phusion_passenger/loader_shared_helpers.rb +5 -3
  334. data/src/ruby_supportlib/phusion_passenger/platform_info/apache.rb +2 -2
  335. data/src/ruby_supportlib/phusion_passenger/platform_info/compiler.rb +6 -13
  336. data/src/ruby_supportlib/phusion_passenger/platform_info/cxx_portability.rb +29 -30
  337. data/src/ruby_supportlib/phusion_passenger/request_handler/thread_handler.rb +2 -3
  338. data/src/ruby_supportlib/phusion_passenger/standalone/config_utils.rb +2 -0
  339. data/src/ruby_supportlib/phusion_passenger/standalone/start_command/builtin_engine.rb +1 -1
  340. data/src/ruby_supportlib/phusion_passenger/utils/json.rb +1 -1
  341. data/src/ruby_supportlib/phusion_passenger/utils/terminal_choice_menu.rb +1 -1
  342. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/gdb_controller.rb +1 -1
  343. data/src/ruby_supportlib/phusion_passenger.rb +8 -8
  344. metadata +26 -99
  345. data/src/cxx_supportlib/vendor-modified/boost/align/aligned_alloc.hpp +0 -47
  346. data/src/cxx_supportlib/vendor-modified/boost/align/detail/aligned_alloc_posix.hpp +0 -41
  347. data/src/cxx_supportlib/vendor-modified/boost/align/detail/aligned_alloc_sunos.hpp +0 -34
  348. data/src/cxx_supportlib/vendor-modified/boost/align/detail/is_alignment.hpp +0 -28
  349. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/pause.hpp +0 -68
  350. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/conditional.hpp +0 -42
  351. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/integral_constant.hpp +0 -46
  352. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_enum.hpp +0 -42
  353. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_function.hpp +0 -42
  354. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_nothrow_default_constructible.hpp +0 -46
  355. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/remove_cv.hpp +0 -42
  356. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_on_address.hpp +0 -64
  357. data/src/cxx_supportlib/vendor-modified/boost/cerrno.hpp +0 -15
  358. data/src/cxx_supportlib/vendor-modified/boost/detail/indirect_traits.hpp +0 -195
  359. data/src/cxx_supportlib/vendor-modified/boost/detail/select_type.hpp +0 -36
  360. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/enable_if.hpp +0 -83
  361. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/internals.hpp +0 -35
  362. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/regex.cpp +0 -120
  363. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/regex_debug.cpp +0 -59
  364. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/static_mutex.cpp +0 -189
  365. data/src/cxx_supportlib/vendor-modified/boost/libs/system/src/error_code.cpp +0 -31
  366. data/src/cxx_supportlib/vendor-modified/boost/regex/config/borland.hpp +0 -72
  367. data/src/cxx_supportlib/vendor-modified/boost/regex/config/cwchar.hpp +0 -207
  368. data/src/cxx_supportlib/vendor-modified/boost/regex/pending/static_mutex.hpp +0 -182
  369. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex.hpp +0 -797
  370. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_creator.hpp +0 -1598
  371. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_parser.hpp +0 -3174
  372. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/c_regex_traits.hpp +0 -511
  373. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/char_regex_traits.hpp +0 -81
  374. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/cpp_regex_traits.hpp +0 -1237
  375. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/cregex.hpp +0 -213
  376. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/error_type.hpp +0 -59
  377. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/icu.hpp +0 -1516
  378. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/indexed_bit_flag.hpp +0 -54
  379. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/iterator_category.hpp +0 -91
  380. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/iterator_traits.hpp +0 -135
  381. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_flags.hpp +0 -161
  382. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_results.hpp +0 -716
  383. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/mem_block_cache.hpp +0 -183
  384. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/object_cache.hpp +0 -171
  385. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/pattern_except.hpp +0 -128
  386. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher.hpp +0 -645
  387. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_common.hpp +0 -1030
  388. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_non_recursive.hpp +0 -1947
  389. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_recursive.hpp +0 -1131
  390. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/primary_transform.hpp +0 -146
  391. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/protected_call.hpp +0 -83
  392. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regbase.hpp +0 -180
  393. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex.hpp +0 -166
  394. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_format.hpp +0 -1158
  395. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_fwd.hpp +0 -73
  396. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_grep.hpp +0 -155
  397. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_iterator.hpp +0 -195
  398. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_match.hpp +0 -382
  399. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_merge.hpp +0 -93
  400. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_raw_buffer.hpp +0 -241
  401. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_replace.hpp +0 -99
  402. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_search.hpp +0 -217
  403. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_split.hpp +0 -174
  404. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_token_iterator.hpp +0 -327
  405. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits.hpp +0 -189
  406. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits_defaults.hpp +0 -997
  407. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_workaround.hpp +0 -237
  408. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/states.hpp +0 -321
  409. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/sub_match.hpp +0 -516
  410. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/syntax_type.hpp +0 -105
  411. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/u32regex_iterator.hpp +0 -185
  412. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/u32regex_token_iterator.hpp +0 -360
  413. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/unicode_iterator.hpp +0 -871
  414. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/w32_regex_traits.hpp +0 -1229
  415. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_gcc.hpp +0 -79
  416. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_gcc_atomic.hpp +0 -63
  417. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_gcc_x86.hpp +0 -88
  418. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_pt.hpp +0 -104
  419. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_spin.hpp +0 -69
  420. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_sync.hpp +0 -72
  421. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp +0 -163
  422. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_aix.hpp +0 -152
  423. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp +0 -185
  424. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_atomic.hpp +0 -148
  425. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp +0 -170
  426. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp +0 -200
  427. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp +0 -194
  428. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp +0 -179
  429. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp +0 -186
  430. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_pt.hpp +0 -147
  431. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp +0 -174
  432. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_spin.hpp +0 -141
  433. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_sync.hpp +0 -165
  434. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp +0 -163
  435. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_has_gcc_intrinsics.hpp +0 -30
  436. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_has_sync_intrinsics.hpp +0 -69
  437. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_gcc_arm.hpp +0 -128
  438. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_nt.hpp +0 -96
  439. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_pt.hpp +0 -86
  440. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_sync.hpp +0 -94
@@ -3,7 +3,7 @@
3
3
  * (See accompanying file LICENSE_1_0.txt or copy at
4
4
  * http://www.boost.org/LICENSE_1_0.txt)
5
5
  *
6
- * Copyright (c) 2020 Andrey Semashev
6
+ * Copyright (c) 2020-2025 Andrey Semashev
7
7
  */
8
8
  /*!
9
9
  * \file atomic/detail/futex.hpp
@@ -23,7 +23,7 @@
23
23
  #pragma once
24
24
  #endif
25
25
 
26
- #if defined(__linux__) || defined(__NETBSD__) || defined(__NetBSD__)
26
+ #if defined(__linux__)
27
27
 
28
28
  #include <sys/syscall.h>
29
29
 
@@ -33,16 +33,10 @@
33
33
  // On some 32-bit targets (e.g. riscv32) SYS_futex is not defined and instead SYS_futex_time64 is implemented,
34
34
  // which is equivalent to SYS_futex but uses 64-bit time_t.
35
35
  #define BOOST_ATOMIC_DETAIL_SYS_FUTEX SYS_futex_time64
36
+ #define BOOST_ATOMIC_DETAIL_FUTEX_TIME64
36
37
  #elif defined(__NR_futex)
37
38
  // Some Android NDKs (Google NDK and older Crystax.NET NDK versions) don't define SYS_futex.
38
39
  #define BOOST_ATOMIC_DETAIL_SYS_FUTEX __NR_futex
39
- #elif defined(SYS___futex)
40
- // NetBSD defines SYS___futex, which has slightly different parameters. Basically, it has decoupled timeout and val2 parameters:
41
- // int __futex(int *addr1, int op, int val1, const struct timespec *timeout, int *addr2, int val2, int val3);
42
- // https://ftp.netbsd.org/pub/NetBSD/NetBSD-current/src/sys/sys/syscall.h
43
- // http://bxr.su/NetBSD/sys/kern/sys_futex.c
44
- #define BOOST_ATOMIC_DETAIL_SYS_FUTEX SYS___futex
45
- #define BOOST_ATOMIC_DETAIL_NETBSD_FUTEX
46
40
  #endif
47
41
 
48
42
  #elif defined(__OpenBSD__)
@@ -52,51 +46,97 @@
52
46
  // https://github.com/openbsd/src/commit/cafeb892b121ee89c39c2b940e8ccd6950f50009
53
47
 
54
48
  #include <sys/param.h>
49
+ #include <cerrno>
55
50
 
56
51
  #if OpenBSD >= 201711
57
52
  #define BOOST_ATOMIC_DETAIL_OPENBSD_FUTEX
58
- #endif
53
+ #endif // OpenBSD >= 201711
54
+
55
+ #elif defined(__NETBSD__) || defined(__NetBSD__)
56
+
57
+ #include <sys/syscall.h>
58
+
59
+ #if defined(SYS___futex)
60
+ // NetBSD defines SYS___futex, which has slightly different parameters. Basically, it has decoupled timeout and val2 parameters:
61
+ // int __futex(int *addr1, int op, int val1, const struct timespec *timeout, int *addr2, int val2, int val3);
62
+ // https://ftp.netbsd.org/pub/NetBSD/NetBSD-current/src/sys/sys/syscall.h
63
+ // http://bxr.su/NetBSD/sys/kern/sys_futex.c
64
+ #define BOOST_ATOMIC_DETAIL_SYS_FUTEX SYS___futex
65
+ #define BOOST_ATOMIC_DETAIL_NETBSD_FUTEX
66
+ #endif // defined(SYS___futex)
59
67
 
60
68
  #endif
61
69
 
62
70
  #if defined(BOOST_ATOMIC_DETAIL_SYS_FUTEX) || defined(BOOST_ATOMIC_DETAIL_OPENBSD_FUTEX)
63
71
 
64
- #include <cstddef>
65
72
  #if defined(__linux__)
66
73
  #include <linux/futex.h>
67
74
  #else
68
75
  #include <sys/futex.h>
69
76
  #endif
70
- #include <boost/cstdint.hpp>
77
+ #include <time.h> // timespec
78
+ #include <cstdint>
71
79
  #include <boost/atomic/detail/intptr.hpp>
72
80
  #include <boost/atomic/detail/header.hpp>
73
81
 
74
82
  #define BOOST_ATOMIC_DETAIL_HAS_FUTEX
75
83
 
84
+ // Note: On Android, futex.h is lacking many definitions, but the actual Linux kernel supports the API in full.
85
+ #if defined(FUTEX_WAIT_BITSET)
86
+ #define BOOST_ATOMIC_DETAIL_FUTEX_WAIT_BITSET FUTEX_WAIT_BITSET
87
+ #elif defined(__ANDROID__)
88
+ #define BOOST_ATOMIC_DETAIL_FUTEX_WAIT_BITSET 9
89
+ #endif
90
+
76
91
  #if defined(FUTEX_PRIVATE_FLAG)
77
92
  #define BOOST_ATOMIC_DETAIL_FUTEX_PRIVATE_FLAG FUTEX_PRIVATE_FLAG
78
93
  #elif defined(__ANDROID__)
79
- // On Android, futex.h is lacking many definitions, but the actual Linux kernel supports the API in full.
80
94
  #define BOOST_ATOMIC_DETAIL_FUTEX_PRIVATE_FLAG 128
81
95
  #else
82
96
  #define BOOST_ATOMIC_DETAIL_FUTEX_PRIVATE_FLAG 0
83
97
  #endif
84
98
 
99
+ #if defined(FUTEX_CLOCK_REALTIME)
100
+ #define BOOST_ATOMIC_DETAIL_FUTEX_CLOCK_REALTIME FUTEX_CLOCK_REALTIME
101
+ #elif defined(__ANDROID__)
102
+ #define BOOST_ATOMIC_DETAIL_FUTEX_CLOCK_REALTIME 256
103
+ #endif
104
+
85
105
  namespace boost {
86
106
  namespace atomics {
87
107
  namespace detail {
88
108
 
109
+ #if defined(BOOST_ATOMIC_DETAIL_FUTEX_TIME64)
110
+
111
+ //! An equivalent of `timespec` that uses 64-bit members when the userland `timespec` is 32-bit
112
+ struct futex_timespec
113
+ {
114
+ std::int64_t tv_sec;
115
+ std::int64_t tv_nsec;
116
+
117
+ futex_timespec() = default;
118
+ explicit futex_timespec(::timespec ts) noexcept :
119
+ tv_sec(ts.tv_sec), tv_nsec(ts.tv_nsec)
120
+ {}
121
+ };
122
+
123
+ #else // defined(BOOST_ATOMIC_DETAIL_FUTEX_TIME64)
124
+
125
+ using futex_timespec = ::timespec;
126
+
127
+ #endif // defined(BOOST_ATOMIC_DETAIL_FUTEX_TIME64)
128
+
89
129
  //! Invokes an operation on the futex
90
- BOOST_FORCEINLINE int futex_invoke(void* addr1, int op, unsigned int val1, const void* timeout = NULL, void* addr2 = NULL, unsigned int val3 = 0) BOOST_NOEXCEPT
130
+ BOOST_FORCEINLINE int futex_invoke(void* addr1, int op, unsigned int val1, const futex_timespec* timeout = nullptr, void* addr2 = nullptr, unsigned int val3 = 0u) noexcept
91
131
  {
92
132
  #if defined(BOOST_ATOMIC_DETAIL_OPENBSD_FUTEX)
93
133
  return ::futex
94
134
  (
95
- static_cast< volatile uint32_t* >(addr1),
135
+ static_cast< volatile std::uint32_t* >(addr1),
96
136
  op,
97
137
  static_cast< int >(val1),
98
- static_cast< const struct timespec* >(timeout),
99
- static_cast< volatile uint32_t* >(addr2)
138
+ timeout,
139
+ static_cast< volatile std::uint32_t* >(addr2)
100
140
  );
101
141
  #elif defined(BOOST_ATOMIC_DETAIL_NETBSD_FUTEX)
102
142
  // Pass 0 in val2.
@@ -107,71 +147,92 @@ BOOST_FORCEINLINE int futex_invoke(void* addr1, int op, unsigned int val1, const
107
147
  }
108
148
 
109
149
  //! Invokes an operation on the futex
110
- BOOST_FORCEINLINE int futex_invoke(void* addr1, int op, unsigned int val1, unsigned int val2, void* addr2 = NULL, unsigned int val3 = 0) BOOST_NOEXCEPT
150
+ BOOST_FORCEINLINE int futex_invoke(void* addr1, int op, unsigned int val1, unsigned int val2, void* addr2 = nullptr, unsigned int val3 = 0u) noexcept
111
151
  {
112
152
  #if defined(BOOST_ATOMIC_DETAIL_OPENBSD_FUTEX)
113
153
  return ::futex
114
154
  (
115
- static_cast< volatile uint32_t* >(addr1),
155
+ static_cast< volatile std::uint32_t* >(addr1),
116
156
  op,
117
157
  static_cast< int >(val1),
118
- reinterpret_cast< const struct timespec* >(static_cast< atomics::detail::uintptr_t >(val2)),
119
- static_cast< volatile uint32_t* >(addr2)
158
+ reinterpret_cast< const futex_timespec* >(static_cast< atomics::detail::uintptr_t >(val2)),
159
+ static_cast< volatile std::uint32_t* >(addr2)
120
160
  );
121
161
  #elif defined(BOOST_ATOMIC_DETAIL_NETBSD_FUTEX)
122
- // Pass NULL in timeout.
123
- return ::syscall(BOOST_ATOMIC_DETAIL_SYS_FUTEX, addr1, op, val1, static_cast< void* >(NULL), addr2, val2, val3);
162
+ // Pass nullptr in timeout.
163
+ return ::syscall(BOOST_ATOMIC_DETAIL_SYS_FUTEX, addr1, op, val1, static_cast< void* >(nullptr), addr2, val2, val3);
124
164
  #else
125
165
  return ::syscall(BOOST_ATOMIC_DETAIL_SYS_FUTEX, addr1, op, val1, static_cast< atomics::detail::uintptr_t >(val2), addr2, val3);
126
166
  #endif
127
167
  }
128
168
 
129
169
  //! Checks that the value \c pval is \c expected and blocks
130
- BOOST_FORCEINLINE int futex_wait(void* pval, unsigned int expected) BOOST_NOEXCEPT
170
+ BOOST_FORCEINLINE int futex_wait(void* pval, unsigned int expected, int flags) noexcept
131
171
  {
132
- return futex_invoke(pval, FUTEX_WAIT, expected);
172
+ int res = futex_invoke(pval, FUTEX_WAIT | flags, expected);
173
+ #if defined(OpenBSD) && (OpenBSD < 202111)
174
+ // In older OpenBSD versions, futex(2) returned error code directly instead of setting errno and returning -1.
175
+ // This was fixed in OpenBSD 7.0 (https://github.com/openbsd/src/commit/3288ea8fbfe504db25b57dd18b664a1aa377e4bf).
176
+ // This primarily affects FUTEX_WAIT. For FUTEX_WAKE and FUTEX_REQUEUE the returned value may be positive
177
+ // on successful completion of the call and there seem to be no errors that can be returned. Other functions
178
+ // are not supported on OpenBSD 7.0 and older.
179
+ if (res > 0)
180
+ {
181
+ errno = res;
182
+ res = -1;
183
+ }
184
+ #endif // defined(OpenBSD) && (OpenBSD < 202111)
185
+ return res;
133
186
  }
134
187
 
135
- //! Checks that the value \c pval is \c expected and blocks
136
- BOOST_FORCEINLINE int futex_wait_private(void* pval, unsigned int expected) BOOST_NOEXCEPT
188
+ //! Checks that the value \c pval is \c expected and blocks until timeout
189
+ BOOST_FORCEINLINE int futex_wait_for(void* pval, unsigned int expected, futex_timespec const& timeout, int flags) noexcept
137
190
  {
138
- return futex_invoke(pval, FUTEX_WAIT | BOOST_ATOMIC_DETAIL_FUTEX_PRIVATE_FLAG, expected);
191
+ int res = futex_invoke(pval, FUTEX_WAIT | flags, expected, &timeout);
192
+ #if defined(OpenBSD) && (OpenBSD < 202111)
193
+ // See the comment in futex_wait
194
+ if (res > 0)
195
+ {
196
+ errno = res;
197
+ res = -1;
198
+ }
199
+ #endif // defined(OpenBSD) && (OpenBSD < 202111)
200
+ return res;
139
201
  }
140
202
 
141
- //! Wakes the specified number of threads waiting on the futex
142
- BOOST_FORCEINLINE int futex_signal(void* pval, unsigned int count = 1u) BOOST_NOEXCEPT
143
- {
144
- return futex_invoke(pval, FUTEX_WAKE, count);
145
- }
203
+ #if defined(BOOST_ATOMIC_DETAIL_FUTEX_WAIT_BITSET)
146
204
 
147
- //! Wakes the specified number of threads waiting on the futex
148
- BOOST_FORCEINLINE int futex_signal_private(void* pval, unsigned int count = 1u) BOOST_NOEXCEPT
205
+ //! Checks that the value \c pval is \c expected and blocks until timeout
206
+ BOOST_FORCEINLINE int futex_wait_until(void* pval, unsigned int expected, futex_timespec const& timeout, int flags) noexcept
149
207
  {
150
- return futex_invoke(pval, FUTEX_WAKE | BOOST_ATOMIC_DETAIL_FUTEX_PRIVATE_FLAG, count);
208
+ return futex_invoke(pval, BOOST_ATOMIC_DETAIL_FUTEX_WAIT_BITSET | flags, expected, &timeout, nullptr, ~static_cast< unsigned int >(0u));
151
209
  }
152
210
 
153
- //! Wakes all threads waiting on the futex
154
- BOOST_FORCEINLINE int futex_broadcast(void* pval) BOOST_NOEXCEPT
155
- {
156
- return futex_signal(pval, (~static_cast< unsigned int >(0u)) >> 1);
157
- }
211
+ #endif // defined(BOOST_ATOMIC_DETAIL_FUTEX_WAIT_BITSET)
158
212
 
159
- //! Wakes all threads waiting on the futex
160
- BOOST_FORCEINLINE int futex_broadcast_private(void* pval) BOOST_NOEXCEPT
213
+ //! Wakes the specified number of threads waiting on the futex
214
+ BOOST_FORCEINLINE int futex_signal(void* pval, int flags, unsigned int count = 1u) noexcept
161
215
  {
162
- return futex_signal_private(pval, (~static_cast< unsigned int >(0u)) >> 1);
216
+ return futex_invoke(pval, FUTEX_WAKE | flags, count);
163
217
  }
164
218
 
165
- //! Wakes the wake_count threads waiting on the futex pval1 and requeues up to requeue_count of the blocked threads onto another futex pval2
166
- BOOST_FORCEINLINE int futex_requeue(void* pval1, void* pval2, unsigned int wake_count = 1u, unsigned int requeue_count = (~static_cast< unsigned int >(0u)) >> 1) BOOST_NOEXCEPT
219
+ //! Wakes all threads waiting on the futex
220
+ BOOST_FORCEINLINE int futex_broadcast(void* pval, int flags) noexcept
167
221
  {
168
- return futex_invoke(pval1, FUTEX_REQUEUE, wake_count, requeue_count, pval2);
222
+ return futex_signal(pval, flags, (~static_cast< unsigned int >(0u)) >> 1u);
169
223
  }
170
224
 
171
225
  //! Wakes the wake_count threads waiting on the futex pval1 and requeues up to requeue_count of the blocked threads onto another futex pval2
172
- BOOST_FORCEINLINE int futex_requeue_private(void* pval1, void* pval2, unsigned int wake_count = 1u, unsigned int requeue_count = (~static_cast< unsigned int >(0u)) >> 1) BOOST_NOEXCEPT
226
+ BOOST_FORCEINLINE int futex_requeue
227
+ (
228
+ void* pval1,
229
+ void* pval2,
230
+ int flags,
231
+ unsigned int wake_count = 1u,
232
+ unsigned int requeue_count = (~static_cast< unsigned int >(0u)) >> 1u
233
+ ) noexcept
173
234
  {
174
- return futex_invoke(pval1, FUTEX_REQUEUE | BOOST_ATOMIC_DETAIL_FUTEX_PRIVATE_FLAG, wake_count, requeue_count, pval2);
235
+ return futex_invoke(pval1, FUTEX_REQUEUE | flags, wake_count, requeue_count, pval2);
175
236
  }
176
237
 
177
238
  } // namespace detail
@@ -50,7 +50,7 @@ namespace detail {
50
50
  * propagate constants even when functions are marked with BOOST_FORCEINLINE. In this case
51
51
  * all atomic operaions will be executed with seq_cst semantics.
52
52
  */
53
- BOOST_FORCEINLINE BOOST_CONSTEXPR int convert_memory_order_to_gcc(memory_order order) BOOST_NOEXCEPT
53
+ BOOST_FORCEINLINE constexpr int convert_memory_order_to_gcc(memory_order order) noexcept
54
54
  {
55
55
  return (order == memory_order_relaxed ? __ATOMIC_RELAXED : (order == memory_order_consume ? __ATOMIC_CONSUME :
56
56
  (order == memory_order_acquire ? __ATOMIC_ACQUIRE : (order == memory_order_release ? __ATOMIC_RELEASE :
@@ -0,0 +1,51 @@
1
+ /*
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
+ * Copyright (c) 2025 Andrey Semashev
7
+ */
8
+ /*!
9
+ * \file atomic/has_posix_clock_traits.hpp
10
+ *
11
+ * This header contains utilities for working with \c posix_clock_traits.
12
+ */
13
+
14
+ #ifndef BOOST_ATOMIC_DETAIL_HAS_POSIX_CLOCK_TRAITS_HPP_INCLUDED_
15
+ #define BOOST_ATOMIC_DETAIL_HAS_POSIX_CLOCK_TRAITS_HPP_INCLUDED_
16
+
17
+ #include <sys/types.h> // clockid_t
18
+ #include <type_traits>
19
+ #include <boost/atomic/posix_clock_traits_fwd.hpp>
20
+ #include <boost/atomic/detail/config.hpp>
21
+ #include <boost/atomic/detail/header.hpp>
22
+
23
+ #ifdef BOOST_HAS_PRAGMA_ONCE
24
+ #pragma once
25
+ #endif
26
+
27
+ namespace boost {
28
+ namespace atomics {
29
+ namespace detail {
30
+
31
+ template< typename Clock >
32
+ struct has_posix_clock_traits_impl
33
+ {
34
+ template< typename T, clockid_t = posix_clock_traits< T >::clock_id >
35
+ static std::true_type check_posix_clock_traits_clock_id(T*);
36
+ static std::false_type check_posix_clock_traits_clock_id(...);
37
+
38
+ using type = decltype(has_posix_clock_traits_impl< Clock >::check_posix_clock_traits_clock_id(static_cast< Clock* >(nullptr)));
39
+ };
40
+
41
+ //! Checks if there exists a specialization of \c posix_clock_traits for \c Clock
42
+ template< typename Clock >
43
+ using has_posix_clock_traits = typename has_posix_clock_traits_impl< Clock >::type;
44
+
45
+ } // namespace detail
46
+ } // namespace atomics
47
+ } // namespace boost
48
+
49
+ #include <boost/atomic/detail/footer.hpp>
50
+
51
+ #endif // BOOST_ATOMIC_DETAIL_HAS_POSIX_CLOCK_TRAITS_HPP_INCLUDED_
@@ -39,7 +39,7 @@
39
39
  #if defined(__SIZEOF_POINTER__)
40
40
  #define BOOST_ATOMIC_DETAIL_SIZEOF_POINTER __SIZEOF_POINTER__
41
41
  #elif defined(_MSC_VER)
42
- #if defined(_M_AMD64) || defined(_M_ARM64) || defined(_M_IA64)
42
+ #if defined(_M_AMD64) || defined(_M_ARM64) || defined(_M_ARM64EC) || defined(_M_IA64)
43
43
  #define BOOST_ATOMIC_DETAIL_SIZEOF_POINTER 8
44
44
  #else
45
45
  #define BOOST_ATOMIC_DETAIL_SIZEOF_POINTER 4
@@ -52,45 +52,40 @@
52
52
 
53
53
  // Try to deduce sizes from limits
54
54
  #include <limits.h>
55
- #if defined(__has_include)
56
- #if __has_include(<stdint.h>)
57
- #include <stdint.h>
58
- #endif
59
- #endif
60
- #include <boost/cstdint.hpp>
55
+ #include <cstdint>
61
56
 
62
57
  #if !defined(BOOST_ATOMIC_DETAIL_SIZEOF_SHORT)
63
- #if (USHRT_MAX + 0) == 0xff
58
+ #if (USHRT_MAX == 0xff)
64
59
  #define BOOST_ATOMIC_DETAIL_SIZEOF_SHORT 1
65
- #elif (USHRT_MAX + 0) == 0xffff
60
+ #elif (USHRT_MAX == 0xffff)
66
61
  #define BOOST_ATOMIC_DETAIL_SIZEOF_SHORT 2
67
- #elif (USHRT_MAX + 0) == 0xffffffff
62
+ #elif (USHRT_MAX == 0xffffffff)
68
63
  #define BOOST_ATOMIC_DETAIL_SIZEOF_SHORT 4
69
- #elif (USHRT_MAX + 0) == UINT64_C(0xffffffffffffffff)
64
+ #elif (USHRT_MAX == UINT64_C(0xffffffffffffffff))
70
65
  #define BOOST_ATOMIC_DETAIL_SIZEOF_SHORT 8
71
66
  #endif
72
67
  #endif // !defined(BOOST_ATOMIC_DETAIL_SIZEOF_SHORT)
73
68
 
74
69
  #if !defined(BOOST_ATOMIC_DETAIL_SIZEOF_INT)
75
- #if (UINT_MAX + 0) == 0xff
70
+ #if (UINT_MAX == 0xff)
76
71
  #define BOOST_ATOMIC_DETAIL_SIZEOF_INT 1
77
- #elif (UINT_MAX + 0) == 0xffff
72
+ #elif (UINT_MAX == 0xffff)
78
73
  #define BOOST_ATOMIC_DETAIL_SIZEOF_INT 2
79
- #elif (UINT_MAX + 0) == 0xffffffff
74
+ #elif (UINT_MAX == 0xffffffff)
80
75
  #define BOOST_ATOMIC_DETAIL_SIZEOF_INT 4
81
- #elif (UINT_MAX + 0) == UINT64_C(0xffffffffffffffff)
76
+ #elif (UINT_MAX == UINT64_C(0xffffffffffffffff))
82
77
  #define BOOST_ATOMIC_DETAIL_SIZEOF_INT 8
83
78
  #endif
84
79
  #endif // !defined(BOOST_ATOMIC_DETAIL_SIZEOF_INT)
85
80
 
86
81
  #if !defined(BOOST_ATOMIC_DETAIL_SIZEOF_LONG)
87
- #if (ULONG_MAX + 0) == 0xff
82
+ #if (ULONG_MAX == 0xff)
88
83
  #define BOOST_ATOMIC_DETAIL_SIZEOF_LONG 1
89
- #elif (ULONG_MAX + 0) == 0xffff
84
+ #elif (ULONG_MAX == 0xffff)
90
85
  #define BOOST_ATOMIC_DETAIL_SIZEOF_LONG 2
91
- #elif (ULONG_MAX + 0) == 0xffffffff
86
+ #elif (ULONG_MAX == 0xffffffff)
92
87
  #define BOOST_ATOMIC_DETAIL_SIZEOF_LONG 4
93
- #elif (ULONG_MAX + 0) == UINT64_C(0xffffffffffffffff)
88
+ #elif (ULONG_MAX == UINT64_C(0xffffffffffffffff))
94
89
  #define BOOST_ATOMIC_DETAIL_SIZEOF_LONG 8
95
90
  #endif
96
91
  #endif // !defined(BOOST_ATOMIC_DETAIL_SIZEOF_LONG)
@@ -100,7 +95,7 @@
100
95
  #define BOOST_ATOMIC_DETAIL_SIZEOF_LLONG 8
101
96
  #else
102
97
 
103
- // The list of the non-standard macros (the ones except ULLONG_MAX) is taken from cstdint.hpp
98
+ // The list of the non-standard macros (the ones except ULLONG_MAX) is taken from boost/cstdint.hpp
104
99
  #if defined(ULLONG_MAX)
105
100
  #define BOOST_ATOMIC_DETAIL_ULLONG_MAX ULLONG_MAX
106
101
  #elif defined(ULONG_LONG_MAX)
@@ -111,13 +106,13 @@
111
106
  #define BOOST_ATOMIC_DETAIL_ULLONG_MAX _LLONG_MAX
112
107
  #endif
113
108
 
114
- #if (BOOST_ATOMIC_DETAIL_ULLONG_MAX + 0) == 0xff
109
+ #if (BOOST_ATOMIC_DETAIL_ULLONG_MAX == 0xff)
115
110
  #define BOOST_ATOMIC_DETAIL_SIZEOF_LLONG 1
116
- #elif (BOOST_ATOMIC_DETAIL_ULLONG_MAX + 0) == 0xffff
111
+ #elif (BOOST_ATOMIC_DETAIL_ULLONG_MAX == 0xffff)
117
112
  #define BOOST_ATOMIC_DETAIL_SIZEOF_LLONG 2
118
- #elif (BOOST_ATOMIC_DETAIL_ULLONG_MAX + 0) == 0xffffffff
113
+ #elif (BOOST_ATOMIC_DETAIL_ULLONG_MAX == 0xffffffff)
119
114
  #define BOOST_ATOMIC_DETAIL_SIZEOF_LLONG 4
120
- #elif (BOOST_ATOMIC_DETAIL_ULLONG_MAX + 0) == UINT64_C(0xffffffffffffffff)
115
+ #elif (BOOST_ATOMIC_DETAIL_ULLONG_MAX == UINT64_C(0xffffffffffffffff))
121
116
  #define BOOST_ATOMIC_DETAIL_SIZEOF_LLONG 8
122
117
  #endif
123
118
 
@@ -125,11 +120,11 @@
125
120
  #endif // !defined(BOOST_ATOMIC_DETAIL_SIZEOF_LLONG)
126
121
 
127
122
  #if !defined(BOOST_ATOMIC_DETAIL_SIZEOF_POINTER) && defined(UINTPTR_MAX)
128
- #if (UINTPTR_MAX + 0) == 0xffff
123
+ #if (UINTPTR_MAX == 0xffff)
129
124
  #define BOOST_ATOMIC_DETAIL_SIZEOF_POINTER 2
130
- #elif (UINTPTR_MAX + 0) == 0xffffffff
125
+ #elif (UINTPTR_MAX == 0xffffffff)
131
126
  #define BOOST_ATOMIC_DETAIL_SIZEOF_POINTER 4
132
- #elif (UINTPTR_MAX + 0) == UINT64_C(0xffffffffffffffff)
127
+ #elif (UINTPTR_MAX == UINT64_C(0xffffffffffffffff))
133
128
  #define BOOST_ATOMIC_DETAIL_SIZEOF_POINTER 8
134
129
  #endif
135
130
  #endif // !defined(BOOST_ATOMIC_DETAIL_SIZEOF_POINTER) && defined(UINTPTR_MAX)
@@ -139,18 +134,17 @@
139
134
  #if !defined(BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T)
140
135
 
141
136
  #include <wchar.h>
142
- #include <boost/cstdint.hpp>
143
137
 
144
138
  #if defined(_MSC_VER) && (_MSC_VER <= 1310 || defined(UNDER_CE) && _MSC_VER <= 1500)
145
139
  // MSVC 7.1 and MSVC 8 (arm) define WCHAR_MAX to a value not suitable for constant expressions
146
140
  #define BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T 2
147
- #elif (WCHAR_MAX + 0) == 0xff || (WCHAR_MAX + 0) == 0x7f
141
+ #elif (WCHAR_MAX == 0xff) || (WCHAR_MAX == 0x7f)
148
142
  #define BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T 1
149
- #elif (WCHAR_MAX + 0) == 0xffff || (WCHAR_MAX + 0) == 0x7fff
143
+ #elif (WCHAR_MAX == 0xffff) || (WCHAR_MAX == 0x7fff)
150
144
  #define BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T 2
151
- #elif (WCHAR_MAX + 0) == 0xffffffff || (WCHAR_MAX + 0) == 0x7fffffff
145
+ #elif (WCHAR_MAX == 0xffffffff) || (WCHAR_MAX == 0x7fffffff)
152
146
  #define BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T 4
153
- #elif (WCHAR_MAX + 0) == UINT64_C(0xffffffffffffffff) || (WCHAR_MAX + 0) == INT64_C(0x7fffffffffffffff)
147
+ #elif (WCHAR_MAX == UINT64_C(0xffffffffffffffff)) || (WCHAR_MAX == INT64_C(0x7fffffffffffffff))
154
148
  #define BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T 8
155
149
  #endif
156
150
  #endif
@@ -3,7 +3,7 @@
3
3
  * (See accompanying file LICENSE_1_0.txt or copy at
4
4
  * http://www.boost.org/LICENSE_1_0.txt)
5
5
  *
6
- * Copyright (c) 2018 Andrey Semashev
6
+ * Copyright (c) 2018-2025 Andrey Semashev
7
7
  */
8
8
  /*!
9
9
  * \file atomic/detail/integral_conversions.hpp
@@ -14,9 +14,9 @@
14
14
  #ifndef BOOST_ATOMIC_DETAIL_INTEGRAL_CONVERSIONS_HPP_INCLUDED_
15
15
  #define BOOST_ATOMIC_DETAIL_INTEGRAL_CONVERSIONS_HPP_INCLUDED_
16
16
 
17
+ #include <type_traits>
17
18
  #include <boost/atomic/detail/config.hpp>
18
19
  #include <boost/atomic/detail/bitwise_cast.hpp>
19
- #include <boost/atomic/detail/type_traits/integral_constant.hpp>
20
20
  #include <boost/atomic/detail/type_traits/is_signed.hpp>
21
21
  #include <boost/atomic/detail/type_traits/make_signed.hpp>
22
22
  #include <boost/atomic/detail/type_traits/make_unsigned.hpp>
@@ -31,7 +31,7 @@ namespace atomics {
31
31
  namespace detail {
32
32
 
33
33
  template< typename Output, typename Input >
34
- BOOST_FORCEINLINE Output zero_extend_impl(Input input, atomics::detail::true_type) BOOST_NOEXCEPT
34
+ BOOST_FORCEINLINE Output zero_extend_impl(Input input, std::true_type) noexcept
35
35
  {
36
36
  // Note: If we are casting with truncation or to the same-sized output, don't cause signed integer overflow by this chain of conversions
37
37
  return atomics::detail::bitwise_cast< Output >(static_cast< typename atomics::detail::make_unsigned< Output >::type >(
@@ -39,64 +39,64 @@ BOOST_FORCEINLINE Output zero_extend_impl(Input input, atomics::detail::true_typ
39
39
  }
40
40
 
41
41
  template< typename Output, typename Input >
42
- BOOST_FORCEINLINE Output zero_extend_impl(Input input, atomics::detail::false_type) BOOST_NOEXCEPT
42
+ BOOST_FORCEINLINE Output zero_extend_impl(Input input, std::false_type) noexcept
43
43
  {
44
44
  return static_cast< Output >(static_cast< typename atomics::detail::make_unsigned< Input >::type >(input));
45
45
  }
46
46
 
47
47
  //! Zero-extends or truncates (wraps) input operand to fit in the output type
48
48
  template< typename Output, typename Input >
49
- BOOST_FORCEINLINE Output zero_extend(Input input) BOOST_NOEXCEPT
49
+ BOOST_FORCEINLINE Output zero_extend(Input input) noexcept
50
50
  {
51
- return atomics::detail::zero_extend_impl< Output >(input, atomics::detail::integral_constant< bool, atomics::detail::is_signed< Output >::value >());
51
+ return atomics::detail::zero_extend_impl< Output >(input, std::integral_constant< bool, atomics::detail::is_signed< Output >::value >());
52
52
  }
53
53
 
54
54
  //! Truncates (wraps) input operand to fit in the output type
55
55
  template< typename Output, typename Input >
56
- BOOST_FORCEINLINE Output integral_truncate(Input input) BOOST_NOEXCEPT
56
+ BOOST_FORCEINLINE Output integral_truncate(Input input) noexcept
57
57
  {
58
58
  // zero_extend does the truncation
59
59
  return atomics::detail::zero_extend< Output >(input);
60
60
  }
61
61
 
62
62
  template< typename Output, typename Input >
63
- BOOST_FORCEINLINE Output sign_extend_impl(Input input, atomics::detail::true_type) BOOST_NOEXCEPT
63
+ BOOST_FORCEINLINE Output sign_extend_impl(Input input, std::true_type) noexcept
64
64
  {
65
65
  return atomics::detail::integral_truncate< Output >(input);
66
66
  }
67
67
 
68
68
  template< typename Output, typename Input >
69
- BOOST_FORCEINLINE Output sign_extend_impl(Input input, atomics::detail::false_type) BOOST_NOEXCEPT
69
+ BOOST_FORCEINLINE Output sign_extend_impl(Input input, std::false_type) noexcept
70
70
  {
71
71
  return static_cast< Output >(atomics::detail::bitwise_cast< typename atomics::detail::make_signed< Input >::type >(input));
72
72
  }
73
73
 
74
74
  //! Sign-extends or truncates (wraps) input operand to fit in the output type
75
75
  template< typename Output, typename Input >
76
- BOOST_FORCEINLINE Output sign_extend(Input input) BOOST_NOEXCEPT
76
+ BOOST_FORCEINLINE Output sign_extend(Input input) noexcept
77
77
  {
78
- return atomics::detail::sign_extend_impl< Output >(input, atomics::detail::integral_constant< bool, sizeof(Output) <= sizeof(Input) >());
78
+ return atomics::detail::sign_extend_impl< Output >(input, std::integral_constant< bool, sizeof(Output) <= sizeof(Input) >());
79
79
  }
80
80
 
81
81
  //! Sign-extends or truncates (wraps) input operand to fit in the output type
82
82
  template< typename Output, typename Input >
83
- BOOST_FORCEINLINE Output integral_extend(Input input, atomics::detail::true_type) BOOST_NOEXCEPT
83
+ BOOST_FORCEINLINE Output integral_extend(Input input, std::true_type) noexcept
84
84
  {
85
85
  return atomics::detail::sign_extend< Output >(input);
86
86
  }
87
87
 
88
88
  //! Zero-extends or truncates (wraps) input operand to fit in the output type
89
89
  template< typename Output, typename Input >
90
- BOOST_FORCEINLINE Output integral_extend(Input input, atomics::detail::false_type) BOOST_NOEXCEPT
90
+ BOOST_FORCEINLINE Output integral_extend(Input input, std::false_type) noexcept
91
91
  {
92
92
  return atomics::detail::zero_extend< Output >(input);
93
93
  }
94
94
 
95
95
  //! Sign- or zero-extends or truncates (wraps) input operand to fit in the output type
96
96
  template< bool Signed, typename Output, typename Input >
97
- BOOST_FORCEINLINE Output integral_extend(Input input) BOOST_NOEXCEPT
97
+ BOOST_FORCEINLINE Output integral_extend(Input input) noexcept
98
98
  {
99
- return atomics::detail::integral_extend< Output >(input, atomics::detail::integral_constant< bool, Signed >());
99
+ return atomics::detail::integral_extend< Output >(input, std::integral_constant< bool, Signed >());
100
100
  }
101
101
 
102
102
  } // namespace detail