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
@@ -15,11 +15,10 @@
15
15
  #include <boost/core/no_exceptions_support.hpp>
16
16
  #include <boost/mem_fn.hpp>
17
17
  #include <boost/throw_exception.hpp>
18
- #include <boost/type_traits/is_integral.hpp>
19
- #include <boost/type_traits/is_void.hpp>
20
18
  #include <boost/config.hpp>
21
19
  #include <algorithm>
22
20
  #include <cassert>
21
+ #include <type_traits>
23
22
 
24
23
  #if defined(BOOST_MSVC)
25
24
  # pragma warning( push )
@@ -180,7 +179,7 @@ namespace boost {
180
179
  >
181
180
  struct get_function_invoker
182
181
  {
183
- typedef typename conditional<(is_void<R>::value),
182
+ typedef typename std::conditional<std::is_void<R>::value,
184
183
  void_function_invoker<
185
184
  FunctionPtr,
186
185
  R,
@@ -201,7 +200,7 @@ namespace boost {
201
200
  >
202
201
  struct get_function_obj_invoker
203
202
  {
204
- typedef typename conditional<(is_void<R>::value),
203
+ typedef typename std::conditional<std::is_void<R>::value,
205
204
  void_function_obj_invoker<
206
205
  FunctionObj,
207
206
  R,
@@ -222,7 +221,7 @@ namespace boost {
222
221
  >
223
222
  struct get_function_ref_invoker
224
223
  {
225
- typedef typename conditional<(is_void<R>::value),
224
+ typedef typename std::conditional<std::is_void<R>::value,
226
225
  void_function_ref_invoker<
227
226
  FunctionObj,
228
227
  R,
@@ -244,7 +243,7 @@ namespace boost {
244
243
  >
245
244
  struct get_member_invoker
246
245
  {
247
- typedef typename conditional<(is_void<R>::value),
246
+ typedef typename std::conditional<std::is_void<R>::value,
248
247
  void_member_invoker<
249
248
  MemberPtr,
250
249
  R,
@@ -499,27 +498,27 @@ namespace boost {
499
498
  // Assign to a function object using the small object optimization
500
499
  template<typename FunctionObj>
501
500
  void
502
- assign_functor(FunctionObj f, function_buffer& functor, true_type) const
501
+ assign_functor(FunctionObj f, function_buffer& functor, std::true_type) const
503
502
  {
504
503
  new (reinterpret_cast<void*>(functor.data)) FunctionObj(std::move(f));
505
504
  }
506
505
  template<typename FunctionObj,typename Allocator>
507
506
  void
508
- assign_functor_a(FunctionObj f, function_buffer& functor, Allocator, true_type) const
507
+ assign_functor_a(FunctionObj f, function_buffer& functor, Allocator, std::true_type) const
509
508
  {
510
- assign_functor(std::move(f),functor,true_type());
509
+ assign_functor(std::move(f),functor,std::true_type());
511
510
  }
512
511
 
513
512
  // Assign to a function object allocated on the heap.
514
513
  template<typename FunctionObj>
515
514
  void
516
- assign_functor(FunctionObj f, function_buffer& functor, false_type) const
515
+ assign_functor(FunctionObj f, function_buffer& functor, std::false_type) const
517
516
  {
518
517
  functor.members.obj_ptr = new FunctionObj(std::move(f));
519
518
  }
520
519
  template<typename FunctionObj,typename Allocator>
521
520
  void
522
- assign_functor_a(FunctionObj f, function_buffer& functor, Allocator a, false_type) const
521
+ assign_functor_a(FunctionObj f, function_buffer& functor, Allocator a, std::false_type) const
523
522
  {
524
523
  typedef functor_wrapper<FunctionObj,Allocator> functor_wrapper_type;
525
524
 
@@ -540,7 +539,7 @@ namespace boost {
540
539
  {
541
540
  if (!boost::detail::function::has_empty_target(boost::addressof(f))) {
542
541
  assign_functor(std::move(f), functor,
543
- integral_constant<bool, (function_allows_small_object_optimization<FunctionObj>::value)>());
542
+ std::integral_constant<bool, (function_allows_small_object_optimization<FunctionObj>::value)>());
544
543
  return true;
545
544
  } else {
546
545
  return false;
@@ -552,7 +551,7 @@ namespace boost {
552
551
  {
553
552
  if (!boost::detail::function::has_empty_target(boost::addressof(f))) {
554
553
  assign_functor_a(std::move(f), functor, a,
555
- integral_constant<bool, (function_allows_small_object_optimization<FunctionObj>::value)>());
554
+ std::integral_constant<bool, (function_allows_small_object_optimization<FunctionObj>::value)>());
556
555
  return true;
557
556
  } else {
558
557
  return false;
@@ -566,8 +565,8 @@ namespace boost {
566
565
  function_buffer& functor, function_obj_ref_tag) const
567
566
  {
568
567
  functor.members.obj_ref.obj_ptr = (void *)(f.get_pointer());
569
- functor.members.obj_ref.is_const_qualified = is_const<FunctionObj>::value;
570
- functor.members.obj_ref.is_volatile_qualified = is_volatile<FunctionObj>::value;
568
+ functor.members.obj_ref.is_const_qualified = std::is_const<FunctionObj>::value;
569
+ functor.members.obj_ref.is_volatile_qualified = std::is_volatile<FunctionObj>::value;
571
570
  return true;
572
571
  }
573
572
  template<typename FunctionObj,typename Allocator>
@@ -587,19 +586,125 @@ namespace boost {
587
586
  struct variadic_function_base
588
587
  {};
589
588
 
590
- template <typename T>
591
- struct variadic_function_base<T>
589
+ template <typename T1>
590
+ struct variadic_function_base<T1>
592
591
  {
593
- typedef T argument_type;
592
+ typedef T1 argument_type;
593
+ typedef T1 arg1_type;
594
594
  };
595
595
 
596
- template <typename T0, typename T1>
597
- struct variadic_function_base<T0, T1>
596
+ template <typename T1, typename T2>
597
+ struct variadic_function_base<T1, T2>
598
598
  {
599
- typedef T0 first_argument_type;
600
- typedef T1 second_argument_type;
599
+ typedef T1 first_argument_type;
600
+ typedef T2 second_argument_type;
601
+ typedef T1 arg1_type;
602
+ typedef T2 arg2_type;
601
603
  };
602
604
 
605
+ template <typename T1, typename T2, typename T3>
606
+ struct variadic_function_base<T1, T2, T3>
607
+ {
608
+ typedef T1 arg1_type;
609
+ typedef T2 arg2_type;
610
+ typedef T3 arg3_type;
611
+ };
612
+
613
+ template <typename T1, typename T2, typename T3, typename T4>
614
+ struct variadic_function_base<T1, T2, T3, T4>
615
+ {
616
+ typedef T1 arg1_type;
617
+ typedef T2 arg2_type;
618
+ typedef T3 arg3_type;
619
+ typedef T4 arg4_type;
620
+ };
621
+
622
+ template <typename T1, typename T2, typename T3, typename T4, typename T5>
623
+ struct variadic_function_base<T1, T2, T3, T4, T5>
624
+ {
625
+ typedef T1 arg1_type;
626
+ typedef T2 arg2_type;
627
+ typedef T3 arg3_type;
628
+ typedef T4 arg4_type;
629
+ typedef T5 arg5_type;
630
+ };
631
+
632
+ template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>
633
+ struct variadic_function_base<T1, T2, T3, T4, T5, T6>
634
+ {
635
+ typedef T1 arg1_type;
636
+ typedef T2 arg2_type;
637
+ typedef T3 arg3_type;
638
+ typedef T4 arg4_type;
639
+ typedef T5 arg5_type;
640
+ typedef T6 arg6_type;
641
+ };
642
+
643
+ template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7>
644
+ struct variadic_function_base<T1, T2, T3, T4, T5, T6, T7>
645
+ {
646
+ typedef T1 arg1_type;
647
+ typedef T2 arg2_type;
648
+ typedef T3 arg3_type;
649
+ typedef T4 arg4_type;
650
+ typedef T5 arg5_type;
651
+ typedef T6 arg6_type;
652
+ typedef T7 arg7_type;
653
+ };
654
+
655
+ template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8>
656
+ struct variadic_function_base<T1, T2, T3, T4, T5, T6, T7, T8>
657
+ {
658
+ typedef T1 arg1_type;
659
+ typedef T2 arg2_type;
660
+ typedef T3 arg3_type;
661
+ typedef T4 arg4_type;
662
+ typedef T5 arg5_type;
663
+ typedef T6 arg6_type;
664
+ typedef T7 arg7_type;
665
+ typedef T8 arg8_type;
666
+ };
667
+
668
+ template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9>
669
+ struct variadic_function_base<T1, T2, T3, T4, T5, T6, T7, T8, T9>
670
+ {
671
+ typedef T1 arg1_type;
672
+ typedef T2 arg2_type;
673
+ typedef T3 arg3_type;
674
+ typedef T4 arg4_type;
675
+ typedef T5 arg5_type;
676
+ typedef T6 arg6_type;
677
+ typedef T7 arg7_type;
678
+ typedef T8 arg8_type;
679
+ typedef T9 arg9_type;
680
+ };
681
+
682
+ template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10>
683
+ struct variadic_function_base<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>
684
+ {
685
+ typedef T1 arg1_type;
686
+ typedef T2 arg2_type;
687
+ typedef T3 arg3_type;
688
+ typedef T4 arg4_type;
689
+ typedef T5 arg5_type;
690
+ typedef T6 arg6_type;
691
+ typedef T7 arg7_type;
692
+ typedef T8 arg8_type;
693
+ typedef T9 arg9_type;
694
+ typedef T10 arg10_type;
695
+ };
696
+
697
+ #if defined( BOOST_LIBSTDCXX_VERSION ) && BOOST_LIBSTDCXX_VERSION < 50000
698
+
699
+ template<class T> struct is_trivially_copyable: std::integral_constant<bool,
700
+ __has_trivial_copy(T) && __has_trivial_assign(T) && __has_trivial_destructor(T)> {};
701
+
702
+ #else
703
+
704
+ using std::is_trivially_copyable;
705
+
706
+ #endif
707
+
603
708
  } // end namespace function
604
709
  } // end namespace detail
605
710
 
@@ -643,8 +748,8 @@ namespace boost {
643
748
  // one with a default parameter.
644
749
  template<typename Functor>
645
750
  function_n(Functor f
646
- ,typename boost::enable_if_<
647
- !(is_integral<Functor>::value),
751
+ ,typename std::enable_if<
752
+ !std::is_integral<Functor>::value,
648
753
  int>::type = 0
649
754
  ) :
650
755
  function_base()
@@ -653,8 +758,8 @@ namespace boost {
653
758
  }
654
759
  template<typename Functor,typename Allocator>
655
760
  function_n(Functor f, Allocator a
656
- ,typename boost::enable_if_<
657
- !(is_integral<Functor>::value),
761
+ ,typename std::enable_if<
762
+ !std::is_integral<Functor>::value,
658
763
  int>::type = 0
659
764
  ) :
660
765
  function_base()
@@ -691,8 +796,8 @@ namespace boost {
691
796
  // handle function_n as the type of the temporary to
692
797
  // construct.
693
798
  template<typename Functor>
694
- typename boost::enable_if_<
695
- !(is_integral<Functor>::value),
799
+ typename std::enable_if<
800
+ !std::is_integral<Functor>::value,
696
801
  function_n&>::type
697
802
  operator=(Functor f)
698
803
  {
@@ -835,8 +940,7 @@ namespace boost {
835
940
  if (stored_vtable.assign_to(std::move(f), functor)) {
836
941
  std::size_t value = reinterpret_cast<std::size_t>(&stored_vtable.base);
837
942
  // coverity[pointless_expression]: suppress coverity warnings on apparant if(const).
838
- if (boost::has_trivial_copy_constructor<Functor>::value &&
839
- boost::has_trivial_destructor<Functor>::value &&
943
+ if (boost::detail::function::is_trivially_copyable<Functor>::value &&
840
944
  boost::detail::function::function_allows_small_object_optimization<Functor>::value)
841
945
  value |= static_cast<std::size_t>(0x01);
842
946
  vtable = reinterpret_cast<boost::detail::function::vtable_base *>(value);
@@ -869,8 +973,7 @@ namespace boost {
869
973
  if (stored_vtable.assign_to_a(std::move(f), functor, a)) {
870
974
  std::size_t value = reinterpret_cast<std::size_t>(&stored_vtable.base);
871
975
  // coverity[pointless_expression]: suppress coverity warnings on apparant if(const).
872
- if (boost::has_trivial_copy_constructor<Functor>::value &&
873
- boost::has_trivial_destructor<Functor>::value &&
976
+ if (boost::detail::function::is_trivially_copyable<Functor>::value &&
874
977
  boost::detail::function::function_allows_small_object_optimization<Functor>::value)
875
978
  value |= static_cast<std::size_t>(0x01);
876
979
  vtable = reinterpret_cast<boost::detail::function::vtable_base *>(value);
@@ -974,8 +1077,8 @@ public:
974
1077
 
975
1078
  template<typename Functor>
976
1079
  function(Functor f
977
- ,typename boost::enable_if_<
978
- !(is_integral<Functor>::value),
1080
+ ,typename std::enable_if<
1081
+ !std::is_integral<Functor>::value,
979
1082
  int>::type = 0
980
1083
  ) :
981
1084
  base_type(std::move(f))
@@ -983,8 +1086,8 @@ public:
983
1086
  }
984
1087
  template<typename Functor,typename Allocator>
985
1088
  function(Functor f, Allocator a
986
- ,typename boost::enable_if_<
987
- !(is_integral<Functor>::value),
1089
+ ,typename std::enable_if<
1090
+ !std::is_integral<Functor>::value,
988
1091
  int>::type = 0
989
1092
  ) :
990
1093
  base_type(std::move(f),a)
@@ -1014,8 +1117,8 @@ public:
1014
1117
  }
1015
1118
 
1016
1119
  template<typename Functor>
1017
- typename boost::enable_if_<
1018
- !(is_integral<Functor>::value),
1120
+ typename std::enable_if<
1121
+ !std::is_integral<Functor>::value,
1019
1122
  self_type&>::type
1020
1123
  operator=(Functor f)
1021
1124
  {
@@ -26,15 +26,15 @@ namespace intrusive {
26
26
 
27
27
  struct algo_pred_equal
28
28
  {
29
- template<class T>
30
- bool operator()(const T &x, const T &y) const
29
+ template<class T, class T2>
30
+ bool operator()(const T &x, const T2 &y) const
31
31
  { return x == y; }
32
32
  };
33
33
 
34
34
  struct algo_pred_less
35
35
  {
36
- template<class T>
37
- bool operator()(const T &x, const T &y) const
36
+ template<class T, class T2>
37
+ bool operator()(const T &x, const T2 &y) const
38
38
  { return x < y; }
39
39
  };
40
40
 
@@ -49,10 +49,6 @@ bool algo_equal(InputIt1 first1, InputIt1 last1, InputIt2 first2, BinaryPredicat
49
49
  return true;
50
50
  }
51
51
 
52
- template<class InputIt1, class InputIt2>
53
- bool algo_equal(InputIt1 first1, InputIt1 last1, InputIt2 first2)
54
- { return (algo_equal)(first1, last1, first2, algo_pred_equal()); }
55
-
56
52
  template<class InputIt1, class InputIt2, class BinaryPredicate>
57
53
  bool algo_equal(InputIt1 first1, InputIt1 last1, InputIt2 first2, InputIt2 last2, BinaryPredicate pred)
58
54
  {
@@ -62,6 +58,10 @@ bool algo_equal(InputIt1 first1, InputIt1 last1, InputIt2 first2, InputIt2 last2
62
58
  return first1 == last1 && first2 == last2;
63
59
  }
64
60
 
61
+ template<class InputIt1, class InputIt2>
62
+ bool algo_equal(InputIt1 first1, InputIt1 last1, InputIt2 first2)
63
+ { return (algo_equal)(first1, last1, first2, algo_pred_equal()); }
64
+
65
65
  template<class InputIt1, class InputIt2>
66
66
  bool algo_equal(InputIt1 first1, InputIt1 last1, InputIt2 first2, InputIt2 last2)
67
67
  { return (algo_equal)(first1, last1, first2, last2, algo_pred_equal()); }
@@ -2,7 +2,7 @@
2
2
  //
3
3
  // Copyright 2005-2014 Daniel James.
4
4
  // Copyright 2021, 2022 Peter Dimov.
5
- // Copyright 2024 Ion Gazta�aga.
5
+ // Copyright 2024 Ion Gaztanaga.
6
6
  // Distributed under the Boost Software License, Version 1.0.
7
7
  // https://www.boost.org/LICENSE_1_0.txt
8
8
  //
@@ -46,6 +46,10 @@ struct bhtraits_base
46
46
  template rebind_pointer<T>::type pointer;
47
47
  typedef typename pointer_traits<node_ptr>::
48
48
  template rebind_pointer<const T>::type const_pointer;
49
+ typedef typename pointer_traits<node_ptr>::
50
+ template rebind_pointer<node_holder_type>::type node_holder_ptr;
51
+ typedef typename pointer_traits<node_ptr>::
52
+ template rebind_pointer<const node_holder_type>::type const_node_holder_ptr;
49
53
  typedef T & reference;
50
54
  typedef const T & const_reference;
51
55
  typedef node_holder_type & node_holder_reference;
@@ -55,16 +59,14 @@ struct bhtraits_base
55
59
 
56
60
  inline static pointer to_value_ptr(node_ptr n)
57
61
  {
58
- pointer p = pointer_traits<pointer>::pointer_to
59
- (static_cast<reference>(static_cast<node_holder_reference>(*n)));
60
- return p;
62
+ return pointer_traits<pointer>::
63
+ static_cast_from(pointer_traits<node_holder_ptr>::static_cast_from(n));
61
64
  }
62
65
 
63
66
  inline static const_pointer to_value_ptr(const_node_ptr n)
64
67
  {
65
- const_pointer p = pointer_traits<const_pointer>::pointer_to
66
- (static_cast<const_reference>(static_cast<const_node_holder_reference>(*n)));
67
- return p;
68
+ return pointer_traits<const_pointer>::
69
+ static_cast_from(pointer_traits<const_node_holder_ptr>::static_cast_from(n));
68
70
  }
69
71
 
70
72
  inline static node_ptr to_node_ptr(reference value)
@@ -130,7 +130,7 @@ struct pointer_traits
130
130
  //!
131
131
  //! <b>Note</b>: For non-conforming compilers only the existence of a member function called
132
132
  //! <code>pointer_to</code> is checked.
133
- inline static pointer pointer_to(reference r) BOOST_NOEXCEPT
133
+ BOOST_INTRUSIVE_FORCEINLINE static pointer pointer_to(reference r) BOOST_NOEXCEPT
134
134
  {
135
135
  //Non-standard extension, it does not require Ptr::pointer_to. If not present
136
136
  //tries to converts &r to pointer.
@@ -150,7 +150,7 @@ struct pointer_traits
150
150
  //! <b>Note</b>: For non-conforming compilers only the existence of a member function called
151
151
  //! <code>static_cast_from</code> is checked.
152
152
  template<class UPtr>
153
- inline static pointer static_cast_from(const UPtr &uptr) BOOST_NOEXCEPT
153
+ BOOST_INTRUSIVE_FORCEINLINE static pointer static_cast_from(const UPtr &uptr) BOOST_NOEXCEPT
154
154
  {
155
155
  typedef const UPtr &RefArg;
156
156
  const bool value = boost::intrusive::detail::
@@ -171,7 +171,7 @@ struct pointer_traits
171
171
  //! <b>Note</b>: For non-conforming compilers only the existence of a member function called
172
172
  //! <code>const_cast_from</code> is checked.
173
173
  template<class UPtr>
174
- inline static pointer const_cast_from(const UPtr &uptr) BOOST_NOEXCEPT
174
+ BOOST_INTRUSIVE_FORCEINLINE static pointer const_cast_from(const UPtr &uptr) BOOST_NOEXCEPT
175
175
  {
176
176
  typedef const UPtr &RefArg;
177
177
  const bool value = boost::intrusive::detail::
@@ -192,7 +192,7 @@ struct pointer_traits
192
192
  //! <b>Note</b>: For non-conforming compilers only the existence of a member function called
193
193
  //! <code>dynamic_cast_from</code> is checked.
194
194
  template<class UPtr>
195
- inline static pointer dynamic_cast_from(const UPtr &uptr) BOOST_NOEXCEPT
195
+ BOOST_INTRUSIVE_FORCEINLINE static pointer dynamic_cast_from(const UPtr &uptr) BOOST_NOEXCEPT
196
196
  {
197
197
  typedef const UPtr &RefArg;
198
198
  const bool value = boost::intrusive::detail::
@@ -208,46 +208,46 @@ struct pointer_traits
208
208
  private:
209
209
  //priv_to_raw_pointer
210
210
  template <class T>
211
- inline static T* to_raw_pointer(T* p) BOOST_NOEXCEPT
211
+ BOOST_INTRUSIVE_FORCEINLINE static T* to_raw_pointer(T* p) BOOST_NOEXCEPT
212
212
  { return p; }
213
213
 
214
214
  template <class Pointer>
215
- inline static typename pointer_traits<Pointer>::element_type*
215
+ BOOST_INTRUSIVE_FORCEINLINE static typename pointer_traits<Pointer>::element_type*
216
216
  to_raw_pointer(const Pointer &p) BOOST_NOEXCEPT
217
217
  { return pointer_traits::to_raw_pointer(p.operator->()); }
218
218
 
219
219
  //priv_pointer_to
220
- inline static pointer priv_pointer_to(boost::intrusive::detail::true_, reference r) BOOST_NOEXCEPT
220
+ BOOST_INTRUSIVE_FORCEINLINE static pointer priv_pointer_to(boost::intrusive::detail::true_, reference r) BOOST_NOEXCEPT
221
221
  { return Ptr::pointer_to(r); }
222
222
 
223
- inline static pointer priv_pointer_to(boost::intrusive::detail::false_, reference r) BOOST_NOEXCEPT
223
+ BOOST_INTRUSIVE_FORCEINLINE static pointer priv_pointer_to(boost::intrusive::detail::false_, reference r) BOOST_NOEXCEPT
224
224
  { return pointer(boost::intrusive::detail::addressof(r)); }
225
225
 
226
226
  //priv_static_cast_from
227
227
  template<class UPtr>
228
- inline static pointer priv_static_cast_from(boost::intrusive::detail::true_, const UPtr &uptr) BOOST_NOEXCEPT
228
+ BOOST_INTRUSIVE_FORCEINLINE static pointer priv_static_cast_from(boost::intrusive::detail::true_, const UPtr &uptr) BOOST_NOEXCEPT
229
229
  { return Ptr::static_cast_from(uptr); }
230
230
 
231
231
  template<class UPtr>
232
- inline static pointer priv_static_cast_from(boost::intrusive::detail::false_, const UPtr &uptr) BOOST_NOEXCEPT
232
+ BOOST_INTRUSIVE_FORCEINLINE static pointer priv_static_cast_from(boost::intrusive::detail::false_, const UPtr &uptr) BOOST_NOEXCEPT
233
233
  { return uptr ? pointer_to(*static_cast<element_type*>(to_raw_pointer(uptr))) : pointer(); }
234
234
 
235
235
  //priv_const_cast_from
236
236
  template<class UPtr>
237
- inline static pointer priv_const_cast_from(boost::intrusive::detail::true_, const UPtr &uptr) BOOST_NOEXCEPT
237
+ BOOST_INTRUSIVE_FORCEINLINE static pointer priv_const_cast_from(boost::intrusive::detail::true_, const UPtr &uptr) BOOST_NOEXCEPT
238
238
  { return Ptr::const_cast_from(uptr); }
239
239
 
240
240
  template<class UPtr>
241
- inline static pointer priv_const_cast_from(boost::intrusive::detail::false_, const UPtr &uptr) BOOST_NOEXCEPT
241
+ BOOST_INTRUSIVE_FORCEINLINE static pointer priv_const_cast_from(boost::intrusive::detail::false_, const UPtr &uptr) BOOST_NOEXCEPT
242
242
  { return uptr ? pointer_to(const_cast<element_type&>(*uptr)) : pointer(); }
243
243
 
244
244
  //priv_dynamic_cast_from
245
245
  template<class UPtr>
246
- inline static pointer priv_dynamic_cast_from(boost::intrusive::detail::true_, const UPtr &uptr) BOOST_NOEXCEPT
246
+ BOOST_INTRUSIVE_FORCEINLINE static pointer priv_dynamic_cast_from(boost::intrusive::detail::true_, const UPtr &uptr) BOOST_NOEXCEPT
247
247
  { return Ptr::dynamic_cast_from(uptr); }
248
248
 
249
249
  template<class UPtr>
250
- inline static pointer priv_dynamic_cast_from(boost::intrusive::detail::false_, const UPtr &uptr) BOOST_NOEXCEPT
250
+ BOOST_INTRUSIVE_FORCEINLINE static pointer priv_dynamic_cast_from(boost::intrusive::detail::false_, const UPtr &uptr) BOOST_NOEXCEPT
251
251
  { return uptr ? pointer_to(dynamic_cast<element_type&>(*uptr)) : pointer(); }
252
252
  ///@endcond
253
253
  };
@@ -296,25 +296,25 @@ struct pointer_traits<T*>
296
296
 
297
297
  //! <b>Returns</b>: addressof(r)
298
298
  //!
299
- inline static pointer pointer_to(reference r) BOOST_NOEXCEPT
299
+ BOOST_INTRUSIVE_FORCEINLINE static pointer pointer_to(reference r) BOOST_NOEXCEPT
300
300
  { return boost::intrusive::detail::addressof(r); }
301
301
 
302
302
  //! <b>Returns</b>: static_cast<pointer>(uptr)
303
303
  //!
304
304
  template<class U>
305
- inline static pointer static_cast_from(U *uptr) BOOST_NOEXCEPT
305
+ BOOST_INTRUSIVE_FORCEINLINE static pointer static_cast_from(U *uptr) BOOST_NOEXCEPT
306
306
  { return static_cast<pointer>(uptr); }
307
307
 
308
308
  //! <b>Returns</b>: const_cast<pointer>(uptr)
309
309
  //!
310
310
  template<class U>
311
- inline static pointer const_cast_from(U *uptr) BOOST_NOEXCEPT
311
+ BOOST_INTRUSIVE_FORCEINLINE static pointer const_cast_from(U *uptr) BOOST_NOEXCEPT
312
312
  { return const_cast<pointer>(uptr); }
313
313
 
314
314
  //! <b>Returns</b>: dynamic_cast<pointer>(uptr)
315
315
  //!
316
316
  template<class U>
317
- inline static pointer dynamic_cast_from(U *uptr) BOOST_NOEXCEPT
317
+ BOOST_INTRUSIVE_FORCEINLINE static pointer dynamic_cast_from(U *uptr) BOOST_NOEXCEPT
318
318
  { return dynamic_cast<pointer>(uptr); }
319
319
  };
320
320
 
@@ -198,7 +198,6 @@ namespace boost { namespace detail { namespace lcast {
198
198
  }
199
199
 
200
200
  bool shl_real_type(float val, char* begin) {
201
- using namespace std;
202
201
  const double val_as_double = val;
203
202
  finish = start +
204
203
  boost::core::snprintf(begin, CharacterBufferSize,
@@ -207,7 +206,6 @@ namespace boost { namespace detail { namespace lcast {
207
206
  }
208
207
 
209
208
  bool shl_real_type(double val, char* begin) {
210
- using namespace std;
211
209
  finish = start +
212
210
  boost::core::snprintf(begin, CharacterBufferSize,
213
211
  "%.*g", static_cast<int>(boost::detail::lcast_get_precision<double>()), val);
@@ -216,7 +214,6 @@ namespace boost { namespace detail { namespace lcast {
216
214
 
217
215
  #ifndef __MINGW32__
218
216
  bool shl_real_type(long double val, char* begin) {
219
- using namespace std;
220
217
  finish = start +
221
218
  boost::core::snprintf(begin, CharacterBufferSize,
222
219
  "%.*Lg", static_cast<int>(boost::detail::lcast_get_precision<long double>()), val );
@@ -228,28 +225,32 @@ namespace boost { namespace detail { namespace lcast {
228
225
  }
229
226
  #endif
230
227
 
231
- #if !defined(BOOST_LCAST_NO_WCHAR_T) && !defined(BOOST_NO_SWPRINTF) && !defined(__MINGW32__)
228
+ #if !defined(BOOST_LCAST_NO_WCHAR_T)
232
229
  bool shl_real_type(float val, wchar_t* begin) {
233
- using namespace std;
234
230
  const double val_as_double = val;
235
- finish = start + swprintf(begin, CharacterBufferSize,
236
- L"%.*g",
237
- static_cast<int>(boost::detail::lcast_get_precision<float >()),
238
- val_as_double );
231
+ finish = start + boost::core::swprintf(
232
+ begin, CharacterBufferSize, L"%.*g",
233
+ static_cast<int>(boost::detail::lcast_get_precision<float >()),
234
+ val_as_double
235
+ );
239
236
  return finish > start;
240
237
  }
241
238
 
242
239
  bool shl_real_type(double val, wchar_t* begin) {
243
- using namespace std;
244
- finish = start + swprintf(begin, CharacterBufferSize,
245
- L"%.*g", static_cast<int>(boost::detail::lcast_get_precision<double >()), val );
240
+ finish = start + boost::core::swprintf(
241
+ begin, CharacterBufferSize, L"%.*g",
242
+ static_cast<int>(boost::detail::lcast_get_precision<double>()),
243
+ val
244
+ );
246
245
  return finish > start;
247
246
  }
248
247
 
249
248
  bool shl_real_type(long double val, wchar_t* begin) {
250
- using namespace std;
251
- finish = start + swprintf(begin, CharacterBufferSize,
252
- L"%.*Lg", static_cast<int>(boost::detail::lcast_get_precision<long double >()), val );
249
+ finish = start + boost::core::swprintf(
250
+ begin, CharacterBufferSize, L"%.*Lg",
251
+ static_cast<int>(boost::detail::lcast_get_precision<long double>()),
252
+ val
253
+ );
253
254
  return finish > start;
254
255
  }
255
256
  #endif
@@ -345,13 +346,17 @@ namespace boost { namespace detail { namespace lcast {
345
346
  template <class C, class CharTraits>
346
347
  enable_if_compatible_char_t<C>
347
348
  stream_in(lcast::exact<std::basic_string_view<C, CharTraits>> x) noexcept {
348
- return shl_char_array_limited(reinterpret_cast<const CharT*>(x.payload.data()), x.payload.size());
349
+ start = reinterpret_cast<const CharT*>(x.payload.data());
350
+ finish = start + x.payload.size();
351
+ return true;
349
352
  }
350
353
  #endif
351
354
  template <class C, class CharTraits>
352
355
  enable_if_compatible_char_t<C>
353
356
  stream_in(lcast::exact<boost::basic_string_view<C, CharTraits>> x) noexcept {
354
- return shl_char_array_limited(reinterpret_cast<const CharT*>(x.payload.data()), x.payload.size());
357
+ start = reinterpret_cast<const CharT*>(x.payload.data());
358
+ finish = start + x.payload.size();
359
+ return true;
355
360
  }
356
361
  };
357
362
 
@@ -10,7 +10,9 @@
10
10
  *
11
11
  */
12
12
 
13
- #define BOOST_RANDOM_SOURCE
13
+ #ifndef BOOST_RANDOM_SOURCE
14
+ # define BOOST_RANDOM_SOURCE
15
+ #endif
14
16
 
15
17
  #include <boost/random/random_device.hpp>
16
18
  #include <boost/config.hpp>
@@ -16,7 +16,6 @@
16
16
  # pragma warning (disable : 4619) // there is no warning number 'XXXX'
17
17
  # pragma warning (disable : 4324) // structure was padded due to __declspec(align())
18
18
  # pragma warning (disable : 4675) // "function": resolved overload was found by argument-dependent lookup
19
- # pragma warning (disable : 4996) // "function": was declared deprecated (_CRT_SECURE_NO_DEPRECATE/_SCL_SECURE_NO_WARNINGS)
20
19
  # pragma warning (disable : 4714) // "function": marked as __forceinline not inlined
21
20
  # pragma warning (disable : 4127) // conditional expression is constant
22
21
  #endif