passenger 6.0.16 → 6.0.18

Sign up to get free protection for your applications and to get access to all the features.
Files changed (290) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +46 -2
  3. data/CONTRIBUTORS +2 -0
  4. data/build/integration_tests.rb +6 -6
  5. data/build/ruby_tests.rb +1 -1
  6. data/build/test_basics.rb +0 -1
  7. data/src/agent/Core/Config.h +1 -1
  8. data/src/agent/Core/Controller/Config.h +1 -1
  9. data/src/agent/Core/SpawningKit/PipeWatcher.h +18 -3
  10. data/src/agent/Watchdog/Config.h +1 -1
  11. data/src/cxx_supportlib/Constants.h +1 -1
  12. data/src/cxx_supportlib/vendor-modified/boost/align/aligned_alloc.hpp +1 -1
  13. data/src/cxx_supportlib/vendor-modified/boost/array.hpp +1 -1
  14. data/src/cxx_supportlib/vendor-modified/boost/asio/any_completion_executor.hpp +344 -0
  15. data/src/cxx_supportlib/vendor-modified/boost/asio/any_completion_handler.hpp +686 -0
  16. data/src/cxx_supportlib/vendor-modified/boost/asio/any_io_executor.hpp +56 -0
  17. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_allocator.hpp +81 -25
  18. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_cancellation_slot.hpp +68 -8
  19. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_executor.hpp +46 -11
  20. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_datagram_socket.hpp +4 -4
  21. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_deadline_timer.hpp +2 -2
  22. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_file.hpp +1 -1
  23. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_random_access_file.hpp +2 -2
  24. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_raw_socket.hpp +4 -4
  25. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_readable_pipe.hpp +2 -2
  26. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_seq_packet_socket.hpp +2 -2
  27. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_serial_port.hpp +3 -3
  28. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_signal_set.hpp +2 -2
  29. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket.hpp +3 -3
  30. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_acceptor.hpp +4 -4
  31. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_file.hpp +2 -2
  32. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_socket.hpp +2 -2
  33. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_waitable_timer.hpp +2 -2
  34. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_writable_pipe.hpp +2 -2
  35. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_allocator.hpp +13 -3
  36. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_cancellation_slot.hpp +14 -3
  37. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_executor.hpp +13 -3
  38. data/src/cxx_supportlib/vendor-modified/boost/asio/compose.hpp +30 -305
  39. data/src/cxx_supportlib/vendor-modified/boost/asio/consign.hpp +90 -0
  40. data/src/cxx_supportlib/vendor-modified/boost/asio/defer.hpp +17 -18
  41. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/bind_handler.hpp +98 -24
  42. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/composed_work.hpp +330 -0
  43. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/config.hpp +81 -15
  44. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_alloc_helpers.hpp +4 -4
  45. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_work.hpp +19 -11
  46. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/descriptor_ops.ipp +37 -0
  47. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/handler_tracking.ipp +3 -1
  48. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.ipp +1 -1
  49. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_ops.ipp +10 -2
  50. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_executor_service.hpp +14 -1
  51. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/memory.hpp +18 -0
  52. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/utility.hpp +1 -2
  53. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/work_dispatcher.hpp +7 -3
  54. data/src/cxx_supportlib/vendor-modified/boost/asio/dispatch.hpp +4 -14
  55. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/allocator.hpp +22 -3
  56. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/any_executor.hpp +447 -142
  57. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking.hpp +57 -8
  58. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking_adaptation.hpp +51 -6
  59. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/bulk_execute.hpp +5 -0
  60. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/bulk_guarantee.hpp +41 -4
  61. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/connect.hpp +5 -0
  62. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/context.hpp +13 -2
  63. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/context_as.hpp +13 -2
  64. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/as_operation.hpp +4 -0
  65. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/execute.hpp +9 -2
  66. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/executor.hpp +11 -1
  67. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/mapping.hpp +52 -8
  68. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/occupancy.hpp +13 -2
  69. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/operation_state.hpp +5 -0
  70. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/outstanding_work.hpp +39 -6
  71. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/receiver.hpp +5 -0
  72. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/relationship.hpp +39 -6
  73. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/schedule.hpp +5 -0
  74. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/scheduler.hpp +5 -0
  75. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/sender.hpp +5 -0
  76. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_done.hpp +5 -0
  77. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_error.hpp +5 -0
  78. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_value.hpp +5 -0
  79. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/start.hpp +5 -0
  80. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/submit.hpp +5 -0
  81. data/src/cxx_supportlib/vendor-modified/boost/asio/executor_work_guard.hpp +6 -9
  82. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/basic_channel.hpp +3 -3
  83. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/basic_concurrent_channel.hpp +3 -3
  84. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/channel_traits.hpp +70 -0
  85. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/co_composed.hpp +146 -0
  86. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/coro.hpp +35 -5
  87. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_handler.hpp +13 -3
  88. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_operation.hpp +7 -0
  89. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_service.hpp +180 -0
  90. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/coro_completion_handler.hpp +171 -0
  91. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/coro_promise_allocator.hpp +89 -66
  92. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/partial_promise.hpp +66 -45
  93. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/as_single.hpp +13 -3
  94. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/co_composed.hpp +1134 -0
  95. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/coro.hpp +130 -106
  96. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/parallel_group.hpp +377 -3
  97. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/promise.hpp +168 -29
  98. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/use_coro.hpp +149 -203
  99. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/use_promise.hpp +68 -0
  100. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/parallel_group.hpp +256 -0
  101. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/promise.hpp +76 -80
  102. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/use_coro.hpp +40 -14
  103. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/use_promise.hpp +113 -0
  104. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/any_completion_executor.ipp +132 -0
  105. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/any_io_executor.ipp +12 -0
  106. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/append.hpp +12 -3
  107. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/as_tuple.hpp +12 -3
  108. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_read_stream.hpp +25 -6
  109. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_write_stream.hpp +25 -6
  110. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/co_spawn.hpp +34 -45
  111. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/connect.hpp +28 -6
  112. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/consign.hpp +204 -0
  113. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/defer.hpp +33 -1
  114. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/deferred.hpp +13 -3
  115. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/dispatch.hpp +21 -9
  116. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/handler_alloc_hook.ipp +1 -1
  117. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/post.hpp +33 -1
  118. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/prepend.hpp +12 -3
  119. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read.hpp +40 -9
  120. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_at.hpp +27 -6
  121. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_until.hpp +104 -24
  122. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/redirect_error.hpp +12 -3
  123. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/spawn.hpp +70 -15
  124. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/src.hpp +1 -0
  125. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/use_future.hpp +25 -0
  126. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write.hpp +38 -30
  127. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write_at.hpp +27 -6
  128. data/src/cxx_supportlib/vendor-modified/boost/asio/io_context.hpp +0 -13
  129. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v4.ipp +3 -1
  130. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v6.ipp +3 -1
  131. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_descriptor.hpp +2 -2
  132. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_stream_descriptor.hpp +2 -2
  133. data/src/cxx_supportlib/vendor-modified/boost/asio/post.hpp +17 -18
  134. data/src/cxx_supportlib/vendor-modified/boost/asio/spawn.hpp +3 -1
  135. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/io.hpp +13 -3
  136. data/src/cxx_supportlib/vendor-modified/boost/asio/strand.hpp +11 -7
  137. data/src/cxx_supportlib/vendor-modified/boost/asio/system_executor.hpp +0 -13
  138. data/src/cxx_supportlib/vendor-modified/boost/asio/thread_pool.hpp +23 -18
  139. data/src/cxx_supportlib/vendor-modified/boost/asio/version.hpp +1 -1
  140. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_object_handle.hpp +2 -2
  141. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_overlapped_handle.hpp +1 -1
  142. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_random_access_handle.hpp +2 -2
  143. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_stream_handle.hpp +2 -2
  144. data/src/cxx_supportlib/vendor-modified/boost/asio.hpp +4 -0
  145. data/src/cxx_supportlib/vendor-modified/boost/bind/bind.hpp +1 -1
  146. data/src/cxx_supportlib/vendor-modified/boost/chrono/config.hpp +1 -0
  147. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/mac/chrono.hpp +4 -4
  148. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/scan_keyword.hpp +4 -2
  149. data/src/cxx_supportlib/vendor-modified/boost/chrono/duration.hpp +2 -2
  150. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_io.hpp +3 -3
  151. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_put.hpp +5 -5
  152. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_units.hpp +2 -2
  153. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/time_point_io.hpp +2 -2
  154. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/utility/ios_base_state_ptr.hpp +7 -7
  155. data/src/cxx_supportlib/vendor-modified/boost/chrono/time_point.hpp +1 -1
  156. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/details.hpp +5 -1
  157. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang.hpp +10 -3
  158. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang_version.hpp +9 -3
  159. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc.hpp +9 -3
  160. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/sunpro_cc.hpp +6 -0
  161. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/visualc.hpp +8 -0
  162. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp.hpp +4 -0
  163. data/src/cxx_supportlib/vendor-modified/boost/config/detail/suffix.hpp +33 -0
  164. data/src/cxx_supportlib/vendor-modified/boost/config/header_deprecated.hpp +1 -1
  165. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcpp.hpp +9 -0
  166. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libstdcpp3.hpp +4 -2
  167. data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +1 -1
  168. data/src/cxx_supportlib/vendor-modified/boost/container/container_fwd.hpp +29 -0
  169. data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +13 -13
  170. data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +80 -95
  171. data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_begin.hpp +10 -0
  172. data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_end.hpp +3 -0
  173. data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +738 -34
  174. data/src/cxx_supportlib/vendor-modified/boost/container/detail/destroyers.hpp +38 -10
  175. data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +1 -0
  176. data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterator.hpp +2 -0
  177. data/src/cxx_supportlib/vendor-modified/boost/container/detail/workaround.hpp +3 -4
  178. data/src/cxx_supportlib/vendor-modified/boost/container/devector.hpp +1150 -1213
  179. data/src/cxx_supportlib/vendor-modified/boost/container/node_allocator.hpp +1 -1
  180. data/src/cxx_supportlib/vendor-modified/boost/container/options.hpp +104 -12
  181. data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +1 -0
  182. data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +11 -1
  183. data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +31 -331
  184. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_mix.hpp +113 -0
  185. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_range.hpp +173 -0
  186. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_tuple.hpp +133 -0
  187. data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash.hpp +461 -566
  188. data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash_fwd.hpp +24 -24
  189. data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_contiguous_range.hpp +91 -0
  190. data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_described_class.hpp +38 -0
  191. data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_range.hpp +73 -0
  192. data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_unordered_range.hpp +39 -0
  193. data/src/cxx_supportlib/vendor-modified/boost/core/bit.hpp +32 -4
  194. data/src/cxx_supportlib/vendor-modified/boost/core/detail/string_view.hpp +16 -0
  195. data/src/cxx_supportlib/vendor-modified/boost/core/empty_value.hpp +16 -16
  196. data/src/cxx_supportlib/vendor-modified/boost/core/fclose_deleter.hpp +46 -0
  197. data/src/cxx_supportlib/vendor-modified/boost/date_time/date.hpp +1 -1
  198. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/formatters.hpp +3 -3
  199. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/formatters_limited.hpp +3 -3
  200. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_date.hpp +12 -13
  201. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/parsers.hpp +2 -2
  202. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian_calendar.ipp +2 -2
  203. data/src/cxx_supportlib/vendor-modified/boost/date_time/iso_format.hpp +13 -13
  204. data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/local_date_time.hpp +2 -2
  205. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/time_formatters.hpp +4 -4
  206. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/time_formatters_limited.hpp +2 -2
  207. data/src/cxx_supportlib/vendor-modified/boost/date_time/special_values_parser.hpp +1 -1
  208. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_facet.hpp +1 -1
  209. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_parsing.hpp +2 -2
  210. data/src/cxx_supportlib/vendor-modified/boost/describe/bases.hpp +50 -0
  211. data/src/cxx_supportlib/vendor-modified/boost/describe/detail/config.hpp +40 -0
  212. data/src/cxx_supportlib/vendor-modified/boost/describe/detail/cx_streq.hpp +30 -0
  213. data/src/cxx_supportlib/vendor-modified/boost/describe/detail/void_t.hpp +32 -0
  214. data/src/cxx_supportlib/vendor-modified/boost/describe/members.hpp +159 -0
  215. data/src/cxx_supportlib/vendor-modified/boost/describe/modifiers.hpp +33 -0
  216. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree_algorithms.hpp +9 -9
  217. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree_algorithms.hpp +45 -45
  218. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/any_node_and_algorithms.hpp +8 -8
  219. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/bstree_algorithms_base.hpp +37 -38
  220. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/iterator.hpp +16 -0
  221. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/workaround.hpp +1 -1
  222. data/src/cxx_supportlib/vendor-modified/boost/intrusive/hashtable.hpp +145 -90
  223. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pack_options.hpp +2 -0
  224. data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree_algorithms.hpp +7 -7
  225. data/src/cxx_supportlib/vendor-modified/boost/intrusive/sgtree_algorithms.hpp +5 -5
  226. data/src/cxx_supportlib/vendor-modified/boost/intrusive/splaytree_algorithms.hpp +11 -9
  227. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_algorithms.hpp +7 -7
  228. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_facade.hpp +106 -25
  229. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +1 -1
  230. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_numeric.hpp +8 -5
  231. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_unsigned_converters.hpp +1 -1
  232. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/adaptive_sort_merge.hpp +4 -2
  233. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/pdqsort.hpp +2 -1
  234. data/src/cxx_supportlib/vendor-modified/boost/move/detail/type_traits.hpp +8 -4
  235. data/src/cxx_supportlib/vendor-modified/boost/mp11/bind.hpp +111 -0
  236. data/src/cxx_supportlib/vendor-modified/boost/mp11/version.hpp +1 -1
  237. data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/detail/int_float_mixture.hpp +5 -5
  238. data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/detail/sign_mixture.hpp +5 -5
  239. data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/detail/udt_builtin_mixture.hpp +5 -5
  240. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/has_opt.hpp +6 -2
  241. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_gcc_atomic.hpp +11 -2
  242. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ptr.hpp +1 -1
  243. data/src/cxx_supportlib/vendor-modified/boost/system/detail/config.hpp +7 -1
  244. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_category.hpp +2 -2
  245. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_category_impl.hpp +10 -1
  246. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_code.hpp +38 -43
  247. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_condition.hpp +52 -0
  248. data/src/cxx_supportlib/vendor-modified/boost/throw_exception.hpp +1 -1
  249. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_ptr_helper.hpp +27 -27
  250. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp +27 -27
  251. data/src/cxx_supportlib/vendor-modified/boost/type_traits/intrinsics.hpp +22 -8
  252. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/fca.hpp +37 -7
  253. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa.hpp +1921 -0
  254. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/implementation.hpp +66 -82
  255. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/prime_fmod.hpp +6 -0
  256. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/type_traits.hpp +109 -0
  257. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/xmx.hpp +75 -0
  258. data/src/cxx_supportlib/vendor-modified/boost/unordered/hash_traits.hpp +45 -0
  259. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map.hpp +732 -0
  260. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map_fwd.hpp +49 -0
  261. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set.hpp +586 -0
  262. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set_fwd.hpp +49 -0
  263. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map.hpp +166 -66
  264. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set.hpp +145 -28
  265. data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
  266. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/md5.hpp +1 -1
  267. data/src/ruby_native_extension/extconf.rb +1 -1
  268. data/src/ruby_supportlib/phusion_passenger/native_support.rb +4 -2
  269. data/src/ruby_supportlib/phusion_passenger/platform_info/operating_system.rb +1 -1
  270. data/src/ruby_supportlib/phusion_passenger/public_api.rb +3 -0
  271. data/src/ruby_supportlib/phusion_passenger/utils.rb +1 -0
  272. data/src/ruby_supportlib/phusion_passenger.rb +5 -5
  273. metadata +36 -19
  274. data/src/cxx_supportlib/vendor-modified/boost/align/align.hpp +0 -19
  275. data/src/cxx_supportlib/vendor-modified/boost/align/alignment_of.hpp +0 -54
  276. data/src/cxx_supportlib/vendor-modified/boost/align/alignment_of_forward.hpp +0 -20
  277. data/src/cxx_supportlib/vendor-modified/boost/align/detail/align_cxx11.hpp +0 -21
  278. data/src/cxx_supportlib/vendor-modified/boost/align/detail/aligned_alloc.hpp +0 -52
  279. data/src/cxx_supportlib/vendor-modified/boost/align/detail/alignment_of.hpp +0 -31
  280. data/src/cxx_supportlib/vendor-modified/boost/align/detail/alignment_of_cxx11.hpp +0 -23
  281. data/src/cxx_supportlib/vendor-modified/boost/align/detail/element_type.hpp +0 -91
  282. data/src/cxx_supportlib/vendor-modified/boost/align/detail/integral_constant.hpp +0 -53
  283. data/src/cxx_supportlib/vendor-modified/boost/align/detail/min_size.hpp +0 -26
  284. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/completion_handler_erasure.hpp +0 -196
  285. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/compose.hpp +0 -709
  286. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/float_functions.hpp +0 -336
  287. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_float.hpp +0 -271
  288. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/limits.hpp +0 -62
  289. data/src/cxx_supportlib/vendor-modified/boost/container_hash/extensions.hpp +0 -361
  290. data/src/cxx_supportlib/vendor-modified/boost/detail/container_fwd.hpp +0 -157
