passenger 6.0.23 → 6.0.24

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.

Potentially problematic release.


This version of passenger might be problematic. Click here for more details.

Files changed (305) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +26 -1
  3. data/Rakefile +7 -3
  4. data/bin/passenger-install-apache2-module +5 -0
  5. data/bin/passenger-install-nginx-module +17 -2
  6. data/build/apache2.rb +1 -1
  7. data/build/basics.rb +10 -4
  8. data/build/cxx_tests.rb +18 -7
  9. data/build/support/cxx_dependency_map.rb +40 -6
  10. data/build/test_basics.rb +4 -12
  11. data/package.json +1 -1
  12. data/passenger.gemspec +1 -1
  13. data/src/agent/Core/ApplicationPool/Group/InitializationAndShutdown.cpp +8 -0
  14. data/src/agent/Core/ApplicationPool/Group/InternalUtils.cpp +10 -2
  15. data/src/agent/Core/ApplicationPool/Group/LifetimeAndBasics.cpp +8 -0
  16. data/src/agent/Core/ApplicationPool/Group/Miscellaneous.cpp +9 -0
  17. data/src/agent/Core/ApplicationPool/Group/OutOfBandWork.cpp +9 -0
  18. data/src/agent/Core/ApplicationPool/Group/ProcessListManagement.cpp +63 -50
  19. data/src/agent/Core/ApplicationPool/Group/SessionManagement.cpp +19 -9
  20. data/src/agent/Core/ApplicationPool/Group/SpawningAndRestarting.cpp +8 -0
  21. data/src/agent/Core/ApplicationPool/Group/StateInspection.cpp +8 -0
  22. data/src/agent/Core/ApplicationPool/Group/Verification.cpp +8 -0
  23. data/src/agent/Core/ApplicationPool/Group.h +15 -5
  24. data/src/agent/Core/ApplicationPool/Pool/AnalyticsCollection.cpp +5 -0
  25. data/src/agent/Core/ApplicationPool/Pool/GarbageCollection.cpp +5 -0
  26. data/src/agent/Core/ApplicationPool/Pool/GeneralUtils.cpp +5 -0
  27. data/src/agent/Core/ApplicationPool/Pool/GroupUtils.cpp +5 -0
  28. data/src/agent/Core/ApplicationPool/Pool/InitializationAndShutdown.cpp +5 -0
  29. data/src/agent/Core/ApplicationPool/Pool/Miscellaneous.cpp +5 -0
  30. data/src/agent/Core/ApplicationPool/Pool/ProcessUtils.cpp +5 -0
  31. data/src/agent/Core/ApplicationPool/Pool/StateInspection.cpp +11 -1
  32. data/src/agent/Core/ApplicationPool/Pool.h +0 -2
  33. data/src/agent/Core/ApplicationPool/Process.h +22 -6
  34. data/src/agent/Core/ApplicationPool/Session.h +6 -1
  35. data/src/agent/Core/Config.h +7 -3
  36. data/src/agent/Core/Controller/Config.h +1 -1
  37. data/src/agent/Core/CoreMain.cpp +10 -17
  38. data/src/agent/Core/SpawningKit/Handshake/Prepare.h +1 -53
  39. data/src/agent/Core/SpawningKit/Handshake/Session.h +3 -0
  40. data/src/agent/Core/SpawningKit/Handshake/WorkDir.h +5 -2
  41. data/src/agent/Core/SpawningKit/SmartSpawner.h +6 -2
  42. data/src/agent/Core/SpawningKit/Spawner.h +4 -0
  43. data/src/agent/Shared/Fundamentals/AbortHandler.cpp +88 -9
  44. data/src/agent/Shared/Fundamentals/AbortHandler.h +2 -0
  45. data/src/agent/Shared/Fundamentals/Initialization.cpp +9 -3
  46. data/src/agent/Shared/Fundamentals/Initialization.h +3 -3
  47. data/src/agent/SpawnEnvSetupper/SpawnEnvSetupperMain.cpp +6 -7
  48. data/src/agent/Watchdog/Config.h +1 -1
  49. data/src/agent/Watchdog/WatchdogMain.cpp +4 -7
  50. data/src/apache2_module/ConfigGeneral/ManifestGeneration.h +5 -3
  51. data/src/apache2_module/DirConfig/AutoGeneratedStruct.h +3 -0
  52. data/src/apache2_module/DirConfig/AutoGeneratedStruct.h.cxxcodebuilder +3 -0
  53. data/src/apache2_module/ServerConfig/AutoGeneratedStruct.h +2 -1
  54. data/src/apache2_module/ServerConfig/AutoGeneratedStruct.h.cxxcodebuilder +2 -1
  55. data/src/cxx_supportlib/Constants.h +1 -1
  56. data/src/cxx_supportlib/DataStructures/StringMap.h +0 -1
  57. data/src/cxx_supportlib/FileTools/PathManip.cpp +1 -1
  58. data/src/cxx_supportlib/SafeLibev.h +1 -3
  59. data/src/cxx_supportlib/ServerKit/Hooks.h +2 -2
  60. data/src/cxx_supportlib/ServerKit/HttpHeaderParser.h +0 -1
  61. data/src/cxx_supportlib/ServerKit/HttpServer.h +15 -10
  62. data/src/cxx_supportlib/ServerKit/Server.h +0 -6
  63. data/src/cxx_supportlib/Utils/AsyncSignalSafeUtils.h +2 -0
  64. data/src/cxx_supportlib/Utils/SpeedMeter.h +0 -3
  65. data/src/cxx_supportlib/oxt/implementation.cpp +11 -0
  66. data/src/cxx_supportlib/oxt/system_calls.cpp +10 -3
  67. data/src/cxx_supportlib/oxt/thread.hpp +1 -1
  68. data/src/cxx_supportlib/vendor-modified/boost/asio/as_tuple.hpp +35 -9
  69. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_immediate_executor.hpp +3 -2
  70. data/src/cxx_supportlib/vendor-modified/boost/asio/associator.hpp +1 -1
  71. data/src/cxx_supportlib/vendor-modified/boost/asio/async_result.hpp +74 -68
  72. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_datagram_socket.hpp +11 -11
  73. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_deadline_timer.hpp +2 -2
  74. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_random_access_file.hpp +2 -2
  75. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_raw_socket.hpp +10 -10
  76. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_readable_pipe.hpp +1 -1
  77. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_seq_packet_socket.hpp +3 -3
  78. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_serial_port.hpp +2 -2
  79. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_signal_set.hpp +1 -1
  80. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket.hpp +2 -2
  81. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_acceptor.hpp +9 -9
  82. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_file.hpp +2 -2
  83. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_socket.hpp +6 -6
  84. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_waitable_timer.hpp +2 -2
  85. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_writable_pipe.hpp +1 -1
  86. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_allocator.hpp +88 -22
  87. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_cancellation_slot.hpp +91 -22
  88. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_executor.hpp +105 -23
  89. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_immediate_executor.hpp +90 -23
  90. data/src/cxx_supportlib/vendor-modified/boost/asio/buffer.hpp +2 -2
  91. data/src/cxx_supportlib/vendor-modified/boost/asio/buffer_registration.hpp +1 -1
  92. data/src/cxx_supportlib/vendor-modified/boost/asio/cancel_after.hpp +303 -0
  93. data/src/cxx_supportlib/vendor-modified/boost/asio/cancel_at.hpp +296 -0
  94. data/src/cxx_supportlib/vendor-modified/boost/asio/{experimental/impl/co_composed.hpp → co_composed.hpp} +208 -61
  95. data/src/cxx_supportlib/vendor-modified/boost/asio/completion_condition.hpp +49 -0
  96. data/src/cxx_supportlib/vendor-modified/boost/asio/compose.hpp +10 -201
  97. data/src/cxx_supportlib/vendor-modified/boost/asio/composed.hpp +415 -0
  98. data/src/cxx_supportlib/vendor-modified/boost/asio/connect.hpp +214 -48
  99. data/src/cxx_supportlib/vendor-modified/boost/asio/coroutine.hpp +3 -4
  100. data/src/cxx_supportlib/vendor-modified/boost/asio/default_completion_token.hpp +91 -0
  101. data/src/cxx_supportlib/vendor-modified/boost/asio/deferred.hpp +9 -5
  102. data/src/cxx_supportlib/vendor-modified/boost/asio/detached.hpp +2 -2
  103. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffered_stream_storage.hpp +1 -1
  104. data/src/cxx_supportlib/vendor-modified/boost/asio/{experimental/detail/channel_message.hpp → detail/completion_message.hpp} +14 -16
  105. data/src/cxx_supportlib/vendor-modified/boost/asio/{experimental/detail/channel_payload.hpp → detail/completion_payload.hpp} +30 -32
  106. data/src/cxx_supportlib/vendor-modified/boost/asio/{experimental/detail/channel_handler.hpp → detail/completion_payload_handler.hpp} +15 -13
  107. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/config.hpp +26 -32
  108. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/deadline_timer_service.hpp +5 -1
  109. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_alloc_helpers.hpp +14 -118
  110. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/descriptor_ops.ipp +36 -33
  111. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.ipp +1 -1
  112. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_descriptor_service.ipp +7 -5
  113. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_socket_service_base.ipp +6 -4
  114. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_ops.ipp +44 -35
  115. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_select_interrupter.ipp +1 -1
  116. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/initiation_base.hpp +64 -0
  117. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/memory.hpp +0 -11
  118. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_descriptor_service.hpp +20 -16
  119. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_send_op.hpp +0 -1
  120. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service.hpp +4 -4
  121. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service_base.hpp +23 -18
  122. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/recycling_allocator.hpp +9 -0
  123. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_endpoint_op.hpp +1 -1
  124. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_query_op.hpp +1 -1
  125. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_info_base.hpp +11 -1
  126. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timed_cancel_op.hpp +363 -0
  127. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wrapped_handler.hpp +29 -51
  128. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/allocator.hpp +1 -1
  129. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking.hpp +1 -1
  130. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking_adaptation.hpp +1 -1
  131. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/context.hpp +1 -1
  132. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/mapping.hpp +1 -1
  133. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/occupancy.hpp +1 -1
  134. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/outstanding_work.hpp +1 -1
  135. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/relationship.hpp +1 -1
  136. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/basic_channel.hpp +2 -1
  137. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/basic_concurrent_channel.hpp +2 -1
  138. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/co_composed.hpp +2 -114
  139. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_receive_op.hpp +2 -3
  140. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_send_functions.hpp +27 -19
  141. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_send_op.hpp +0 -1
  142. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_service.hpp +17 -15
  143. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/coro_promise_allocator.hpp +2 -3
  144. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/impl/channel_service.hpp +4 -2
  145. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/partial_promise.hpp +3 -5
  146. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/as_single.hpp +12 -7
  147. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/coro.hpp +1 -1
  148. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/parallel_group.hpp +38 -40
  149. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/promise.hpp +3 -3
  150. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/use_coro.hpp +5 -5
  151. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/use_promise.hpp +1 -1
  152. data/src/cxx_supportlib/vendor-modified/boost/asio/immediate.hpp +144 -0
  153. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/append.hpp +14 -7
  154. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/as_tuple.hpp +45 -14
  155. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/awaitable.hpp +3 -3
  156. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/cancel_after.hpp +270 -0
  157. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/cancel_at.hpp +270 -0
  158. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/co_spawn.hpp +8 -0
  159. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/connect.hpp +60 -166
  160. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/consign.hpp +14 -7
  161. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/detached.hpp +2 -2
  162. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/prepend.hpp +14 -7
  163. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read.hpp +26 -177
  164. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_at.hpp +16 -82
  165. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_until.hpp +13 -286
  166. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/redirect_error.hpp +55 -18
  167. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/spawn.hpp +1 -1
  168. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write.hpp +26 -185
  169. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write_at.hpp +16 -87
  170. data/src/cxx_supportlib/vendor-modified/boost/asio/io_context_strand.hpp +5 -5
  171. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver.hpp +6 -6
  172. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/socket_option.hpp +1 -1
  173. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v6.ipp +1 -1
  174. data/src/cxx_supportlib/vendor-modified/boost/asio/placeholders.hpp +12 -6
  175. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_descriptor.hpp +1 -1
  176. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_stream_descriptor.hpp +2 -2
  177. data/src/cxx_supportlib/vendor-modified/boost/asio/read.hpp +127 -28
  178. data/src/cxx_supportlib/vendor-modified/boost/asio/read_at.hpp +70 -20
  179. data/src/cxx_supportlib/vendor-modified/boost/asio/read_until.hpp +114 -36
  180. data/src/cxx_supportlib/vendor-modified/boost/asio/redirect_error.hpp +43 -3
  181. data/src/cxx_supportlib/vendor-modified/boost/asio/registered_buffer.hpp +2 -2
  182. data/src/cxx_supportlib/vendor-modified/boost/asio/spawn.hpp +0 -1
  183. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/openssl_init.ipp +2 -2
  184. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.ipp +10 -7
  185. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream.hpp +5 -5
  186. data/src/cxx_supportlib/vendor-modified/boost/asio/this_coro.hpp +2 -2
  187. data/src/cxx_supportlib/vendor-modified/boost/asio/use_awaitable.hpp +2 -2
  188. data/src/cxx_supportlib/vendor-modified/boost/asio/use_future.hpp +1 -1
  189. data/src/cxx_supportlib/vendor-modified/boost/asio/uses_executor.hpp +1 -1
  190. data/src/cxx_supportlib/vendor-modified/boost/asio/version.hpp +1 -1
  191. data/src/cxx_supportlib/vendor-modified/boost/asio/write.hpp +147 -35
  192. data/src/cxx_supportlib/vendor-modified/boost/asio/write_at.hpp +74 -22
  193. data/src/cxx_supportlib/vendor-modified/boost/asio.hpp +6 -0
  194. data/src/cxx_supportlib/vendor-modified/boost/assert/source_location.hpp +4 -1
  195. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/futex.hpp +42 -11
  196. data/src/cxx_supportlib/vendor-modified/boost/bind/bind.hpp +15 -37
  197. data/src/cxx_supportlib/vendor-modified/boost/container/adaptive_pool.hpp +8 -8
  198. data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +1 -1
  199. data/src/cxx_supportlib/vendor-modified/boost/container/allocator_traits.hpp +151 -10
  200. data/src/cxx_supportlib/vendor-modified/boost/container/container_fwd.hpp +11 -9
  201. data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +611 -102
  202. data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool.hpp +1 -1
  203. data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool_impl.hpp +47 -47
  204. data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +25 -24
  205. data/src/cxx_supportlib/vendor-modified/boost/container/detail/allocation_type.hpp +7 -7
  206. data/src/cxx_supportlib/vendor-modified/boost/container/detail/block_list.hpp +2 -2
  207. data/src/cxx_supportlib/vendor-modified/boost/container/detail/block_slist.hpp +2 -2
  208. data/src/cxx_supportlib/vendor-modified/boost/container/detail/construct_in_place.hpp +35 -1
  209. data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +14 -14
  210. data/src/cxx_supportlib/vendor-modified/boost/container/detail/dispatch_uses_allocator.hpp +1 -1
  211. data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +55 -23
  212. data/src/cxx_supportlib/vendor-modified/boost/container/detail/function_detector.hpp +1 -1
  213. data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_container.hpp +2 -2
  214. data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_contiguous_container.hpp +1 -1
  215. data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_pair.hpp +4 -4
  216. data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterators.hpp +8 -8
  217. data/src/cxx_supportlib/vendor-modified/boost/container/detail/math_functions.hpp +9 -9
  218. data/src/cxx_supportlib/vendor-modified/boost/container/detail/mpl.hpp +4 -4
  219. data/src/cxx_supportlib/vendor-modified/boost/container/detail/multiallocation_chain.hpp +96 -10
  220. data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_alloc_holder.hpp +19 -4
  221. data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool.hpp +1 -1
  222. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair.hpp +17 -17
  223. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_common.hpp +1 -1
  224. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_common_alloc.hpp +2 -2
  225. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_resource.hpp +4 -4
  226. data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +86 -52
  227. data/src/cxx_supportlib/vendor-modified/boost/container/detail/version_type.hpp +4 -4
  228. data/src/cxx_supportlib/vendor-modified/boost/container/detail/workaround.hpp +12 -0
  229. data/src/cxx_supportlib/vendor-modified/boost/container/devector.hpp +145 -65
  230. data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +105 -22
  231. data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +2 -2
  232. data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +30 -22
  233. data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +19 -2
  234. data/src/cxx_supportlib/vendor-modified/boost/container/new_allocator.hpp +1 -1
  235. data/src/cxx_supportlib/vendor-modified/boost/container/node_allocator.hpp +15 -8
  236. data/src/cxx_supportlib/vendor-modified/boost/container/node_handle.hpp +6 -5
  237. data/src/cxx_supportlib/vendor-modified/boost/container/options.hpp +15 -15
  238. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/memory_resource.hpp +1 -1
  239. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/monotonic_buffer_resource.hpp +1 -1
  240. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/resource_adaptor.hpp +3 -3
  241. data/src/cxx_supportlib/vendor-modified/boost/container/scoped_allocator.hpp +1 -1
  242. data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +2 -2
  243. data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +31 -24
  244. data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +45 -43
  245. data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +45 -33
  246. data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +5 -7
  247. data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +55 -47
  248. data/src/cxx_supportlib/vendor-modified/boost/container/uses_allocator.hpp +3 -3
  249. data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +222 -73
  250. data/src/cxx_supportlib/vendor-modified/boost/core/detail/minstd_rand.hpp +58 -0
  251. data/src/cxx_supportlib/vendor-modified/boost/core/detail/string_view.hpp +13 -13
  252. data/src/cxx_supportlib/vendor-modified/boost/core/empty_value.hpp +53 -5
  253. data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test.hpp +1 -0
  254. data/src/cxx_supportlib/vendor-modified/boost/core/pointer_in_range.hpp +49 -0
  255. data/src/cxx_supportlib/vendor-modified/boost/core/span.hpp +2 -0
  256. data/src/cxx_supportlib/vendor-modified/boost/core/type_name.hpp +7 -2
  257. data/src/cxx_supportlib/vendor-modified/boost/function/function_base.hpp +22 -34
  258. data/src/cxx_supportlib/vendor-modified/boost/function/function_template.hpp +141 -38
  259. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/algorithm.hpp +8 -8
  260. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hash.hpp +1 -1
  261. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hook_traits.hpp +8 -6
  262. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_traits.hpp +18 -18
  263. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +22 -17
  264. data/src/cxx_supportlib/vendor-modified/boost/libs/random/src/random_device.cpp +3 -1
  265. data/src/cxx_supportlib/vendor-modified/boost/move/detail/config_begin.hpp +0 -1
  266. data/src/cxx_supportlib/vendor-modified/boost/move/detail/launder.hpp +53 -0
  267. data/src/cxx_supportlib/vendor-modified/boost/move/detail/type_traits.hpp +9 -1
  268. data/src/cxx_supportlib/vendor-modified/boost/move/detail/workaround.hpp +6 -1
  269. data/src/cxx_supportlib/vendor-modified/boost/mp11/version.hpp +1 -1
  270. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/integral_wrapper.hpp +2 -1
  271. data/src/cxx_supportlib/vendor-modified/boost/predef/version.h +1 -1
  272. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/requires_cxx11.hpp +1 -1
  273. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_has_gcc_intrinsics.hpp +4 -1
  274. data/src/cxx_supportlib/vendor-modified/boost/system/detail/generic_category_message.hpp +13 -1
  275. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_map.hpp +13 -1
  276. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_map_fwd.hpp +15 -0
  277. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_set.hpp +13 -1
  278. data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_set_fwd.hpp +15 -0
  279. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/fca.hpp +22 -6
  280. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/concurrent_table.hpp +38 -10
  281. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/core.hpp +111 -2
  282. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/cumulative_stats.hpp +177 -0
  283. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/table.hpp +11 -1
  284. data/src/cxx_supportlib/vendor-modified/boost/unordered/hash_traits.hpp +33 -7
  285. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map.hpp +12 -0
  286. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map_fwd.hpp +15 -0
  287. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set.hpp +12 -0
  288. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set_fwd.hpp +14 -0
  289. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map_fwd.hpp +19 -0
  290. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_map.hpp +12 -0
  291. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_map_fwd.hpp +15 -0
  292. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_set.hpp +12 -0
  293. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_set_fwd.hpp +14 -0
  294. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set_fwd.hpp +17 -0
  295. data/src/cxx_supportlib/vendor-modified/boost/utility/detail/minstd_rand.hpp +1 -43
  296. data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
  297. data/src/ruby_supportlib/phusion_passenger/config/compile_nginx_engine_command.rb +6 -2
  298. data/src/ruby_supportlib/phusion_passenger/config/install_standalone_runtime_command.rb +10 -0
  299. data/src/ruby_supportlib/phusion_passenger/config/nginx_engine_compiler.rb +12 -4
  300. data/src/ruby_supportlib/phusion_passenger/platform_info/compiler.rb +32 -5
  301. data/src/ruby_supportlib/phusion_passenger/standalone/start_command.rb +0 -4
  302. data/src/ruby_supportlib/phusion_passenger/utils/json.rb +5 -1
  303. data/src/ruby_supportlib/phusion_passenger/utils.rb +5 -15
  304. data/src/ruby_supportlib/phusion_passenger.rb +5 -5
  305. metadata +21 -8
