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
@@ -5,7 +5,7 @@
5
5
  *
6
6
  * Copyright (c) 2009 Helge Bahmann
7
7
  * Copyright (c) 2012 Tim Blechmann
8
- * Copyright (c) 2013-2018, 2020-2021 Andrey Semashev
8
+ * Copyright (c) 2013-2018, 2020-2025 Andrey Semashev
9
9
  */
10
10
  /*!
11
11
  * \file atomic/detail/bitwise_cast.hpp
@@ -17,11 +17,11 @@
17
17
  #define BOOST_ATOMIC_DETAIL_BITWISE_CAST_HPP_INCLUDED_
18
18
 
19
19
  #include <cstddef>
20
+ #include <type_traits>
20
21
  #include <boost/atomic/detail/config.hpp>
21
22
  #include <boost/atomic/detail/addressof.hpp>
22
23
  #include <boost/atomic/detail/string_ops.hpp>
23
- #include <boost/atomic/detail/type_traits/remove_cv.hpp>
24
- #include <boost/atomic/detail/type_traits/integral_constant.hpp>
24
+ #include <boost/atomic/detail/type_traits/is_trivially_copyable.hpp>
25
25
  #include <boost/atomic/detail/type_traits/has_unique_object_representations.hpp>
26
26
  #include <boost/atomic/detail/header.hpp>
27
27
 
@@ -43,12 +43,12 @@
43
43
 
44
44
  #endif // !defined(BOOST_ATOMIC_DETAIL_NO_HAS_UNIQUE_OBJECT_REPRESENTATIONS)
45
45
 
46
- #if defined(BOOST_NO_CXX11_CONSTEXPR) || !defined(BOOST_ATOMIC_DETAIL_BIT_CAST) || !defined(BOOST_ATOMIC_DETAIL_HAS_BUILTIN_ADDRESSOF)
46
+ #if !defined(BOOST_ATOMIC_DETAIL_BIT_CAST) || !defined(BOOST_ATOMIC_DETAIL_HAS_BUILTIN_ADDRESSOF)
47
47
  #define BOOST_ATOMIC_DETAIL_NO_CXX11_CONSTEXPR_BITWISE_CAST
48
48
  #endif
49
49
 
50
50
  #if !defined(BOOST_ATOMIC_DETAIL_NO_CXX11_CONSTEXPR_BITWISE_CAST)
51
- #define BOOST_ATOMIC_DETAIL_CONSTEXPR_BITWISE_CAST BOOST_CONSTEXPR
51
+ #define BOOST_ATOMIC_DETAIL_CONSTEXPR_BITWISE_CAST constexpr
52
52
  #else
53
53
  #define BOOST_ATOMIC_DETAIL_CONSTEXPR_BITWISE_CAST
54
54
  #endif
@@ -64,83 +64,96 @@ namespace atomics {
64
64
  namespace detail {
65
65
 
66
66
  template< std::size_t ValueSize, typename To >
67
- BOOST_FORCEINLINE void clear_tail_padding_bits(To& to, atomics::detail::true_type) BOOST_NOEXCEPT
67
+ BOOST_FORCEINLINE void clear_tail_padding_bits(To& to, std::true_type) noexcept
68
68
  {
69
69
  BOOST_ATOMIC_DETAIL_MEMSET(reinterpret_cast< unsigned char* >(atomics::detail::addressof(to)) + ValueSize, 0, sizeof(To) - ValueSize);
70
70
  }
71
71
 
72
72
  template< std::size_t ValueSize, typename To >
73
- BOOST_FORCEINLINE void clear_tail_padding_bits(To&, atomics::detail::false_type) BOOST_NOEXCEPT
73
+ BOOST_FORCEINLINE void clear_tail_padding_bits(To&, std::false_type) noexcept
74
74
  {
75
75
  }
76
76
 
77
77
  template< std::size_t ValueSize, typename To >
78
- BOOST_FORCEINLINE void clear_tail_padding_bits(To& to) BOOST_NOEXCEPT
78
+ BOOST_FORCEINLINE void clear_tail_padding_bits(To& to) noexcept
79
79
  {
80
- atomics::detail::clear_tail_padding_bits< ValueSize >(to, atomics::detail::integral_constant< bool, ValueSize < sizeof(To) >());
80
+ atomics::detail::clear_tail_padding_bits< ValueSize >(to, std::integral_constant< bool, ValueSize < sizeof(To) >());
81
81
  }
82
82
 
83
83
  template< typename To, std::size_t FromValueSize, typename From >
84
- BOOST_FORCEINLINE To bitwise_cast_memcpy(From const& from) BOOST_NOEXCEPT
84
+ BOOST_FORCEINLINE To bitwise_cast_memcpy(From const& from) noexcept
85
85
  {
86
- typedef typename atomics::detail::remove_cv< To >::type unqualified_to_t;
87
- unqualified_to_t to;
86
+ using unqualified_to_t = typename std::remove_cv< To >::type;
87
+ static_assert(atomics::detail::is_trivially_copyable< unqualified_to_t >::value, "bitwise_cast target type must be trivially copyable");
88
+ static_assert(atomics::detail::is_trivially_copyable< From >::value, "bitwise_cast source type must be trivially copyable");
89
+
90
+ // Suppress default constructor of To as it may potentially be a non-trivial throwing constructor
91
+ union cast_helper
92
+ {
93
+ unsigned char as_bytes[sizeof(unqualified_to_t)];
94
+ unqualified_to_t as_to;
95
+
96
+ BOOST_FORCEINLINE cast_helper() noexcept {}
97
+ }
98
+ storage;
99
+
88
100
  #if !defined(BOOST_ATOMIC_NO_CLEAR_PADDING)
89
101
  From from2(from);
90
102
  BOOST_ATOMIC_DETAIL_CLEAR_PADDING(atomics::detail::addressof(from2));
91
103
  BOOST_ATOMIC_DETAIL_MEMCPY
92
104
  (
93
- atomics::detail::addressof(to),
105
+ atomics::detail::addressof(storage.as_to),
94
106
  atomics::detail::addressof(from2),
95
107
  (FromValueSize < sizeof(unqualified_to_t) ? FromValueSize : sizeof(unqualified_to_t))
96
108
  );
97
109
  #else
98
110
  BOOST_ATOMIC_DETAIL_MEMCPY
99
111
  (
100
- atomics::detail::addressof(to),
112
+ atomics::detail::addressof(storage.as_to),
101
113
  atomics::detail::addressof(from),
102
114
  (FromValueSize < sizeof(unqualified_to_t) ? FromValueSize : sizeof(unqualified_to_t))
103
115
  );
104
116
  #endif
105
- atomics::detail::clear_tail_padding_bits< FromValueSize >(to);
106
- return to;
117
+ atomics::detail::clear_tail_padding_bits< FromValueSize >(storage.as_to);
118
+ return storage.as_to;
107
119
  }
108
120
 
109
121
  #if defined(BOOST_ATOMIC_DETAIL_BIT_CAST)
110
122
 
111
123
  template< typename To, std::size_t FromValueSize, typename From >
112
- BOOST_FORCEINLINE BOOST_ATOMIC_DETAIL_CONSTEXPR_BITWISE_CAST To bitwise_cast_impl(From const& from, atomics::detail::true_type) BOOST_NOEXCEPT
124
+ BOOST_FORCEINLINE BOOST_ATOMIC_DETAIL_CONSTEXPR_BITWISE_CAST To bitwise_cast_impl(From const& from, std::true_type) noexcept
113
125
  {
114
126
  // This implementation is only called when the From type has no padding and From and To have the same size
115
- return BOOST_ATOMIC_DETAIL_BIT_CAST(typename atomics::detail::remove_cv< To >::type, from);
127
+ return BOOST_ATOMIC_DETAIL_BIT_CAST(typename std::remove_cv< To >::type, from);
116
128
  }
117
129
 
118
130
  template< typename To, std::size_t FromValueSize, typename From >
119
- BOOST_FORCEINLINE To bitwise_cast_impl(From const& from, atomics::detail::false_type) BOOST_NOEXCEPT
131
+ BOOST_FORCEINLINE To bitwise_cast_impl(From const& from, std::false_type) noexcept
120
132
  {
121
133
  return atomics::detail::bitwise_cast_memcpy< To, FromValueSize >(from);
122
134
  }
123
135
 
124
136
  template< typename To, std::size_t FromValueSize, typename From >
125
- BOOST_FORCEINLINE BOOST_ATOMIC_DETAIL_CONSTEXPR_BITWISE_CAST To bitwise_cast(From const& from) BOOST_NOEXCEPT
137
+ BOOST_FORCEINLINE BOOST_ATOMIC_DETAIL_CONSTEXPR_BITWISE_CAST To bitwise_cast(From const& from) noexcept
126
138
  {
127
- return atomics::detail::bitwise_cast_impl< To, FromValueSize >(from, atomics::detail::integral_constant< bool,
139
+ return atomics::detail::bitwise_cast_impl< To, FromValueSize >(from, std::integral_constant< bool,
128
140
  FromValueSize == sizeof(To) && atomics::detail::has_unique_object_representations< From >::value >());
129
141
  }
130
142
 
131
143
  #else // defined(BOOST_ATOMIC_DETAIL_BIT_CAST)
132
144
 
133
145
  template< typename To, std::size_t FromValueSize, typename From >
134
- BOOST_FORCEINLINE To bitwise_cast(From const& from) BOOST_NOEXCEPT
146
+ BOOST_FORCEINLINE To bitwise_cast(From const& from) noexcept
135
147
  {
136
148
  return atomics::detail::bitwise_cast_memcpy< To, FromValueSize >(from);
137
149
  }
138
150
 
139
151
  #endif // defined(BOOST_ATOMIC_DETAIL_BIT_CAST)
140
152
 
141
- //! Converts the source object to the target type, possibly by padding or truncating it on the right, and clearing any padding bits (if supported by compiler). Preserves value bits unchanged.
153
+ //! Converts the source object to the target type, possibly by padding or truncating it on the right, and clearing any padding bits (if supported by compiler).
154
+ //! Preserves value bits unchanged.
142
155
  template< typename To, typename From >
143
- BOOST_FORCEINLINE BOOST_ATOMIC_DETAIL_CONSTEXPR_BITWISE_CAST To bitwise_cast(From const& from) BOOST_NOEXCEPT
156
+ BOOST_FORCEINLINE BOOST_ATOMIC_DETAIL_CONSTEXPR_BITWISE_CAST To bitwise_cast(From const& from) noexcept
144
157
  {
145
158
  return atomics::detail::bitwise_cast< To, sizeof(From) >(from);
146
159
  }
@@ -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, 2021 Andrey Semashev
6
+ * Copyright (c) 2018-2025 Andrey Semashev
7
7
  */
