passenger 6.1.0 → 6.1.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.
Files changed (441) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +46 -2
  3. data/Rakefile +6 -13
  4. data/bin/passenger-install-apache2-module +15 -19
  5. data/bin/passenger-install-nginx-module +47 -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 +6 -1
  12. data/passenger.gemspec +1 -0
  13. data/src/agent/Core/Config.h +1 -1
  14. data/src/agent/Core/Controller/Config.h +1 -1
  15. data/src/agent/Watchdog/Config.h +1 -1
  16. data/src/cxx_supportlib/Constants.h +1 -1
  17. data/src/cxx_supportlib/vendor-modified/boost/assert/source_location.hpp +8 -1
  18. data/src/cxx_supportlib/vendor-modified/boost/assert.hpp +6 -0
  19. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic.hpp +94 -110
  20. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic_flag.hpp +2 -2
  21. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic_ref.hpp +14 -14
  22. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/addressof.hpp +3 -3
  23. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_flag_impl.hpp +52 -24
  24. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_impl.hpp +641 -285
  25. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_ref_impl.hpp +593 -260
  26. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_cast.hpp +37 -24
  27. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_fp_cast.hpp +9 -9
  28. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/cas_based_exchange.hpp +3 -3
  29. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/chrono.hpp +93 -0
  30. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/classify.hpp +16 -17
  31. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/config.hpp +25 -34
  32. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_aarch32.hpp +204 -97
  33. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_aarch64.hpp +251 -122
  34. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_alpha.hpp +56 -56
  35. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_arm.hpp +129 -129
  36. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_ppc.hpp +253 -125
  37. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_sparc.hpp +25 -25
  38. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_x86.hpp +193 -126
  39. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_msvc_arm.hpp +57 -57
  40. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_msvc_x86.hpp +96 -97
  41. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_operations_emulated.hpp +24 -24
  42. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_cas_based.hpp +10 -10
  43. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_gcc_atomic.hpp +27 -24
  44. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_gcc_sync.hpp +39 -37
  45. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_linux_arm.hpp +17 -17
  46. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extending_cas_based_arithmetic.hpp +5 -5
  47. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_ops_emulated.hpp +12 -12
  48. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_ops_generic.hpp +21 -21
  49. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_emulated.hpp +30 -30
  50. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_aarch32.hpp +170 -98
  51. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_aarch64.hpp +209 -119
  52. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_arm.hpp +95 -95
  53. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_ppc.hpp +148 -76
  54. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_x86.hpp +293 -123
  55. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_generic.hpp +87 -71
  56. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_msvc_arm.hpp +5 -5
  57. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_msvc_x86.hpp +88 -88
  58. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_operations.hpp +2 -2
  59. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_aarch32.hpp +4 -5
  60. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_aarch64.hpp +4 -4
  61. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_alpha.hpp +4 -4
  62. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_arm.hpp +9 -9
  63. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_ppc.hpp +4 -4
  64. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_sparc.hpp +4 -4
  65. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_x86.hpp +4 -4
  66. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_msvc_arm.hpp +5 -5
  67. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_msvc_x86.hpp +6 -6
  68. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_operations.hpp +2 -2
  69. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_operations_emulated.hpp +2 -2
  70. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_gcc_atomic.hpp +5 -5
  71. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_gcc_sync.hpp +4 -4
  72. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_linux_arm.hpp +7 -7
  73. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_ops_emulated.hpp +7 -7
  74. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_ops_generic.hpp +6 -6
  75. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/futex.hpp +110 -49
  76. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/gcc_atomic_memory_order_utils.hpp +1 -1
  77. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/has_posix_clock_traits.hpp +51 -0
  78. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/int_sizes.hpp +26 -32
  79. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/integral_conversions.hpp +15 -15
  80. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/interlocked.hpp +69 -30
  81. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/intptr.hpp +8 -8
  82. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/lock_pool.hpp +51 -31
  83. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/memory_order_utils.hpp +2 -2
  84. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/once_flag.hpp +2 -2
  85. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_arm_common.hpp +6 -6
  86. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_ppc_common.hpp +4 -4
  87. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/platform.hpp +5 -5
  88. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/storage_traits.hpp +31 -31
  89. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/alignment_of.hpp +2 -3
  90. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/has_unique_object_representations.hpp +2 -5
  91. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_floating_point.hpp +3 -3
  92. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_iec559.hpp +2 -2
  93. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_integral.hpp +3 -3
  94. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_signed.hpp +3 -3
  95. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_trivially_copyable.hpp +20 -13
  96. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_trivially_default_constructible.hpp +13 -13
  97. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/make_signed.hpp +3 -3
  98. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/make_unsigned.hpp +3 -3
  99. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_darwin_ulock.hpp +90 -16
  100. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_dragonfly_umtx.hpp +80 -11
  101. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_emulated.hpp +160 -15
  102. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_freebsd_umtx.hpp +327 -38
  103. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_futex.hpp +276 -33
  104. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_generic.hpp +260 -20
  105. data/src/cxx_supportlib/vendor-modified/boost/atomic/fences.hpp +4 -3
  106. data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic.hpp +14 -18
  107. data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic_flag.hpp +2 -2
  108. data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic_ref.hpp +13 -13
  109. data/src/cxx_supportlib/vendor-modified/boost/atomic/posix_clock_traits_fwd.hpp +59 -0
  110. data/src/cxx_supportlib/vendor-modified/boost/atomic/thread_pause.hpp +102 -0
  111. data/src/cxx_supportlib/vendor-modified/boost/atomic/wait_result.hpp +56 -0
  112. data/src/cxx_supportlib/vendor-modified/boost/atomic.hpp +4 -1
  113. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcpp.hpp +5 -0
  114. data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +1 -1
  115. data/src/cxx_supportlib/vendor-modified/boost/container/allocator_traits.hpp +108 -41
  116. data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +1235 -1009
  117. data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +3 -2
  118. data/src/cxx_supportlib/vendor-modified/boost/container/detail/algorithm.hpp +56 -0
  119. data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_helpers.hpp +1 -0
  120. data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_lib.h +9 -9
  121. data/src/cxx_supportlib/vendor-modified/boost/container/detail/compare_functors.hpp +23 -2
  122. data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_begin.hpp +0 -1
  123. data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +88 -23
  124. data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +2 -1
  125. data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool_impl.hpp +2 -2
  126. data/src/cxx_supportlib/vendor-modified/boost/container/detail/operator_new_helpers.hpp +68 -0
  127. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair.hpp +72 -13
  128. data/src/cxx_supportlib/vendor-modified/boost/container/detail/std_fwd.hpp +13 -0
  129. data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +8 -5
  130. data/src/cxx_supportlib/vendor-modified/boost/container/devector.hpp +31 -10
  131. data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +37 -10
  132. data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +19 -0
  133. data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +23 -1
  134. data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +72 -5
  135. data/src/cxx_supportlib/vendor-modified/boost/container/new_allocator.hpp +3 -10
  136. data/src/cxx_supportlib/vendor-modified/boost/container/options.hpp +54 -23
  137. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/devector.hpp +6 -4
  138. data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +19 -0
  139. data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +32 -5
  140. data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +27 -2
  141. data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +22 -0
  142. data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +37 -17
  143. data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +23 -1
  144. data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +41 -20
  145. data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash.hpp +5 -8
  146. data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash_fwd.hpp +3 -1
  147. data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash_is_avalanching.hpp +57 -0
  148. data/src/cxx_supportlib/vendor-modified/boost/core/bit.hpp +29 -29
  149. data/src/cxx_supportlib/vendor-modified/boost/core/cmath.hpp +3 -3
  150. data/src/cxx_supportlib/vendor-modified/boost/core/data.hpp +15 -1
  151. data/src/cxx_supportlib/vendor-modified/boost/core/default_allocator.hpp +1 -0
  152. data/src/cxx_supportlib/vendor-modified/boost/core/demangle.hpp +1 -1
  153. data/src/cxx_supportlib/vendor-modified/boost/core/detail/assert.hpp +18 -0
  154. data/src/cxx_supportlib/vendor-modified/boost/core/detail/sp_thread_sleep.hpp +2 -2
  155. data/src/cxx_supportlib/vendor-modified/boost/core/detail/static_assert.hpp +42 -0
  156. data/src/cxx_supportlib/vendor-modified/boost/core/detail/string_view.hpp +16 -10
  157. data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test.hpp +35 -27
  158. data/src/cxx_supportlib/vendor-modified/boost/core/scoped_enum.hpp +1 -1
  159. data/src/cxx_supportlib/vendor-modified/boost/core/size.hpp +14 -0
  160. data/src/cxx_supportlib/vendor-modified/boost/core/span.hpp +20 -9
  161. data/src/cxx_supportlib/vendor-modified/boost/cregex.hpp +0 -5
  162. data/src/cxx_supportlib/vendor-modified/boost/describe/detail/config.hpp +8 -0
  163. data/src/cxx_supportlib/vendor-modified/boost/describe/modifiers.hpp +1 -1
  164. data/src/cxx_supportlib/vendor-modified/boost/foreach.hpp +1 -0
  165. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/ebo_functor_holder.hpp +4 -4
  166. data/src/cxx_supportlib/vendor-modified/boost/intrusive/list.hpp +2 -2
  167. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_rebind.hpp +9 -0
  168. data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree_algorithms.hpp +1 -0
  169. data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist.hpp +2 -2
  170. data/src/cxx_supportlib/vendor-modified/boost/iterator/advance.hpp +43 -64
  171. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/config_def.hpp +0 -83
  172. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/config_undef.hpp +1 -5
  173. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/eval_if_default.hpp +44 -0
  174. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/facade_iterator_category.hpp +103 -117
  175. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/type_traits/conjunction.hpp +53 -0
  176. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/type_traits/disjunction.hpp +53 -0
  177. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/type_traits/negation.hpp +53 -0
  178. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/type_traits/type_identity.hpp +54 -0
  179. data/src/cxx_supportlib/vendor-modified/boost/iterator/distance.hpp +32 -38
  180. data/src/cxx_supportlib/vendor-modified/boost/iterator/enable_if_convertible.hpp +84 -0
  181. data/src/cxx_supportlib/vendor-modified/boost/iterator/interoperable.hpp +22 -34
  182. data/src/cxx_supportlib/vendor-modified/boost/iterator/is_iterator.hpp +16 -16
  183. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_adaptor.hpp +162 -309
  184. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_categories.hpp +52 -161
  185. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_concepts.hpp +3 -11
  186. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_facade.hpp +804 -977
  187. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_traits.hpp +24 -17
  188. data/src/cxx_supportlib/vendor-modified/boost/iterator/min_category.hpp +83 -0
  189. data/src/cxx_supportlib/vendor-modified/boost/iterator/minimum_category.hpp +11 -73
  190. data/src/cxx_supportlib/vendor-modified/boost/iterator/reverse_iterator.hpp +56 -57
  191. data/src/cxx_supportlib/vendor-modified/boost/iterator/transform_iterator.hpp +123 -156
  192. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/bad_lexical_cast.hpp +1 -1
  193. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/buffer_view.hpp +1 -1
  194. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical.hpp +36 -33
  195. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +43 -50
  196. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_numeric.hpp +23 -27
  197. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/inf_nan.hpp +1 -1
  198. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/is_character.hpp +10 -11
  199. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_basic_unlockedbuf.hpp +1 -1
  200. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_char_constants.hpp +1 -1
  201. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_unsigned_converters.hpp +6 -7
  202. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/type_traits.hpp +81 -0
  203. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/widest_char.hpp +4 -4
  204. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/try_lexical_convert.hpp +8 -9
  205. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast.hpp +1 -1
  206. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/wide_posix_api.cpp +1 -12
  207. data/src/cxx_supportlib/vendor-modified/boost/memory_order.hpp +8 -26
  208. data/src/cxx_supportlib/vendor-modified/boost/move/detail/iterator_to_raw_pointer.hpp +1 -1
  209. data/src/cxx_supportlib/vendor-modified/boost/move/detail/launder.hpp +1 -1
  210. data/src/cxx_supportlib/vendor-modified/boost/move/detail/std_ns_begin.hpp +6 -0
  211. data/src/cxx_supportlib/vendor-modified/boost/move/detail/unique_ptr_meta_utils.hpp +2 -2
  212. data/src/cxx_supportlib/vendor-modified/boost/mp11/algorithm.hpp +11 -44
  213. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_map_find.hpp +34 -0
  214. data/src/cxx_supportlib/vendor-modified/boost/mp11/set.hpp +33 -1
  215. data/src/cxx_supportlib/vendor-modified/boost/mp11/version.hpp +1 -1
  216. data/src/cxx_supportlib/vendor-modified/boost/mpl/and.hpp +4 -8
  217. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/na_assert.hpp +1 -1
  218. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/ptr_to_ref.hpp +1 -1
  219. data/src/cxx_supportlib/vendor-modified/boost/mpl/bitand.hpp +2 -6
  220. data/src/cxx_supportlib/vendor-modified/boost/mpl/bitor.hpp +2 -6
  221. data/src/cxx_supportlib/vendor-modified/boost/mpl/or.hpp +2 -6
  222. data/src/cxx_supportlib/vendor-modified/boost/pool/pool.hpp +1 -1
  223. data/src/cxx_supportlib/vendor-modified/boost/pool/simple_segregated_storage.hpp +0 -13
  224. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/limits/to_seq_256.hpp +190 -190
  225. data/src/cxx_supportlib/vendor-modified/boost/random/beta_distribution.hpp +12 -2
  226. data/src/cxx_supportlib/vendor-modified/boost/random/detail/config.hpp +4 -0
  227. data/src/cxx_supportlib/vendor-modified/boost/random/detail/size.hpp +41 -0
  228. data/src/cxx_supportlib/vendor-modified/boost/random/detail/xoshiro_base.hpp +472 -0
  229. data/src/cxx_supportlib/vendor-modified/boost/random/discrete_distribution.hpp +7 -10
  230. data/src/cxx_supportlib/vendor-modified/boost/random/gamma_distribution.hpp +1 -1
  231. data/src/cxx_supportlib/vendor-modified/boost/random/generalized_inverse_gaussian_distribution.hpp +339 -0
  232. data/src/cxx_supportlib/vendor-modified/boost/random/hyperexponential_distribution.hpp +12 -14
  233. data/src/cxx_supportlib/vendor-modified/boost/random/inverse_gaussian_distribution.hpp +226 -0
  234. data/src/cxx_supportlib/vendor-modified/boost/random/mersenne_twister.hpp +1 -4
  235. data/src/cxx_supportlib/vendor-modified/boost/random/mixmax.hpp +63 -63
  236. data/src/cxx_supportlib/vendor-modified/boost/random/piecewise_constant_distribution.hpp +7 -10
  237. data/src/cxx_supportlib/vendor-modified/boost/random/piecewise_linear_distribution.hpp +8 -11
  238. data/src/cxx_supportlib/vendor-modified/boost/random/seed_seq.hpp +1 -3
  239. data/src/cxx_supportlib/vendor-modified/boost/random/splitmix64.hpp +1 -4
  240. data/src/cxx_supportlib/vendor-modified/boost/random/xoshiro.hpp +488 -0
  241. data/src/cxx_supportlib/vendor-modified/boost/random.hpp +3 -0
  242. data/src/cxx_supportlib/vendor-modified/boost/range/concepts.hpp +2 -0
  243. data/src/cxx_supportlib/vendor-modified/boost/range/detail/has_member_size.hpp +1 -0
  244. data/src/cxx_supportlib/vendor-modified/boost/range/detail/msvc_has_iterator_workaround.hpp +2 -0
  245. data/src/cxx_supportlib/vendor-modified/boost/range/has_range_iterator.hpp +1 -1
  246. data/src/cxx_supportlib/vendor-modified/boost/range/iterator.hpp +1 -0
  247. data/src/cxx_supportlib/vendor-modified/boost/range/iterator_range_core.hpp +4 -1
  248. data/src/cxx_supportlib/vendor-modified/boost/range/size_type.hpp +1 -1
  249. data/src/cxx_supportlib/vendor-modified/boost/regex/concepts.hpp +35 -18
  250. data/src/cxx_supportlib/vendor-modified/boost/regex/config.hpp +18 -101
  251. data/src/cxx_supportlib/vendor-modified/boost/regex/pattern_except.hpp +0 -4
  252. data/src/cxx_supportlib/vendor-modified/boost/regex/pending/object_cache.hpp +0 -4
  253. data/src/cxx_supportlib/vendor-modified/boost/regex/pending/unicode_iterator.hpp +0 -6
  254. data/src/cxx_supportlib/vendor-modified/boost/regex/regex_traits.hpp +0 -4
  255. data/src/cxx_supportlib/vendor-modified/boost/regex/user.hpp +4 -10
  256. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/basic_regex.hpp +63 -17
  257. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/basic_regex_creator.hpp +71 -16
  258. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/basic_regex_parser.hpp +22 -1
  259. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/c_regex_traits.hpp +11 -4
  260. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/char_regex_traits.hpp +2 -0
  261. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/cpp_regex_traits.hpp +11 -8
  262. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/cregex.hpp +2 -1
  263. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/error_type.hpp +1 -1
  264. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/icu.hpp +40 -38
  265. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/iterator_category.hpp +2 -0
  266. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/iterator_traits.hpp +4 -0
  267. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/match_flags.hpp +39 -37
  268. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/match_results.hpp +46 -9
  269. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/mem_block_cache.hpp +4 -0
  270. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/object_cache.hpp +2 -0
  271. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/pattern_except.hpp +6 -4
  272. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/perl_matcher.hpp +57 -8
  273. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/perl_matcher_common.hpp +21 -6
  274. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/perl_matcher_non_recursive.hpp +18 -3
  275. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regbase.hpp +4 -2
  276. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex.hpp +6 -6
  277. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_format.hpp +23 -18
  278. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_fwd.hpp +9 -9
  279. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_grep.hpp +9 -5
  280. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_iterator.hpp +11 -7
  281. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_match.hpp +10 -7
  282. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_merge.hpp +4 -4
  283. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_raw_buffer.hpp +3 -0
  284. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_replace.hpp +6 -2
  285. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_search.hpp +12 -9
  286. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_split.hpp +6 -3
  287. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_token_iterator.hpp +16 -11
  288. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_traits.hpp +1 -1
  289. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_traits_defaults.hpp +2 -0
  290. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_workaround.hpp +2 -0
  291. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/states.hpp +7 -0
  292. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/sub_match.hpp +54 -49
  293. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/syntax_type.hpp +64 -62
  294. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/u32regex_iterator.hpp +16 -0
  295. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/u32regex_token_iterator.hpp +12 -0
  296. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/unicode_iterator.hpp +6 -4
  297. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/w32_regex_traits.hpp +3 -1
  298. data/src/cxx_supportlib/vendor-modified/boost/regex.hpp +0 -4
  299. data/src/cxx_supportlib/vendor-modified/boost/regex_fwd.hpp +0 -4
  300. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count.hpp +1 -43
  301. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/deprecated_macros.hpp +7 -7
  302. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/shared_count.hpp +2 -77
  303. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base.hpp +1 -64
  304. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_nt.hpp +3 -3
  305. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_impl.hpp +0 -77
  306. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_cxx20_constexpr.hpp +37 -0
  307. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock.hpp +5 -28
  308. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ptr.hpp +41 -40
  309. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_array.hpp +0 -15
  310. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_ptr.hpp +0 -18
  311. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_ptr.hpp +1 -1
  312. data/src/cxx_supportlib/vendor-modified/boost/thread/future.hpp +1 -1
  313. data/src/cxx_supportlib/vendor-modified/boost/tuple/detail/tuple_basic.hpp +1 -0
  314. data/src/cxx_supportlib/vendor-modified/boost/type_traits/integral_constant.hpp +8 -6
  315. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_complete.hpp +31 -10
  316. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/fca.hpp +34 -8
  317. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/core.hpp +6 -4
  318. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/table.hpp +9 -1
  319. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/implementation.hpp +5 -5
  320. data/src/cxx_supportlib/vendor-modified/boost/unordered/{unordered_printers.hpp → detail/unordered_printers.hpp} +34 -36
  321. data/src/cxx_supportlib/vendor-modified/boost/unordered/hash_traits.hpp +6 -49
  322. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map.hpp +6 -1
  323. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set.hpp +6 -1
  324. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_map.hpp +6 -1
  325. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_set.hpp +6 -1
  326. data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
  327. data/src/nginx_module/ContentHandler.c +2 -0
  328. data/src/ruby_supportlib/phusion_passenger/config/download_agent_command.rb +3 -5
  329. data/src/ruby_supportlib/phusion_passenger/config/download_nginx_engine_command.rb +3 -5
  330. data/src/ruby_supportlib/phusion_passenger/config/install_agent_command.rb +3 -5
  331. data/src/ruby_supportlib/phusion_passenger/config/install_standalone_runtime_command.rb +3 -5
  332. data/src/ruby_supportlib/phusion_passenger/config/installation_utils.rb +1 -1
  333. data/src/ruby_supportlib/phusion_passenger/config/nginx_engine_compiler.rb +2 -2
  334. data/src/ruby_supportlib/phusion_passenger/loader_shared_helpers.rb +5 -3
  335. data/src/ruby_supportlib/phusion_passenger/platform_info/apache.rb +2 -2
  336. data/src/ruby_supportlib/phusion_passenger/platform_info/compiler.rb +6 -13
  337. data/src/ruby_supportlib/phusion_passenger/platform_info/cxx_portability.rb +29 -30
  338. data/src/ruby_supportlib/phusion_passenger/request_handler/thread_handler.rb +7 -3
  339. data/src/ruby_supportlib/phusion_passenger/standalone/config_utils.rb +2 -0
  340. data/src/ruby_supportlib/phusion_passenger/standalone/start_command/builtin_engine.rb +1 -1
  341. data/src/ruby_supportlib/phusion_passenger/utils/json.rb +1 -1
  342. data/src/ruby_supportlib/phusion_passenger/utils/terminal_choice_menu.rb +1 -1
  343. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/gdb_controller.rb +1 -1
  344. data/src/ruby_supportlib/phusion_passenger.rb +8 -8
  345. metadata +40 -99
  346. data/src/cxx_supportlib/vendor-modified/boost/align/aligned_alloc.hpp +0 -47
  347. data/src/cxx_supportlib/vendor-modified/boost/align/detail/aligned_alloc_posix.hpp +0 -41
  348. data/src/cxx_supportlib/vendor-modified/boost/align/detail/aligned_alloc_sunos.hpp +0 -34
  349. data/src/cxx_supportlib/vendor-modified/boost/align/detail/is_alignment.hpp +0 -28
  350. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/pause.hpp +0 -68
  351. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/conditional.hpp +0 -42
  352. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/integral_constant.hpp +0 -46
  353. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_enum.hpp +0 -42
  354. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_function.hpp +0 -42
  355. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_nothrow_default_constructible.hpp +0 -46
  356. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/remove_cv.hpp +0 -42
  357. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_on_address.hpp +0 -64
  358. data/src/cxx_supportlib/vendor-modified/boost/cerrno.hpp +0 -15
  359. data/src/cxx_supportlib/vendor-modified/boost/detail/indirect_traits.hpp +0 -195
  360. data/src/cxx_supportlib/vendor-modified/boost/detail/select_type.hpp +0 -36
  361. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/enable_if.hpp +0 -83
  362. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/internals.hpp +0 -35
  363. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/regex.cpp +0 -120
  364. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/regex_debug.cpp +0 -59
  365. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/static_mutex.cpp +0 -189
  366. data/src/cxx_supportlib/vendor-modified/boost/libs/system/src/error_code.cpp +0 -31
  367. data/src/cxx_supportlib/vendor-modified/boost/regex/config/borland.hpp +0 -72
  368. data/src/cxx_supportlib/vendor-modified/boost/regex/config/cwchar.hpp +0 -207
  369. data/src/cxx_supportlib/vendor-modified/boost/regex/pending/static_mutex.hpp +0 -182
  370. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex.hpp +0 -797
  371. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_creator.hpp +0 -1598
  372. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_parser.hpp +0 -3174
  373. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/c_regex_traits.hpp +0 -511
  374. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/char_regex_traits.hpp +0 -81
  375. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/cpp_regex_traits.hpp +0 -1237
  376. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/cregex.hpp +0 -213
  377. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/error_type.hpp +0 -59
  378. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/icu.hpp +0 -1516
  379. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/indexed_bit_flag.hpp +0 -54
  380. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/iterator_category.hpp +0 -91
  381. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/iterator_traits.hpp +0 -135
  382. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_flags.hpp +0 -161
  383. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_results.hpp +0 -716
  384. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/mem_block_cache.hpp +0 -183
  385. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/object_cache.hpp +0 -171
  386. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/pattern_except.hpp +0 -128
  387. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher.hpp +0 -645
  388. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_common.hpp +0 -1030
  389. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_non_recursive.hpp +0 -1947
  390. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_recursive.hpp +0 -1131
  391. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/primary_transform.hpp +0 -146
  392. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/protected_call.hpp +0 -83
  393. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regbase.hpp +0 -180
  394. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex.hpp +0 -166
  395. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_format.hpp +0 -1158
  396. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_fwd.hpp +0 -73
  397. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_grep.hpp +0 -155
  398. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_iterator.hpp +0 -195
  399. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_match.hpp +0 -382
  400. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_merge.hpp +0 -93
  401. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_raw_buffer.hpp +0 -241
  402. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_replace.hpp +0 -99
  403. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_search.hpp +0 -217
  404. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_split.hpp +0 -174
  405. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_token_iterator.hpp +0 -327
  406. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits.hpp +0 -189
  407. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits_defaults.hpp +0 -997
  408. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_workaround.hpp +0 -237
  409. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/states.hpp +0 -321
  410. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/sub_match.hpp +0 -516
  411. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/syntax_type.hpp +0 -105
  412. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/u32regex_iterator.hpp +0 -185
  413. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/u32regex_token_iterator.hpp +0 -360
  414. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/unicode_iterator.hpp +0 -871
  415. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/w32_regex_traits.hpp +0 -1229
  416. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_gcc.hpp +0 -79
  417. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_gcc_atomic.hpp +0 -63
  418. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_gcc_x86.hpp +0 -88
  419. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_pt.hpp +0 -104
  420. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_spin.hpp +0 -69
  421. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_sync.hpp +0 -72
  422. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp +0 -163
  423. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_aix.hpp +0 -152
  424. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp +0 -185
  425. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_atomic.hpp +0 -148
  426. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp +0 -170
  427. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp +0 -200
  428. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp +0 -194
  429. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp +0 -179
  430. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp +0 -186
  431. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_pt.hpp +0 -147
  432. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp +0 -174
  433. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_spin.hpp +0 -141
  434. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_sync.hpp +0 -165
  435. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp +0 -163
  436. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_has_gcc_intrinsics.hpp +0 -30
  437. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_has_sync_intrinsics.hpp +0 -69
  438. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_gcc_arm.hpp +0 -128
  439. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_nt.hpp +0 -96
  440. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_pt.hpp +0 -86
  441. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_sync.hpp +0 -94