@@ -76,7 +76,7 @@ class private_adaptive_node_pool
76
76
  private_adaptive_node_pool &operator=(const private_adaptive_node_pool &);
77
77
 
78
78
  public:
79
- static const std::size_t nodes_per_block = NodesPerBlock;
79
+ BOOST_STATIC_CONSTEXPR std::size_t nodes_per_block = NodesPerBlock;
80
80
 
81
81
  //!Constructor. Never throws
82
82
  private_adaptive_node_pool()
@@ -49,10 +49,10 @@ namespace container {
49
49
 
50
50
  namespace adaptive_pool_flag {
51
51
 
52
- static const unsigned int none = 0u;
53
- static const unsigned int align_only = 1u << 0u;
54
- static const unsigned int size_ordered = 1u << 1u;
55
- static const unsigned int address_ordered = 1u << 2u;
52
+ BOOST_CONTAINER_CONSTANT_VAR unsigned int none = 0u;
53
+ BOOST_CONTAINER_CONSTANT_VAR unsigned int align_only = 1u << 0u;
54
+ BOOST_CONTAINER_CONSTANT_VAR unsigned int size_ordered = 1u << 1u;
55
+ BOOST_CONTAINER_CONSTANT_VAR unsigned int address_ordered = 1u << 2u;
56
56
 
57
57
  } //namespace adaptive_pool_flag{
58
58
 
@@ -213,11 +213,11 @@ template<class MultiallocationChain, class VoidPointer, class SizeType, unsigned
213
213
  struct adaptive_pool_types
214
214
  {
215
215
  typedef VoidPointer void_pointer;
216
- static const unsigned ordered = (Flags & (adaptive_pool_flag::size_ordered | adaptive_pool_flag::address_ordered));
216
+ BOOST_STATIC_CONSTEXPR unsigned ordered = (Flags & (adaptive_pool_flag::size_ordered | adaptive_pool_flag::address_ordered));
217
217
  typedef block_container_traits<VoidPointer, SizeType, ordered> block_container_traits_t;
218
218
  typedef typename block_container_traits_t::hook_t hook_t;
219
219
  typedef hdr_offset_holder_t<SizeType> hdr_offset_holder;
220
- static const unsigned int order_flags = Flags & (adaptive_pool_flag::size_ordered | adaptive_pool_flag::address_ordered);
220
+ BOOST_STATIC_CONSTEXPR unsigned int order_flags = Flags & (adaptive_pool_flag::size_ordered | adaptive_pool_flag::address_ordered);
221
221
  typedef MultiallocationChain free_nodes_t;
222
222
 
223
223
  struct block_info_t
@@ -253,11 +253,11 @@ template< std::size_t alignment
253
253
  , std::size_t overhead_percent>
254
254
  struct candidate_power_of_2_ct_helper
255
255
  {
256
- static const std::size_t hdr_subblock_elements_alone = (alignment - hdr_size - payload_per_allocation)/real_node_size;
257
- static const std::size_t hdr_subblock_elements_first = (alignment - hdr_size - payload_per_allocation)/real_node_size;
258
- static const std::size_t elements_per_b_subblock_mid = (alignment - hdr_offset_size)/real_node_size;
259
- static const std::size_t elements_per_b_subblock_end = (alignment - hdr_offset_size - payload_per_allocation)/real_node_size;
260
- static const std::size_t num_b_subblock =
256
+ BOOST_STATIC_CONSTEXPR std::size_t hdr_subblock_elements_alone = (alignment - hdr_size - payload_per_allocation)/real_node_size;
257
+ BOOST_STATIC_CONSTEXPR std::size_t hdr_subblock_elements_first = (alignment - hdr_size - payload_per_allocation)/real_node_size;
258
+ BOOST_STATIC_CONSTEXPR std::size_t elements_per_b_subblock_mid = (alignment - hdr_offset_size)/real_node_size;
259
+ BOOST_STATIC_CONSTEXPR std::size_t elements_per_b_subblock_end = (alignment - hdr_offset_size - payload_per_allocation)/real_node_size;
260
+ BOOST_STATIC_CONSTEXPR std::size_t num_b_subblock =
261
261
  hdr_subblock_elements_alone >= min_elements_per_block
262
262
  ? 0
263
263
  : ( ((hdr_subblock_elements_first + elements_per_b_subblock_end) >= min_elements_per_block)
@@ -266,18 +266,18 @@ struct candidate_power_of_2_ct_helper
266
266
  )
267
267
  ;
268
268
 
269
- static const std::size_t num_b_subblock_mid = (num_b_subblock > 1) ? (num_b_subblock - 1) : 0;
269
+ BOOST_STATIC_CONSTEXPR std::size_t num_b_subblock_mid = (num_b_subblock > 1) ? (num_b_subblock - 1) : 0;
270
270
 
271
- static const std::size_t total_nodes = (num_b_subblock == 0)
271
+ BOOST_STATIC_CONSTEXPR std::size_t total_nodes = (num_b_subblock == 0)
272
272
  ? hdr_subblock_elements_alone
273
273
  : ( (num_b_subblock == 1)
274
274
  ? (hdr_subblock_elements_first + elements_per_b_subblock_end)
275
275
  : (hdr_subblock_elements_first + num_b_subblock_mid*elements_per_b_subblock_mid + elements_per_b_subblock_end)
276
276
  )
277
277
  ;
278
- static const std::size_t total_data = total_nodes*real_node_size;
279
- static const std::size_t total_size = alignment*(num_b_subblock+1);
280
- static const bool overhead_satisfied = (total_size - total_data)*100/total_size < overhead_percent;
278
+ BOOST_STATIC_CONSTEXPR std::size_t total_data = total_nodes*real_node_size;
279
+ BOOST_STATIC_CONSTEXPR std::size_t total_size = alignment*(num_b_subblock+1);
280
+ BOOST_STATIC_CONSTEXPR bool overhead_satisfied = (total_size - total_data)*100/total_size < overhead_percent;
281
281
  };
282
282
 
283
283
  template< std::size_t initial_alignment
@@ -299,7 +299,7 @@ struct candidate_power_of_2_ct
299
299
  , hdr_offset_size
300
300
  , overhead_percent> helper_t;
301
301
 
302
- static const std::size_t candidate_power_of_2 = initial_alignment << std::size_t(!helper_t::overhead_satisfied);
302
+ BOOST_STATIC_CONSTEXPR std::size_t candidate_power_of_2 = initial_alignment << std::size_t(!helper_t::overhead_satisfied);
303
303
 
304
304
  typedef typename candidate_power_of_2_ct
305
305
  < candidate_power_of_2
@@ -312,9 +312,9 @@ struct candidate_power_of_2_ct
312
312
  , !helper_t::overhead_satisfied
313
313
  >::type type;
314
314
 
315
- static const std::size_t alignment = type::alignment;
316
- static const std::size_t num_subblocks = type::num_subblocks;
317
- static const std::size_t real_num_node = type::real_num_node;
315
+ BOOST_STATIC_CONSTEXPR std::size_t alignment = type::alignment;
316
+ BOOST_STATIC_CONSTEXPR std::size_t num_subblocks = type::num_subblocks;
317
+ BOOST_STATIC_CONSTEXPR std::size_t real_num_node = type::real_num_node;
318
318
  };
319
319
 
320
320
  template< std::size_t initial_alignment
@@ -354,9 +354,9 @@ struct candidate_power_of_2_ct
354
354
  , hdr_offset_size
355
355
  , overhead_percent> helper_t;
356
356
 
357
- static const std::size_t alignment = initial_alignment;
358
- static const std::size_t num_subblocks = helper_t::num_b_subblock+1;
359
- static const std::size_t real_num_node = helper_t::total_nodes;
357
+ BOOST_STATIC_CONSTEXPR std::size_t alignment = initial_alignment;
358
+ BOOST_STATIC_CONSTEXPR std::size_t num_subblocks = helper_t::num_b_subblock+1;
359
+ BOOST_STATIC_CONSTEXPR std::size_t real_num_node = helper_t::total_nodes;
360
360
  };