8
8
  /*!
9
9
  * \file atomic/detail/bitwise_fp_cast.hpp
@@ -19,7 +19,7 @@
19
19
  #include <boost/atomic/detail/float_sizes.hpp>
20
20
  #include <boost/atomic/detail/bitwise_cast.hpp>
21
21
  #if defined(BOOST_ATOMIC_DETAIL_BIT_CAST)
22
- #include <boost/atomic/detail/type_traits/integral_constant.hpp>
22
+ #include <type_traits>
23
23
  #endif
24
24
  #include <boost/atomic/detail/header.hpp>
25
25
 
@@ -40,14 +40,14 @@ namespace detail {
40
40
  template< typename T >
41
41
  struct value_size_of
42
42
  {
43
- static BOOST_CONSTEXPR_OR_CONST std::size_t value = sizeof(T);
43
+ static constexpr std::size_t value = sizeof(T);
44
44
  };
45
45
 
46
46
  #if defined(BOOST_ATOMIC_DETAIL_SIZEOF_FLOAT_VALUE)
47
47
  template< >
48
48
  struct value_size_of< float >
49
49
  {
50
- static BOOST_CONSTEXPR_OR_CONST std::size_t value = BOOST_ATOMIC_DETAIL_SIZEOF_FLOAT_VALUE;
50
+ static constexpr std::size_t value = BOOST_ATOMIC_DETAIL_SIZEOF_FLOAT_VALUE;
51
51
  };
52
52
  #endif
53
53
 
@@ -55,7 +55,7 @@ struct value_size_of< float >
55
55
  template< >
56
56
  struct value_size_of< double >
57
57
  {
58
- static BOOST_CONSTEXPR_OR_CONST std::size_t value = BOOST_ATOMIC_DETAIL_SIZEOF_DOUBLE_VALUE;
58
+ static constexpr std::size_t value = BOOST_ATOMIC_DETAIL_SIZEOF_DOUBLE_VALUE;
59
59
  };
60
60
  #endif
61
61
 
@@ -63,7 +63,7 @@ struct value_size_of< double >
63
63
  template< >
64
64
  struct value_size_of< long double >
65
65
  {
66
- static BOOST_CONSTEXPR_OR_CONST std::size_t value = BOOST_ATOMIC_DETAIL_SIZEOF_LONG_DOUBLE_VALUE;
66
+ static constexpr std::size_t value = BOOST_ATOMIC_DETAIL_SIZEOF_LONG_DOUBLE_VALUE;
67
67
  };
68
68
  #endif
69
69
 
@@ -89,12 +89,12 @@ struct value_size_of< const volatile T > : value_size_of< T > {};
89
89
 
90
90
  //! Similar to bitwise_cast, but either \c From or \c To is expected to be a floating point type. Attempts to detect the actual value size in the source object and considers the rest of the object as padding.
91
91
  template< typename To, typename From >
92
- BOOST_FORCEINLINE BOOST_ATOMIC_DETAIL_CONSTEXPR_BITWISE_CAST To bitwise_fp_cast(From const& from) BOOST_NOEXCEPT
92
+ BOOST_FORCEINLINE BOOST_ATOMIC_DETAIL_CONSTEXPR_BITWISE_CAST To bitwise_fp_cast(From const& from) noexcept
93
93
  {
94
94
  // For floating point types, has_unique_object_representations is typically false even if the type contains no padding bits.
95
95
  // Here, we rely on our detection of the actual value size to select constexpr bit_cast implementation when possible. We assume
96
96
  // here that floating point value bits are contiguous.
97
- return atomics::detail::bitwise_cast_impl< To, BOOST_ATOMIC_DETAIL_BITWISE_FP_CAST_VALUE_SIZE_OF(From) >(from, atomics::detail::integral_constant< bool,
97
+ return atomics::detail::bitwise_cast_impl< To, BOOST_ATOMIC_DETAIL_BITWISE_FP_CAST_VALUE_SIZE_OF(From) >(from, std::integral_constant< bool,
98
98
  atomics::detail::value_size_of< From >::value == sizeof(From) && atomics::detail::value_size_of< From >::value == sizeof(To) >());
99
99
  }
100
100
 
@@ -102,7 +102,7 @@ BOOST_FORCEINLINE BOOST_ATOMIC_DETAIL_CONSTEXPR_BITWISE_CAST To bitwise_fp_cast(
102
102
 
103
103
  //! Similar to bitwise_cast, but either \c From or \c To is expected to be a floating point type. Attempts to detect the actual value size in the source object and considers the rest of the object as padding.
104
104
  template< typename To, typename From >
105
- BOOST_FORCEINLINE BOOST_ATOMIC_DETAIL_CONSTEXPR_BITWISE_CAST To bitwise_fp_cast(From const& from) BOOST_NOEXCEPT
105
+ BOOST_FORCEINLINE BOOST_ATOMIC_DETAIL_CONSTEXPR_BITWISE_CAST To bitwise_fp_cast(From const& from) noexcept
106
106
  {
107
107
  return atomics::detail::bitwise_cast< To, BOOST_ATOMIC_DETAIL_BITWISE_FP_CAST_VALUE_SIZE_OF(From) >(from);
108
108
  }
@@ -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) 2014 Andrey Semashev
6
+ * Copyright (c) 2014-2025 Andrey Semashev
7
7
  */