@@ -205,13 +205,13 @@ class treap_algorithms
205
205
 
206
206
  //! @copydoc ::boost::intrusive::bstree_algorithms::unlink(node_ptr)
207
207
  template<class NodePtrPriorityCompare>
208
- static void unlink(node_ptr node, NodePtrPriorityCompare pcomp)
208
+ static void unlink(node_ptr n, NodePtrPriorityCompare pcomp)
209
209
  {
210
- node_ptr x = NodeTraits::get_parent(node);
210
+ node_ptr x = NodeTraits::get_parent(n);
211
211
  if(x){
212
212
  while(!bstree_algo::is_header(x))
213
213
  x = NodeTraits::get_parent(x);
214
- erase(x, node, pcomp);
214
+ erase(x, n, pcomp);
215
215
  }
216
216
  }
217
217
 
@@ -220,19 +220,19 @@ class treap_algorithms
220
220
  static node_ptr unlink_leftmost_without_rebalance(node_ptr header) BOOST_NOEXCEPT;
221
221
 
222
222
  //! @copydoc ::boost::intrusive::bstree_algorithms::unique(const_node_ptr)
223
- static bool unique(const_node_ptr node) BOOST_NOEXCEPT;
223
+ static bool unique(const_node_ptr n) BOOST_NOEXCEPT;
224
224
 