361
361
 
362
362
  /////////////////////////////////////////////
@@ -429,13 +429,13 @@ class private_adaptive_node_pool_impl_common
429
429
  typedef typename SegmentManagerBase::size_type size_type;
430
430
  //Flags
431
431
  //align_only
432
- static const bool AlignOnly = (Flags & adaptive_pool_flag::align_only) != 0;
432
+ BOOST_STATIC_CONSTEXPR bool AlignOnly = (Flags & adaptive_pool_flag::align_only) != 0;
433
433
  typedef bool_<AlignOnly> IsAlignOnly;
434
434
  typedef true_ AlignOnlyTrue;
435
435
  typedef false_ AlignOnlyFalse;
436
436
 
437
437
  typedef typename SegmentManagerBase::void_pointer void_pointer;
438
- static const typename SegmentManagerBase::
438
+ BOOST_STATIC_CONSTEXPR typename SegmentManagerBase::
439
439
  size_type PayloadPerAllocation = SegmentManagerBase::PayloadPerAllocation;
440
440
 
441
441
  typedef typename boost::intrusive::pointer_traits
@@ -453,9 +453,9 @@ class private_adaptive_node_pool_impl_common
453
453
  typedef typename adaptive_pool_types_t::hdr_offset_holder hdr_offset_holder;