8
8
  /*!
9
9
  * \file atomic/detail/cas_based_exchange.hpp
@@ -30,9 +30,9 @@ template< typename Base >
30
30
  struct cas_based_exchange :
31
31
  public Base
32
32
  {
33
- typedef typename Base::storage_type storage_type;
33
+ using storage_type = typename Base::storage_type;
34
34
 
35
- static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
35
+ static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) noexcept
36
36
  {
37
37
  storage_type old_val;
38
38
  atomics::detail::non_atomic_load(storage, old_val);
@@ -0,0 +1,93 @@
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/detail/chrono.hpp
10
+ *
11
+ * This header contains \c std::chrono utilities.
12
+ */
13
+
14
+ #ifndef BOOST_ATOMIC_DETAIL_CHRONO_HPP_INCLUDED_
15
+ #define BOOST_ATOMIC_DETAIL_CHRONO_HPP_INCLUDED_
16
+
17
+ #include <time.h>
18
+ #include <chrono>
19
+ #if !defined(__cpp_lib_chrono) || (__cpp_lib_chrono < 201510l)
20
+ #include <ratio>
21
+ #include <type_traits>
22
+ #endif // !defined(__cpp_lib_chrono) || (__cpp_lib_chrono < 201510l)
23
+ #if defined(CLOCK_REALTIME)
24
+ #include <boost/atomic/posix_clock_traits_fwd.hpp>
25
+ #endif // defined(CLOCK_REALTIME)
26
+ #include <boost/atomic/detail/config.hpp>
27
+ #include <boost/atomic/detail/header.hpp>
28
+
29
+ #ifdef BOOST_HAS_PRAGMA_ONCE
30
+ #pragma once
31
+ #endif
32
+
33
+ namespace boost {
34
+ namespace atomics {
35
+ namespace detail {
36
+ namespace chrono {
37
+
38
+ #if defined(__cpp_lib_chrono) && (__cpp_lib_chrono >= 201510l)
39
+
40
+ using std::chrono::ceil;
41
+
42
+ #else // defined(__cpp_lib_chrono) && (__cpp_lib_chrono >= 201510l)
43
+
44
+ template< typename To, typename Rep, typename Period >
45
+ inline constexpr To ceil(std::chrono::duration< Rep, Period > from) noexcept
46
+ {
47
+ using conv_ratio = std::ratio_divide< Period, typename To::period >;
48
+ using common_rep = typename std::common_type< Rep, typename To::rep, decltype(conv_ratio::num) >::type;
49
+ return To(static_cast< typename To::rep >((static_cast< common_rep >(from.count()) * conv_ratio::num) / conv_ratio::den +
50
+ static_cast< common_rep >(((static_cast< common_rep >(from.count()) * conv_ratio::num) % conv_ratio::den) != static_cast< common_rep >(0))));
51
+ }
52
+
53
+ #endif // defined(__cpp_lib_chrono) && (__cpp_lib_chrono >= 201510l)
54
+
55
+ } // namespace chrono
56
+ } // namespace detail
57
+
58
+ #if defined(CLOCK_REALTIME)
59
+
60
+ //! Integrate `std::chrono::system_clock` with POSIX clocks
61
+ template< >
62
+ struct posix_clock_traits< std::chrono::system_clock >
63
+ {
64
+ //! POSIX clock identifier
65
+ static constexpr clockid_t clock_id = CLOCK_REALTIME;
66
+
67
+ //! Function that converts a time point to a timespec structure
68
+ static timespec to_timespec(std::chrono::system_clock::time_point time_point) noexcept
69
+ {
70
+ timespec ts{};
71
+ std::chrono::nanoseconds::rep time_ns = std::chrono::duration_cast< std::chrono::nanoseconds >(time_point.time_since_epoch()).count();
72
+ // Note: The standard doesn't require that std::chrono::system_clock epoch matches the POSIX CLOCK_REALTIME epoch. Also, std::chrono::system_clock::to_time_t
73
+ // is allowed to round or truncate the time point when converting to time_t resolution, which means to_time_t may return a time before or after time_point.
74
+ ts.tv_sec = std::chrono::system_clock::to_time_t(std::chrono::system_clock::time_point()) + static_cast< decltype(ts.tv_sec) >(time_ns / 1000000000);
75
+ time_ns %= 1000000000;
76
+ if (BOOST_UNLIKELY(time_ns < 0))
77
+ {
78
+ --ts.tv_sec;
79
+ time_ns += 1000000000;
80
+ }
81
+ ts.tv_nsec = static_cast< decltype(ts.tv_nsec) >(time_ns);
82
+ return ts;
83
+ }
84
+ };
85
+
86
+ #endif // defined(CLOCK_REALTIME)
87
+
88
+ } // namespace atomics
89
+ } // namespace boost
90
+
91
+ #include <boost/atomic/detail/footer.hpp>
92
+
93
+ #endif // BOOST_ATOMIC_DETAIL_CHRONO_HPP_INCLUDED_
@@ -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-2021 Andrey Semashev
6
+ * Copyright (c) 2020-2025 Andrey Semashev
7
7
  */