@@ -3,21 +3,31 @@
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/wait_ops_generic.hpp
10
10
  *
11
11
  * This header contains generic (lock-based) implementation of the waiting/notifying atomic operations.
12
+ *
13
+ * This backend is used when lock-free atomic operations are available but native waiting/notifying operations are not.
12
14
  */
13
15
 
14
16
  #ifndef BOOST_ATOMIC_DETAIL_WAIT_OPS_GENERIC_HPP_INCLUDED_
15
17
  #define BOOST_ATOMIC_DETAIL_WAIT_OPS_GENERIC_HPP_INCLUDED_
16
18
 
17
19
  #include <cstddef>
20
+ #include <chrono>
18
21
  #include <boost/memory_order.hpp>
22
+ #include <boost/atomic/thread_pause.hpp>
19
23
  #include <boost/atomic/detail/config.hpp>
20
- #include <boost/atomic/detail/pause.hpp>
24
+ #if !defined(BOOST_WINDOWS)
25
+ #include <time.h>
26
+ #include <type_traits>
27
+ #include <boost/atomic/posix_clock_traits_fwd.hpp>
28
+ #include <boost/atomic/detail/has_posix_clock_traits.hpp>
29
+ #endif
30
+ #include <boost/atomic/detail/chrono.hpp>
21
31
  #include <boost/atomic/detail/lock_pool.hpp>