454
454
  typedef private_adaptive_node_pool_impl_common this_type;
455
455
 
456
- static const size_type MaxAlign = alignment_of<void_pointer>::value;
457
- static const size_type HdrSize = ((sizeof(block_info_t)-1)/MaxAlign+1)*MaxAlign;
458
- static const size_type HdrOffsetSize = ((sizeof(hdr_offset_holder)-1)/MaxAlign+1)*MaxAlign;
456
+ BOOST_STATIC_CONSTEXPR size_type MaxAlign = alignment_of<void_pointer>::value;
457
+ BOOST_STATIC_CONSTEXPR size_type HdrSize = ((sizeof(block_info_t)-1)/MaxAlign+1)*MaxAlign;
458
+ BOOST_STATIC_CONSTEXPR size_type HdrOffsetSize = ((sizeof(hdr_offset_holder)-1)/MaxAlign+1)*MaxAlign;
459
459
 
460
460
  segment_mngr_base_ptr_t mp_segment_mngr_base; //Segment manager
461
461
  block_container_t m_block_container; //Intrusive block list
@@ -981,9 +981,9 @@ template< class SizeType
981
981
  , bool AlignOnly>
982
982
  struct calculate_alignment_ct
983
983
  {
984
- static const std::size_t alignment = upper_power_of_2_ct<SizeType, HdrSize + RealNodeSize*NodesPerBlock>::value;
985
- static const std::size_t num_subblocks = 0;
986
- static const std::size_t real_num_node = (alignment - PayloadPerAllocation - HdrSize)/RealNodeSize;
984
+ BOOST_STATIC_CONSTEXPR std::size_t alignment = upper_power_of_2_ct<SizeType, HdrSize + RealNodeSize*NodesPerBlock>::value;
985
+ BOOST_STATIC_CONSTEXPR std::size_t num_subblocks = 0;
986
+ BOOST_STATIC_CONSTEXPR std::size_t real_num_node = (alignment - PayloadPerAllocation - HdrSize)/RealNodeSize;
987
987
  };