8
8
  /*!
9
9
  * \file atomic/detail/classify.hpp
@@ -14,10 +14,9 @@
14
14
  #ifndef BOOST_ATOMIC_DETAIL_CLASSIFY_HPP_INCLUDED_
15
15
  #define BOOST_ATOMIC_DETAIL_CLASSIFY_HPP_INCLUDED_
16
16
 
17
+ #include <type_traits>
17
18
  #include <boost/atomic/detail/config.hpp>
18
- #include <boost/atomic/detail/type_traits/is_enum.hpp>
19
19
  #include <boost/atomic/detail/type_traits/is_integral.hpp>
20
- #include <boost/atomic/detail/type_traits/is_function.hpp>
21
20
  #include <boost/atomic/detail/type_traits/is_floating_point.hpp>
22
21
  #include <boost/atomic/detail/header.hpp>
23
22
 
@@ -29,57 +28,57 @@ namespace boost {
29
28
  namespace atomics {
30
29
  namespace detail {
31
30
 
32
- template< typename T, bool IsFunction = atomics::detail::is_function< T >::value >
31
+ template< typename T, bool IsFunction = std::is_function< T >::value >
33
32
  struct classify_pointer
34
33
  {
35
- typedef void* type;
34
+ using type = void*;
36
35
  };
37
36
 
38
37
  template< typename T >
39
38
  struct classify_pointer< T, true >
40
39
  {
41
- typedef void type;
40
+ using type = void;
42
41
  };
43
42
 
44
43
  template<
45
44
  typename T,
46
45
  bool IsInt = atomics::detail::is_integral< T >::value,
47
46
  bool IsFloat = atomics::detail::is_floating_point< T >::value,
48
- bool IsEnum = atomics::detail::is_enum< T >::value
47
+ bool IsEnum = std::is_enum< T >::value
49
48
  >
50
49
  struct classify
51
50
  {
52
- typedef void type;
51
+ using type = void;
53
52
  };
54
53
 
55
54
  template< typename T >
56
- struct classify< T, true, false, false > { typedef int type; };
55
+ struct classify< T, true, false, false > { using type = int; };
57
56
 
58
57
  #if !defined(BOOST_ATOMIC_NO_FLOATING_POINT)
59
58
  template< typename T >
60
- struct classify< T, false, true, false > { typedef float type; };
59
+ struct classify< T, false, true, false > { using type = float; };
61
60
  #endif
62
61
 
63
62
  template< typename T >
64
- struct classify< T, false, false, true > { typedef const int type; };
63
+ struct classify< T, false, false, true > { using type = const int; };
65
64
 
66
65
  template< typename T >
67
- struct classify< T*, false, false, false > { typedef typename classify_pointer< T >::type type; };
66
+ struct classify< T*, false, false, false > { using type = typename classify_pointer< T >::type; };
68
67
 
69
68
  template< >
70
- struct classify< void*, false, false, false > { typedef void type; };
69
+ struct classify< void*, false, false, false > { using type = void; };
71
70
 
72
71
  template< >
73
- struct classify< const void*, false, false, false > { typedef void type; };
72
+ struct classify< const void*, false, false, false > { using type = void; };
74
73
 
75
74
  template< >
76
- struct classify< volatile void*, false, false, false > { typedef void type; };
75
+ struct classify< volatile void*, false, false, false > { using type = void; };
77
76
 
78
77
  template< >
79
- struct classify< const volatile void*, false, false, false > { typedef void type; };
78
+ struct classify< const volatile void*, false, false, false > { using type = void; };
80
79
 
81
80
  template< typename T, typename U >
82
- struct classify< T U::*, false, false, false > { typedef void type; };
81
+ struct classify< T U::*, false, false, false > { using type = void; };
83
82
 
84
83
  } // namespace detail
85
84
  } // namespace atomics
@@ -4,7 +4,7 @@
4
4
  * http://www.boost.org/LICENSE_1_0.txt)
5
5
  *
6
6
  * Copyright (c) 2012 Hartmut Kaiser
7
- * Copyright (c) 2014-2018, 2020-2021 Andrey Semashev
7
+ * Copyright (c) 2014-2018, 2020-2025 Andrey Semashev
8
8
  */