22
32
  #include <boost/atomic/detail/wait_operations_fwd.hpp>
23
33
  #include <boost/atomic/detail/header.hpp>
@@ -38,19 +48,19 @@ template< typename Base >
38
48
  struct wait_operations_generic< Base, false > :
39
49
  public Base
40
50
  {
41
- typedef Base base_type;
42
- typedef typename base_type::storage_type storage_type;
43
- typedef lock_pool::scoped_lock< base_type::storage_alignment, true > scoped_lock;
44
- typedef lock_pool::scoped_wait_state< base_type::storage_alignment > scoped_wait_state;
51
+ using base_type = Base;
52
+ using storage_type = typename base_type::storage_type;
53
+ using scoped_lock = lock_pool::scoped_lock< base_type::storage_alignment, true >;
54
+ using scoped_wait_state = lock_pool::scoped_wait_state< base_type::storage_alignment >;
45
55
 
46
- static BOOST_CONSTEXPR_OR_CONST bool always_has_native_wait_notify = false;
56
+ static constexpr bool always_has_native_wait_notify = false;
47
57
 
48
- static BOOST_FORCEINLINE bool has_native_wait_notify(storage_type const volatile&) BOOST_NOEXCEPT
58
+ static BOOST_FORCEINLINE bool has_native_wait_notify(storage_type const volatile&) noexcept
49
59
  {
50
60
  return false;
51
61
  }
52
62
 
53
- static BOOST_FORCEINLINE storage_type wait(storage_type const volatile& storage, storage_type old_val, memory_order order) BOOST_NOEXCEPT
63
+ static BOOST_FORCEINLINE storage_type wait(storage_type const volatile& storage, storage_type old_val, memory_order order) noexcept
54
64
  {
55
65
  storage_type new_val = base_type::load(storage, order);
56
66
  if (new_val == old_val)
@@ -67,13 +77,161 @@ struct wait_operations_generic< Base, false > :
67
77
  return new_val;
68
78
  }
69
79
 
70
- static BOOST_FORCEINLINE void notify_one(storage_type volatile& storage) BOOST_NOEXCEPT
80
+ private:
81
+ template< typename Clock >
82
+ static BOOST_FORCEINLINE storage_type wait_until_fallback
83
+ (
84
+ storage_type const volatile& storage,
85
+ storage_type old_val,
86
+ typename Clock::time_point timeout,
87
+ typename Clock::time_point now,
88
+ memory_order order,
89
+ bool& timed_out
90
+ ) noexcept(noexcept(Clock::now()))
91
+ {
92
+ storage_type new_val = base_type::load(storage, order);
93
+ if (new_val == old_val)
94
+ {
95
+ scoped_wait_state wait_state(&storage);
96
+ while (new_val == old_val)
97
+ {
98
+ const std::chrono::nanoseconds nsec = atomics::detail::chrono::ceil< std::chrono::nanoseconds >(timeout - now);
99
+ if (nsec.count() <= 0)
100
+ {
101
+ timed_out = true;
102
+ break;
103
+ }
104
+
105
+ wait_state.wait_for(nsec);
106
+
107
+ now = Clock::now();
108
+ new_val = base_type::load(storage, order);
109
+ }
110
+ }
111
+
112
+ return new_val;
113
+ }
114
+
115
+ #if !defined(BOOST_WINDOWS)
116
+
117
+ template< typename Clock >
118
+ static BOOST_FORCEINLINE storage_type wait_until_abs_timeout
119
+ (
120
+ storage_type const volatile& storage,
121
+ storage_type old_val,
122
+ typename Clock::time_point timeout,
123
+ memory_order order,
124
+ bool& timed_out
125
+ ) noexcept
126
+ {
127
+ storage_type new_val = base_type::load(storage, order);
128
+ if (new_val == old_val)
129
+ {
130
+ scoped_wait_state wait_state(&storage);
131
+ const timespec abs_timeout(posix_clock_traits< Clock >::to_timespec(timeout));
132
+ if (BOOST_LIKELY(abs_timeout.tv_sec >= 0))
133
+ {
134
+ while (new_val == old_val)
135
+ {
136
+ const bool wait_timed_out = wait_state.wait_until(posix_clock_traits< Clock >::clock_id, abs_timeout);
137
+ new_val = base_type::load(storage, order);
138
+
139
+ if (wait_timed_out)
140
+ goto timeout_expired;
141
+ }
142
+ }
143
+ else
144
+ {
145
+ timeout_expired:
146
+ timed_out = new_val == old_val;
147
+ }
148
+ }
149
+
150
+ return new_val;
151
+ }
152
+
153
+ template< typename Clock >
154
+ static BOOST_FORCEINLINE storage_type wait_until_dispatch
155
+ (
156
+ storage_type const volatile& storage,
157
+ storage_type old_val,
158
+ typename Clock::time_point timeout,
159
+ memory_order order,
160
+ bool& timed_out,
161
+ std::true_type
162
+ ) noexcept
163
+ {
164
+ return wait_until_abs_timeout< Clock >(storage, old_val, timeout, order, timed_out);
165
+ }
166
+
167
+ template< typename Clock >
168
+ static BOOST_FORCEINLINE storage_type wait_until_dispatch
169
+ (
170
+ storage_type const volatile& storage,
171
+ storage_type old_val,
172
+ typename Clock::time_point timeout,
173
+ memory_order order,
174
+ bool& timed_out,
175
+ std::false_type
176
+ ) noexcept(noexcept(Clock::now()))
177
+ {
178
+ return wait_until_fallback< Clock >(storage, old_val, timeout, Clock::now(), order, timed_out);
179
+ }
180
+
181
+ public:
182
+ template< typename Clock, typename Duration >
183
+ static BOOST_FORCEINLINE storage_type wait_until
184
+ (
185
+ storage_type const volatile& storage,
186
+ storage_type old_val,
187
+ std::chrono::time_point< Clock, Duration > timeout,
188
+ memory_order order,
189
+ bool& timed_out
190
+ ) noexcept(noexcept(wait_until_dispatch< Clock >(
191
+ storage, old_val, timeout, order, timed_out, std::integral_constant< bool, has_posix_clock_traits< Clock >::value >())))
192
+ {
193
+ return wait_until_dispatch< Clock >(storage, old_val, timeout, order, timed_out, std::integral_constant< bool, has_posix_clock_traits< Clock >::value >());
194
+ }
195
+
196
+ #else // !defined(BOOST_WINDOWS)
197
+
198
+ public:
199
+ template< typename Clock, typename Duration >
200
+ static BOOST_FORCEINLINE storage_type wait_until
201
+ (
202
+ storage_type const volatile& storage,
203
+ storage_type old_val,
204
+ std::chrono::time_point< Clock, Duration > timeout,
205
+ memory_order order,
206
+ bool& timed_out
207
+ ) noexcept(noexcept(wait_until_fallback< Clock >(storage, old_val, timeout, Clock::now(), order, timed_out)))
208
+ {
209
+ return wait_until_fallback< Clock >(storage, old_val, timeout, Clock::now(), order, timed_out);
210
+ }
211
+
212
+ #endif // !defined(BOOST_WINDOWS)
213
+
214
+ template< typename Rep, typename Period >
215
+ static BOOST_FORCEINLINE storage_type wait_for
216
+ (
217
+ storage_type const volatile& storage,
218
+ storage_type old_val,
219
+ std::chrono::duration< Rep, Period > timeout,
220
+ memory_order order,
221
+ bool& timed_out
222
+ ) noexcept
223
+ {
224
+ const std::chrono::steady_clock::time_point now = std::chrono::steady_clock::now();
225
+ return wait_until_fallback< std::chrono::steady_clock >(storage, old_val, now + timeout, now, order, timed_out);
226
+ }
227
+
228
+ static BOOST_FORCEINLINE void notify_one(storage_type volatile& storage) noexcept
71
229
  {
72
230
  scoped_lock lock(&storage);
73
231
  lock_pool::notify_one(lock.get_lock_state(), &storage);
74
232
  }
75
233
 
76
- static BOOST_FORCEINLINE void notify_all(storage_type volatile& storage) BOOST_NOEXCEPT
234
+ static BOOST_FORCEINLINE void notify_all(storage_type volatile& storage) noexcept
77
235
  {
78
236
  scoped_lock lock(&storage);
79
237
  lock_pool::notify_all(lock.get_lock_state(), &storage);
@@ -84,24 +242,71 @@ template< typename Base >
84
242
  struct wait_operations_generic< Base, true > :
85
243
  public Base
86
244
  {
87
- typedef Base base_type;
88
- typedef typename base_type::storage_type storage_type;
245
+ using base_type = Base;
246
+ using storage_type = typename base_type::storage_type;
247
+
248
+ static constexpr bool always_has_native_wait_notify = false;
89
249
 
90
- static BOOST_CONSTEXPR_OR_CONST bool always_has_native_wait_notify = false;
250
+ private:
251
+ static constexpr unsigned int fast_loop_count = 16u;
91
252
 
92
- static BOOST_FORCEINLINE bool has_native_wait_notify(storage_type const volatile&) BOOST_NOEXCEPT
253
+ public:
254
+ static BOOST_FORCEINLINE bool has_native_wait_notify(storage_type const volatile&) noexcept
93
255
  {
94
256
  return false;
95
257
  }
96
258
 
97
- static BOOST_FORCEINLINE storage_type wait(storage_type const volatile& storage, storage_type old_val, memory_order order) BOOST_NOEXCEPT
259
+ static BOOST_FORCEINLINE storage_type wait(storage_type const volatile& storage, storage_type old_val, memory_order order) noexcept
260
+ {
261
+ storage_type new_val = base_type::load(storage, order);
262
+ if (new_val == old_val)
263
+ {
264
+ for (unsigned int i = 0u; i < fast_loop_count; ++i)
265
+ {
266
+ atomics::thread_pause();
267
+ new_val = base_type::load(storage, order);
268
+ if (new_val != old_val)
269
+ goto finish;
270
+ }
271
+
272
+ do
273
+ {
274
+ atomics::detail::wait_some();
275
+ new_val = base_type::load(storage, order);
276
+ }
277
+ while (new_val == old_val);
278
+ }
279
+
280
+ finish:
281
+ return new_val;
282
+ }
283
+
284
+ private:
285
+ template< typename Clock >
286
+ static BOOST_FORCEINLINE storage_type wait_until_impl
287
+ (
288
+ storage_type const volatile& storage,
289
+ storage_type old_val,
290
+ typename Clock::time_point timeout,
291
+ typename Clock::time_point now,
292
+ memory_order order,
293
+ bool& timed_out
294
+ ) noexcept(noexcept(Clock::now()))
98
295
  {
99
296
  storage_type new_val = base_type::load(storage, order);
100
297
  if (new_val == old_val)
101
298
  {
102
- for (unsigned int i = 0u; i < 16u; ++i)
299
+ for (unsigned int i = 0u; i < fast_loop_count; ++i)
103
300
  {
104
- atomics::detail::pause();
301
+ if ((now - timeout).count() >= 0)
302
+ {
303
+ timed_out = true;
304
+ goto finish;
305
+ }
306
+
307
+ atomics::thread_pause();
308
+ now = Clock::now();
309
+
105
310
  new_val = base_type::load(storage, order);
106
311
  if (new_val != old_val)
107
312
  goto finish;
@@ -109,7 +314,14 @@ struct wait_operations_generic< Base, true > :
109
314
 
110
315
  do
111
316
  {
317
+ if ((now - timeout).count() >= 0)
318
+ {
319
+ timed_out = true;
320
+ goto finish;
321
+ }
322
+
112
323
  atomics::detail::wait_some();
324
+ now = Clock::now();
113
325
  new_val = base_type::load(storage, order);
114
326
  }
115
327
  while (new_val == old_val);
@@ -119,11 +331,39 @@ struct wait_operations_generic< Base, true > :
119
331
  return new_val;
120
332
  }
121
333
 
122
- static BOOST_FORCEINLINE void notify_one(storage_type volatile&) BOOST_NOEXCEPT
334
+ public:
335
+ template< typename Clock, typename Duration >
336
+ static BOOST_FORCEINLINE storage_type wait_until
337
+ (
338
+ storage_type const volatile& storage,
339
+ storage_type old_val,
340
+ std::chrono::time_point< Clock, Duration > timeout,
341
+ memory_order order,
342
+ bool& timed_out
343
+ ) noexcept(noexcept(wait_until_impl< Clock >(storage, old_val, timeout, Clock::now(), order, timed_out)))
344
+ {
345
+ return wait_until_impl< Clock >(storage, old_val, timeout, Clock::now(), order, timed_out);
346
+ }
347
+
348
+ template< typename Rep, typename Period >
349
+ static BOOST_FORCEINLINE storage_type wait_for
350
+ (
351
+ storage_type const volatile& storage,
352
+ storage_type old_val,
353
+ std::chrono::duration< Rep, Period > timeout,
354
+ memory_order order,
355
+ bool& timed_out
356
+ ) noexcept
357
+ {
358
+ const std::chrono::steady_clock::time_point now = std::chrono::steady_clock::now();
359
+ return wait_until_impl< std::chrono::steady_clock >(storage, old_val, now + timeout, now, order, timed_out);
360
+ }
361
+
362
+ static BOOST_FORCEINLINE void notify_one(storage_type volatile&) noexcept
123
363
  {
124
364
  }
125
365
 
126
- static BOOST_FORCEINLINE void notify_all(storage_type volatile&) BOOST_NOEXCEPT
366
+ static BOOST_FORCEINLINE void notify_all(storage_type volatile&) noexcept
127
367
  {
128
368
  }
129
369
  };
@@ -5,7 +5,7 @@
5
5
  *
6
6
  * Copyright (c) 2011 Helge Bahmann
7
7
  * Copyright (c) 2013 Tim Blechmann
8
- * Copyright (c) 2014 Andrey Semashev
8
+ * Copyright (c) 2014, 2025 Andrey Semashev
9
9
  */
10
10
  /*!
11
11
  * \file atomic/fences.hpp
@@ -18,6 +18,7 @@
18
18
 
19
19
  #include <boost/memory_order.hpp>
20
20
  #include <boost/atomic/capabilities.hpp>
21
+ #include <boost/atomic/detail/config.hpp>
21
22
  #include <boost/atomic/detail/fence_operations.hpp>
22
23
  #include <boost/atomic/detail/header.hpp>
23
24
 
@@ -34,12 +35,12 @@ namespace boost {
34
35
 
35
36
  namespace atomics {
36
37
 
37
- BOOST_FORCEINLINE void atomic_thread_fence(memory_order order) BOOST_NOEXCEPT
38
+ BOOST_FORCEINLINE void atomic_thread_fence(memory_order order) noexcept
38
39
  {
39
40
  atomics::detail::fence_operations::thread_fence(order);
40
41
  }
41
42
 
42
- BOOST_FORCEINLINE void atomic_signal_fence(memory_order order) BOOST_NOEXCEPT
43
+ BOOST_FORCEINLINE void atomic_signal_fence(memory_order order) noexcept
43
44
  {
44
45
  atomics::detail::fence_operations::signal_fence(order);
45
46
  }
@@ -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/ipc_atomic.hpp
@@ -15,13 +15,13 @@
15
15
  #define BOOST_ATOMIC_IPC_ATOMIC_HPP_INCLUDED_
16
16
 
17
17
  #include <cstddef>
18
+ #include <type_traits>
18
19
  #include <boost/memory_order.hpp>
19
20
  #include <boost/atomic/capabilities.hpp>
20
21
  #include <boost/atomic/detail/config.hpp>
21
22
  #include <boost/atomic/detail/classify.hpp>
22
23
  #include <boost/atomic/detail/atomic_impl.hpp>
23
24
  #include <boost/atomic/detail/type_traits/is_trivially_copyable.hpp>
24
- #include <boost/atomic/detail/type_traits/is_nothrow_default_constructible.hpp>
25
25
  #include <boost/atomic/detail/header.hpp>
26
26
 
27
27
  #ifdef BOOST_HAS_PRAGMA_ONCE
@@ -37,46 +37,42 @@ class ipc_atomic :
37
37
  public atomics::detail::base_atomic< T, typename atomics::detail::classify< T >::type, true >
38
38
  {
39
39
  private:
40
- typedef atomics::detail::base_atomic< T, typename atomics::detail::classify< T >::type, true > base_type;
41
- typedef typename base_type::value_arg_type value_arg_type;
40
+ using base_type = atomics::detail::base_atomic< T, typename atomics::detail::classify< T >::type, true >;
41
+ using value_arg_type = typename base_type::value_arg_type;
42
42
 
43
43
  public:
44
- typedef typename base_type::value_type value_type;
44
+ using value_type = typename base_type::value_type;
45
45
 
46
46
  static_assert(sizeof(value_type) > 0u, "boost::ipc_atomic<T> requires T to be a complete type");
47
- #if !defined(BOOST_ATOMIC_DETAIL_NO_CXX11_IS_TRIVIALLY_COPYABLE)
48
47
  static_assert(atomics::detail::is_trivially_copyable< value_type >::value, "boost::ipc_atomic<T> requires T to be a trivially copyable type");
49
- #endif
50
48
 
51
49
  public:
52
- BOOST_FORCEINLINE BOOST_ATOMIC_DETAIL_CONSTEXPR_UNION_INIT ipc_atomic() BOOST_NOEXCEPT_IF(atomics::detail::is_nothrow_default_constructible< value_type >::value) : base_type()
53
- {
54
- }
50
+ ipc_atomic() = default;
55
51
 
56
- BOOST_FORCEINLINE BOOST_ATOMIC_DETAIL_CONSTEXPR_UNION_INIT ipc_atomic(value_arg_type v) BOOST_NOEXCEPT : base_type(v)
52
+ BOOST_FORCEINLINE constexpr ipc_atomic(value_arg_type v) noexcept : base_type(v)
57
53
  {
58
54
  }
59
55
 
60
- BOOST_FORCEINLINE value_type operator= (value_arg_type v) BOOST_NOEXCEPT
56
+ ipc_atomic(ipc_atomic const&) = delete;
57
+ ipc_atomic& operator= (ipc_atomic const&) = delete;
58
+ ipc_atomic& operator= (ipc_atomic const&) volatile = delete;
59
+
60
+ BOOST_FORCEINLINE value_type operator= (value_arg_type v) noexcept
61
61
  {
62
62
  this->store(v);
63
63
  return v;
64
64
  }
65
65
 
66
- BOOST_FORCEINLINE value_type operator= (value_arg_type v) volatile BOOST_NOEXCEPT
66
+ BOOST_FORCEINLINE value_type operator= (value_arg_type v) volatile noexcept
67
67
  {
68
68
  this->store(v);
69
69
  return v;
70
70
  }
71
71
 
72
- BOOST_FORCEINLINE operator value_type() const volatile BOOST_NOEXCEPT
72
+ BOOST_FORCEINLINE operator value_type() const volatile noexcept
73
73
  {
74
74
  return this->load();
75
75
  }
76
-
77
- BOOST_DELETED_FUNCTION(ipc_atomic(ipc_atomic const&))
78
- BOOST_DELETED_FUNCTION(ipc_atomic& operator= (ipc_atomic const&))
79
- BOOST_DELETED_FUNCTION(ipc_atomic& operator= (ipc_atomic const&) volatile)
80
76
  };
81
77
 
82
78
  } // namespace atomics
@@ -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/ipc_atomic_flag.hpp
@@ -27,7 +27,7 @@ namespace boost {
27
27
  namespace atomics {
28
28
 
29
29
  //! Atomic flag for inter-process communication
30
- typedef atomics::detail::atomic_flag_impl< true > ipc_atomic_flag;
30
+ using ipc_atomic_flag = atomics::detail::atomic_flag_impl< true >;
31
31
 
32
32
  } // namespace atomics
33
33
 
@@ -14,6 +14,7 @@
14
14
  #ifndef BOOST_ATOMIC_IPC_ATOMIC_REF_HPP_INCLUDED_
15
15
  #define BOOST_ATOMIC_IPC_ATOMIC_REF_HPP_INCLUDED_
16
16
 
17
+ #include <type_traits>
17
18
  #include <boost/assert.hpp>
18
19
  #include <boost/memory_order.hpp>
19
20
  #include <boost/atomic/capabilities.hpp>
@@ -37,40 +38,39 @@ class ipc_atomic_ref :
37
38
  public atomics::detail::base_atomic_ref< T, typename atomics::detail::classify< T >::type, true >
38
39
  {
39
40
  private:
40
- typedef atomics::detail::base_atomic_ref< T, typename atomics::detail::classify< T >::type, true > base_type;
41
- typedef typename base_type::value_arg_type value_arg_type;
41
+ using base_type = atomics::detail::base_atomic_ref< T, typename atomics::detail::classify< T >::type, true >;
42
+ using value_arg_type = typename base_type::value_arg_type;
42
43
 
43
44
  public:
44
- typedef typename base_type::value_type value_type;
45
+ using value_type = typename base_type::value_type;
45
46
 
46
47
  static_assert(sizeof(value_type) > 0u, "boost::ipc_atomic_ref<T> requires T to be a complete type");
47
- #if !defined(BOOST_ATOMIC_DETAIL_NO_CXX11_IS_TRIVIALLY_COPYABLE)
48
48
  static_assert(atomics::detail::is_trivially_copyable< value_type >::value, "boost::ipc_atomic_ref<T> requires T to be a trivially copyable type");
49
- #endif
50
49
 
51
50
  private:
52
- typedef typename base_type::storage_type storage_type;
51
+ using storage_type = typename base_type::storage_type;
53
52
 
54
53
  public:
55
- BOOST_DEFAULTED_FUNCTION(ipc_atomic_ref(ipc_atomic_ref const& that) BOOST_ATOMIC_DETAIL_DEF_NOEXCEPT_DECL, BOOST_ATOMIC_DETAIL_DEF_NOEXCEPT_IMPL : base_type(static_cast< base_type const& >(that)) {})
56
- BOOST_FORCEINLINE explicit ipc_atomic_ref(value_type& v) BOOST_NOEXCEPT : base_type(v)
54
+ ipc_atomic_ref(ipc_atomic_ref const&) = default;
55
+
56
+ BOOST_FORCEINLINE explicit ipc_atomic_ref(value_type& v) noexcept : base_type(v)
57
57
  {
58
58
  // Check that referenced object alignment satisfies required alignment
59
59
  BOOST_ASSERT((((atomics::detail::uintptr_t)this->m_value) & (base_type::required_alignment - 1u)) == 0u);
60
60
  }
61
61
 
62
- BOOST_FORCEINLINE value_type operator= (value_arg_type v) const BOOST_NOEXCEPT
62
+ ipc_atomic_ref& operator= (ipc_atomic_ref const&) = delete;
63
+
64
+ BOOST_FORCEINLINE value_type operator= (value_arg_type v) const noexcept
63
65
  {
64
66
  this->store(v);
65
67
  return v;
66
68
  }
67
69
 
68
- BOOST_FORCEINLINE operator value_type() const BOOST_NOEXCEPT
70
+ BOOST_FORCEINLINE operator value_type() const noexcept
69
71
  {
70
72
  return this->load();
71
73
  }
72
-
73
- BOOST_DELETED_FUNCTION(ipc_atomic_ref& operator= (ipc_atomic_ref const&))
74
74
  };
75
75
 
76
76
  #if !defined(BOOST_NO_CXX17_DEDUCTION_GUIDES)
@@ -80,7 +80,7 @@ ipc_atomic_ref(T&) -> ipc_atomic_ref< T >;
80
80
 
81
81
  //! IPC atomic reference factory function
82
82
  template< typename T >
83
- BOOST_FORCEINLINE ipc_atomic_ref< T > make_ipc_atomic_ref(T& value) BOOST_NOEXCEPT
83
+ BOOST_FORCEINLINE ipc_atomic_ref< T > make_ipc_atomic_ref(T& value) noexcept
84
84
  {
85
85
  return ipc_atomic_ref< T >(value);
86
86
  }
@@ -0,0 +1,59 @@
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/posix_clock_traits_fwd.hpp
10
+ *
11
+ * This header contains declaration of the \c posix_clock_traits class template.
12
+ */
13
+
14
+ #ifndef BOOST_ATOMIC_POSIX_CLOCK_TRAITS_FWD_HPP_INCLUDED_
15
+ #define BOOST_ATOMIC_POSIX_CLOCK_TRAITS_FWD_HPP_INCLUDED_
16
+
17
+ #include <boost/atomic/detail/config.hpp>
18
+ #include <boost/atomic/detail/header.hpp>
19
+
20
+ #ifdef BOOST_HAS_PRAGMA_ONCE
21
+ #pragma once
22
+ #endif
23
+
24
+ namespace boost {
25
+ namespace atomics {
26
+
27
+ /*!
28
+ * \brief The structure contains traits for compatibility between chrono clocks and POSIX clocks.
29
+ *
30
+ * This class template is meant to be specialized for clock types that are compatible with `std::chrono`
31
+ * requirements and are based on one of the POSIX clocks identified by
32
+ * a [`clockid_t`](https://man7.org/linux/man-pages/man3/clockid_t.3type.html) constant.
33
+ *
34
+ * Every specialization of this class must support the following interface:
35
+ *
36
+ * ```
37
+ * // POSIX clock identifier
38
+ * static constexpr clockid_t clock_id = ...;
39
+ *
40
+ * // Function that converts a time point to a timespec structure
41
+ * static timespec to_timespec(Clock::time_point time_point) noexcept;
42
+ * ```
43
+ *
44
+ * Note that the `timespec` structure returned from `to_timespec` must use the identified POSIX
45
+ * clock epoch and time units. There are no invalid input `time_point` values, so `to_timespec`
46
+ * must never fail with an exception.
47
+ *
48
+ * The second template parameter of this class template may be used by partial specializations
49
+ * to leverage SFINAE to selectively enable it for a set of clock types.
50
+ */
51
+ template< typename Clock, typename = void >
52
+ struct posix_clock_traits;
53
+
54
+ } // namespace atomics
55
+ } // namespace boost
56
+
57
+ #include <boost/atomic/detail/footer.hpp>
58
+
59
+ #endif // BOOST_ATOMIC_POSIX_CLOCK_TRAITS_FWD_HPP_INCLUDED_