988
988
 
989
989
  template< class SizeType
@@ -1013,9 +1013,9 @@ struct calculate_alignment_ct
1013
1013
  , OverheadPercent
1014
1014
  >::type type;
1015
1015
 
1016
- static const std::size_t alignment = type::alignment;
1017
- static const std::size_t num_subblocks = type::num_subblocks;
1018
- static const std::size_t real_num_node = type::real_num_node;
1016
+ BOOST_STATIC_CONSTEXPR std::size_t alignment = type::alignment;
1017
+ BOOST_STATIC_CONSTEXPR std::size_t num_subblocks = type::num_subblocks;
1018
+ BOOST_STATIC_CONSTEXPR std::size_t real_num_node = type::real_num_node;
1019
1019
  };
1020
1020
 
1021
1021
 
@@ -1046,17 +1046,17 @@ class private_adaptive_node_pool_impl_ct
1046
1046
  typedef typename base_t::multiallocation_chain multiallocation_chain;
1047
1047
  typedef typename base_t::segment_manager_base_type segment_manager_base_type;
1048
1048
 
1049
- static const typename base_t::size_type PayloadPerAllocation = base_t::PayloadPerAllocation;
1049
+ BOOST_STATIC_CONSTEXPR typename base_t::size_type PayloadPerAllocation = base_t::PayloadPerAllocation;
1050
1050
 
1051
1051
  //align_only
1052
- static const bool AlignOnly = base_t::AlignOnly;
1052
+ BOOST_STATIC_CONSTEXPR bool AlignOnly = base_t::AlignOnly;
1053
1053
 
1054
1054
  private:
1055
- static const size_type MaxAlign = base_t::MaxAlign;
1056
- static const size_type HdrSize = base_t::HdrSize;
1057
- static const size_type HdrOffsetSize = base_t::HdrOffsetSize;
1055
+ BOOST_STATIC_CONSTEXPR size_type MaxAlign = base_t::MaxAlign;
1056
+ BOOST_STATIC_CONSTEXPR size_type HdrSize = base_t::HdrSize;
1057
+ BOOST_STATIC_CONSTEXPR size_type HdrOffsetSize = base_t::HdrOffsetSize;
1058
1058
 
1059
- static const size_type RealNodeSize = lcm_ct<NodeSize, alignment_of<void_pointer>::value>::value;
1059
+ BOOST_STATIC_CONSTEXPR size_type RealNodeSize = lcm_ct<NodeSize, alignment_of<void_pointer>::value>::value;
1060
1060
 
1061
1061
  typedef calculate_alignment_ct
1062
1062
  < size_type, HdrSize, PayloadPerAllocation
@@ -1065,9 +1065,9 @@ class private_adaptive_node_pool_impl_ct
1065
1065
  //Round the size to a power of two value.
1066
1066
  //This is the total memory size (including payload) that we want to
1067
1067
  //allocate from the general-purpose allocator
1068
- static const size_type NumSubBlocks = data_t::num_subblocks;
1069
- static const size_type RealNumNode = data_t::real_num_node;
1070
- static const size_type RealBlockAlignment = data_t::alignment;
1068
+ BOOST_STATIC_CONSTEXPR size_type NumSubBlocks = data_t::num_subblocks;
1069
+ BOOST_STATIC_CONSTEXPR size_type RealNumNode = data_t::real_num_node;
1070
+ BOOST_STATIC_CONSTEXPR size_type RealBlockAlignment = data_t::alignment;
1071
1071
 
1072
1072
  public:
1073
1073
 
@@ -1165,14 +1165,14 @@ class private_adaptive_node_pool_impl_rt
1165
1165
  typedef typename impl_t::size_type size_type;
1166
1166
  typedef typename impl_t::multiallocation_chain multiallocation_chain;
1167
1167
 
1168
- static const typename impl_t::size_type PayloadPerAllocation = impl_t::PayloadPerAllocation;
1168
+ BOOST_STATIC_CONSTEXPR typename impl_t::size_type PayloadPerAllocation = impl_t::PayloadPerAllocation;
1169
1169
 
1170
1170
  //Flags
1171
1171
  //align_only
1172
- static const bool AlignOnly = impl_t::AlignOnly;
1172
+ BOOST_STATIC_CONSTEXPR bool AlignOnly = impl_t::AlignOnly;
1173
1173
 
1174
- static const size_type HdrSize = impl_t::HdrSize;
1175
- static const size_type HdrOffsetSize = impl_t::HdrOffsetSize;
1174
+ BOOST_STATIC_CONSTEXPR size_type HdrSize = impl_t::HdrSize;
1175
+ BOOST_STATIC_CONSTEXPR size_type HdrOffsetSize = impl_t::HdrOffsetSize;
1176
1176
 
1177
1177
  public:
1178
1178
 
@@ -39,6 +39,7 @@
39
39
 
40
40
  #include <boost/move/utility_core.hpp>
41
41
  #include <boost/move/detail/force_ptr.hpp>
42
+ #include <boost/move/detail/launder.hpp>
42
43
  // other
43
44
  #include <boost/assert.hpp>
44
45
 