9
9
  /*!
10
10
  * \file atomic/detail/config.hpp
@@ -21,6 +21,29 @@
21
21
  #pragma once
22
22
  #endif
23
23
 
24
+ #if defined(__SANITIZE_THREAD__)
25
+ #define BOOST_ATOMIC_DETAIL_TSAN
26
+ #elif defined(__has_feature)
27
+ #if __has_feature(thread_sanitizer)
28
+ #define BOOST_ATOMIC_DETAIL_TSAN
29
+ #endif
30
+ #endif
31
+
32
+ // Instrumentation macros to make TSan aware of the memory order semantics of asm blocks
33
+ #if defined(BOOST_ATOMIC_DETAIL_TSAN)
34
+ extern "C" {
35
+ void __tsan_acquire(void*);
36
+ void __tsan_release(void*);
37
+ } // extern "C"
38
+ #define BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(ptr, mo) \
39
+ { if ((static_cast< unsigned int >(mo) & static_cast< unsigned int >(memory_order_acquire)) != 0u) __tsan_acquire((void*)(ptr)); }
40
+ #define BOOST_ATOMIC_DETAIL_TSAN_RELEASE(ptr, mo) \
41
+ { if ((static_cast< unsigned int >(mo) & static_cast< unsigned int >(memory_order_release)) != 0u) __tsan_release((void*)(ptr)); }
42
+ #else // defined(BOOST_ATOMIC_DETAIL_TSAN)
43
+ #define BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(ptr, mo)
44
+ #define BOOST_ATOMIC_DETAIL_TSAN_RELEASE(ptr, mo)
45
+ #endif // defined(BOOST_ATOMIC_DETAIL_TSAN)
46
+
24
47
  #if defined(__CUDACC__)
25
48
  // nvcc does not support alternatives ("q,m") in asm statement constraints
26
49
  #define BOOST_ATOMIC_DETAIL_NO_ASM_CONSTRAINT_ALTERNATIVES
@@ -47,13 +70,6 @@
47
70
  #define BOOST_ATOMIC_DETAIL_X86_ASM_PRESERVE_EBX
48
71
  #endif
49
72
 
50
- #if defined(BOOST_NO_CXX11_HDR_TYPE_TRAITS)
51
- #if !(defined(BOOST_LIBSTDCXX11) && BOOST_LIBSTDCXX_VERSION >= 40700) /* libstdc++ from gcc >= 4.7 in C++11 mode */
52
- // This macro indicates that there is not even a basic <type_traits> standard header that is sufficient for most Boost.Atomic needs.
53
- #define BOOST_ATOMIC_DETAIL_NO_CXX11_BASIC_HDR_TYPE_TRAITS
54
- #endif
55
- #endif // defined(BOOST_NO_CXX11_HDR_TYPE_TRAITS)
56
-
57
73
  #if defined(BOOST_NO_CXX11_ALIGNAS) ||\