225
225
  //! @copydoc ::boost::intrusive::bstree_algorithms::size(const_node_ptr)
226
226
  static std::size_t size(const_node_ptr header) BOOST_NOEXCEPT;
227
227
 
228
228
  //! @copydoc ::boost::intrusive::bstree_algorithms::next_node(node_ptr)
229
- static node_ptr next_node(node_ptr node) BOOST_NOEXCEPT;
229
+ static node_ptr next_node(node_ptr n) BOOST_NOEXCEPT;
230
230
 
231
231
  //! @copydoc ::boost::intrusive::bstree_algorithms::prev_node(node_ptr)
232
- static node_ptr prev_node(node_ptr node) BOOST_NOEXCEPT;
232
+ static node_ptr prev_node(node_ptr n) BOOST_NOEXCEPT;
233
233
 
234
234
  //! @copydoc ::boost::intrusive::bstree_algorithms::init(node_ptr)
235
- static void init(node_ptr node) BOOST_NOEXCEPT;
235
+ static void init(node_ptr n) BOOST_NOEXCEPT;
236
236
 
237
237
  //! @copydoc ::boost::intrusive::bstree_algorithms::init_header(node_ptr)
238
238
  static void init_header(node_ptr header) BOOST_NOEXCEPT;
@@ -154,79 +154,160 @@ namespace iterators {
154
154
  class postfix_increment_proxy
155
155
  {
156
156
  typedef typename iterator_value<Iterator>::type value_type;
157
+
157
158
  public:
158
159
  explicit postfix_increment_proxy(Iterator const& x)
159
- : stored_value(*x)
160
+ : stored_iterator(x)
161
+ , stored_value(*x)
160
162
  {}
161
163
 
162
164
  // Returning a mutable reference allows nonsense like
163
165
  // (*r++).mutate(), but it imposes fewer assumptions about the
164
166
  // behavior of the value_type. In particular, recall that
165
167
  // (*r).mutate() is legal if operator* returns by value.
166
- value_type&
167
- operator*() const
168
+ // Provides readability of *r++
169
+ value_type& operator*() const
168
170
  {
169
- return this->stored_value;
171
+ return stored_value;
172
+ }
173
+
174
+ // Provides X(r++)
175
+ operator Iterator const&() const
176
+ {
177
+ return stored_iterator;
178
+ }
179
+
180
+ // Provides (r++)->foo()
181
+ value_type* operator->() const
182
+ {
183
+ return boost::addressof(stored_value);
170
184
  }
185
+
171
186
  private:
187
+ Iterator stored_iterator;
172
188
  mutable value_type stored_value;
173
189
  };
174
190
 
191
+
192
+ template <class Iterator>
193
+ class writable_postfix_increment_dereference_proxy;
194
+
195
+ template <class T>
196
+ struct is_not_writable_postfix_increment_dereference_proxy :
197
+ public boost::true_type
198
+ {};
199
+
200
+ template <class Iterator>
201
+ struct is_not_writable_postfix_increment_dereference_proxy<
202
+ writable_postfix_increment_dereference_proxy<Iterator>
203
+ > :
204
+ public boost::false_type
205
+ {};
206
+
207
+ template <class Iterator>
208
+ class writable_postfix_increment_proxy;
209
+
175
210
  //
176
211
  // In general, we can't determine that such an iterator isn't
177
212
  // writable -- we also need to store a copy of the old iterator so
178
213
  // that it can be written into.
179
214
  template <class Iterator>
180
- class writable_postfix_increment_proxy
215
+ class writable_postfix_increment_dereference_proxy
181
216
  {
217
+ friend class writable_postfix_increment_proxy<Iterator>;
218
+
182
219
  typedef typename iterator_value<Iterator>::type value_type;
220
+
183
221
  public:
184
- explicit writable_postfix_increment_proxy(Iterator const& x)
185
- : stored_value(*x)
186
- , stored_iterator(x)
222
+ explicit writable_postfix_increment_dereference_proxy(Iterator const& x)
223
+ : stored_iterator(x)
224
+ , stored_value(*x)
187
225
  {}
188
226
 
189
- // Dereferencing must return a proxy so that both *r++ = o and
190
- // value_type(*r++) can work. In this case, *r is the same as
191
- // *r++, and the conversion operator below is used to ensure
192
- // readability.
193
- writable_postfix_increment_proxy const&
194
- operator*() const
227
+ // Provides readability of *r++
228
+ operator value_type&() const
195
229
  {
196
- return *this;
230
+ return this->stored_value;
197
231
  }
198
232
 
199
- // Provides readability of *r++
200
- operator value_type&() const
233
+ template <class OtherIterator>
234
+ writable_postfix_increment_dereference_proxy const&
235
+ operator=(writable_postfix_increment_dereference_proxy<OtherIterator> const& x) const
201
236
  {
202
- return stored_value;
237
+ typedef typename iterator_value<OtherIterator>::type other_value_type;
238
+ *this->stored_iterator = static_cast<other_value_type&>(x);
239
+ return *this;
203
240
  }
204
241
 
205
242
  // Provides writability of *r++
243
+ #if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
206
244
  template <class T>
207
- T const& operator=(T const& x) const
245
+ typename iterators::enable_if<
246
+ is_not_writable_postfix_increment_dereference_proxy< T >,
247
+ writable_postfix_increment_dereference_proxy const&
248
+ >::type operator=(T&& x) const
249
+ {
250
+ *this->stored_iterator = static_cast< T&& >(x);
251
+ return *this;
252
+ }
253
+ #else
254
+ template <class T>
255
+ typename iterators::enable_if<
256
+ is_not_writable_postfix_increment_dereference_proxy< T >,
257
+ writable_postfix_increment_dereference_proxy const&
258
+ >::type operator=(T const& x) const
208
259
  {
209
260
  *this->stored_iterator = x;
210
- return x;
261
+ return *this;
211
262
  }
212
263
 
213
264
  // This overload just in case only non-const objects are writable
214
265
  template <class T>
215
- T& operator=(T& x) const
266
+ typename iterators::enable_if<
267
+ is_not_writable_postfix_increment_dereference_proxy< T >,
268
+ writable_postfix_increment_dereference_proxy const&
269
+ >::type operator=(T& x) const
216
270
  {
217
271
  *this->stored_iterator = x;
218
- return x;
272
+ return *this;
273
+ }
274
+ #endif
275
+
276
+ private:
277
+ Iterator stored_iterator;
278
+ mutable value_type stored_value;
279
+ };
280
+
281
+ template <class Iterator>
282
+ class writable_postfix_increment_proxy
283
+ {
284
+ typedef typename iterator_value<Iterator>::type value_type;
285
+
286
+ public:
287
+ explicit writable_postfix_increment_proxy(Iterator const& x)
288
+ : dereference_proxy(x)
289
+ {}
290
+
291
+ writable_postfix_increment_dereference_proxy<Iterator> const&
292
+ operator*() const
293
+ {
294
+ return dereference_proxy;
219
295
  }
220
296
 
221
297
  // Provides X(r++)
222
298
  operator Iterator const&() const
223
299
  {
224
- return stored_iterator;
300
+ return dereference_proxy.stored_iterator;
301
+ }
302
+
303
+ // Provides (r++)->foo()
304
+ value_type* operator->() const
305
+ {
306
+ return boost::addressof(dereference_proxy.stored_value);
225
307
  }
226
308
 
227
309
  private:
228
- mutable value_type stored_value;
229
- Iterator stored_iterator;
310
+ writable_postfix_increment_dereference_proxy<Iterator> dereference_proxy;
230
311
  };
231
312
 
232
313
  # ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
@@ -76,7 +76,7 @@
76
76
  #include <boost/container/container_fwd.hpp>
77
77
  #include <boost/integer.hpp>
78
78
  #include <boost/detail/basic_pointerbuf.hpp>
79
- #include <boost/noncopyable.hpp>
79
+ #include <boost/core/noncopyable.hpp>
80
80
  #ifndef BOOST_NO_CWCHAR
81
81
  # include <cwchar>
82
82
  #endif
@@ -32,6 +32,7 @@
32
32
  #include <boost/type_traits/is_arithmetic.hpp>
33
33
  #include <boost/type_traits/is_base_of.hpp>
34
34
  #include <boost/type_traits/is_float.hpp>
35
+ #include <boost/type_traits/remove_volatile.hpp>
35
36
 
36
37
  #include <boost/numeric/conversion/cast.hpp>
37
38
 
@@ -155,14 +156,16 @@ struct lexical_cast_dynamic_num_ignoring_minus
155
156
  template <typename Target, typename Source>
156
157
  struct dynamic_num_converter_impl
157
158
  {
158
- static inline bool try_convert(const Source &arg, Target& result) BOOST_NOEXCEPT {
159
+ typedef BOOST_DEDUCED_TYPENAME boost::remove_volatile<Source>::type source_type;
160
+
161
+ static inline bool try_convert(source_type arg, Target& result) BOOST_NOEXCEPT {
159
162
  typedef BOOST_DEDUCED_TYPENAME boost::conditional<
160
163
  boost::is_unsigned<Target>::value &&
161
- (boost::is_signed<Source>::value || boost::is_float<Source>::value) &&
162
- !(boost::is_same<Source, bool>::value) &&
164
+ (boost::is_signed<source_type>::value || boost::is_float<source_type>::value) &&
165
+ !(boost::is_same<source_type, bool>::value) &&
163
166
  !(boost::is_same<Target, bool>::value),
164
- lexical_cast_dynamic_num_ignoring_minus<Target, Source>,
165
- lexical_cast_dynamic_num_not_ignoring_minus<Target, Source>
167
+ lexical_cast_dynamic_num_ignoring_minus<Target, source_type>,
168
+ lexical_cast_dynamic_num_not_ignoring_minus<Target, source_type>
166
169
  >::type caster_type;
167
170
 
168
171
  return caster_type::try_convert(arg, result);
@@ -50,7 +50,7 @@
50
50
  #include <boost/lexical_cast/detail/lcast_char_constants.hpp>
51
51
  #include <boost/type_traits/make_unsigned.hpp>
52
52
  #include <boost/type_traits/is_signed.hpp>
53
- #include <boost/noncopyable.hpp>
53
+ #include <boost/core/noncopyable.hpp>
54
54
 
55
55
  namespace boost
56
56
  {
@@ -175,7 +175,8 @@ void swap_and_update_key
175
175
  {
176
176
  if(begin != with){
177
177
  ::boost::adl_move_swap_ranges(begin, end, with);
178
- ::boost::adl_move_swap(*key_next, *key_range2);
178
+ if(key_next != key_range2) //Avoid potential self-swapping
179
+ ::boost::adl_move_swap(*key_next, *key_range2);
179
180
  if(key_next == key_mid){
180
181
  key_mid = key_range2;
181
182
  }
@@ -217,7 +218,8 @@ RandIt2 buffer_and_update_key
217
218
  while(begin != end) {
218
219
  op(three_way_t(), begin++, with++, buffer++);
219
220
  }
220
- ::boost::adl_move_swap(*key_next, *key_range2);
221
+ if (key_next != key_range2) //Avoid potential self-swapping
222
+ ::boost::adl_move_swap(*key_next, *key_range2);
221
223
  if (key_next == key_mid) {
222
224
  key_mid = key_range2;
223
225
  }
@@ -192,7 +192,8 @@ namespace pdqsort_detail {
192
192
 
193
193
  // Put the pivot in the right place.
194
194
  Iter pivot_pos = first - 1;
195
- *begin = boost::move(*pivot_pos);
195
+ if(begin != pivot_pos) //Avoid potential self-move
196
+ *begin = boost::move(*pivot_pos);
196
197
  *pivot_pos = boost::move(pivot);
197
198
 
198
199
  return pdqsort_detail::pair<Iter, bool>(pivot_pos, already_partitioned);
@@ -190,33 +190,37 @@
190
190
  # endif
191
191
 
192
192
  // BOOST_MOVE_HAS_TRIVIAL_MOVE_CONSTRUCTOR
193
- # if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && BOOST_MOVE_HAS_TRAIT(is_constructible) && BOOST_MOVE_HAS_TRAIT(is_trivially_constructible)
193
+ # if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
194
+
195
+ # if BOOST_MOVE_HAS_TRAIT(is_constructible) && BOOST_MOVE_HAS_TRAIT(is_trivially_constructible)
194
196
  # define BOOST_MOVE_HAS_TRIVIAL_MOVE_CONSTRUCTOR(T) (__is_constructible(T, T&&) && __is_trivially_constructible(T, T&&))
195
197
  # elif BOOST_MOVE_HAS_TRAIT(has_trivial_move_constructor)
196
198
  # define BOOST_MOVE_HAS_TRIVIAL_MOVE_CONSTRUCTOR(T) __has_trivial_move_constructor(T)
197
199
  # endif
198
200
 
199
201
  // BOOST_MOVE_HAS_TRIVIAL_MOVE_ASSIGN
200
- # if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && BOOST_MOVE_HAS_TRAIT(is_assignable) && BOOST_MOVE_HAS_TRAIT(is_trivially_assignable)
202
+ # if BOOST_MOVE_HAS_TRAIT(is_assignable) && BOOST_MOVE_HAS_TRAIT(is_trivially_assignable)
201
203
  # define BOOST_MOVE_HAS_TRIVIAL_MOVE_ASSIGN(T) (__is_assignable(T, T&&) && __is_trivially_assignable(T, T&&))
202
204
  # elif BOOST_MOVE_HAS_TRAIT(has_trivial_move_assign)
203
205
  # define BOOST_MOVE_HAS_TRIVIAL_MOVE_ASSIGN(T) __has_trivial_move_assign(T)
204
206
  # endif
205
207
 
206
208
  // BOOST_MOVE_HAS_NOTHROW_MOVE_CONSTRUCTOR
207
- # if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && BOOST_MOVE_HAS_TRAIT(is_constructible) && BOOST_MOVE_HAS_TRAIT(is_nothrow_constructible)
209
+ # if BOOST_MOVE_HAS_TRAIT(is_constructible) && BOOST_MOVE_HAS_TRAIT(is_nothrow_constructible)
208
210
  # define BOOST_MOVE_HAS_NOTHROW_MOVE_CONSTRUCTOR(T) (__is_constructible(T, T&&) && __is_nothrow_constructible(T, T&&))
209
211
  # elif BOOST_MOVE_HAS_TRAIT(has_nothrow_move_constructor)
210
212
  # define BOOST_MOVE_HAS_NOTHROW_MOVE_CONSTRUCTOR(T) __has_nothrow_move_constructor(T)
211
213
  # endif
212
214
 
213
215
  // BOOST_MOVE_HAS_NOTHROW_MOVE_ASSIGN
214
- # if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && BOOST_MOVE_HAS_TRAIT(is_assignable) && BOOST_MOVE_HAS_TRAIT(is_nothrow_assignable)
216
+ # if BOOST_MOVE_HAS_TRAIT(is_assignable) && BOOST_MOVE_HAS_TRAIT(is_nothrow_assignable)
215
217
  # define BOOST_MOVE_HAS_NOTHROW_MOVE_ASSIGN(T) (__is_assignable(T, T&&) && __is_nothrow_assignable(T, T&&))
216
218
  # elif BOOST_MOVE_HAS_TRAIT(has_nothrow_move_assign)
217
219
  # define BOOST_MOVE_HAS_NOTHROW_MOVE_ASSIGN(T) __has_nothrow_move_assign(T)
218
220
  # endif
219
221
 
222
+ # endif //BOOST_NO_CXX11_RVALUE_REFERENCES
223
+
220
224
  // BOOST_MOVE_ALIGNMENT_OF
221
225
  # define BOOST_MOVE_ALIGNMENT_OF(T) __alignof(T)
222
226
 
@@ -0,0 +1,111 @@
1
+ #ifndef BOOST_MP11_BIND_HPP_INCLUDED
2
+ #define BOOST_MP11_BIND_HPP_INCLUDED
3
+
4
+ // Copyright 2017, 2018 Peter Dimov.
5
+ //
6
+ // Distributed under the Boost Software License, Version 1.0.
7
+ //
8
+ // See accompanying file LICENSE_1_0.txt or copy at
9
+ // http://www.boost.org/LICENSE_1_0.txt
10
+
11
+ #include <boost/mp11/algorithm.hpp>
12
+ #include <boost/mp11/utility.hpp>
13
+ #include <cstddef>
14
+
15
+ namespace boost
16
+ {
17
+ namespace mp11
18
+ {
19
+
20
+ // mp_bind_front
21
+ template<template<class...> class F, class... T> struct mp_bind_front
22
+ {
23
+ // the indirection through mp_defer works around the language inability
24
+ // to expand U... into a fixed parameter list of an alias template
25
+
26
+ template<class... U> using fn = typename mp_defer<F, T..., U...>::type;
27
+ };
28
+
29
+ template<class Q, class... T> using mp_bind_front_q = mp_bind_front<Q::template fn, T...>;
30
+
31
+ // mp_bind_back
32
+ template<template<class...> class F, class... T> struct mp_bind_back
33
+ {
34
+ template<class... U> using fn = typename mp_defer<F, U..., T...>::type;
35
+ };
36
+
37
+ template<class Q, class... T> using mp_bind_back_q = mp_bind_back<Q::template fn, T...>;
38
+
39
+ // mp_arg
40
+ template<std::size_t I> struct mp_arg
41
+ {
42
+ template<class... T> using fn = mp_at_c<mp_list<T...>, I>;
43
+ };
44
+
45
+ using _1 = mp_arg<0>;
46
+ using _2 = mp_arg<1>;
47
+ using _3 = mp_arg<2>;
48
+ using _4 = mp_arg<3>;
49
+ using _5 = mp_arg<4>;
50
+ using _6 = mp_arg<5>;
51
+ using _7 = mp_arg<6>;
52
+ using _8 = mp_arg<7>;
53
+ using _9 = mp_arg<8>;
54
+
55
+ // mp_bind
56
+ template<template<class...> class F, class... T> struct mp_bind;
57
+
58
+ namespace detail
59
+ {
60
+
61
+ template<class V, class... T> struct eval_bound_arg
62
+ {
63
+ using type = V;
64
+ };
65
+
66
+ template<std::size_t I, class... T> struct eval_bound_arg<mp_arg<I>, T...>
67
+ {
68
+ using type = typename mp_arg<I>::template fn<T...>;
69
+ };
70
+
71
+ template<template<class...> class F, class... U, class... T> struct eval_bound_arg<mp_bind<F, U...>, T...>
72
+ {
73
+ using type = typename mp_bind<F, U...>::template fn<T...>;
74
+ };
75
+
76
+ template<template<class...> class F, class... U, class... T> struct eval_bound_arg<mp_bind_front<F, U...>, T...>
77
+ {
78
+ using type = typename mp_bind_front<F, U...>::template fn<T...>;
79
+ };
80
+
81
+ template<template<class...> class F, class... U, class... T> struct eval_bound_arg<mp_bind_back<F, U...>, T...>
82
+ {
83
+ using type = typename mp_bind_back<F, U...>::template fn<T...>;
84
+ };
85
+
86
+ } // namespace detail
87
+
88
+ template<template<class...> class F, class... T> struct mp_bind
89
+ {
90
+ #if BOOST_MP11_WORKAROUND( BOOST_MP11_MSVC, == 1915 )
91
+ private:
92
+
93
+ template<class... U> struct _f { using type = F<typename detail::eval_bound_arg<T, U...>::type...>; };
94
+
95
+ public:
96
+
97
+ template<class... U> using fn = typename _f<U...>::type;
98
+
99
+ #else
100
+
101
+ template<class... U> using fn = F<typename detail::eval_bound_arg<T, U...>::type...>;
102
+
103
+ #endif
104
+ };
105
+
106
+ template<class Q, class... T> using mp_bind_q = mp_bind<Q::template fn, T...>;
107
+
108
+ } // namespace mp11
109
+ } // namespace boost
110
+
111
+ #endif // #ifndef BOOST_MP11_BIND_HPP_INCLUDED
@@ -11,6 +11,6 @@
11
11
  // Same format as BOOST_VERSION:
12
12
  // major * 100000 + minor * 100 + patch
13
13
 
14
- #define BOOST_MP11_VERSION 108000
14
+ #define BOOST_MP11_VERSION 108100
15
15
 
16
16
  #endif // #ifndef BOOST_MP11_VERSION_HPP_INCLUDED
@@ -16,15 +16,15 @@
16
16
  #include "boost/numeric/conversion/int_float_mixture_enum.hpp"
17
17
  #include "boost/numeric/conversion/detail/meta.hpp"
18
18
 
19
- #include "boost/mpl/integral_c.hpp"
19
+ #include "boost/type_traits/integral_constant.hpp"
20
20
 
21
21
  namespace boost { namespace numeric { namespace convdetail
22
22
  {
23
23
  // Integral Constants for 'IntFloatMixture'
24
- typedef mpl::integral_c<int_float_mixture_enum, integral_to_integral> int2int_c ;
25
- typedef mpl::integral_c<int_float_mixture_enum, integral_to_float> int2float_c ;
26
- typedef mpl::integral_c<int_float_mixture_enum, float_to_integral> float2int_c ;
27
- typedef mpl::integral_c<int_float_mixture_enum, float_to_float> float2float_c ;
24
+ typedef boost::integral_constant<int_float_mixture_enum, integral_to_integral> int2int_c ;
25
+ typedef boost::integral_constant<int_float_mixture_enum, integral_to_float> int2float_c ;
26
+ typedef boost::integral_constant<int_float_mixture_enum, float_to_integral> float2int_c ;
27
+ typedef boost::integral_constant<int_float_mixture_enum, float_to_float> float2float_c ;
28
28
 
29
29
  // Metafunction:
30
30
  //
@@ -16,15 +16,15 @@
16
16
  #include "boost/numeric/conversion/sign_mixture_enum.hpp"
17
17
  #include "boost/numeric/conversion/detail/meta.hpp"
18
18
 
19
- #include "boost/mpl/integral_c.hpp"
19
+ #include "boost/type_traits/integral_constant.hpp"
20
20
 
21
21
  namespace boost { namespace numeric { namespace convdetail
22
22
  {
23
23
  // Integral Constants for 'SignMixture'
24
- typedef mpl::integral_c<sign_mixture_enum, unsigned_to_unsigned> unsig2unsig_c ;
25
- typedef mpl::integral_c<sign_mixture_enum, signed_to_signed> sig2sig_c ;
26
- typedef mpl::integral_c<sign_mixture_enum, signed_to_unsigned> sig2unsig_c ;
27
- typedef mpl::integral_c<sign_mixture_enum, unsigned_to_signed> unsig2sig_c ;
24
+ typedef boost::integral_constant<sign_mixture_enum, unsigned_to_unsigned> unsig2unsig_c ;
25
+ typedef boost::integral_constant<sign_mixture_enum, signed_to_signed> sig2sig_c ;
26
+ typedef boost::integral_constant<sign_mixture_enum, signed_to_unsigned> sig2unsig_c ;
27
+ typedef boost::integral_constant<sign_mixture_enum, unsigned_to_signed> unsig2sig_c ;
28
28
 
29
29
  // Metafunction:
30
30
  //
@@ -15,15 +15,15 @@
15
15
  #include "boost/numeric/conversion/udt_builtin_mixture_enum.hpp"
16
16
  #include "boost/numeric/conversion/detail/meta.hpp"
17
17
 
18
- #include "boost/mpl/integral_c.hpp"
18
+ #include "boost/type_traits/integral_constant.hpp"
19
19
 
20
20
  namespace boost { namespace numeric { namespace convdetail
21
21
  {
22
22
  // Integral Constants for 'UdtMixture'
23
- typedef mpl::integral_c<udt_builtin_mixture_enum, builtin_to_builtin> builtin2builtin_c ;
24
- typedef mpl::integral_c<udt_builtin_mixture_enum, builtin_to_udt> builtin2udt_c ;
25
- typedef mpl::integral_c<udt_builtin_mixture_enum, udt_to_builtin> udt2builtin_c ;
26
- typedef mpl::integral_c<udt_builtin_mixture_enum, udt_to_udt> udt2udt_c ;
23
+ typedef boost::integral_constant<udt_builtin_mixture_enum, builtin_to_builtin> builtin2builtin_c ;
24
+ typedef boost::integral_constant<udt_builtin_mixture_enum, builtin_to_udt> builtin2udt_c ;
25
+ typedef boost::integral_constant<udt_builtin_mixture_enum, udt_to_builtin> udt2builtin_c ;
26
+ typedef boost::integral_constant<udt_builtin_mixture_enum, udt_to_udt> udt2udt_c ;
27
27
 
28
28
  // Metafunction:
29
29
  //
@@ -17,10 +17,14 @@
17
17
  # /* BOOST_PP_VARIADIC_HAS_OPT */
18
18
  #
19
19
  # if defined(__cplusplus) && __cplusplus > 201703L
20
- # include <boost/preprocessor/variadic/detail/has_opt.hpp>
21
- # define BOOST_PP_VARIADIC_HAS_OPT() \
20
+ # if defined(__GNUC__) && !defined(__clang__) && __GNUC__ >= 8 && __GNUC__ < 10
21
+ # define BOOST_PP_VARIADIC_HAS_OPT() 0
22
+ # else
23
+ # include <boost/preprocessor/variadic/detail/has_opt.hpp>
24
+ # define BOOST_PP_VARIADIC_HAS_OPT() \
22
25
  BOOST_PP_VARIADIC_HAS_OPT_ELEM2(BOOST_PP_VARIADIC_HAS_OPT_FUNCTION(?),) \
23
26
  /**/
27
+ # endif
24
28
  # else
25
29
  # define BOOST_PP_VARIADIC_HAS_OPT() 0
26
30
  # endif
@@ -30,7 +30,16 @@ class spinlock
30
30
  {
31
31
  public:
32
32
 
33
- unsigned char v_;
33
+ // `bool` alignment is required for Apple PPC32
34
+ // https://github.com/boostorg/smart_ptr/issues/105
35
+ // https://github.com/PurpleI2P/i2pd/issues/1726
36
+ // https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107590
37
+
38
+ union
39
+ {
40
+ unsigned char v_;
41
+ bool align_;
42
+ };
34
43
 
35
44
  public:
36
45
 
@@ -80,6 +89,6 @@ public:
80
89
  } // namespace detail
81
90
  } // namespace boost
82
91
 
83
- #define BOOST_DETAIL_SPINLOCK_INIT {0}
92
+ #define BOOST_DETAIL_SPINLOCK_INIT {{0}}
84
93
 
85
94
  #endif // #ifndef BOOST_SMART_PTR_DETAIL_SPINLOCK_GCC_ATOMIC_HPP_INCLUDED
@@ -245,7 +245,7 @@ template<class T, class U> inline bool operator!=(T * a, intrusive_ptr<U> const
245
245
  return a != b.get();
246
246
  }
247
247
 
248
- #if __GNUC__ == 2 && __GNUC_MINOR__ <= 96
248
+ #if defined(__GNUC__) && __GNUC__ == 2 && __GNUC_MINOR__ <= 96
249
249
 
250
250
  // Resolve the ambiguity between our op!= and the one in rel_ops
251
251
 
@@ -12,8 +12,14 @@
12
12
  #include <boost/config/workaround.hpp>
13
13
 
14
14
  // BOOST_SYSTEM_HAS_SYSTEM_ERROR
15
+ //
16
+ // The macro BOOST_SYSTEM_DISABLE_THREADS can be defined on configurations
17
+ // that provide <system_error> and <atomic>, but not <mutex>, such as the
18
+ // single-threaded libstdc++.
19
+ //
20
+ // https://github.com/boostorg/system/issues/92
15
21
 
16
- #if !defined(BOOST_NO_CXX11_HDR_SYSTEM_ERROR) && !defined(BOOST_NO_CXX11_HDR_ATOMIC) && !defined(BOOST_NO_CXX11_HDR_MUTEX)
22
+ #if !defined(BOOST_NO_CXX11_HDR_SYSTEM_ERROR) && !defined(BOOST_NO_CXX11_HDR_ATOMIC) && ( !defined(BOOST_NO_CXX11_HDR_MUTEX) || defined(BOOST_SYSTEM_DISABLE_THREADS) )
17
23
  # define BOOST_SYSTEM_HAS_SYSTEM_ERROR
18
24
  #endif
19
25
 
@@ -48,7 +48,7 @@ class std_category;
48
48
  #pragma GCC diagnostic ignored "-Wnon-virtual-dtor"
49
49
  #endif
50
50
 
51
- #if defined(BOOST_MSVC)
51
+ #if defined(BOOST_MSVC) && BOOST_MSVC < 1900
52
52
  #pragma warning(push)
53
53
  #pragma warning(disable: 4351) // new behavior: elements of array will be default initialized
54
54
  #endif
@@ -183,7 +183,7 @@ public:
183
183
  #endif
184
184
  };
185
185
 
186
- #if defined(BOOST_MSVC)
186
+ #if defined(BOOST_MSVC) && BOOST_MSVC < 1900
187
187
  #pragma warning(pop)
188
188
  #endif
189
189