@@ -138,8 +139,8 @@ struct insert_value_initialized_n_proxy
138
139
  while (n){
139
140
  --n;
140
141
  storage_t v;
141
- alloc_traits::construct(a, move_detail::force_ptr<value_type *>(&v));
142
- value_type *vp = move_detail::force_ptr<value_type *>(&v);
142
+ alloc_traits::construct(a, (value_type*)&v);
143
+ value_type *vp = move_detail::launder_cast<value_type *>(&v);
143
144
  value_destructor<Allocator> on_exit(a, *vp); (void)on_exit;
144
145
  *p = ::boost::move(*vp);
145
146
  ++p;
@@ -165,8 +166,8 @@ struct insert_default_initialized_n_proxy
165
166
  while (n){
166
167
  --n;
167
168
  typename dtl::aligned_storage<sizeof(value_type), dtl::alignment_of<value_type>::value>::type v;
168
- alloc_traits::construct(a, move_detail::force_ptr<value_type *>(&v), default_init);
169
- value_type *vp = move_detail::force_ptr<value_type *>(&v);
169
+ alloc_traits::construct(a, (value_type*)&v, default_init);
170
+ value_type *vp = move_detail::launder_cast<value_type *>(&v);
170
171
  value_destructor<Allocator> on_exit(a, *vp); (void)on_exit;
171
172
  *p = ::boost::move(*vp);
172
173
  ++p;
@@ -181,7 +182,7 @@ struct insert_copy_proxy
181
182
  typedef boost::container::allocator_traits<Allocator> alloc_traits;
182
183
  typedef typename alloc_traits::value_type value_type;
183
184
 
184
- static const bool single_value = true;
185
+ BOOST_STATIC_CONSTEXPR bool single_value = true;
185
186
 
186
187
  inline explicit insert_copy_proxy(const value_type &v)
187
188
  : v_(v)
@@ -211,7 +212,7 @@ struct insert_move_proxy
211
212
  typedef boost::container::allocator_traits<Allocator> alloc_traits;
212
213
  typedef typename alloc_traits::value_type value_type;
213
214
 
214
- static const bool single_value = true;
215
+ BOOST_STATIC_CONSTEXPR bool single_value = true;
215
216
 
216
217
  inline explicit insert_move_proxy(value_type &v)
217
218
  : v_(v)
@@ -264,7 +265,7 @@ struct insert_nonmovable_emplace_proxy
264
265
  typedef typename alloc_traits::value_type value_type;
265
266
  typedef typename build_number_seq<sizeof...(Args)>::type index_tuple_t;
266
267
 
267
- static const bool single_value = true;
268
+ BOOST_STATIC_CONSTEXPR bool single_value = true;
268
269
 
269
270
  inline explicit insert_nonmovable_emplace_proxy(BOOST_FWD_REF(Args)... args)
270
271
  : args_(args...)
@@ -295,7 +296,7 @@ struct insert_emplace_proxy
295
296
  typedef typename base_t::value_type value_type;
296
297
  typedef typename base_t::index_tuple_t index_tuple_t;
297
298
 
298
- static const bool single_value = true;
299
+ BOOST_STATIC_CONSTEXPR bool single_value = true;
299
300
 
300
301
  inline explicit insert_emplace_proxy(BOOST_FWD_REF(Args)... args)
301
302
  : base_t(::boost::forward<Args>(args)...)
@@ -312,8 +313,8 @@ struct insert_emplace_proxy
312
313
  {
313
314
  BOOST_ASSERT(n ==1); (void)n;
314
315
  typename dtl::aligned_storage<sizeof(value_type), dtl::alignment_of<value_type>::value>::type v;
315
- alloc_traits::construct(a, move_detail::force_ptr<value_type *>(&v), ::boost::forward<Args>(get<IdxPack>(this->args_))...);
316
- value_type *vp = move_detail::force_ptr<value_type *>(&v);
316
+ alloc_traits::construct(a, (value_type*)&v, ::boost::forward<Args>(get<IdxPack>(this->args_))...);
317
+ value_type *vp = move_detail::launder_cast<value_type *>(&v);
317
318
  BOOST_CONTAINER_TRY{
318
319
  *p = ::boost::move(*vp);
319
320
  }
@@ -331,7 +332,7 @@ template<class Allocator>
331
332
  struct insert_emplace_proxy<Allocator, typename boost::container::allocator_traits<Allocator>::value_type>
332
333
  : public insert_move_proxy<Allocator>
333
334
  {
334
- static const bool single_value = true;
335
+ BOOST_STATIC_CONSTEXPR bool single_value = true;
335
336
 
336
337
  inline explicit insert_emplace_proxy(typename boost::container::allocator_traits<Allocator>::value_type &&v)
337
338
  : insert_move_proxy<Allocator>(v)
@@ -348,7 +349,7 @@ struct insert_emplace_proxy<Allocator
348
349
  : public insert_copy_proxy<Allocator>
349
350
  {
350
351
 
351
- static const bool single_value = true;
352
+ BOOST_STATIC_CONSTEXPR bool single_value = true;
352
353
 
353
354
  inline explicit insert_emplace_proxy(const typename boost::container::allocator_traits<Allocator>::value_type &v)
354
355
  : insert_copy_proxy<Allocator>(v)
@@ -359,7 +360,7 @@ template<class Allocator>
359
360
  struct insert_emplace_proxy<Allocator, typename boost::container::allocator_traits<Allocator>::value_type &>
360
361
  : public insert_copy_proxy<Allocator>
361
362
  {
362
- static const bool single_value = true;
363
+ BOOST_STATIC_CONSTEXPR bool single_value = true;
363
364
 
364
365
  inline explicit insert_emplace_proxy(const typename boost::container::allocator_traits<Allocator>::value_type &v)
365
366
  : insert_copy_proxy<Allocator>(v)
@@ -372,7 +373,7 @@ struct insert_emplace_proxy<Allocator
372
373
  >
373
374
  : public insert_copy_proxy<Allocator>
374
375
  {
375
- static const bool single_value = true;
376
+ BOOST_STATIC_CONSTEXPR bool single_value = true;
376
377
 
377
378
  inline explicit insert_emplace_proxy(const typename boost::container::allocator_traits<Allocator>::value_type &v)
378
379
  : insert_copy_proxy<Allocator>(v)
@@ -396,7 +397,7 @@ struct insert_nonmovable_emplace_proxy##N\
396
397
  typedef boost::container::allocator_traits<Allocator> alloc_traits;\
397
398
  typedef typename alloc_traits::value_type value_type;\
398
399
  \
399
- static const bool single_value = true;\
400
+ BOOST_STATIC_CONSTEXPR bool single_value = true;\
400
401
  \
401
402
  inline explicit insert_nonmovable_emplace_proxy##N(BOOST_MOVE_UREF##N)\
402
403
  BOOST_MOVE_COLON##N BOOST_MOVE_FWD_INIT##N {}\
@@ -425,7 +426,7 @@ struct insert_emplace_proxy_arg##N\
425
426
  typedef typename base_t::value_type value_type;\
426
427
  typedef boost::container::allocator_traits<Allocator> alloc_traits;\
427
428
  \
428
- static const bool single_value = true;\
429
+ BOOST_STATIC_CONSTEXPR bool single_value = true;\
429
430
  \
430
431
  inline explicit insert_emplace_proxy_arg##N(BOOST_MOVE_UREF##N)\
431
432
  : base_t(BOOST_MOVE_FWD##N){}\
@@ -435,8 +436,8 @@ struct insert_emplace_proxy_arg##N\
435
436
  {\
436
437
  BOOST_ASSERT(n == 1); (void)n;\
437
438
  typename dtl::aligned_storage<sizeof(value_type), dtl::alignment_of<value_type>::value>::type v;\
438
- alloc_traits::construct(a, move_detail::force_ptr<value_type *>(&v) BOOST_MOVE_I##N BOOST_MOVE_MFWD##N);\
439
- value_type *vp = move_detail::force_ptr<value_type *>(&v);\
439
+ alloc_traits::construct(a, (value_type*)&v BOOST_MOVE_I##N BOOST_MOVE_MFWD##N);\
440
+ value_type *vp = move_detail::launder_cast<value_type *>(&v);\
440
441
  BOOST_CONTAINER_TRY{\
441
442
  *p = ::boost::move(*vp);\
442
443
  }\
@@ -459,7 +460,7 @@ template<class Allocator>
459
460
  struct insert_emplace_proxy_arg1<Allocator, ::boost::rv<typename boost::container::allocator_traits<Allocator>::value_type> >
460
461
  : public insert_move_proxy<Allocator>
461
462
  {
462
- static const bool single_value = true;
463
+ BOOST_STATIC_CONSTEXPR bool single_value = true;
463
464
 
464
465
  inline explicit insert_emplace_proxy_arg1(typename boost::container::allocator_traits<Allocator>::value_type &v)
465
466
  : insert_move_proxy<Allocator>(v)
@@ -470,7 +471,7 @@ template<class Allocator>
470
471
  struct insert_emplace_proxy_arg1<Allocator, typename boost::container::allocator_traits<Allocator>::value_type>
471
472
  : public insert_copy_proxy<Allocator>
472
473
  {
473
- static const bool single_value = true;
474
+ BOOST_STATIC_CONSTEXPR bool single_value = true;
474
475
 
475
476
  inline explicit insert_emplace_proxy_arg1(const typename boost::container::allocator_traits<Allocator>::value_type &v)
476
477
  : insert_copy_proxy<Allocator>(v)
@@ -484,7 +485,7 @@ template<class Allocator>
484
485
  struct insert_emplace_proxy_arg1<Allocator, typename boost::container::allocator_traits<Allocator>::value_type>
485
486
  : public insert_move_proxy<Allocator>
486
487
  {
487
- static const bool single_value = true;
488
+ BOOST_STATIC_CONSTEXPR bool single_value = true;
488
489
 
489
490
  inline explicit insert_emplace_proxy_arg1(typename boost::container::allocator_traits<Allocator>::value_type &&v)
490
491
  : insert_move_proxy<Allocator>(v)
@@ -500,7 +501,7 @@ struct insert_emplace_proxy_arg1<Allocator
500
501
  >
501
502
  : public insert_copy_proxy<Allocator>
502
503
  {
503
- static const bool single_value = true;
504
+ BOOST_STATIC_CONSTEXPR bool single_value = true;
504
505
 
505
506
  inline explicit insert_emplace_proxy_arg1(const typename boost::container::allocator_traits<Allocator>::value_type &v)
506
507
  : insert_copy_proxy<Allocator>(v)
@@ -511,7 +512,7 @@ template<class Allocator>
511
512
  struct insert_emplace_proxy_arg1<Allocator, typename boost::container::allocator_traits<Allocator>::value_type &>
512
513
  : public insert_copy_proxy<Allocator>
513
514
  {
514
- static const bool single_value = true;
515
+ BOOST_STATIC_CONSTEXPR bool single_value = true;
515
516
 
516
517
  inline explicit insert_emplace_proxy_arg1(const typename boost::container::allocator_traits<Allocator>::value_type &v)
517
518
  : insert_copy_proxy<Allocator>(v)
@@ -524,7 +525,7 @@ struct insert_emplace_proxy_arg1<Allocator
524
525
  >
525
526
  : public insert_copy_proxy<Allocator>
526
527
  {
527
- static const bool single_value = true;
528
+ BOOST_STATIC_CONSTEXPR bool single_value = true;
528
529
 
529
530
  inline explicit insert_emplace_proxy_arg1(const typename boost::container::allocator_traits<Allocator>::value_type &v)
530
531
  : insert_copy_proxy<Allocator>(v)
@@ -42,13 +42,13 @@ enum allocation_type_v
42
42
 
43
43
  typedef unsigned int allocation_type;
44
44
  #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
45
- static const allocation_type allocate_new = (allocation_type)allocate_new_v;
46
- static const allocation_type expand_fwd = (allocation_type)expand_fwd_v;
47
- static const allocation_type expand_bwd = (allocation_type)expand_bwd_v;
48
- static const allocation_type shrink_in_place = (allocation_type)shrink_in_place_v;
49
- static const allocation_type try_shrink_in_place= (allocation_type)try_shrink_in_place_v;
50
- static const allocation_type nothrow_allocation = (allocation_type)nothrow_allocation_v;
51
- static const allocation_type zero_memory = (allocation_type)zero_memory_v;
45
+ BOOST_CONTAINER_CONSTANT_VAR allocation_type allocate_new = (allocation_type)allocate_new_v;
46
+ BOOST_CONTAINER_CONSTANT_VAR allocation_type expand_fwd = (allocation_type)expand_fwd_v;
47
+ BOOST_CONTAINER_CONSTANT_VAR allocation_type expand_bwd = (allocation_type)expand_bwd_v;
48
+ BOOST_CONTAINER_CONSTANT_VAR allocation_type shrink_in_place = (allocation_type)shrink_in_place_v;
49
+ BOOST_CONTAINER_CONSTANT_VAR allocation_type try_shrink_in_place= (allocation_type)try_shrink_in_place_v;
50
+ BOOST_CONTAINER_CONSTANT_VAR allocation_type nothrow_allocation = (allocation_type)nothrow_allocation_v;
51
+ BOOST_CONTAINER_CONSTANT_VAR allocation_type zero_memory = (allocation_type)zero_memory_v;
52
52
 
53
53
  } //namespace container {
54
54
  } //namespace boost {
@@ -74,11 +74,11 @@ class block_list_base
74
74
  {
75
75
  list_node m_list;
76
76
 
77
- static const std::size_t MaxAlignMinus1 = memory_resource::max_align-1u;
77
+ BOOST_STATIC_CONSTEXPR std::size_t MaxAlignMinus1 = memory_resource::max_align-1u;
78
78
 
79
79
  public:
80
80
 
81
- static const std::size_t header_size = std::size_t(sizeof(DerivedFromBlockListHeader) + MaxAlignMinus1) & std::size_t(~MaxAlignMinus1);
81
+ BOOST_STATIC_CONSTEXPR std::size_t header_size = std::size_t(sizeof(DerivedFromBlockListHeader) + MaxAlignMinus1) & std::size_t(~MaxAlignMinus1);
82
82
 
83
83
  explicit block_list_base()
84
84
  { list_algo::init_header(&m_list); }
@@ -68,11 +68,11 @@ class block_slist_base
68
68
  {
69
69
  slist_node m_slist;
70
70
 
71
- static const std::size_t MaxAlignMinus1 = memory_resource::max_align-1u;
71
+ BOOST_STATIC_CONSTEXPR std::size_t MaxAlignMinus1 = memory_resource::max_align-1u;
72
72
 
73
73
  public:
74
74
 
75
- static const std::size_t header_size = std::size_t(sizeof(DerivedFromBlockSlistHeader) + MaxAlignMinus1) & std::size_t(~MaxAlignMinus1);
75
+ BOOST_STATIC_CONSTEXPR std::size_t header_size = std::size_t(sizeof(DerivedFromBlockSlistHeader) + MaxAlignMinus1) & std::size_t(~MaxAlignMinus1);
76
76
 
77
77
  explicit block_slist_base()
78
78
  { slist_algo::init_header(&m_slist); }
@@ -24,6 +24,7 @@
24
24
  #include <boost/container/allocator_traits.hpp>
25
25
  #include <boost/container/detail/iterators.hpp>
26
26
  #include <boost/container/detail/value_init.hpp>
27
+ #include <boost/container/detail/is_pair.hpp>
27
28
 
28
29
  namespace boost {
29
30
  namespace container {
@@ -62,9 +63,42 @@ BOOST_CONTAINER_FORCEINLINE void construct_in_place(Allocator &a, T *dest, empla
62
63
 
63
64
  //Assignment
64
65
 
66
+ template<class T, class U>
67
+ BOOST_CONTAINER_FORCEINLINE
68
+ typename dtl::disable_if_c
69
+ < dtl::is_pair<typename dtl::remove_reference<T>::type>::value
70
+ && dtl::is_pair<typename dtl::remove_reference<U>::type>::value
71
+ , void>::type
72
+ assign_in_place_ref(T &t, BOOST_FWD_REF(U) u)
73
+ { t = ::boost::forward<U>(u); }
74
+
75
+ template<class T, class U>
76
+ BOOST_CONTAINER_FORCEINLINE
77
+ typename dtl::enable_if_c
78
+ < dtl::is_pair<typename dtl::remove_reference<T>::type>::value
79
+ && dtl::is_pair<typename dtl::remove_reference<U>::type>::value
80
+ , void>::type
81
+ assign_in_place_ref(T &t, const U &u)
82
+ {
83
+ assign_in_place_ref(t.first, u.first);
84
+ assign_in_place_ref(t.second, u.second);
85
+ }
86
+
87
+ template<class T, class U>
88
+ BOOST_CONTAINER_FORCEINLINE
89
+ typename dtl::enable_if_c
90
+ < dtl::is_pair<typename dtl::remove_reference<T>::type>::value
91
+ && dtl::is_pair<typename dtl::remove_reference<U>::type>::value
92
+ , void>::type
93
+ assign_in_place_ref(T &t, BOOST_RV_REF(U) u)
94
+ {
95
+ assign_in_place_ref(t.first, ::boost::move(u.first));
96
+ assign_in_place_ref(t.second, ::boost::move(u.second));
97
+ }
98
+
65
99
  template<class DstIt, class InpIt>
66
100
  BOOST_CONTAINER_FORCEINLINE void assign_in_place(DstIt dest, InpIt source)
67
- { *dest = *source; }
101
+ { assign_in_place_ref(*dest, *source); }
68
102
 
69
103
  template<class DstIt, class U>
70
104
  BOOST_CONTAINER_FORCEINLINE void assign_in_place(DstIt dest, value_init_construct_iterator<U>)
@@ -50,7 +50,7 @@
50
50
  # pragma GCC diagnostic ignored "-Wstringop-overflow"
51
51
  # endif
52
52
  //GCC 12 seems a bit confused about array access error with small_vector
53
- # if defined(BOOST_GCC) && ((BOOST_GCC >= 120000) && (BOOST_GCC < 130000))
53
+ # if defined(BOOST_GCC) && (BOOST_GCC >= 110000)
54
54
  # pragma GCC diagnostic ignored "-Wstringop-overread"
55
55
  # pragma GCC diagnostic ignored "-Wstringop-overflow"
56
56
  # endif
@@ -64,7 +64,7 @@ namespace dtl {
64
64
  template<class I>
65
65
  struct are_elements_contiguous
66
66
  {
67
- static const bool value = false;
67
+ BOOST_STATIC_CONSTEXPR bool value = false;
68
68
  };
69
69
 
70
70
  /////////////////////////
@@ -74,7 +74,7 @@ struct are_elements_contiguous
74
74
  template<class T>
75
75
  struct are_elements_contiguous<T*>
76
76
  {
77
- static const bool value = true;
77
+ BOOST_STATIC_CONSTEXPR bool value = true;
78
78
  };
79
79
 
80
80
  /////////////////////////
@@ -115,7 +115,7 @@ namespace dtl {
115
115
  template <class Pointer, bool IsConst>
116
116
  struct are_elements_contiguous<boost::container::vec_iterator<Pointer, IsConst> >
117
117
  {
118
- static const bool value = true;
118
+ BOOST_STATIC_CONSTEXPR bool value = true;
119
119
  };
120
120
 
121
121
 
@@ -126,7 +126,7 @@ struct are_elements_contiguous<boost::container::vec_iterator<Pointer, IsConst>
126
126
  template <class PointedType, class DifferenceType, class OffsetType, std::size_t OffsetAlignment>
127
127
  struct are_elements_contiguous< ::boost::interprocess::offset_ptr<PointedType, DifferenceType, OffsetType, OffsetAlignment> >
128
128
  {
129
- static const bool value = true;
129
+ BOOST_STATIC_CONSTEXPR bool value = true;
130
130
  };
131
131
 
132
132
  template <typename I, typename O>
@@ -185,20 +185,20 @@ private:
185
185
  template <class U> static two test(int, ...);
186
186
  template <class U> static char test(int, const wrapper<U::single_value>*);
187
187
  public:
188
- static const bool value = sizeof(test<T>(0, 0)) == 1;
188
+ BOOST_STATIC_CONSTEXPR bool value = sizeof(test<T>(0, 0)) == 1;
189
189
  void dummy() {}
190
190
  };
191
191
 
192
192
  template<class InsertionProxy, bool = has_single_value<InsertionProxy>::value>
193
193
  struct is_single_value_proxy_impl
194
194
  {
195
- static const bool value = InsertionProxy::single_value;
195
+ BOOST_STATIC_CONSTEXPR bool value = InsertionProxy::single_value;
196
196
  };
197
197
 
198
198
  template<class InsertionProxy>
199
199
  struct is_single_value_proxy_impl<InsertionProxy, false>
200
200
  {
201
- static const bool value = false;
201
+ BOOST_STATIC_CONSTEXPR bool value = false;
202
202
  };
203
203
 
204
204
  template<class InsertionProxy>
@@ -293,7 +293,7 @@ template <typename O>
293
293
  struct is_memzero_initializable
294
294
  {
295
295
  typedef typename ::boost::container::iterator_traits<O>::value_type value_type;
296
- static const bool value = are_elements_contiguous<O>::value &&
296
+ BOOST_STATIC_CONSTEXPR bool value = are_elements_contiguous<O>::value &&
297
297
  ( dtl::is_integral<value_type>::value || dtl::is_enum<value_type>::value
298
298
  #if defined(BOOST_CONTAINER_MEMZEROED_POINTER_IS_NULL)
299
299
  || dtl::is_pointer<value_type>::value
@@ -1111,7 +1111,7 @@ inline typename dtl::disable_if_memtransfer_copy_assignable<F, G, void>::type
1111
1111
  boost::container::destroy_alloc_n(a, large_range_f, std::size_t(n_j - n_i));
1112
1112
  }
1113
1113
 
1114
- static const std::size_t DeepSwapAllocNMaxStorage = std::size_t(1) << std::size_t(11); //2K bytes
1114
+ BOOST_CONTAINER_CONSTANT_VAR std::size_t DeepSwapAllocNMaxStorage = std::size_t(1) << std::size_t(11); //2K bytes
1115
1115
 
1116
1116
  template
1117
1117
  <std::size_t MaxTmpBytes
@@ -1496,8 +1496,8 @@ void expand_backward_forward_and_insert_alloc_move_backward
1496
1496
  {
1497
1497
  typedef std::size_t size_type;
1498
1498
  typedef typename allocator_traits<Allocator>::value_type value_type;
1499
- static const bool trivial_dctr_after_move = has_trivial_destructor_after_move<value_type>::value;
1500
- static const bool trivial_dctr = dtl::is_trivially_destructible<value_type>::value;
1499
+ BOOST_STATIC_CONSTEXPR bool trivial_dctr_after_move = has_trivial_destructor_after_move<value_type>::value;
1500
+ BOOST_STATIC_CONSTEXPR bool trivial_dctr = dtl::is_trivially_destructible<value_type>::value;
1501
1501
 
1502
1502
  typedef typename dtl::if_c
1503
1503
  <trivial_dctr
@@ -1796,8 +1796,8 @@ inline void expand_backward_forward_and_insert_alloc_move_forward
1796
1796
  {
1797
1797
  typedef std::size_t size_type;
1798
1798
  typedef typename allocator_traits<Allocator>::value_type value_type;
1799
- static const bool trivial_dctr_after_move = has_trivial_destructor_after_move<value_type>::value;
1800
- static const bool trivial_dctr = dtl::is_trivially_destructible<value_type>::value;
1799
+ BOOST_STATIC_CONSTEXPR bool trivial_dctr_after_move = has_trivial_destructor_after_move<value_type>::value;
1800
+ BOOST_STATIC_CONSTEXPR bool trivial_dctr = dtl::is_trivially_destructible<value_type>::value;
1801
1801
 
1802
1802
  typedef typename dtl::if_c
1803
1803
  <trivial_dctr
@@ -62,7 +62,7 @@ namespace dtl {
62
62
  template<class X>
63
63
  static no_type test(...);
64
64
 
65
- static const bool value = sizeof(test<T>(0)) == sizeof(yes_type);
65
+ BOOST_STATIC_CONSTEXPR bool value = sizeof(test<T>(0)) == sizeof(yes_type);
66
66
  };
67
67
 
68
68
  template <class T, class InnerAlloc, class ...Args>