58
74
  (defined(BOOST_GCC) && BOOST_GCC < 40900) ||\
59
75
  (defined(BOOST_MSVC) && BOOST_MSVC < 1910 && defined(_M_IX86))
@@ -63,18 +79,6 @@
63
79
  #define BOOST_ATOMIC_DETAIL_NO_CXX11_ALIGNAS
64
80
  #endif
65
81
 
66
- #if defined(BOOST_NO_CXX11_CONSTEXPR) || (defined(BOOST_GCC) && BOOST_GCC < 40800)
67
- // This macro indicates that the compiler doesn't support constexpr constructors that initialize one member
68
- // of an anonymous union member of the class.
69
- #define BOOST_ATOMIC_DETAIL_NO_CXX11_CONSTEXPR_UNION_INIT
70
- #endif
71
-
72
- #if !defined(BOOST_ATOMIC_DETAIL_NO_CXX11_CONSTEXPR_UNION_INIT)
73
- #define BOOST_ATOMIC_DETAIL_CONSTEXPR_UNION_INIT BOOST_CONSTEXPR
74
- #else
75
- #define BOOST_ATOMIC_DETAIL_CONSTEXPR_UNION_INIT
76
- #endif
77
-
78
82
  // Enable pointer/reference casts between storage and value when possible.
79
83
  // Note: Despite that MSVC does not employ strict aliasing rules for optimizations
80
84
  // and does not require an explicit markup for types that may alias, we still don't
@@ -91,19 +95,6 @@
91
95
  #define BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS
92
96
  #endif
93
97
 
94
- #if defined(BOOST_INTEL) || (defined(BOOST_GCC) && BOOST_GCC < 40700) ||\
95
- (defined(BOOST_CLANG) && !defined(__apple_build_version__) && (__clang_major__ * 100 + __clang_minor__) < 302) ||\
96
- (defined(__clang__) && defined(__apple_build_version__) && (__clang_major__ * 100 + __clang_minor__) < 402)
97
- // Intel compiler (at least 18.0 update 1) breaks if noexcept specification is used in defaulted function declarations:
98
- // error: the default constructor of "boost::atomics::atomic<T>" cannot be referenced -- it is a deleted function
99
- // GCC 4.6 doesn't seem to support that either. Clang 3.1 deduces wrong noexcept for the defaulted function and fails as well.
100
- #define BOOST_ATOMIC_DETAIL_DEF_NOEXCEPT_DECL
101
- #define BOOST_ATOMIC_DETAIL_DEF_NOEXCEPT_IMPL BOOST_NOEXCEPT
102
- #else
103
- #define BOOST_ATOMIC_DETAIL_DEF_NOEXCEPT_DECL BOOST_NOEXCEPT
104
- #define BOOST_ATOMIC_DETAIL_DEF_NOEXCEPT_IMPL
105
- #endif
106
-
107
98
  #if defined(__has_builtin)
108
99
  #if __has_builtin(__builtin_constant_p)
109
100
  #define BOOST_ATOMIC_DETAIL_IS_CONSTANT(x) __builtin_constant_p(x)
@@ -135,7 +126,7 @@
135
126
  #endif
136
127
 
137
128
  #if (defined(__BYTE_ORDER__) && defined(__FLOAT_WORD_ORDER__) && __BYTE_ORDER__ == __FLOAT_WORD_ORDER__) ||\
138
- defined(__i386__) || defined(__x86_64__) || defined(_M_IX86) || defined(_M_X64)
129
+ defined(__i386__) || defined(__x86_64__) || defined(_M_IX86) || defined(_M_AMD64) || defined(_M_ARM) || defined(_M_ARM64) || defined(_M_ARM64EC)
139
130
  // This macro indicates that integer and floating point endianness is the same
140
131
  #define BOOST_ATOMIC_DETAIL_INT_FP_ENDIAN_MATCH
141
132
  #endif