couchbase 3.0.0-universal-darwin-19 → 3.0.1-universal-darwin-19

Sign up to get free protection for your applications and to get access to all the features.
Files changed (902) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/ext/CMakeLists.txt +86 -169
  4. data/ext/build_version.hxx.in +3 -2
  5. data/ext/cmake/Backtrace.cmake +35 -0
  6. data/ext/cmake/BuildTracing.cmake +6 -0
  7. data/ext/cmake/Cache.cmake +29 -0
  8. data/ext/cmake/CompilerWarnings.cmake +78 -0
  9. data/ext/cmake/PreventInSourceBuilds.cmake +18 -0
  10. data/ext/cmake/Sanitizers.cmake +66 -0
  11. data/ext/cmake/StandardProjectSettings.cmake +40 -0
  12. data/ext/cmake/StaticAnalyzers.cmake +37 -0
  13. data/ext/cmake/Testing.cmake +52 -0
  14. data/ext/cmake/ThirdPartyDependencies.cmake +20 -0
  15. data/ext/cmake/VersionInfo.cmake +37 -0
  16. data/ext/couchbase/bucket.hxx +37 -12
  17. data/ext/couchbase/capabilities.hxx +117 -0
  18. data/ext/couchbase/cbcrypto/cbcrypto.cc +15 -15
  19. data/ext/couchbase/cluster.hxx +34 -2
  20. data/ext/couchbase/cluster_options.hxx +1 -0
  21. data/ext/couchbase/configuration.hxx +228 -52
  22. data/ext/couchbase/couchbase.cxx +914 -35
  23. data/ext/couchbase/diagnostics.hxx +251 -0
  24. data/ext/couchbase/document_id.hxx +3 -1
  25. data/ext/couchbase/errors.hxx +10 -1
  26. data/ext/couchbase/io/http_command.hxx +11 -7
  27. data/ext/couchbase/io/http_context.hxx +37 -0
  28. data/ext/couchbase/io/http_message.hxx +9 -0
  29. data/ext/couchbase/io/http_parser.hxx +2 -0
  30. data/ext/couchbase/io/http_session.hxx +100 -14
  31. data/ext/couchbase/io/http_session_manager.hxx +65 -5
  32. data/ext/couchbase/io/mcbp_command.hxx +16 -7
  33. data/ext/couchbase/io/mcbp_session.hxx +193 -51
  34. data/ext/couchbase/io/query_cache.hxx +61 -0
  35. data/ext/couchbase/io/retry_context.hxx +1 -2
  36. data/ext/couchbase/io/retry_orchestrator.hxx +16 -0
  37. data/ext/couchbase/io/retry_strategy.hxx +1 -1
  38. data/ext/couchbase/io/streams.hxx +61 -10
  39. data/ext/couchbase/operations.hxx +13 -0
  40. data/ext/couchbase/operations/analytics_dataset_create.hxx +1 -1
  41. data/ext/couchbase/operations/analytics_dataset_drop.hxx +1 -1
  42. data/ext/couchbase/operations/analytics_dataset_get_all.hxx +1 -1
  43. data/ext/couchbase/operations/analytics_dataverse_create.hxx +1 -1
  44. data/ext/couchbase/operations/analytics_dataverse_drop.hxx +1 -1
  45. data/ext/couchbase/operations/analytics_get_pending_mutations.hxx +1 -1
  46. data/ext/couchbase/operations/analytics_index_create.hxx +1 -1
  47. data/ext/couchbase/operations/analytics_index_drop.hxx +1 -1
  48. data/ext/couchbase/operations/analytics_index_get_all.hxx +1 -1
  49. data/ext/couchbase/operations/analytics_link_connect.hxx +1 -1
  50. data/ext/couchbase/operations/analytics_link_disconnect.hxx +1 -1
  51. data/ext/couchbase/operations/bucket_create.hxx +11 -5
  52. data/ext/couchbase/operations/bucket_drop.hxx +1 -1
  53. data/ext/couchbase/operations/bucket_flush.hxx +1 -1
  54. data/ext/couchbase/operations/bucket_get.hxx +1 -1
  55. data/ext/couchbase/operations/bucket_get_all.hxx +1 -1
  56. data/ext/couchbase/operations/bucket_settings.hxx +43 -4
  57. data/ext/couchbase/operations/bucket_update.hxx +11 -5
  58. data/ext/couchbase/operations/cluster_developer_preview_enable.hxx +1 -1
  59. data/ext/couchbase/operations/collection_create.hxx +3 -1
  60. data/ext/couchbase/operations/collection_drop.hxx +1 -1
  61. data/ext/couchbase/operations/collections_manifest_get.hxx +70 -0
  62. data/ext/couchbase/operations/document_analytics.hxx +6 -1
  63. data/ext/couchbase/operations/document_get_projected.hxx +1 -1
  64. data/ext/couchbase/operations/document_query.hxx +85 -8
  65. data/ext/couchbase/operations/document_search.hxx +14 -4
  66. data/ext/couchbase/operations/document_view.hxx +1 -1
  67. data/ext/couchbase/operations/group_drop.hxx +71 -0
  68. data/ext/couchbase/operations/group_get.hxx +75 -0
  69. data/ext/couchbase/operations/group_get_all.hxx +70 -0
  70. data/ext/couchbase/operations/group_upsert.hxx +118 -0
  71. data/ext/couchbase/operations/query_index_build_deferred.hxx +1 -1
  72. data/ext/couchbase/operations/query_index_create.hxx +1 -1
  73. data/ext/couchbase/operations/query_index_drop.hxx +1 -1
  74. data/ext/couchbase/operations/query_index_get_all.hxx +3 -2
  75. data/ext/couchbase/operations/rbac.hxx +276 -0
  76. data/ext/couchbase/operations/role_get_all.hxx +70 -0
  77. data/ext/couchbase/operations/scope_create.hxx +6 -2
  78. data/ext/couchbase/operations/scope_drop.hxx +1 -1
  79. data/ext/couchbase/operations/scope_get_all.hxx +1 -1
  80. data/ext/couchbase/operations/search_get_stats.hxx +59 -0
  81. data/ext/couchbase/operations/search_index_analyze_document.hxx +1 -1
  82. data/ext/couchbase/operations/search_index_control_ingest.hxx +1 -1
  83. data/ext/couchbase/operations/search_index_control_plan_freeze.hxx +1 -1
  84. data/ext/couchbase/operations/search_index_control_query.hxx +1 -1
  85. data/ext/couchbase/operations/search_index_drop.hxx +1 -1
  86. data/ext/couchbase/operations/search_index_get.hxx +1 -1
  87. data/ext/couchbase/operations/search_index_get_all.hxx +1 -1
  88. data/ext/couchbase/operations/search_index_get_documents_count.hxx +24 -16
  89. data/ext/couchbase/operations/search_index_get_stats.hxx +81 -0
  90. data/ext/couchbase/operations/search_index_upsert.hxx +1 -1
  91. data/ext/couchbase/operations/user_drop.hxx +72 -0
  92. data/ext/couchbase/operations/user_get.hxx +76 -0
  93. data/ext/couchbase/operations/user_get_all.hxx +71 -0
  94. data/ext/couchbase/operations/user_upsert.hxx +125 -0
  95. data/ext/couchbase/operations/view_index_drop.hxx +1 -1
  96. data/ext/couchbase/operations/view_index_get.hxx +1 -1
  97. data/ext/couchbase/operations/view_index_get_all.hxx +1 -1
  98. data/ext/couchbase/operations/view_index_upsert.hxx +1 -1
  99. data/ext/couchbase/origin.hxx +4 -4
  100. data/ext/couchbase/platform/terminate_handler.cc +5 -4
  101. data/ext/couchbase/protocol/client_opcode.hxx +38 -38
  102. data/ext/couchbase/protocol/client_response.hxx +2 -2
  103. data/ext/couchbase/protocol/cmd_cluster_map_change_notification.hxx +6 -3
  104. data/ext/couchbase/protocol/cmd_get_cluster_config.hxx +3 -1
  105. data/ext/couchbase/protocol/magic.hxx +6 -6
  106. data/ext/couchbase/protocol/server_opcode.hxx +2 -2
  107. data/ext/couchbase/protocol/status.hxx +57 -57
  108. data/ext/couchbase/service_type.hxx +1 -1
  109. data/ext/couchbase/utils/connection_string.hxx +12 -3
  110. data/ext/couchbase/version.hxx +1 -1
  111. data/ext/extconf.rb +21 -9
  112. data/ext/test/test_helper.hxx +141 -0
  113. data/ext/test/test_helper_native.hxx +59 -0
  114. data/ext/test/test_helper_ruby.hxx +72 -0
  115. data/ext/test/test_native_diagnostics.cxx +385 -0
  116. data/ext/test/test_native_trivial_crud.cxx +83 -0
  117. data/ext/test/test_ruby_trivial_crud.cxx +35 -0
  118. data/ext/test/test_ruby_trivial_query.cxx +34 -0
  119. data/ext/third_party/asio/asio/include/asio.hpp +35 -0
  120. data/ext/third_party/asio/asio/include/asio/any_io_executor.hpp +71 -0
  121. data/ext/third_party/asio/asio/include/asio/associated_allocator.hpp +1 -7
  122. data/ext/third_party/asio/asio/include/asio/associated_executor.hpp +36 -19
  123. data/ext/third_party/asio/asio/include/asio/async_result.hpp +1 -8
  124. data/ext/third_party/asio/asio/include/asio/awaitable.hpp +14 -4
  125. data/ext/third_party/asio/asio/include/asio/basic_datagram_socket.hpp +12 -7
  126. data/ext/third_party/asio/asio/include/asio/basic_deadline_timer.hpp +4 -4
  127. data/ext/third_party/asio/asio/include/asio/basic_raw_socket.hpp +11 -7
  128. data/ext/third_party/asio/asio/include/asio/basic_seq_packet_socket.hpp +9 -4
  129. data/ext/third_party/asio/asio/include/asio/basic_serial_port.hpp +6 -6
  130. data/ext/third_party/asio/asio/include/asio/basic_signal_set.hpp +4 -4
  131. data/ext/third_party/asio/asio/include/asio/basic_socket.hpp +5 -5
  132. data/ext/third_party/asio/asio/include/asio/basic_socket_acceptor.hpp +13 -7
  133. data/ext/third_party/asio/asio/include/asio/basic_stream_socket.hpp +7 -3
  134. data/ext/third_party/asio/asio/include/asio/basic_waitable_timer.hpp +52 -4
  135. data/ext/third_party/asio/asio/include/asio/bind_executor.hpp +10 -15
  136. data/ext/third_party/asio/asio/include/asio/buffer.hpp +6 -4
  137. data/ext/third_party/asio/asio/include/asio/co_spawn.hpp +380 -9
  138. data/ext/third_party/asio/asio/include/asio/defer.hpp +4 -1
  139. data/ext/third_party/asio/asio/include/asio/detached.hpp +50 -0
  140. data/ext/third_party/asio/asio/include/asio/detail/atomic_count.hpp +19 -0
  141. data/ext/third_party/asio/asio/include/asio/detail/bind_handler.hpp +144 -26
  142. data/ext/third_party/asio/asio/include/asio/detail/blocking_executor_op.hpp +107 -0
  143. data/ext/third_party/asio/asio/include/asio/detail/buffer_sequence_adapter.hpp +106 -0
  144. data/ext/third_party/asio/asio/include/asio/detail/bulk_executor_op.hpp +88 -0
  145. data/ext/third_party/asio/asio/include/asio/detail/completion_handler.hpp +10 -5
  146. data/ext/third_party/asio/asio/include/asio/detail/conditionally_enabled_event.hpp +8 -0
  147. data/ext/third_party/asio/asio/include/asio/detail/config.hpp +360 -37
  148. data/ext/third_party/asio/asio/include/asio/detail/deadline_timer_service.hpp +17 -2
  149. data/ext/third_party/asio/asio/include/asio/detail/descriptor_ops.hpp +24 -6
  150. data/ext/third_party/asio/asio/include/asio/detail/descriptor_read_op.hpp +32 -14
  151. data/ext/third_party/asio/asio/include/asio/detail/descriptor_write_op.hpp +32 -14
  152. data/ext/third_party/asio/asio/include/asio/detail/executor_function.hpp +133 -34
  153. data/ext/third_party/asio/asio/include/asio/detail/handler_alloc_helpers.hpp +42 -0
  154. data/ext/third_party/asio/asio/include/asio/detail/handler_invoke_helpers.hpp +23 -0
  155. data/ext/third_party/asio/asio/include/asio/detail/handler_tracking.hpp +26 -0
  156. data/ext/third_party/asio/asio/include/asio/detail/handler_work.hpp +370 -45
  157. data/ext/third_party/asio/asio/include/asio/detail/impl/descriptor_ops.ipp +208 -74
  158. data/ext/third_party/asio/asio/include/asio/detail/impl/handler_tracking.ipp +39 -1
  159. data/ext/third_party/asio/asio/include/asio/detail/impl/reactive_serial_port_service.ipp +12 -15
  160. data/ext/third_party/asio/asio/include/asio/detail/impl/scheduler.ipp +37 -0
  161. data/ext/third_party/asio/asio/include/asio/detail/impl/signal_set_service.ipp +2 -1
  162. data/ext/third_party/asio/asio/include/asio/detail/impl/socket_ops.ipp +661 -274
  163. data/ext/third_party/asio/asio/include/asio/detail/impl/strand_executor_service.hpp +210 -4
  164. data/ext/third_party/asio/asio/include/asio/detail/impl/strand_service.hpp +8 -9
  165. data/ext/third_party/asio/asio/include/asio/detail/impl/strand_service.ipp +5 -4
  166. data/ext/third_party/asio/asio/include/asio/detail/impl/win_iocp_io_context.ipp +15 -6
  167. data/ext/third_party/asio/asio/include/asio/detail/io_object_impl.hpp +32 -50
  168. data/ext/third_party/asio/asio/include/asio/detail/memory.hpp +3 -0
  169. data/ext/third_party/asio/asio/include/asio/detail/null_event.hpp +6 -0
  170. data/ext/third_party/asio/asio/include/asio/detail/pop_options.hpp +1 -1
  171. data/ext/third_party/asio/asio/include/asio/detail/posix_event.hpp +13 -0
  172. data/ext/third_party/asio/asio/include/asio/detail/push_options.hpp +1 -1
  173. data/ext/third_party/asio/asio/include/asio/detail/reactive_descriptor_service.hpp +38 -13
  174. data/ext/third_party/asio/asio/include/asio/detail/reactive_null_buffers_op.hpp +12 -6
  175. data/ext/third_party/asio/asio/include/asio/detail/reactive_serial_port_service.hpp +2 -3
  176. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_accept_op.hpp +36 -24
  177. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_connect_op.hpp +17 -10
  178. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_recv_op.hpp +38 -16
  179. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_recvfrom_op.hpp +36 -14
  180. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_recvmsg_op.hpp +21 -11
  181. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_send_op.hpp +43 -17
  182. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_sendto_op.hpp +39 -17
  183. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_service.hpp +44 -21
  184. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_service_base.hpp +41 -18
  185. data/ext/third_party/asio/asio/include/asio/detail/reactive_wait_op.hpp +12 -6
  186. data/ext/third_party/asio/asio/include/asio/detail/reactor_op.hpp +3 -1
  187. data/ext/third_party/asio/asio/include/asio/detail/resolve_endpoint_op.hpp +10 -8
  188. data/ext/third_party/asio/asio/include/asio/detail/resolve_query_op.hpp +11 -9
  189. data/ext/third_party/asio/asio/include/asio/detail/scheduler.hpp +8 -0
  190. data/ext/third_party/asio/asio/include/asio/detail/signal_handler.hpp +7 -5
  191. data/ext/third_party/asio/asio/include/asio/detail/socket_ops.hpp +46 -0
  192. data/ext/third_party/asio/asio/include/asio/detail/source_location.hpp +45 -0
  193. data/ext/third_party/asio/asio/include/asio/detail/std_event.hpp +12 -0
  194. data/ext/third_party/asio/asio/include/asio/detail/strand_executor_service.hpp +25 -1
  195. data/ext/third_party/asio/asio/include/asio/detail/strand_service.hpp +4 -1
  196. data/ext/third_party/asio/asio/include/asio/detail/thread_info_base.hpp +58 -0
  197. data/ext/third_party/asio/asio/include/asio/detail/type_traits.hpp +59 -0
  198. data/ext/third_party/asio/asio/include/asio/detail/variadic_templates.hpp +144 -1
  199. data/ext/third_party/asio/asio/include/asio/detail/wait_handler.hpp +9 -6
  200. data/ext/third_party/asio/asio/include/asio/detail/win_event.hpp +13 -0
  201. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_handle_read_op.hpp +9 -5
  202. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_handle_write_op.hpp +9 -5
  203. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_io_context.hpp +5 -1
  204. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_null_buffers_op.hpp +10 -6
  205. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_overlapped_op.hpp +9 -5
  206. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_overlapped_ptr.hpp +18 -6
  207. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_socket_accept_op.hpp +15 -11
  208. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_socket_connect_op.hpp +10 -5
  209. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_socket_recv_op.hpp +8 -4
  210. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_socket_recvfrom_op.hpp +8 -4
  211. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_socket_recvmsg_op.hpp +8 -4
  212. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_socket_send_op.hpp +8 -4
  213. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_wait_op.hpp +10 -5
  214. data/ext/third_party/asio/asio/include/asio/detail/winrt_resolve_op.hpp +8 -4
  215. data/ext/third_party/asio/asio/include/asio/detail/winrt_socket_connect_op.hpp +8 -4
  216. data/ext/third_party/asio/asio/include/asio/detail/winrt_socket_recv_op.hpp +8 -4
  217. data/ext/third_party/asio/asio/include/asio/detail/winrt_socket_send_op.hpp +8 -4
  218. data/ext/third_party/asio/asio/include/asio/detail/work_dispatcher.hpp +81 -6
  219. data/ext/third_party/asio/asio/include/asio/detail/wrapped_handler.hpp +45 -9
  220. data/ext/third_party/asio/asio/include/asio/dispatch.hpp +4 -1
  221. data/ext/third_party/asio/asio/include/asio/execution.hpp +48 -0
  222. data/ext/third_party/asio/asio/include/asio/execution/allocator.hpp +249 -0
  223. data/ext/third_party/asio/asio/include/asio/execution/any_executor.hpp +2264 -0
  224. data/ext/third_party/asio/asio/include/asio/execution/bad_executor.hpp +47 -0
  225. data/ext/third_party/asio/asio/include/asio/execution/blocking.hpp +1351 -0
  226. data/ext/third_party/asio/asio/include/asio/execution/blocking_adaptation.hpp +1064 -0
  227. data/ext/third_party/asio/asio/include/asio/execution/bulk_execute.hpp +390 -0
  228. data/ext/third_party/asio/asio/include/asio/execution/bulk_guarantee.hpp +1018 -0
  229. data/ext/third_party/asio/asio/include/asio/execution/connect.hpp +486 -0
  230. data/ext/third_party/asio/asio/include/asio/execution/context.hpp +185 -0
  231. data/ext/third_party/asio/asio/include/asio/execution/context_as.hpp +201 -0
  232. data/ext/third_party/asio/asio/include/asio/execution/detail/as_invocable.hpp +152 -0
  233. data/ext/third_party/asio/asio/include/asio/execution/detail/as_operation.hpp +105 -0
  234. data/ext/third_party/asio/asio/include/asio/execution/detail/as_receiver.hpp +128 -0
  235. data/ext/third_party/asio/asio/include/asio/execution/detail/bulk_sender.hpp +261 -0
  236. data/ext/third_party/asio/asio/include/asio/execution/detail/submit_receiver.hpp +233 -0
  237. data/ext/third_party/asio/asio/include/asio/execution/detail/void_receiver.hpp +90 -0
  238. data/ext/third_party/asio/asio/include/asio/execution/execute.hpp +264 -0
  239. data/ext/third_party/asio/asio/include/asio/execution/executor.hpp +238 -0
  240. data/ext/third_party/asio/asio/include/asio/execution/impl/bad_executor.ipp +40 -0
  241. data/ext/third_party/asio/asio/include/asio/execution/impl/receiver_invocation_error.ipp +36 -0
  242. data/ext/third_party/asio/asio/include/asio/execution/invocable_archetype.hpp +71 -0
  243. data/ext/third_party/asio/asio/include/asio/execution/mapping.hpp +917 -0
  244. data/ext/third_party/asio/asio/include/asio/execution/occupancy.hpp +178 -0
  245. data/ext/third_party/asio/asio/include/asio/execution/operation_state.hpp +94 -0
  246. data/ext/third_party/asio/asio/include/asio/execution/outstanding_work.hpp +721 -0
  247. data/ext/third_party/asio/asio/include/asio/execution/prefer_only.hpp +327 -0
  248. data/ext/third_party/asio/asio/include/asio/execution/receiver.hpp +280 -0
  249. data/ext/third_party/asio/asio/include/asio/execution/receiver_invocation_error.hpp +48 -0
  250. data/ext/third_party/asio/asio/include/asio/execution/relationship.hpp +720 -0
  251. data/ext/third_party/asio/asio/include/asio/execution/schedule.hpp +290 -0
  252. data/ext/third_party/asio/asio/include/asio/execution/scheduler.hpp +86 -0
  253. data/ext/third_party/asio/asio/include/asio/execution/sender.hpp +311 -0
  254. data/ext/third_party/asio/asio/include/asio/execution/set_done.hpp +253 -0
  255. data/ext/third_party/asio/asio/include/asio/execution/set_error.hpp +253 -0
  256. data/ext/third_party/asio/asio/include/asio/execution/set_value.hpp +486 -0
  257. data/ext/third_party/asio/asio/include/asio/execution/start.hpp +250 -0
  258. data/ext/third_party/asio/asio/include/asio/execution/submit.hpp +450 -0
  259. data/ext/third_party/asio/asio/include/asio/executor.hpp +7 -1
  260. data/ext/third_party/asio/asio/include/asio/executor_work_guard.hpp +126 -9
  261. data/ext/third_party/asio/asio/include/asio/handler_alloc_hook.hpp +28 -5
  262. data/ext/third_party/asio/asio/include/asio/handler_invoke_hook.hpp +29 -3
  263. data/ext/third_party/asio/asio/include/asio/impl/awaitable.hpp +14 -0
  264. data/ext/third_party/asio/asio/include/asio/impl/buffered_read_stream.hpp +44 -8
  265. data/ext/third_party/asio/asio/include/asio/impl/buffered_write_stream.hpp +44 -8
  266. data/ext/third_party/asio/asio/include/asio/impl/co_spawn.hpp +145 -7
  267. data/ext/third_party/asio/asio/include/asio/impl/compose.hpp +124 -22
  268. data/ext/third_party/asio/asio/include/asio/impl/connect.hpp +52 -8
  269. data/ext/third_party/asio/asio/include/asio/impl/defer.hpp +147 -12
  270. data/ext/third_party/asio/asio/include/asio/impl/dispatch.hpp +142 -12
  271. data/ext/third_party/asio/asio/include/asio/impl/executor.hpp +15 -101
  272. data/ext/third_party/asio/asio/include/asio/impl/executor.ipp +5 -0
  273. data/ext/third_party/asio/asio/include/asio/impl/handler_alloc_hook.ipp +13 -4
  274. data/ext/third_party/asio/asio/include/asio/impl/io_context.hpp +144 -57
  275. data/ext/third_party/asio/asio/include/asio/impl/multiple_exceptions.ipp +49 -0
  276. data/ext/third_party/asio/asio/include/asio/impl/post.hpp +147 -12
  277. data/ext/third_party/asio/asio/include/asio/impl/read.hpp +85 -18
  278. data/ext/third_party/asio/asio/include/asio/impl/read_at.hpp +59 -14
  279. data/ext/third_party/asio/asio/include/asio/impl/read_until.hpp +241 -56
  280. data/ext/third_party/asio/asio/include/asio/impl/redirect_error.hpp +22 -4
  281. data/ext/third_party/asio/asio/include/asio/impl/spawn.hpp +58 -22
  282. data/ext/third_party/asio/asio/include/asio/impl/src.hpp +3 -0
  283. data/ext/third_party/asio/asio/include/asio/impl/system_context.ipp +16 -4
  284. data/ext/third_party/asio/asio/include/asio/impl/system_executor.hpp +113 -12
  285. data/ext/third_party/asio/asio/include/asio/impl/thread_pool.hpp +260 -37
  286. data/ext/third_party/asio/asio/include/asio/impl/thread_pool.ipp +61 -7
  287. data/ext/third_party/asio/asio/include/asio/impl/use_awaitable.hpp +5 -2
  288. data/ext/third_party/asio/asio/include/asio/impl/use_future.hpp +147 -6
  289. data/ext/third_party/asio/asio/include/asio/impl/write.hpp +75 -14
  290. data/ext/third_party/asio/asio/include/asio/impl/write_at.hpp +53 -11
  291. data/ext/third_party/asio/asio/include/asio/io_context.hpp +706 -48
  292. data/ext/third_party/asio/asio/include/asio/io_context_strand.hpp +3 -1
  293. data/ext/third_party/asio/asio/include/asio/ip/basic_resolver.hpp +4 -4
  294. data/ext/third_party/asio/asio/include/asio/is_applicable_property.hpp +61 -0
  295. data/ext/third_party/asio/asio/include/asio/multiple_exceptions.hpp +58 -0
  296. data/ext/third_party/asio/asio/include/asio/posix/basic_descriptor.hpp +4 -4
  297. data/ext/third_party/asio/asio/include/asio/posix/basic_stream_descriptor.hpp +5 -5
  298. data/ext/third_party/asio/asio/include/asio/post.hpp +4 -1
  299. data/ext/third_party/asio/asio/include/asio/prefer.hpp +656 -0
  300. data/ext/third_party/asio/asio/include/asio/query.hpp +296 -0
  301. data/ext/third_party/asio/asio/include/asio/read_until.hpp +6 -6
  302. data/ext/third_party/asio/asio/include/asio/require.hpp +524 -0
  303. data/ext/third_party/asio/asio/include/asio/require_concept.hpp +310 -0
  304. data/ext/third_party/asio/asio/include/asio/spawn.hpp +12 -4
  305. data/ext/third_party/asio/asio/include/asio/ssl/detail/buffered_handshake_op.hpp +5 -0
  306. data/ext/third_party/asio/asio/include/asio/ssl/detail/engine.hpp +5 -0
  307. data/ext/third_party/asio/asio/include/asio/ssl/detail/handshake_op.hpp +5 -0
  308. data/ext/third_party/asio/asio/include/asio/ssl/detail/impl/engine.ipp +16 -3
  309. data/ext/third_party/asio/asio/include/asio/ssl/detail/io.hpp +38 -4
  310. data/ext/third_party/asio/asio/include/asio/ssl/detail/read_op.hpp +5 -0
  311. data/ext/third_party/asio/asio/include/asio/ssl/detail/shutdown_op.hpp +5 -0
  312. data/ext/third_party/asio/asio/include/asio/ssl/detail/stream_core.hpp +36 -2
  313. data/ext/third_party/asio/asio/include/asio/ssl/detail/write_op.hpp +10 -1
  314. data/ext/third_party/asio/asio/include/asio/ssl/stream.hpp +15 -0
  315. data/ext/third_party/asio/asio/include/asio/static_thread_pool.hpp +31 -0
  316. data/ext/third_party/asio/asio/include/asio/strand.hpp +232 -9
  317. data/ext/third_party/asio/asio/include/asio/system_context.hpp +12 -3
  318. data/ext/third_party/asio/asio/include/asio/system_executor.hpp +557 -24
  319. data/ext/third_party/asio/asio/include/asio/thread_pool.hpp +913 -37
  320. data/ext/third_party/asio/asio/include/asio/traits/bulk_execute_free.hpp +114 -0
  321. data/ext/third_party/asio/asio/include/asio/traits/bulk_execute_member.hpp +114 -0
  322. data/ext/third_party/asio/asio/include/asio/traits/connect_free.hpp +112 -0
  323. data/ext/third_party/asio/asio/include/asio/traits/connect_member.hpp +112 -0
  324. data/ext/third_party/asio/asio/include/asio/traits/equality_comparable.hpp +100 -0
  325. data/ext/third_party/asio/asio/include/asio/traits/execute_free.hpp +108 -0
  326. data/ext/third_party/asio/asio/include/asio/traits/execute_member.hpp +108 -0
  327. data/ext/third_party/asio/asio/include/asio/traits/prefer_free.hpp +108 -0
  328. data/ext/third_party/asio/asio/include/asio/traits/prefer_member.hpp +108 -0
  329. data/ext/third_party/asio/asio/include/asio/traits/query_free.hpp +108 -0
  330. data/ext/third_party/asio/asio/include/asio/traits/query_member.hpp +108 -0
  331. data/ext/third_party/asio/asio/include/asio/traits/query_static_constexpr_member.hpp +108 -0
  332. data/ext/third_party/asio/asio/include/asio/traits/require_concept_free.hpp +108 -0
  333. data/ext/third_party/asio/asio/include/asio/traits/require_concept_member.hpp +108 -0
  334. data/ext/third_party/asio/asio/include/asio/traits/require_free.hpp +108 -0
  335. data/ext/third_party/asio/asio/include/asio/traits/require_member.hpp +108 -0
  336. data/ext/third_party/asio/asio/include/asio/traits/schedule_free.hpp +108 -0
  337. data/ext/third_party/asio/asio/include/asio/traits/schedule_member.hpp +108 -0
  338. data/ext/third_party/asio/asio/include/asio/traits/set_done_free.hpp +108 -0
  339. data/ext/third_party/asio/asio/include/asio/traits/set_done_member.hpp +108 -0
  340. data/ext/third_party/asio/asio/include/asio/traits/set_error_free.hpp +112 -0
  341. data/ext/third_party/asio/asio/include/asio/traits/set_error_member.hpp +112 -0
  342. data/ext/third_party/asio/asio/include/asio/traits/set_value_free.hpp +234 -0
  343. data/ext/third_party/asio/asio/include/asio/traits/set_value_member.hpp +234 -0
  344. data/ext/third_party/asio/asio/include/asio/traits/start_free.hpp +108 -0
  345. data/ext/third_party/asio/asio/include/asio/traits/start_member.hpp +108 -0
  346. data/ext/third_party/asio/asio/include/asio/traits/static_query.hpp +108 -0
  347. data/ext/third_party/asio/asio/include/asio/traits/static_require.hpp +123 -0
  348. data/ext/third_party/asio/asio/include/asio/traits/static_require_concept.hpp +123 -0
  349. data/ext/third_party/asio/asio/include/asio/traits/submit_free.hpp +112 -0
  350. data/ext/third_party/asio/asio/include/asio/traits/submit_member.hpp +112 -0
  351. data/ext/third_party/asio/asio/include/asio/ts/executor.hpp +1 -0
  352. data/ext/third_party/asio/asio/include/asio/ts/netfwd.hpp +67 -8
  353. data/ext/third_party/asio/asio/include/asio/use_awaitable.hpp +63 -4
  354. data/ext/third_party/asio/asio/include/asio/version.hpp +1 -1
  355. data/ext/third_party/asio/asio/include/asio/windows/basic_object_handle.hpp +4 -4
  356. data/ext/third_party/asio/asio/include/asio/windows/basic_overlapped_handle.hpp +2 -2
  357. data/ext/third_party/asio/asio/include/asio/windows/basic_random_access_handle.hpp +5 -5
  358. data/ext/third_party/asio/asio/include/asio/windows/basic_stream_handle.hpp +5 -5
  359. data/ext/third_party/asio/asio/include/asio/windows/overlapped_ptr.hpp +4 -2
  360. data/ext/third_party/gsl/CMakeLists.txt +13 -5
  361. data/ext/third_party/gsl/include/gsl/gsl_assert +1 -1
  362. data/ext/third_party/gsl/include/gsl/gsl_byte +3 -3
  363. data/ext/third_party/gsl/include/gsl/gsl_narrow +52 -0
  364. data/ext/third_party/gsl/include/gsl/gsl_util +8 -50
  365. data/ext/third_party/gsl/include/gsl/multi_span +0 -10
  366. data/ext/third_party/gsl/include/gsl/pointers +14 -28
  367. data/ext/third_party/gsl/include/gsl/span +98 -46
  368. data/ext/third_party/gsl/include/gsl/string_span +37 -47
  369. data/ext/third_party/http_parser/http_parser.c +17 -10
  370. data/ext/third_party/http_parser/http_parser.h +4 -2
  371. data/ext/third_party/json/include/tao/json/basic_value.hpp +3 -2
  372. data/ext/third_party/json/include/tao/json/binary.hpp +4 -4
  373. data/ext/third_party/json/include/tao/json/binary_view.hpp +2 -2
  374. data/ext/third_party/json/include/tao/json/binding.hpp +2 -2
  375. data/ext/third_party/json/include/tao/json/binding/factory.hpp +8 -7
  376. data/ext/third_party/json/include/tao/json/binding/internal/array.hpp +2 -1
  377. data/ext/third_party/json/include/tao/json/binding/internal/object.hpp +6 -5
  378. data/ext/third_party/json/include/tao/json/binding/versions.hpp +3 -1
  379. data/ext/third_party/json/include/tao/json/cbor.hpp +1 -0
  380. data/ext/third_party/json/include/tao/json/cbor/consume_file.hpp +7 -7
  381. data/ext/third_party/json/include/tao/json/cbor/events/from_binary.hpp +43 -0
  382. data/ext/third_party/json/include/tao/json/cbor/events/from_file.hpp +4 -4
  383. data/ext/third_party/json/include/tao/json/cbor/events/from_string.hpp +3 -3
  384. data/ext/third_party/json/include/tao/json/cbor/from_binary.hpp +32 -0
  385. data/ext/third_party/json/include/tao/json/cbor/from_file.hpp +5 -5
  386. data/ext/third_party/json/include/tao/json/cbor/internal/grammar.hpp +2 -1
  387. data/ext/third_party/json/include/tao/json/consume_file.hpp +7 -7
  388. data/ext/third_party/json/include/tao/json/contrib/internal/indirect_traits.hpp +13 -6
  389. data/ext/third_party/json/include/tao/json/contrib/position.hpp +15 -15
  390. data/ext/third_party/json/include/tao/json/contrib/reference.hpp +5 -7
  391. data/ext/third_party/json/include/tao/json/contrib/schema.hpp +58 -35
  392. data/ext/third_party/json/include/tao/json/contrib/shared_ptr_traits.hpp +12 -4
  393. data/ext/third_party/json/include/tao/json/contrib/unique_ptr_traits.hpp +12 -4
  394. data/ext/third_party/json/include/tao/json/contrib/unordered_map_traits.hpp +1 -1
  395. data/ext/third_party/json/include/tao/json/contrib/unordered_set_traits.hpp +2 -2
  396. data/ext/third_party/json/include/tao/json/events/compare.hpp +2 -12
  397. data/ext/third_party/json/include/tao/json/events/from_file.hpp +4 -4
  398. data/ext/third_party/json/include/tao/json/events/from_string.hpp +2 -2
  399. data/ext/third_party/json/include/tao/json/events/invalid_string_to_binary.hpp +1 -1
  400. data/ext/third_party/json/include/tao/json/events/key_camel_case_to_snake_case.hpp +3 -3
  401. data/ext/third_party/json/include/tao/json/events/key_snake_case_to_camel_case.hpp +1 -1
  402. data/ext/third_party/json/include/tao/json/events/tee.hpp +2 -2
  403. data/ext/third_party/json/include/tao/json/events/to_pretty_stream.hpp +1 -1
  404. data/ext/third_party/json/include/tao/json/events/to_stream.hpp +1 -1
  405. data/ext/third_party/json/include/tao/json/events/transformer.hpp +3 -3
  406. data/ext/third_party/json/include/tao/json/events/validate_event_order.hpp +3 -3
  407. data/ext/third_party/json/include/tao/json/events/virtual_ref.hpp +6 -0
  408. data/ext/third_party/json/include/tao/json/external/pegtl.hpp +4 -13
  409. data/ext/third_party/json/include/tao/json/external/pegtl/argv_input.hpp +3 -5
  410. data/ext/third_party/json/include/tao/json/external/pegtl/ascii.hpp +5 -18
  411. data/ext/third_party/json/include/tao/json/external/pegtl/buffer_input.hpp +3 -3
  412. data/ext/third_party/json/include/tao/json/external/pegtl/change_action.hpp +2 -2
  413. data/ext/third_party/json/include/tao/json/external/pegtl/change_action_and_state.hpp +6 -6
  414. data/ext/third_party/json/include/tao/json/external/pegtl/change_action_and_states.hpp +5 -5
  415. data/ext/third_party/json/include/tao/json/external/pegtl/change_control.hpp +2 -2
  416. data/ext/third_party/json/include/tao/json/external/pegtl/change_state.hpp +6 -6
  417. data/ext/third_party/json/include/tao/json/external/pegtl/change_states.hpp +5 -5
  418. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/alphabet.hpp +52 -52
  419. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/analyze.hpp +176 -0
  420. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/analyze_traits.hpp +275 -0
  421. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/control_action.hpp +77 -0
  422. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/coverage.hpp +151 -0
  423. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/forward.hpp +16 -0
  424. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/http.hpp +37 -18
  425. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/icu/internal.hpp +20 -22
  426. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/icu/utf16.hpp +6 -10
  427. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/icu/utf32.hpp +6 -10
  428. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/icu/utf8.hpp +2 -4
  429. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/if_then.hpp +11 -10
  430. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/integer.hpp +116 -131
  431. data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/endian.hpp +4 -4
  432. data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/endian_gcc.hpp +2 -2
  433. data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/endian_win.hpp +2 -2
  434. data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/peek_mask_uint.hpp +9 -9
  435. data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/peek_mask_uint8.hpp +9 -10
  436. data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/peek_uint.hpp +9 -9
  437. data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/peek_uint8.hpp +9 -10
  438. data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/peek_utf16.hpp +10 -10
  439. data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/peek_utf32.hpp +9 -9
  440. data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/read_uint.hpp +3 -3
  441. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/internal/set_stack_guard.hpp +52 -0
  442. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/parse_tree.hpp +80 -201
  443. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/parse_tree_to_dot.hpp +11 -10
  444. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/print.hpp +75 -0
  445. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/print_coverage.hpp +53 -0
  446. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/raw_string.hpp +45 -36
  447. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/remove_first_state.hpp +33 -50
  448. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/remove_last_states.hpp +117 -0
  449. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/rep_one_min_max.hpp +43 -11
  450. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/rep_string.hpp +1 -2
  451. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/shuffle_states.hpp +193 -0
  452. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/state_control.hpp +118 -0
  453. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/trace.hpp +227 -0
  454. data/ext/third_party/json/include/tao/json/external/pegtl/{uint16.hpp → contrib/uint16.hpp} +5 -5
  455. data/ext/third_party/json/include/tao/json/external/pegtl/{uint32.hpp → contrib/uint32.hpp} +5 -5
  456. data/ext/third_party/json/include/tao/json/external/pegtl/{uint64.hpp → contrib/uint64.hpp} +5 -5
  457. data/ext/third_party/json/include/tao/json/external/pegtl/{uint8.hpp → contrib/uint8.hpp} +5 -5
  458. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/unescape.hpp +14 -14
  459. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/uri.hpp +1 -1
  460. data/ext/third_party/json/include/tao/json/external/pegtl/{utf16.hpp → contrib/utf16.hpp} +5 -5
  461. data/ext/third_party/json/include/tao/json/external/pegtl/{utf32.hpp → contrib/utf32.hpp} +5 -5
  462. data/ext/third_party/json/include/tao/json/external/pegtl/cstream_input.hpp +2 -3
  463. data/ext/third_party/json/include/tao/json/external/pegtl/{internal/demangle.hpp → demangle.hpp} +12 -14
  464. data/ext/third_party/json/include/tao/json/external/pegtl/disable_action.hpp +2 -2
  465. data/ext/third_party/json/include/tao/json/external/pegtl/discard_input.hpp +2 -2
  466. data/ext/third_party/json/include/tao/json/external/pegtl/discard_input_on_failure.hpp +2 -2
  467. data/ext/third_party/json/include/tao/json/external/pegtl/discard_input_on_success.hpp +2 -2
  468. data/ext/third_party/json/include/tao/json/external/pegtl/enable_action.hpp +2 -2
  469. data/ext/third_party/json/include/tao/json/external/pegtl/file_input.hpp +1 -1
  470. data/ext/third_party/json/include/tao/json/external/pegtl/internal/action.hpp +19 -9
  471. data/ext/third_party/json/include/tao/json/external/pegtl/internal/action_input.hpp +7 -8
  472. data/ext/third_party/json/include/tao/json/external/pegtl/internal/any.hpp +14 -14
  473. data/ext/third_party/json/include/tao/json/external/pegtl/internal/apply.hpp +9 -9
  474. data/ext/third_party/json/include/tao/json/external/pegtl/internal/apply0.hpp +8 -7
  475. data/ext/third_party/json/include/tao/json/external/pegtl/internal/apply_single.hpp +4 -4
  476. data/ext/third_party/json/include/tao/json/external/pegtl/internal/at.hpp +17 -15
  477. data/ext/third_party/json/include/tao/json/external/pegtl/internal/bof.hpp +7 -6
  478. data/ext/third_party/json/include/tao/json/external/pegtl/internal/bol.hpp +8 -8
  479. data/ext/third_party/json/include/tao/json/external/pegtl/internal/bump.hpp +4 -4
  480. data/ext/third_party/json/include/tao/json/external/pegtl/internal/bump_help.hpp +3 -3
  481. data/ext/third_party/json/include/tao/json/external/pegtl/internal/bytes.hpp +17 -10
  482. data/ext/third_party/json/include/tao/json/external/pegtl/internal/control.hpp +19 -9
  483. data/ext/third_party/json/include/tao/json/external/pegtl/internal/cr_crlf_eol.hpp +2 -2
  484. data/ext/third_party/json/include/tao/json/external/pegtl/internal/cr_eol.hpp +2 -2
  485. data/ext/third_party/json/include/tao/json/external/pegtl/internal/crlf_eol.hpp +2 -2
  486. data/ext/third_party/json/include/tao/json/external/pegtl/internal/cstream_reader.hpp +1 -1
  487. data/ext/third_party/json/include/tao/json/external/pegtl/internal/{always_false.hpp → dependent_false.hpp} +3 -8
  488. data/ext/third_party/json/include/tao/json/external/pegtl/internal/disable.hpp +19 -9
  489. data/ext/third_party/json/include/tao/json/external/pegtl/internal/discard.hpp +7 -6
  490. data/ext/third_party/json/include/tao/json/external/pegtl/internal/enable.hpp +19 -9
  491. data/ext/third_party/json/include/tao/json/external/pegtl/internal/{skip_control.hpp → enable_control.hpp} +5 -5
  492. data/ext/third_party/json/include/tao/json/external/pegtl/internal/eof.hpp +7 -6
  493. data/ext/third_party/json/include/tao/json/external/pegtl/internal/eol.hpp +8 -7
  494. data/ext/third_party/json/include/tao/json/external/pegtl/internal/eolf.hpp +8 -7
  495. data/ext/third_party/json/include/tao/json/external/pegtl/internal/failure.hpp +32 -0
  496. data/ext/third_party/json/include/tao/json/external/pegtl/internal/file_mapper_posix.hpp +61 -10
  497. data/ext/third_party/json/include/tao/json/external/pegtl/internal/file_mapper_win32.hpp +27 -33
  498. data/ext/third_party/json/include/tao/json/external/pegtl/internal/file_reader.hpp +29 -26
  499. data/ext/third_party/json/include/tao/json/external/pegtl/internal/has_apply.hpp +3 -7
  500. data/ext/third_party/json/include/tao/json/external/pegtl/internal/has_apply0.hpp +3 -7
  501. data/ext/third_party/json/include/tao/json/external/pegtl/internal/has_match.hpp +4 -20
  502. data/ext/third_party/json/include/tao/json/external/pegtl/internal/has_unwind.hpp +21 -0
  503. data/ext/third_party/json/include/tao/json/external/pegtl/internal/if_apply.hpp +8 -7
  504. data/ext/third_party/json/include/tao/json/external/pegtl/internal/if_must.hpp +8 -9
  505. data/ext/third_party/json/include/tao/json/external/pegtl/internal/if_must_else.hpp +2 -0
  506. data/ext/third_party/json/include/tao/json/external/pegtl/internal/if_then_else.hpp +7 -7
  507. data/ext/third_party/json/include/tao/json/external/pegtl/internal/istream_reader.hpp +1 -2
  508. data/ext/third_party/json/include/tao/json/external/pegtl/internal/istring.hpp +11 -11
  509. data/ext/third_party/json/include/tao/json/external/pegtl/internal/iterator.hpp +7 -10
  510. data/ext/third_party/json/include/tao/json/external/pegtl/internal/lf_crlf_eol.hpp +2 -2
  511. data/ext/third_party/json/include/tao/json/external/pegtl/internal/lf_eol.hpp +2 -2
  512. data/ext/third_party/json/include/tao/json/external/pegtl/internal/list_tail.hpp +4 -2
  513. data/ext/third_party/json/include/tao/json/external/pegtl/internal/list_tail_pad.hpp +1 -1
  514. data/ext/third_party/json/include/tao/json/external/pegtl/internal/marker.hpp +3 -5
  515. data/ext/third_party/json/include/tao/json/external/pegtl/internal/minus.hpp +21 -0
  516. data/ext/third_party/json/include/tao/json/external/pegtl/internal/missing_apply.hpp +5 -2
  517. data/ext/third_party/json/include/tao/json/external/pegtl/internal/missing_apply0.hpp +5 -2
  518. data/ext/third_party/json/include/tao/json/external/pegtl/internal/must.hpp +16 -24
  519. data/ext/third_party/json/include/tao/json/external/pegtl/internal/not_at.hpp +17 -15
  520. data/ext/third_party/json/include/tao/json/external/pegtl/internal/one.hpp +23 -12
  521. data/ext/third_party/json/include/tao/json/external/pegtl/internal/opt.hpp +16 -16
  522. data/ext/third_party/json/include/tao/json/external/pegtl/internal/path_to_string.hpp +26 -0
  523. data/ext/third_party/json/include/tao/json/external/pegtl/internal/peek_char.hpp +5 -5
  524. data/ext/third_party/json/include/tao/json/external/pegtl/internal/peek_utf8.hpp +12 -13
  525. data/ext/third_party/json/include/tao/json/external/pegtl/internal/plus.hpp +18 -11
  526. data/ext/third_party/json/include/tao/json/external/pegtl/internal/raise.hpp +8 -17
  527. data/ext/third_party/json/include/tao/json/external/pegtl/internal/range.hpp +22 -17
  528. data/ext/third_party/json/include/tao/json/external/pegtl/internal/ranges.hpp +28 -18
  529. data/ext/third_party/json/include/tao/json/external/pegtl/internal/rematch.hpp +12 -9
  530. data/ext/third_party/json/include/tao/json/external/pegtl/internal/rep.hpp +26 -25
  531. data/ext/third_party/json/include/tao/json/external/pegtl/internal/rep_min_max.hpp +23 -21
  532. data/ext/third_party/json/include/tao/json/external/pegtl/internal/rep_opt.hpp +24 -9
  533. data/ext/third_party/json/include/tao/json/external/pegtl/internal/require.hpp +10 -10
  534. data/ext/third_party/json/include/tao/json/external/pegtl/internal/rules.hpp +4 -4
  535. data/ext/third_party/json/include/tao/json/external/pegtl/internal/seq.hpp +18 -33
  536. data/ext/third_party/json/include/tao/json/external/pegtl/internal/sor.hpp +24 -17
  537. data/ext/third_party/json/include/tao/json/external/pegtl/internal/star.hpp +13 -8
  538. data/ext/third_party/json/include/tao/json/external/pegtl/internal/state.hpp +21 -11
  539. data/ext/third_party/json/include/tao/json/external/pegtl/internal/string.hpp +11 -11
  540. data/ext/third_party/json/include/tao/json/external/pegtl/internal/success.hpp +32 -0
  541. data/ext/third_party/json/include/tao/json/external/pegtl/internal/try_catch_type.hpp +16 -16
  542. data/ext/third_party/json/include/tao/json/external/pegtl/internal/until.hpp +18 -14
  543. data/ext/third_party/json/include/tao/json/external/pegtl/istream_input.hpp +2 -3
  544. data/ext/third_party/json/include/tao/json/external/pegtl/match.hpp +125 -29
  545. data/ext/third_party/json/include/tao/json/external/pegtl/memory_input.hpp +32 -48
  546. data/ext/third_party/json/include/tao/json/external/pegtl/mmap_input.hpp +16 -16
  547. data/ext/third_party/json/include/tao/json/external/pegtl/must_if.hpp +64 -0
  548. data/ext/third_party/json/include/tao/json/external/pegtl/normal.hpp +25 -25
  549. data/ext/third_party/json/include/tao/json/external/pegtl/nothing.hpp +1 -2
  550. data/ext/third_party/json/include/tao/json/external/pegtl/parse.hpp +6 -8
  551. data/ext/third_party/json/include/tao/json/external/pegtl/parse_error.hpp +80 -35
  552. data/ext/third_party/json/include/tao/json/external/pegtl/position.hpp +18 -10
  553. data/ext/third_party/json/include/tao/json/external/pegtl/read_input.hpp +18 -38
  554. data/ext/third_party/json/include/tao/json/external/pegtl/rules.hpp +6 -5
  555. data/ext/third_party/json/include/tao/json/external/pegtl/string_input.hpp +3 -5
  556. data/ext/third_party/json/include/tao/json/external/pegtl/type_list.hpp +46 -0
  557. data/ext/third_party/json/include/tao/json/external/pegtl/visit.hpp +66 -0
  558. data/ext/third_party/json/include/tao/json/from_file.hpp +5 -5
  559. data/ext/third_party/json/include/tao/json/internal/action.hpp +3 -3
  560. data/ext/third_party/json/include/tao/json/internal/dependent_false.hpp +14 -0
  561. data/ext/third_party/json/include/tao/json/internal/errors.hpp +17 -17
  562. data/ext/third_party/json/include/tao/json/internal/format.hpp +0 -2
  563. data/ext/third_party/json/include/tao/json/internal/grammar.hpp +17 -17
  564. data/ext/third_party/json/include/tao/json/internal/pair.hpp +1 -1
  565. data/ext/third_party/json/include/tao/json/internal/sha256.hpp +8 -8
  566. data/ext/third_party/json/include/tao/json/internal/single.hpp +1 -1
  567. data/ext/third_party/json/include/tao/json/internal/type_traits.hpp +12 -29
  568. data/ext/third_party/json/include/tao/json/jaxn/consume_file.hpp +7 -7
  569. data/ext/third_party/json/include/tao/json/jaxn/events/from_file.hpp +4 -4
  570. data/ext/third_party/json/include/tao/json/jaxn/events/from_string.hpp +2 -2
  571. data/ext/third_party/json/include/tao/json/jaxn/from_file.hpp +5 -5
  572. data/ext/third_party/json/include/tao/json/jaxn/internal/action.hpp +6 -6
  573. data/ext/third_party/json/include/tao/json/jaxn/internal/bunescape_action.hpp +2 -2
  574. data/ext/third_party/json/include/tao/json/jaxn/internal/errors.hpp +43 -43
  575. data/ext/third_party/json/include/tao/json/jaxn/internal/grammar.hpp +36 -36
  576. data/ext/third_party/json/include/tao/json/jaxn/internal/integer.hpp +10 -11
  577. data/ext/third_party/json/include/tao/json/jaxn/is_identifier.hpp +2 -2
  578. data/ext/third_party/json/include/tao/json/jaxn/parts_parser.hpp +1 -3
  579. data/ext/third_party/json/include/tao/json/message_extension.hpp +2 -2
  580. data/ext/third_party/json/include/tao/json/msgpack.hpp +1 -0
  581. data/ext/third_party/json/include/tao/json/msgpack/consume_file.hpp +7 -7
  582. data/ext/third_party/json/include/tao/json/msgpack/events/from_binary.hpp +43 -0
  583. data/ext/third_party/json/include/tao/json/msgpack/events/from_file.hpp +4 -4
  584. data/ext/third_party/json/include/tao/json/msgpack/events/from_string.hpp +4 -4
  585. data/ext/third_party/json/include/tao/json/msgpack/events/to_stream.hpp +4 -4
  586. data/ext/third_party/json/include/tao/json/msgpack/from_binary.hpp +32 -0
  587. data/ext/third_party/json/include/tao/json/msgpack/from_file.hpp +5 -5
  588. data/ext/third_party/json/include/tao/json/msgpack/internal/grammar.hpp +2 -1
  589. data/ext/third_party/json/include/tao/json/operators.hpp +0 -4
  590. data/ext/third_party/json/include/tao/json/parts_parser.hpp +3 -7
  591. data/ext/third_party/json/include/tao/json/self_contained.hpp +6 -18
  592. data/ext/third_party/json/include/tao/json/span.hpp +94 -166
  593. data/ext/third_party/json/include/tao/json/ubjson.hpp +1 -0
  594. data/ext/third_party/json/include/tao/json/ubjson/consume_file.hpp +7 -7
  595. data/ext/third_party/json/include/tao/json/ubjson/events/from_binary.hpp +43 -0
  596. data/ext/third_party/json/include/tao/json/ubjson/events/from_file.hpp +4 -4
  597. data/ext/third_party/json/include/tao/json/ubjson/events/from_string.hpp +3 -3
  598. data/ext/third_party/json/include/tao/json/ubjson/from_binary.hpp +32 -0
  599. data/ext/third_party/json/include/tao/json/ubjson/from_file.hpp +5 -5
  600. data/ext/third_party/json/include/tao/json/ubjson/internal/grammar.hpp +5 -3
  601. data/ext/third_party/json/include/tao/json/utf8.hpp +1 -1
  602. data/ext/third_party/snappy/snappy.cc +6 -2
  603. data/ext/third_party/spdlog/CMakeLists.txt +24 -57
  604. data/ext/third_party/spdlog/cmake/version.rc.in +1 -1
  605. data/ext/third_party/spdlog/include/spdlog/async.h +3 -3
  606. data/ext/third_party/spdlog/include/spdlog/cfg/argv.h +3 -4
  607. data/ext/third_party/spdlog/include/spdlog/cfg/env.h +6 -4
  608. data/ext/third_party/spdlog/include/spdlog/cfg/helpers-inl.h +22 -6
  609. data/ext/third_party/spdlog/include/spdlog/cfg/helpers.h +3 -2
  610. data/ext/third_party/spdlog/include/spdlog/common.h +1 -2
  611. data/ext/third_party/spdlog/include/spdlog/details/fmt_helper.h +9 -1
  612. data/ext/third_party/spdlog/include/spdlog/details/os.h +1 -1
  613. data/ext/third_party/spdlog/include/spdlog/details/registry-inl.h +21 -7
  614. data/ext/third_party/spdlog/include/spdlog/details/registry.h +6 -3
  615. data/ext/third_party/spdlog/include/spdlog/details/synchronous_factory.h +1 -1
  616. data/ext/third_party/spdlog/include/spdlog/details/tcp_client-windows.h +1 -1
  617. data/ext/third_party/spdlog/include/spdlog/details/tcp_client.h +8 -7
  618. data/ext/third_party/spdlog/include/spdlog/fmt/bin_to_hex.h +2 -2
  619. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/chrono.h +66 -62
  620. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/color.h +35 -37
  621. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/compile.h +173 -103
  622. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/core.h +538 -445
  623. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/format-inl.h +114 -64
  624. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/format.h +1152 -1071
  625. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/locale.h +16 -16
  626. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/os.h +450 -0
  627. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/ostream.h +37 -13
  628. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/posix.h +1 -1
  629. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/printf.h +93 -63
  630. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/ranges.h +35 -36
  631. data/ext/third_party/spdlog/include/spdlog/fmt/chrono.h +20 -0
  632. data/ext/third_party/spdlog/include/spdlog/fmt/fmt.h +2 -0
  633. data/ext/third_party/spdlog/include/spdlog/logger-inl.h +5 -1
  634. data/ext/third_party/spdlog/include/spdlog/logger.h +50 -76
  635. data/ext/third_party/spdlog/include/spdlog/pattern_formatter-inl.h +23 -8
  636. data/ext/third_party/spdlog/include/spdlog/pattern_formatter.h +3 -3
  637. data/ext/third_party/spdlog/include/spdlog/sinks/daily_file_sink.h +1 -1
  638. data/ext/third_party/spdlog/include/spdlog/sinks/msvc_sink.h +5 -5
  639. data/ext/third_party/spdlog/include/spdlog/sinks/ringbuffer_sink.h +6 -4
  640. data/ext/third_party/spdlog/include/spdlog/sinks/stdout_sinks-inl.h +32 -3
  641. data/ext/third_party/spdlog/include/spdlog/sinks/stdout_sinks.h +7 -0
  642. data/ext/third_party/spdlog/include/spdlog/sinks/wincolor_sink-inl.h +4 -14
  643. data/ext/third_party/spdlog/include/spdlog/spdlog-inl.h +11 -1
  644. data/ext/third_party/spdlog/include/spdlog/spdlog.h +23 -68
  645. data/ext/third_party/spdlog/include/spdlog/stopwatch.h +61 -0
  646. data/ext/third_party/spdlog/include/spdlog/version.h +2 -2
  647. data/ext/third_party/spdlog/src/fmt.cpp +21 -147
  648. data/lib/couchbase/cluster.rb +111 -1
  649. data/lib/couchbase/collection_options.rb +18 -1
  650. data/lib/couchbase/errors.rb +3 -0
  651. data/lib/couchbase/libcouchbase.bundle +0 -0
  652. data/lib/couchbase/management/bucket_manager.rb +36 -3
  653. data/lib/couchbase/management/search_index_manager.rb +42 -1
  654. data/lib/couchbase/management/user_manager.rb +155 -48
  655. data/lib/couchbase/query_options.rb +7 -0
  656. data/lib/couchbase/scope.rb +1 -0
  657. data/lib/couchbase/search_options.rb +69 -1
  658. data/lib/couchbase/version.rb +1 -1
  659. metadata +171 -267
  660. data/.rubocop.yml +0 -227
  661. data/.rubocop_todo.yml +0 -47
  662. data/.yardopts +0 -1
  663. data/CONTRIBUTING.md +0 -110
  664. data/Gemfile +0 -37
  665. data/Rakefile +0 -51
  666. data/couchbase.gemspec +0 -79
  667. data/examples/analytics.rb +0 -236
  668. data/examples/auth.rb +0 -33
  669. data/examples/crud.rb +0 -34
  670. data/examples/managing_analytics_indexes.rb +0 -86
  671. data/examples/managing_buckets.rb +0 -61
  672. data/examples/managing_collections.rb +0 -71
  673. data/examples/managing_query_indexes.rb +0 -83
  674. data/examples/managing_search_indexes.rb +0 -77
  675. data/examples/managing_view_indexes.rb +0 -68
  676. data/examples/query.rb +0 -32
  677. data/examples/query_with_consistency.rb +0 -86
  678. data/examples/search.rb +0 -202
  679. data/examples/search_with_consistency.rb +0 -97
  680. data/examples/subdocument.rb +0 -63
  681. data/examples/view.rb +0 -59
  682. data/ext/.clang-format +0 -15
  683. data/ext/.clang-tidy +0 -22
  684. data/ext/.cmake-format.yaml +0 -8
  685. data/ext/.gitignore +0 -2
  686. data/ext/.idea/.name +0 -1
  687. data/ext/.idea/dictionaries/couchbase_terms.xml +0 -14
  688. data/ext/.idea/ext.iml +0 -2
  689. data/ext/.idea/misc.xml +0 -16
  690. data/ext/.idea/modules.xml +0 -8
  691. data/ext/.idea/vcs.xml +0 -12
  692. data/ext/test/main.cxx +0 -184
  693. data/ext/third_party/asio/.appveyor.yml +0 -107
  694. data/ext/third_party/asio/.cirrus.yml +0 -16
  695. data/ext/third_party/asio/.gitignore +0 -3
  696. data/ext/third_party/asio/.travis.yml +0 -323
  697. data/ext/third_party/asio/asio/.gitignore +0 -23
  698. data/ext/third_party/asio/asio/COPYING +0 -4
  699. data/ext/third_party/asio/asio/INSTALL +0 -5
  700. data/ext/third_party/asio/asio/LICENSE_1_0.txt +0 -23
  701. data/ext/third_party/asio/asio/Makefile.am +0 -19
  702. data/ext/third_party/asio/asio/README +0 -4
  703. data/ext/third_party/asio/asio/asio.manifest +0 -4865
  704. data/ext/third_party/asio/asio/autogen.sh +0 -55
  705. data/ext/third_party/asio/asio/boost_asio.manifest +0 -5193
  706. data/ext/third_party/asio/asio/boostify.pl +0 -603
  707. data/ext/third_party/asio/asio/configure.ac +0 -182
  708. data/ext/third_party/asio/asio/include/.gitignore +0 -2
  709. data/ext/third_party/asio/asio/include/Makefile.am +0 -484
  710. data/ext/third_party/asio/asio/include/asio/detail/io_object_executor.hpp +0 -167
  711. data/ext/third_party/asio/asio/include/asio/impl/src.cpp +0 -25
  712. data/ext/third_party/asio/asio/release.pl +0 -440
  713. data/ext/third_party/asio/asio/src/.gitignore +0 -11
  714. data/ext/third_party/asio/asio/src/Makefile.am +0 -23
  715. data/ext/third_party/asio/asio/src/Makefile.mgw +0 -204
  716. data/ext/third_party/asio/asio/src/Makefile.msc +0 -497
  717. data/ext/third_party/asio/asio/src/asio.cpp +0 -11
  718. data/ext/third_party/asio/asio/src/asio_ssl.cpp +0 -11
  719. data/ext/third_party/asio/asio/src/doc/.gitignore +0 -5
  720. data/ext/third_party/asio/asio/src/doc/Jamfile.v2 +0 -62
  721. data/ext/third_party/asio/asio/src/doc/asio.png +0 -0
  722. data/ext/third_party/asio/asio/src/doc/asio.qbk +0 -127
  723. data/ext/third_party/asio/asio/src/doc/asioref.sty +0 -90
  724. data/ext/third_party/asio/asio/src/doc/asioref.xsl +0 -94
  725. data/ext/third_party/asio/asio/src/doc/boost_bind_dox.txt +0 -5
  726. data/ext/third_party/asio/asio/src/doc/doxy2qbk.pl +0 -22
  727. data/ext/third_party/asio/asio/src/doc/examples.qbk +0 -564
  728. data/ext/third_party/asio/asio/src/doc/history.qbk +0 -1794
  729. data/ext/third_party/asio/asio/src/doc/index.xml +0 -13
  730. data/ext/third_party/asio/asio/src/doc/makepdf.pl +0 -26
  731. data/ext/third_party/asio/asio/src/doc/net_ts.qbk +0 -479
  732. data/ext/third_party/asio/asio/src/doc/noncopyable_dox.txt +0 -3
  733. data/ext/third_party/asio/asio/src/doc/overview.qbk +0 -103
  734. data/ext/third_party/asio/asio/src/doc/overview/allocation.qbk +0 -89
  735. data/ext/third_party/asio/asio/src/doc/overview/async.qbk +0 -185
  736. data/ext/third_party/asio/asio/src/doc/overview/async_op1.dot +0 -78
  737. data/ext/third_party/asio/asio/src/doc/overview/async_op1.png +0 -0
  738. data/ext/third_party/asio/asio/src/doc/overview/async_op2.dot +0 -78
  739. data/ext/third_party/asio/asio/src/doc/overview/async_op2.png +0 -0
  740. data/ext/third_party/asio/asio/src/doc/overview/basics.qbk +0 -106
  741. data/ext/third_party/asio/asio/src/doc/overview/bsd_sockets.qbk +0 -270
  742. data/ext/third_party/asio/asio/src/doc/overview/buffers.qbk +0 -163
  743. data/ext/third_party/asio/asio/src/doc/overview/concurrency_hint.qbk +0 -88
  744. data/ext/third_party/asio/asio/src/doc/overview/coroutine.qbk +0 -51
  745. data/ext/third_party/asio/asio/src/doc/overview/coroutines_ts.qbk +0 -97
  746. data/ext/third_party/asio/asio/src/doc/overview/cpp2011.qbk +0 -271
  747. data/ext/third_party/asio/asio/src/doc/overview/handler_tracking.qbk +0 -220
  748. data/ext/third_party/asio/asio/src/doc/overview/implementation.qbk +0 -305
  749. data/ext/third_party/asio/asio/src/doc/overview/iostreams.qbk +0 -72
  750. data/ext/third_party/asio/asio/src/doc/overview/line_based.qbk +0 -118
  751. data/ext/third_party/asio/asio/src/doc/overview/other_protocols.qbk +0 -94
  752. data/ext/third_party/asio/asio/src/doc/overview/posix.qbk +0 -152
  753. data/ext/third_party/asio/asio/src/doc/overview/proactor.dot +0 -100
  754. data/ext/third_party/asio/asio/src/doc/overview/proactor.png +0 -0
  755. data/ext/third_party/asio/asio/src/doc/overview/protocols.qbk +0 -149
  756. data/ext/third_party/asio/asio/src/doc/overview/rationale.qbk +0 -54
  757. data/ext/third_party/asio/asio/src/doc/overview/reactor.qbk +0 -44
  758. data/ext/third_party/asio/asio/src/doc/overview/serial_ports.qbk +0 -45
  759. data/ext/third_party/asio/asio/src/doc/overview/signals.qbk +0 -44
  760. data/ext/third_party/asio/asio/src/doc/overview/spawn.qbk +0 -102
  761. data/ext/third_party/asio/asio/src/doc/overview/ssl.qbk +0 -124
  762. data/ext/third_party/asio/asio/src/doc/overview/strands.qbk +0 -114
  763. data/ext/third_party/asio/asio/src/doc/overview/streams.qbk +0 -62
  764. data/ext/third_party/asio/asio/src/doc/overview/sync_op.dot +0 -67
  765. data/ext/third_party/asio/asio/src/doc/overview/sync_op.png +0 -0
  766. data/ext/third_party/asio/asio/src/doc/overview/threads.qbk +0 -67
  767. data/ext/third_party/asio/asio/src/doc/overview/timers.qbk +0 -52
  768. data/ext/third_party/asio/asio/src/doc/overview/windows.qbk +0 -126
  769. data/ext/third_party/asio/asio/src/doc/project-root.jam +0 -1
  770. data/ext/third_party/asio/asio/src/doc/quickref.xml +0 -561
  771. data/ext/third_party/asio/asio/src/doc/reference.dox +0 -264
  772. data/ext/third_party/asio/asio/src/doc/reference.qbk +0 -125973
  773. data/ext/third_party/asio/asio/src/doc/reference.xsl +0 -1831
  774. data/ext/third_party/asio/asio/src/doc/release_checklist.htm +0 -68
  775. data/ext/third_party/asio/asio/src/doc/requirements/AcceptHandler.qbk +0 -72
  776. data/ext/third_party/asio/asio/src/doc/requirements/AcceptableProtocol.qbk +0 -25
  777. data/ext/third_party/asio/asio/src/doc/requirements/AsyncRandomAccessReadDevice.qbk +0 -56
  778. data/ext/third_party/asio/asio/src/doc/requirements/AsyncRandomAccessWriteDevice.qbk +0 -57
  779. data/ext/third_party/asio/asio/src/doc/requirements/AsyncReadStream.qbk +0 -50
  780. data/ext/third_party/asio/asio/src/doc/requirements/AsyncWriteStream.qbk +0 -48
  781. data/ext/third_party/asio/asio/src/doc/requirements/BufferedHandshakeHandler.qbk +0 -55
  782. data/ext/third_party/asio/asio/src/doc/requirements/CompletionCondition.qbk +0 -42
  783. data/ext/third_party/asio/asio/src/doc/requirements/CompletionHandler.qbk +0 -63
  784. data/ext/third_party/asio/asio/src/doc/requirements/ConnectCondition.qbk +0 -34
  785. data/ext/third_party/asio/asio/src/doc/requirements/ConnectHandler.qbk +0 -72
  786. data/ext/third_party/asio/asio/src/doc/requirements/ConstBufferSequence.qbk +0 -53
  787. data/ext/third_party/asio/asio/src/doc/requirements/DynamicBuffer.qbk +0 -16
  788. data/ext/third_party/asio/asio/src/doc/requirements/DynamicBuffer_v1.qbk +0 -93
  789. data/ext/third_party/asio/asio/src/doc/requirements/DynamicBuffer_v2.qbk +0 -94
  790. data/ext/third_party/asio/asio/src/doc/requirements/Endpoint.qbk +0 -97
  791. data/ext/third_party/asio/asio/src/doc/requirements/EndpointSequence.qbk +0 -30
  792. data/ext/third_party/asio/asio/src/doc/requirements/ExecutionContext.qbk +0 -36
  793. data/ext/third_party/asio/asio/src/doc/requirements/Executor.qbk +0 -141
  794. data/ext/third_party/asio/asio/src/doc/requirements/GettableSerialPortOption.qbk +0 -33
  795. data/ext/third_party/asio/asio/src/doc/requirements/GettableSocketOption.qbk +0 -67
  796. data/ext/third_party/asio/asio/src/doc/requirements/Handler.qbk +0 -64
  797. data/ext/third_party/asio/asio/src/doc/requirements/HandshakeHandler.qbk +0 -72
  798. data/ext/third_party/asio/asio/src/doc/requirements/InternetProtocol.qbk +0 -47
  799. data/ext/third_party/asio/asio/src/doc/requirements/IoControlCommand.qbk +0 -34
  800. data/ext/third_party/asio/asio/src/doc/requirements/IoObjectService.qbk +0 -62
  801. data/ext/third_party/asio/asio/src/doc/requirements/IteratorConnectHandler.qbk +0 -81
  802. data/ext/third_party/asio/asio/src/doc/requirements/LegacyCompletionHandler.qbk +0 -65
  803. data/ext/third_party/asio/asio/src/doc/requirements/MoveAcceptHandler.qbk +0 -61
  804. data/ext/third_party/asio/asio/src/doc/requirements/MutableBufferSequence.qbk +0 -54
  805. data/ext/third_party/asio/asio/src/doc/requirements/ProtoAllocator.qbk +0 -19
  806. data/ext/third_party/asio/asio/src/doc/requirements/Protocol.qbk +0 -56
  807. data/ext/third_party/asio/asio/src/doc/requirements/RangeConnectHandler.qbk +0 -82
  808. data/ext/third_party/asio/asio/src/doc/requirements/ReadHandler.qbk +0 -79
  809. data/ext/third_party/asio/asio/src/doc/requirements/ResolveHandler.qbk +0 -82
  810. data/ext/third_party/asio/asio/src/doc/requirements/Service.qbk +0 -40
  811. data/ext/third_party/asio/asio/src/doc/requirements/SettableSerialPortOption.qbk +0 -33
  812. data/ext/third_party/asio/asio/src/doc/requirements/SettableSocketOption.qbk +0 -54
  813. data/ext/third_party/asio/asio/src/doc/requirements/ShutdownHandler.qbk +0 -72
  814. data/ext/third_party/asio/asio/src/doc/requirements/SignalHandler.qbk +0 -79
  815. data/ext/third_party/asio/asio/src/doc/requirements/SyncRandomAccessReadDevice.qbk +0 -49
  816. data/ext/third_party/asio/asio/src/doc/requirements/SyncRandomAccessWriteDevice.qbk +0 -49
  817. data/ext/third_party/asio/asio/src/doc/requirements/SyncReadStream.qbk +0 -41
  818. data/ext/third_party/asio/asio/src/doc/requirements/SyncWriteStream.qbk +0 -39
  819. data/ext/third_party/asio/asio/src/doc/requirements/TimeTraits.qbk +0 -72
  820. data/ext/third_party/asio/asio/src/doc/requirements/WaitHandler.qbk +0 -72
  821. data/ext/third_party/asio/asio/src/doc/requirements/WaitTraits.qbk +0 -52
  822. data/ext/third_party/asio/asio/src/doc/requirements/WriteHandler.qbk +0 -79
  823. data/ext/third_party/asio/asio/src/doc/requirements/asynchronous_operations.qbk +0 -300
  824. data/ext/third_party/asio/asio/src/doc/requirements/asynchronous_socket_operations.qbk +0 -39
  825. data/ext/third_party/asio/asio/src/doc/requirements/read_write_operations.qbk +0 -34
  826. data/ext/third_party/asio/asio/src/doc/requirements/synchronous_socket_operations.qbk +0 -37
  827. data/ext/third_party/asio/asio/src/doc/std_exception_dox.txt +0 -7
  828. data/ext/third_party/asio/asio/src/doc/tutorial.dox +0 -226
  829. data/ext/third_party/asio/asio/src/doc/tutorial.qbk +0 -2387
  830. data/ext/third_party/asio/asio/src/doc/tutorial.xsl +0 -437
  831. data/ext/third_party/asio/asio/src/doc/using.qbk +0 -309
  832. data/ext/third_party/asio/asio/tsify.pl +0 -574
  833. data/ext/third_party/gsl/.clang-format +0 -34
  834. data/ext/third_party/gsl/.github/workflows/main.yml +0 -94
  835. data/ext/third_party/gsl/.gitignore +0 -16
  836. data/ext/third_party/gsl/.travis.yml +0 -551
  837. data/ext/third_party/gsl/CMakeSettings.json +0 -18
  838. data/ext/third_party/gsl/CONTRIBUTING.md +0 -29
  839. data/ext/third_party/gsl/GSL.natvis +0 -98
  840. data/ext/third_party/gsl/README.md +0 -124
  841. data/ext/third_party/gsl/appveyor.yml +0 -128
  842. data/ext/third_party/http_parser/.gitignore +0 -30
  843. data/ext/third_party/http_parser/.mailmap +0 -8
  844. data/ext/third_party/http_parser/.travis.yml +0 -13
  845. data/ext/third_party/http_parser/AUTHORS +0 -68
  846. data/ext/third_party/http_parser/Makefile +0 -160
  847. data/ext/third_party/http_parser/README.md +0 -246
  848. data/ext/third_party/http_parser/bench.c +0 -128
  849. data/ext/third_party/http_parser/http_parser.gyp +0 -111
  850. data/ext/third_party/http_parser/test.c +0 -4600
  851. data/ext/third_party/json/.appveyor.yml +0 -44
  852. data/ext/third_party/json/.clang-format +0 -84
  853. data/ext/third_party/json/.conan/build.py +0 -80
  854. data/ext/third_party/json/.conan/test_package/CMakeLists.txt +0 -12
  855. data/ext/third_party/json/.conan/test_package/conanfile.py +0 -24
  856. data/ext/third_party/json/.conan/test_package/test_package.cpp +0 -16
  857. data/ext/third_party/json/.gitignore +0 -3
  858. data/ext/third_party/json/.travis.yml +0 -173
  859. data/ext/third_party/json/Makefile +0 -77
  860. data/ext/third_party/json/README.md +0 -149
  861. data/ext/third_party/json/conanfile.py +0 -28
  862. data/ext/third_party/json/include/tao/json/external/pegtl/analysis/analyze_cycles.hpp +0 -127
  863. data/ext/third_party/json/include/tao/json/external/pegtl/analysis/counted.hpp +0 -23
  864. data/ext/third_party/json/include/tao/json/external/pegtl/analysis/generic.hpp +0 -31
  865. data/ext/third_party/json/include/tao/json/external/pegtl/analysis/grammar_info.hpp +0 -32
  866. data/ext/third_party/json/include/tao/json/external/pegtl/analysis/insert_guard.hpp +0 -51
  867. data/ext/third_party/json/include/tao/json/external/pegtl/analysis/insert_rules.hpp +0 -25
  868. data/ext/third_party/json/include/tao/json/external/pegtl/analysis/rule_info.hpp +0 -29
  869. data/ext/third_party/json/include/tao/json/external/pegtl/analysis/rule_type.hpp +0 -21
  870. data/ext/third_party/json/include/tao/json/external/pegtl/analyze.hpp +0 -21
  871. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/counter.hpp +0 -54
  872. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/tracer.hpp +0 -158
  873. data/ext/third_party/json/include/tao/json/external/pegtl/internal/alnum.hpp +0 -18
  874. data/ext/third_party/json/include/tao/json/external/pegtl/internal/alpha.hpp +0 -18
  875. data/ext/third_party/json/include/tao/json/external/pegtl/internal/dusel_mode.hpp +0 -23
  876. data/ext/third_party/json/include/tao/json/external/pegtl/internal/duseltronik.hpp +0 -187
  877. data/ext/third_party/json/include/tao/json/external/pegtl/internal/file_opener.hpp +0 -72
  878. data/ext/third_party/json/include/tao/json/external/pegtl/internal/trivial.hpp +0 -32
  879. data/ext/third_party/snappy/.appveyor.yml +0 -36
  880. data/ext/third_party/snappy/.gitignore +0 -8
  881. data/ext/third_party/snappy/.travis.yml +0 -98
  882. data/ext/third_party/snappy/AUTHORS +0 -1
  883. data/ext/third_party/snappy/CONTRIBUTING.md +0 -26
  884. data/ext/third_party/snappy/NEWS +0 -188
  885. data/ext/third_party/snappy/README.md +0 -148
  886. data/ext/third_party/snappy/docs/README.md +0 -72
  887. data/ext/third_party/snappy/format_description.txt +0 -110
  888. data/ext/third_party/snappy/framing_format.txt +0 -135
  889. data/ext/third_party/snappy/snappy-test.cc +0 -613
  890. data/ext/third_party/snappy/snappy-test.h +0 -526
  891. data/ext/third_party/snappy/snappy_compress_fuzzer.cc +0 -60
  892. data/ext/third_party/snappy/snappy_uncompress_fuzzer.cc +0 -58
  893. data/ext/third_party/snappy/snappy_unittest.cc +0 -1512
  894. data/ext/third_party/spdlog/.clang-format +0 -108
  895. data/ext/third_party/spdlog/.clang-tidy +0 -54
  896. data/ext/third_party/spdlog/.gitattributes +0 -1
  897. data/ext/third_party/spdlog/.gitignore +0 -83
  898. data/ext/third_party/spdlog/.travis.yml +0 -112
  899. data/ext/third_party/spdlog/INSTALL +0 -24
  900. data/ext/third_party/spdlog/README.md +0 -423
  901. data/ext/third_party/spdlog/appveyor.yml +0 -51
  902. data/ext/third_party/spdlog/include/spdlog/cfg/log_levels.h +0 -47
@@ -1,1794 +0,0 @@
1
- [/
2
- / Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com)
3
- /
4
- / Distributed under the Boost Software License, Version 1.0. (See accompanying
5
- / file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6
- /]
7
-
8
- [section:history Revision History]
9
-
10
- [heading Asio 1.16.1]
11
-
12
- * Fixed compatibility with C++20 concept syntax.
13
-
14
- * Marked the POSIX descriptor classes' move constructors as `noexcept`.
15
-
16
- * Added the `ssl::host_name_verification` class, which is a drop-in replacement
17
- for `ssl::rfc2818_verification`. The `ssl::rfc2818_verification` class has
18
- been marked as deprecated. As a consequence of this change, SSL support now
19
- depends on functions that were introduced in OpenSSL 1.0.2.
20
-
21
- * Added an `ssl::context` constructor to take ownership of a native handle.
22
-
23
- * Changed C++ language version detection with [^gcc] to use `__cplusplus` macro.
24
-
25
- * Fixed a work counting issue in the asynchronous resolve operation for
26
- endpoints.
27
-
28
- * Fixed the `strand<>` converting constructors and assignment operators.
29
-
30
- * Ensured that resolvers are restarted correctly after a fork.
31
-
32
- * Fixed compatibility with the current NetBSD release.
33
-
34
- * Removed spurious handler requirement checks in some `async_read` overloads.
35
-
36
- * Changed the `ssl::context` class to propagate non-EOF errors from the
37
- `add_certificate_authority` function.
38
-
39
- * Fixed a Windows-specific `thread_pool` destructor hang that occurred when the
40
- pool had an associated I/O object.
41
-
42
- * Changed the [^select] reactor to recreate the "self pipe trick" sockets on
43
- error. This addresses an issue on some versions of Windows, where these
44
- sockets are discconected after a system sleep.
45
-
46
- * Fixed a compile error in the buffered streams due to the lack of reference
47
- collapsing in C++98.
48
-
49
- * Changed the `priority_scheduler` example to demonstrate calls to `shutdown()`
50
- and `destroy()`.
51
-
52
- * Removed some unnecessary null pointer checks.
53
-
54
- * Changed Windows platform detection to recognise TV titles as Windows apps.
55
-
56
- * Added some emscripten compatibility patches.
57
-
58
- * Fixed a compile error in the `use_awaitable_t::as_default_on` function.
59
-
60
- * Changed all uses of the boost.bind placeholders to use the
61
- `boost::placeholders` namespace.
62
-
63
- * Fixed a potential compile error in the `async_compose` implementation due to
64
- incorrect overload selection.
65
-
66
- * Suppressed some non-virtual destructor warnings.
67
-
68
- * Various documentation fixes and improvements.
69
-
70
- [heading Asio 1.16.0]
71
-
72
- * Changed the `async_initiate` helper function to automatically deduce its
73
- return type. This is enabled for C++11 or later.
74
-
75
- * Changed all asynchronous operations to use automatically deduced return
76
- types. This allows completion token implementations to incorporate the
77
- asynchronous operation initiation into the initiating function's return type,
78
- without type erasure. Note that C++14 or later is required to support
79
- completion tokens that use per-operation return type deduction. For C++11 or
80
- earlier, a completion token's async_result specialisation must still provide
81
- the nested typedef `return_type`.
82
-
83
- * Introduced three new concepts to support `async_initiate`.
84
- * `completion_signature<T>`: Checks if `T` is a signature of the form
85
- `R(Args...)`.
86
- * `completion_handler_for<T, Signature>`: Checks if `T` is usable as a
87
- completion handler with the specified signature.
88
- * `completion_token_for<T, Signature>`: Checks if `T` is a completion token
89
- that can be used with async_initiate and the specified signature.
90
- * For backward compatibility with pre-concepts C++, the macros
91
- `(BOOST_)ASIO_COMPLETION_SIGNATURE`, `(BOOST_)ASIO_COMPLETION_HANDLER_FOR`, and
92
- `(BOOST_)ASIO_COMPLETION_TOKEN_FOR` are provided. These macros expand to
93
- `typename` when concepts are unsupported.
94
-
95
- * Added the nested template type `rebind_executor` to all I/O object types, as
96
- a way to generically rebind them to use alternative I/O executors. For
97
- example:
98
- ``
99
- using my_socket_type = tcp::socket::rebind_executor<my_executor_type>::other;
100
- ``[br]
101
-
102
- * Changed the asynchronous operations' initiation function objects to report
103
- their associated I/O executor via the nested type `executor_type` and member
104
- function `get_executor()`. Note that the presence of `executor_type` and
105
- `get_executor()` should be treated as optional, and consequently it may be
106
- preferable to access them via the `associated_executor` trait and the
107
- `get_associated_executor()` helper function.
108
-
109
- * Added the `default_completion_token` trait, so that every I/O executor type
110
- now has an associated default completion token type. This trait may be used
111
- in asynchronous operation declarations as follows:
112
- ``
113
- template <
114
- typename IoObject,
115
- typename CompletionToken =
116
- typename default_completion_token<
117
- typename IoObject::executor_type
118
- >::type
119
- >
120
- auto async_xyz(
121
- IoObject& io_object,
122
- CompletionToken&& token =
123
- typename default_completion_token<
124
- typename IoObject::executor_type
125
- >::type{}
126
- );
127
- ``[br]
128
- If not specialised, this trait type is `void`, meaning no default completion
129
- token type is available for the given I/O executor.
130
-
131
- * Specialised the `default_completion_token` trait for the `use_awaitable`
132
- completion token, so that it may be used as shown in the following example:
133
- ``
134
- auto socket = use_awaitable.as_default_on(tcp::socket(my_context));
135
- // ...
136
- co_await socket.async_connect(my_endpoint); // Defaults to use_awaitable.
137
- ``[br]
138
- In this example, the type of the `socket` object is transformed from
139
- `tcp::socket` to have an I/O executor with the default completion token set
140
- to `use_awaitable`. Alternatively, the socket type may be computed directly:
141
- ``
142
- using tcp_socket = use_awaitable_t<>::as_default_on_t<tcp::socket>;
143
- tcp_socket socket(my_context);
144
- // ...
145
- co_await socket.async_connect(my_endpoint); // Defaults to use_awaitable.
146
- ``[br]
147
-
148
- * Added missing `async_initiate` to the Windows-specific I/O objects'
149
- asynchronous operations.
150
-
151
- * Ensured that the executor type is propagated to newly accepted sockets.
152
- When synchronously or asynchronously accepting a new connection, but
153
- without specifying an executor or execution context, the accept
154
- operation will now correctly propagate the executor type from the
155
- acceptor to the socket. For example, if your acceptor type is:
156
- ``
157
- basic_socket_acceptor<ip::tcp, my_executor_type>
158
- ``[br]
159
- then your accepted socket type will be:
160
- ``
161
- basic_stream_socket<ip::tcp, my_executor_type>
162
- ``[br]
163
-
164
- * Changed to require that `Protocol` copy and move operations never throw.
165
-
166
- * Changed to require that `Endpoint` default constructor and move operations
167
- never throw.
168
-
169
- * Added the `noexcept` qualifier to protocol accessors.
170
-
171
- * Added the `noexcept` qualifier to socket move constructors.
172
-
173
- * Fixed issues associated with opening serial ports on Windows:
174
- * Use the correct constant to initialise the RTS control flag.
175
- * Specify a default baud rate (9600).
176
-
177
- * Fixed a lost "outstanding work count" that can occur when an asynchronous
178
- accept operation is automatically restarted.
179
-
180
- [heading Asio 1.14.1]
181
-
182
- * Improved performance slightly by eliminating a redundant move construction
183
- when completed handlers are dispatched.
184
-
185
- * Eliminated a compiler warning by annotating a `case` fall-through in
186
- the free function `connect()` implementation.
187
-
188
- * Fixed the `is_*_buffer_sequence` detection traits for user-defined sequence
189
- types.
190
-
191
- * Fixed some Windows-specific warnings about an incompatible pointer cast when
192
- obtaining the `CancelIoEx` entry point.
193
-
194
- * Changed to automatically set the defaults when opening a serial port on
195
- Windows.
196
-
197
- * Changed the serial port `get_option()` member function to be const.
198
-
199
- * Fixed a name hiding issue with the WinRT stream-oriented socket backend's
200
- `shutdown` function.
201
-
202
- * Applied a minor fix to the documentation for `is_dynamic_buffer`.
203
-
204
- * Added some support for Haiku OS.
205
-
206
- * Added wolfSSL compatability.
207
-
208
- * Changed to require C++17 or later for coroutines TS support with clang.
209
-
210
- * Fixed a doxygen generation problem in the tutorial.
211
-
212
- [heading Asio 1.14.0]
213
-
214
- * Improved I/O object performance by adding runtime detection of native I/O
215
- executors when using the polymorphic executor wrapper.
216
-
217
- * Changed I/O object move constructors so that the executor is copied, not
218
- moved. This ensures that the moved-from I/O object is left in the same state
219
- as if constructed with a valid executor but without a resource.
220
-
221
- * On Windows, fixed an issue where global object destructors were not being
222
- run.
223
-
224
- * Fixed move-based `async_accept` between sockets with different executor
225
- types.
226
-
227
- [heading Asio 1.13.0]
228
-
229
- * Added custom I/O executor support to I/O objects.
230
-
231
- * All I/O objects now have an additional `Executor` template parameter. This
232
- template parameter defaults to the `asio::executor` type (the polymorphic
233
- executor wrapper) but can be used to specify a user-defined executor
234
- type.
235
-
236
- * I/O objects' constructors and functions that previously took an
237
- `asio::io_context&` now accept either an `Executor` or a reference to a
238
- concrete `ExecutionContext` (such as `asio::io_context` or
239
- `asio::thread_pool`).
240
-
241
- * Note: One potential source of breakage in existing user code is when reusing an
242
- I/O object's `io_context` for constructing another I/O object, as in:
243
- ``
244
- asio::steady_timer my_timer(my_socket.get_executor().context());
245
- ``[br]
246
- To fix this, either construct the second I/O object using the first I/O
247
- object's executor:[br]
248
- ``
249
- asio::steady_timer my_timer(my_socket.get_executor());
250
- ``[br]
251
- or otherwise explicitly pass the `io_context`:[br]
252
- ``
253
- asio::steady_timer my_timer(my_io_context);
254
- ``[br]
255
-
256
- * The previously deprecated `get_io_context` and `get_io_service`
257
- member functions have now been removed.
258
-
259
- * The previously deprecated service template parameters, and the
260
- corresponding classes, have now been removed.
261
-
262
- * Added a new `async_result` form with an `initiate` static member function.
263
-
264
- * The `async_result` template now supports a new form:
265
- ``
266
- template <typename CompletionToken, typename Signature>
267
- struct async_result
268
- {
269
- typedef /* ... */ return_type;
270
-
271
- template <typename Initiation,
272
- typename RawCompletionToken,
273
- typename... Args>
274
- static return_type initiate(
275
- Initiation&& initiation,
276
- RawCompletionToken&& token,
277
- Args&&... args);
278
- };
279
- ``[br]
280
-
281
- * The `initiate` member function must: (a) transform the token into a
282
- completion handler object `handler`; (b) cause the invocation of the
283
- function object `initiation` as if by calling
284
- `std::forward<Initiation>(initiation)(std::move(handler),
285
- std::forward<Args>(args)...)`. Note that the invocation of `initiation`
286
- may be deferred (e.g. lazily evaluated), in which case `initiation` and
287
- `args` must be decay-copied and moved as required.
288
-
289
- * A helper function template `async_initiate` has also been added as a
290
- wrapper for the invocation of `async_result<>::initiate`. For backward
291
- compatibility, this function supports both the old and new `async_result`
292
- forms.
293
-
294
- * The composed operations examples have been updated to use `async_initiate`.
295
-
296
- * The previously deprecated `handler_type` trait and single-argument form of
297
- `async_result` have now been removed.
298
-
299
- * Updated the Coroutines TS support and promoted it to the `asio` namespace.
300
-
301
- * The `awaitable<>`, `co_spawn`, `this_coro`, `detached`, and
302
- `redirect_error` facilities have been moved from the `asio::experimental`
303
- namespace to namespace `asio`. As part of this change, the
304
- `this_coro::token()` awaitable has been superseded by the
305
- `asio::use_awaitable` completion token.
306
-
307
- * Please note that the `use_awaitable` and `redirect_error` completion tokens
308
- work only with asynchronous operations that use the new form of
309
- `async_result` with member function `initiate`. Furthermore, when using
310
- `use_awaitable`, please be aware that the asynchronous operation is not
311
- initiated until `co_await` is applied to the `awaitable<>`.
312
-
313
- * Added a new `DynamicBuffer_v2` concept which is CopyConstructible.
314
-
315
- * This change adds a new set of type requirements for dynamic buffers,
316
- `DynamicBuffer_v2`, which supports copy construction. These new type
317
- requirements enable dynamic buffers to be used as arguments to
318
- user-defined composed operations, where the same dynamic buffer object
319
- is used repeatedly for multiple underlying operations. For example:[br]
320
- ``
321
- template <typename DynamicBuffer>
322
- void echo_line(tcp::socket& sock, DynamicBuffer buf)
323
- {
324
- n = asio::read_until(sock, buf, '\n');
325
- asio::write(sock, buf, asio::transfer_exactly(n));
326
- }
327
- ``[br]
328
-
329
- * The original `DynamicBuffer` type requirements have been renamed to
330
- `DynamicBuffer_v1`. These requirements continue to be compatible with the
331
- Networking TS.
332
-
333
- * New type traits `is_dynamic_buffer_v1` and `is_dynamic_buffer_v2` have been
334
- added to test for conformance to `DynamicBuffer_v1` and `DynamicBuffer_v2`
335
- respectively. The existing `is_dynamic_buffer` trait has been retained and
336
- delegates to `is_dynamic_buffer_v1` (unless `ASIO_NO_DYNAMIC_BUFFER_V1` is
337
- explicitly defined, in which case it delegates to `is_dynamic_buffer_v2`).
338
-
339
- * For convenience, the `dynamic_string_buffer` and `dynamic_vector_buffer`
340
- classes conform to both `DynamicBuffer_v1` and `DynamicBuffer_v2`
341
- requirements.
342
-
343
- * When `ASIO_NO_DYNAMIC_BUFFER_V1` is defined, all support for
344
- `DynamicBuffer_v1` types and functions is #ifdef-ed out. Support for using
345
- `basic_streambuf` with the `read`, `async_read`, `read_until`,
346
- `async_read_until`, `write`, and `async_write` functions is also disabled
347
- as a consequence.
348
-
349
- * Note: This change should have no impact on existing source code that simply
350
- uses dynamic buffers in conjunction with Asio's composed operations.
351
-
352
- * Added a new `async_compose` function that simplifies the implementation of
353
- user-defined asynchronous operations.
354
-
355
- * Added a `make_strand` function, which creates a `strand` with a deduced
356
- `Executor` template argument.
357
-
358
- * Relaxed the completion condition type requirements to only require
359
- move-constructibility rather than copy-constructibility.
360
-
361
- * Added a constructor for `local::basic_endpoint` that takes a `string_view`.
362
-
363
- * Added the noexcept qualifier to various member functions of the
364
- `ip::address`, `ip::address_v4`, `ip::address_v6`, `ip::basic_endpoint`, and
365
- `executor_work_guard` classes.
366
-
367
- * Added the noexcept qualifier to the `buffer_sequence_begin` and
368
- `buffer_sequence_end` functions.
369
-
370
- * Added a new `ASIO_DISABLE_VISIBILITY` configuration `#define` that allows
371
- visibility pragmas to be disabled. (Note: If symbols are hidden, extra care
372
- must be taken to ensure that Asio types are not passed across shared
373
- library API boundaries.)
374
-
375
- * Changed compile-time feature detection to define `ASIO_STANDALONE`
376
- automatically if C++11 or later is detected.
377
-
378
- * Users should define `ASIO_ENABLE_BOOST` to explicitly disable standalone
379
- mode when compiling with C++11 or later.
380
-
381
- * The `configure` script now defaults to a standalone build unless Boost is
382
- specified or detected.
383
-
384
- * Enabled recycling of the memory used to type-erase a function object with the
385
- polymorphic executor.
386
-
387
- * Changed receive operations to return the correct number of bytes transferred
388
- when truncation (`error::message_size`) occurs on a datagram-oriented socket.
389
-
390
- * Fixed multicast behaviour on QNX by automatically applying `SO_REUSEPORT`
391
- when the `reuse_address` option is set.
392
-
393
- * Added inclusion of `unistd.h` when targeting Haiku OS, to fix feature detection.
394
-
395
- * Added the `network_v[46].hpp` headers to the top-level convenience header.
396
-
397
- * Fixed calculation of absolute timeout when the backend uses
398
- `pthread_cond_timedwait`.
399
-
400
- * Changed the range-based asynchronous connect operation to deduce the
401
- `EndpointSequence` iterator type rather than assume the presence of a
402
- `const_iterator` typedef.
403
-
404
- * Fixed `buffer_sequence_begin` and `buffer_sequence_end` to prevent implicit
405
- conversion. This change addresses an issue where a call to
406
- `buffer_sequence_begin` or `buffer_sequence_end` could trigger an implicit
407
- conversion to `const_buffer` or `mutable_buffer`. Whenever this implicit
408
- conversion occurred, the return value of `buffer_sequence_begin` or
409
- `buffer_sequence_end` would point to a temporary object.
410
-
411
- * Ensured SSL handshake errors are propagated to the peer before the local
412
- operation completes.
413
-
414
- * Suppressed the `eof` error on SSL shutdown as it actually indicates success.
415
-
416
- * Added a fallback error code for when we OpenSSL produces an
417
- `SSL_ERROR_SYSCALL` result without an associated error.
418
-
419
- * Changed composed asynchronous read and write operations to move, rather than
420
- copy, the buffer sequence objects when the composed operation implementation
421
- is moved.
422
-
423
- * Changed to use `<atomic>` when targeting apple/clang/libc++ with recent Xcode
424
- versions, even for C++03. This fixes a warning about the deprecation of
425
- `OSMemoryBarrier`.
426
-
427
- * Fixed compile errors that occur when using the composed read and write
428
- operations with MSVC 11.0, by disabling `decltype` support for that compiler.
429
-
430
- * Increased the default value of `_WIN32_WINNT` to `0x0601` (Windows 7).
431
-
432
- * Fixed `dispatch` documentation to note that it may call the supplied function
433
- object in the current thread.
434
-
435
- * Updated `post` and `defer` documentation to clarify the the distinction
436
- between them.
437
-
438
- [heading Asio 1.12.2]
439
-
440
- * Fixed a problem with the detection of `std::future` availability with
441
- libstdc++.
442
-
443
- * Fixed compile error in regex overload of `read_until`.
444
-
445
- * Fixed a timer heap corruption issue that can occur when moving a cancelled
446
- timer.
447
-
448
- * Fixed detection of `std::experimental::string_view` and `std::string_view`
449
- with newer clang/libc++.
450
-
451
- * Fixed MSVC version detection for availability of `std::invoke_result`.
452
-
453
- * Fixed the buffer sequence traits to test the new requirements, if `decltype`
454
- is available.
455
-
456
- * Fixed an MSVC issue when building with exceptions disabled.
457
-
458
- * Added SSL context options for TLS v1.3.
459
-
460
- * Added a compile-time test for TLS v1 support.
461
-
462
- * Fixed the macro used to test for TLS v1.2 support.
463
-
464
- * Prevented global objects from being created once per thread on Windows.
465
-
466
- * Fixed a crash when using `size()`, `max_size()` or `empty()` on
467
- default-constructed resolver results.
468
-
469
- * Changed to move the return value in basic_resolver_results::begin() to avoid
470
- copying.
471
-
472
- * Enabled move support for the Intel Compiler.
473
-
474
- * Fixed `std::string_view` detection issue when using clang-cl.
475
-
476
- * Fixed the handler tracking operation name for
477
- `io_context::executor_type::dispatch`.
478
-
479
- * Fixed a buffer overflow that could occur when parsing an address string with
480
- a 64-bit scope id.
481
-
482
- * Added examples showing how to write composed operations.
483
-
484
- * Added C++11 versions of the Timeouts, Timers, SOCKS4 and SSL examples.
485
-
486
- * Fixed minor issues in documentation and examples.
487
-
488
- [heading Asio 1.12.1]
489
-
490
- * Added missing const qualifier to `basic_socket_acceptor::get_option`.
491
-
492
- * Worked around a parsing error that occurs with some versions of gcc.
493
-
494
- * Fixed broken code samples in tutorial.
495
-
496
- * Added new experimental features. (Note that "experimental" features may be
497
- changed without notice in subsequent releases.)
498
-
499
- * Added `experimental::detached` completion token.
500
-
501
- * Added `experimental::redirect_error` completion token.
502
-
503
- * Added `experimental::co_spawn` facility for integration with the coroutines
504
- technical specification.
505
-
506
- * Updated timeout examples to use latest features.
507
-
508
- * Used `asio::steady_timer` rather than `asio::deadline_timer`.
509
-
510
- * Used `asio::dynamic_buffer` rather than `asio::streambuf`.
511
-
512
- * Used timed `asio::io_context::run_for()` function for blocking clients.
513
-
514
- * Added example showing a custom completion token for blocking with timeouts.
515
-
516
- * Fixed unit tests to compile when `(BOOST_)ASIO_NO_DEPRECATED` is defined.
517
-
518
- * Changed socket iostreams to use chrono by default, to fix compatibility with
519
- the Networking TS. Define `(BOOST_)ASIO_USE_BOOST_DATE_TIME_FOR_SOCKET_IOSTREAM`
520
- to enable the old Boost.Date_Time interface in `basic_socket_streambuf` and
521
- `basic_socket_iostream`.
522
-
523
- * Updated examples to use chrono rather than Boost.Date_Time.
524
-
525
- * Fixed an incorrect member function detector in the `is_dynamic_buffer` trait.
526
-
527
- * Fixed an `async_result` incompatibility with deprecated `handler_type`.
528
-
529
- * Added a missing move optimisation in the SSL stream implementation.
530
-
531
- * Fixed incorrect `basic_resolver_results::value_type` typedef.
532
-
533
- * Fixed a compile error with some OpenSSL versions when `SSL_OP_NO_COMPRESSION`
534
- is defined.
535
-
536
- * Changed `add_certificate_authority` to process multiple certificates in a bundle.
537
-
538
- * Eliminated deprecation warning with MSVC by using `std::invoke_result` rather
539
- than `std::result_of`.
540
-
541
- * Changed to use `std::string_view` for C++17 or later, and
542
- `std::experimental::string_view` for C++14. Define the preprocessor macro
543
- `(BOOST_)ASIO_DISABLE_STD_STRING_VIEW` to force the use of
544
- std::experimental::string_view (assuming it is available) when compiling in
545
- C++17 mode.
546
-
547
- * Ensured `DynamicBuffer` template arguments are decayed before using in
548
- `enable_if` tests.
549
-
550
- * Changed documentation to distinguish legacy completion handlers (which are
551
- still required to be CopyConstructible) from new MoveConstructible handlers.
552
-
553
- * Suppressed a discarded return value warning in the buffer debugging support.
554
-
555
- * Fixed `basic_yield_context` to work with completion signatures containing
556
- reference parameters.
557
-
558
- * Ensured that stackful coroutines launched using `spawn()` correctly store
559
- decayed copies of their function and handler arguments.
560
-
561
- * Fixed some compatibility issues with Android.
562
-
563
- * Fixed some minor portability issues in examples.
564
-
565
- [heading Asio 1.12.0]
566
-
567
- * Completed the interface changes to reflect the Networking TS
568
- ([@http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/n4656.pdf N4656]).
569
-
570
- * See the [link asio.net_ts list] of new interfaces and, where
571
- applicable, the corresponding old interfaces that have been superseded.
572
-
573
- * The service template parameters, and the corresponding classes, are disabled
574
- by default. For example, instead of `basic_socket<Protocol, SocketService>` we
575
- now have simply `basic_socket<Protocol>`. The old interface can be enabled by
576
- defining the `(BOOST_)ASIO_ENABLE_OLD_SERVICES` macro.
577
-
578
- * Added support for customised handler tracking.
579
-
580
- * Added reactor-related (i.e. descriptor readiness) events to handler tracking.
581
-
582
- * Added special [link asio.overview.core.concurrency_hint concurrency
583
- hint] values that may be used to disable locking on a per `io_context` basis.
584
-
585
- * Enabled perfect forwarding for the first `ssl::stream<>` constructor argument.
586
-
587
- * Added ability to release ownership of the underlying native socket. (Requires
588
- Windows 8.1 or later when using the I/O completion port backend.)
589
-
590
- [heading Asio 1.11.0]
591
-
592
- * Implemented changes to substantially reflect the Networking Library Proposal
593
- ([@www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4370.html N4370]).
594
-
595
- * New `Executor` type requirements and classes to support an executor
596
- framework, including the `execution_context` base class, the
597
- `executor_work` class for tracking outstanding work, and the `executor`
598
- polymorphic wrapper. Free functions `dispatch()`, `post()` and `defer()`
599
- have been added and are used to submit function objects to executors.
600
-
601
- * Completion handlers now have an associated executor and associated
602
- allocator. The free function `wrap()` is used to associate an executor with
603
- a handler or other object. The handler hooks for allocation, invocation and
604
- continuation have been deprecated.
605
-
606
- * A `system_executor` class has been added as a default executor.
607
-
608
- * The `io_service` class is now derived from `execution_context` and
609
- implements the executor type requirements in its nested `executor_type`
610
- class. The member functions `dispatch()`, `post()`, `defer()` and `wrap()`
611
- have been deprecated. The `io_service::work` class has been deprecated.
612
-
613
- * The `io_service` member function `reset()` has been renamed to `restart()`.
614
- The old name is retained for backward compatibility but has been
615
- deprecated.
616
-
617
- * The `make_service<>()` function is now used to add a new service to an
618
- execution context such as an `io_service`. The `add_service()` function has
619
- been deprecated.
620
-
621
- * A new `strand<>` template has been added to allow strand functionality to
622
- be used with generic executor types.
623
-
624
- * I/O objects (such as sockets and timers) now provide access to their
625
- associated `io_service` via a `context()` member function. The
626
- `get_io_service()` member function is deprecated.
627
-
628
- * All asynchronous operations and executor operations now support move-only
629
- handlers. However, the deprecated `io_service::post()`,
630
- `io_service::dispatch()`, `io_service::strand::post()` and
631
- `io_service::strand::dispatch()` functions still require copyable handlers.
632
-
633
- * Waitable timer objects are now movable.
634
-
635
- * Waitable timers, socket iostreams and socket streambufs now provide an
636
- `expiry()` member function for obtaining the expiry time. The accessors
637
- `expires_at()` and `expires_after()` have been deprecated, though those
638
- names are retained for the mutating members.
639
-
640
- * The `std::packaged_task` class template is now supported as a completion
641
- handler. The initiating operation automatically returns the future
642
- associated with the task. The `package()` function has been added as a
643
- convenient factory for packaged tasks.
644
-
645
- * Sockets, socket acceptors and descriptors now provide `wait()` and
646
- `async_wait()` operations that may be used to wait for readiness. The
647
- `null_buffers` type has been deprecated.
648
-
649
- * The proposed error code enum classes are simulated using namespaces.
650
- Existing asio error codes now have a correspondence with the standard error
651
- conditions.
652
-
653
- * Conversion between IP address types, and conversion from string to address,
654
- is now supported via the `address_cast<>()`, `make_address()`,
655
- `make_address_v4()` and `make_address_v6()` free functions. The
656
- `from_string()`, `to_v4()`, `to_v6()` and `v4_mapped()` member functions
657
- have been deprecated.
658
-
659
- * A default-constructed `ip::address` now represents an invalid address value
660
- that is neither IPv4 nor IPv6.
661
-
662
- * New `buffer()` overloads that generate mutable buffers for non-const
663
- `string` objects.
664
-
665
- * Support for dynamic buffer sequences that automatically grow and shrink to
666
- accomodate data as it is read or written. This is a generic facility
667
- similar to the existing `asio::streambuf` class. This support includes:
668
-
669
- * New `dynamic_string_buffer` and `dynamic_vector_buffer` adapter classes
670
- that meet the `DynamicBufferSequence` type requirements.
671
-
672
- * New `dynamic_buffer()` factory functions for creating a dynamic buffer
673
- adapter for a `vector` or `string`.
674
-
675
- * New overloads for the `read()`, `async_read()`, `write()` and
676
- `async_write()`, `read_until()` and `async_read_until()` free functions
677
- that directly support dynamic buffer sequences.
678
-
679
- * Support for networks and address ranges. Thanks go to Oliver Kowalke for
680
- contributing to the design and providing the implementation on which this
681
- facility is based. The following new classes have been added:
682
-
683
- * `address_iterator_v4` for iterating across IPv4 addresses
684
- * `address_iterator_v6` for iterating across IPv6 addresses
685
- * `address_range_v4` to represent a range of IPv4 addresses
686
- * `address_range_v6` to represent a range of IPv6 addresses
687
- * `network_v4` for manipulating IPv4 CIDR addresses, e.g. 1.2.3.0/24
688
- * `network_v6` for manipulating IPv6 CIDR addresses, e.g. ffe0:/120
689
-
690
- * New convenience headers in [^<asio/ts/*.hpp>] that correspond to the headers
691
- in the proposal.
692
-
693
- * Added a new, executor-aware `thread_pool` class.
694
-
695
- * Changed `spawn()` to be executor-aware.
696
-
697
- * Added a new `spawn()` overload that takes only a function object.
698
-
699
- * Changed `spawn()` and `yield_context` to permit nested calls to the
700
- completion handler.
701
-
702
- * Removed previously deprecated functions.
703
-
704
- * Added options for disabling TLS v1.1 and v1.2.
705
-
706
- * Changed the SSL wrapper to call the password callback when loading an
707
- in-memory key.
708
-
709
- * Changed the tutorial to use `std::endl` to ensure output is flushed.
710
-
711
- * Fixed false SSL error reports by ensuring that the SSL error queue is cleared
712
- prior to each operation.
713
-
714
- * Fixed an `ssl::stream<>` bug that may result in spurious 'short read' errors.
715
-
716
- * Enabled perfect forwarding for the first `ssl::stream<>` constructor argument.
717
-
718
- * Added standalone Asio support for Clang when used with libstdc++ and C++11.
719
-
720
- * Fixed an unsigned integer overflow reported by Clang's integer sanitizer.
721
-
722
- * Added support for move-only return types when using a `yield_context` object
723
- with asynchronous operations.
724
-
725
- * Ensured errors generated by Windows' `ConnectEx` function are mapped to their
726
- portable equivalents.
727
-
728
- * Changed multicast test to treat certain `join_group` failures as non-fatal.
729
-
730
- [heading Asio 1.10.5]
731
-
732
- * Fixed the [^kqueue] reactor so that it works on FreeBSD.
733
-
734
- * Fixed an issue in the [^kqueue] reactor which resulted in spinning when using
735
- serial ports on Mac OS.
736
-
737
- * Fixed [^kqueue] reactor support for read-only file descriptors.
738
-
739
- * Fixed a compile error when using the [^/dev/poll] reactor.
740
-
741
- * Changed the Windows backend to use `WSASocketW`, as `WSASocketA` has been
742
- deprecated.
743
-
744
- * Fixed some warnings reported by Visual C++ 2013.
745
-
746
- * Fixed integer type used in the WinRT version of the byte-order conversion
747
- functions.
748
-
749
- * Changed documentation to indicate that `use_future` and `spawn()` are not
750
- made available when including the `asio.hpp` convenience header.
751
-
752
- * Explicitly marked `asio::strand` as deprecated. Use
753
- `asio::io_service::strand` instead.
754
-
755
- [heading Asio 1.10.4]
756
-
757
- * Stopped using certain Winsock functions that are marked as deprecated in the
758
- latest Visual C++ and Windows SDK.
759
-
760
- * Fixed a shadow variable warning on Windows.
761
-
762
- * Fixed a regression in the [^kqueue] backend that was introduced in Asio
763
- 1.10.2.
764
-
765
- * Added a workaround for building the unit tests with [^gcc] on AIX.
766
-
767
- [heading Asio 1.10.3]
768
-
769
- * Worked around a [^gcc] problem to do with anonymous enums.
770
-
771
- * Reverted the Windows `HANDLE` backend change to ignore `ERROR_MORE_DATA`.
772
- Instead, the error will be propagated as with any other (i.e. in an
773
- `error_code` or thrown as a `system_error`), and the number of bytes
774
- transferred will be returned. For code that needs to handle partial messages,
775
- the `error_code` overload should be used.
776
-
777
- * Fixed an off-by-one error in the `signal_set` implementation's signal
778
- number check.
779
-
780
- * Changed the Windows IOCP backend to not assume that
781
- `SO_UPDATE_CONNECT_CONTEXT` is defined.
782
-
783
- * Fixed a Windows-specific issue, introduced in Asio 1.10.2, by using
784
- `VerifyVersionInfo` rather than `GetVersionEx`, as `GetVersionEx` has been
785
- deprecated.
786
-
787
- * Changed to use SSE2 intrinsics rather than inline assembly, to allow the
788
- Cray compiler to work.
789
-
790
- [heading Asio 1.10.2]
791
-
792
- * Fixed `asio::spawn()` to work correctly with new Boost.Coroutine interface.
793
-
794
- * Ensured that incomplete `asio::spawn()` coroutines are correctly unwound when
795
- cleaned up by the `io_service` destructor.
796
-
797
- * Fixed delegation of continuation hook for handlers produced by
798
- `io_service::wrap()` and `strand::wrap()`.
799
-
800
- * Changed the Windows I/O completion port backend to use `ConnectEx`, if
801
- available, for connection-oriented IP sockets.
802
-
803
- * Changed the `io_service` backend for non-Windows (and non-IOCP Windows)
804
- platforms to use a single condition variable per `io_service` instance.
805
- This addresses a potential race condition when `run_one()` is used from
806
- multiple threads.
807
-
808
- * Prevented integer overflow when computing timeouts based on some
809
- `boost::chrono` and `std::chrono` clocks.
810
-
811
- * Made further changes to `EV_CLEAR` handling in the kqueue backend, to address
812
- other cases where the `close()` system call may hang on Mac OS X.
813
-
814
- * Fixed infinite recursion in implementation of
815
- `resolver_query_base::flags::operator~`.
816
-
817
- * Made the `select` reactor more efficient on Windows for large numbers of
818
- sockets.
819
-
820
- * Fixed a Windows-specific type-aliasing issue reported by [^gcc].
821
-
822
- * Prevented execution of compile-time-only buffer test to avoid triggering an
823
- address sanitiser warning.
824
-
825
- * Disabled the `GetQueuedCompletionStatus` timeout workaround on recent
826
- versions of Windows.
827
-
828
- * Changed implementation for Windows Runtime to use `FormatMessageW` rather
829
- than `FormatMessageA`, as the Windows store does not permit the latter.
830
-
831
- * Added support for string-based scope IDs when using link-local multicast
832
- addresses.
833
-
834
- * Changed IPv6 multicast group join to use the address's scope ID as the
835
- interface, if an interface is not explicitly specified.
836
-
837
- * Fixed multicast test failure on Mac OS X and the BSDs by using a link-local
838
- multicast address.
839
-
840
- * Various minor documentation improvements.
841
-
842
- [heading Asio 1.10.1]
843
-
844
- * Implemented a limited port to Windows Runtime. This support requires that the
845
- language extensions be enabled. Due to the restricted facilities exposed by
846
- the Windows Runtime API, the port also comes with the following caveats:
847
-
848
- * The core facilities such as the `io_service`, `strand`, buffers, composed
849
- operations, timers, etc., should all work as normal.
850
-
851
- * For sockets, only client-side TCP is supported.
852
-
853
- * Explicit binding of a client-side TCP socket is not supported.
854
-
855
- * The `cancel()` function is not supported for sockets. Asynchronous
856
- operations may only be cancelled by closing the socket.
857
-
858
- * Operations that use `null_buffers` are not supported.
859
-
860
- * Only `tcp::no_delay` and `socket_base::keep_alive` options are supported.
861
-
862
- * Resolvers do not support service names, only numbers. I.e. you must
863
- use "80" rather than "http".
864
-
865
- * Most resolver query flags have no effect.
866
-
867
- * Extended the ability to use Asio without Boost to include Microsoft Visual
868
- Studio 2012. When using a C++11 compiler, most of Asio may now be used
869
- without a dependency on Boost header files or libraries. To use Asio in this
870
- way, define `ASIO_STANDALONE` on your compiler command line or as part of the
871
- project options. This standalone configuration has been tested for the
872
- following platforms and compilers:
873
-
874
- * Microsoft Visual Studio 2012
875
-
876
- * Linux with g++ 4.7 or 4.8 (requires [^-std=c++11])
877
-
878
- * Mac OS X with clang++ / Xcode 4.6 (requires [^-std=c++11 -stdlib=libc++])
879
-
880
- * Fixed a regression (introduced in 1.10.0) where, on some platforms, errors
881
- from `async_connect` were not correctly propagated through to the completion
882
- handler.
883
-
884
- * Fixed a Windows-specific regression (introduced in 1.10.0) that occurs when
885
- multiple threads are running an `io_service`. When the bug occurs, the result
886
- of an asynchronous operation (error and bytes tranferred) is incorrectly
887
- discarded and zero values used instead. For TCP sockets this results in
888
- spurious end-of-file notifications.
889
-
890
- * Fixed a bug in handler tracking, where it was not correctly printing out some
891
- handler IDs.
892
-
893
- * Fixed the comparison used to test for successful synchronous accept
894
- operations so that it works correctly with unsigned socket descriptors.
895
-
896
- * Ensured the signal number is correctly passed to the completion handler when
897
- starting an `async_wait` on a signal that is already raised.
898
-
899
- * Suppressed a g++ 4.8+ warning about unused typedefs.
900
-
901
- * Enabled the move optimisation for handlers that use the default invocation
902
- hook.
903
-
904
- * Clarified that programs must not issue overlapping `async_write_at`
905
- operations.
906
-
907
- * Changed the Windows `HANDLE` backend to treat `ERROR_MORE_DATA` as a
908
- non-fatal error when returned by `GetOverlappedResult` for a synchronous
909
- read.
910
-
911
- * Visual C++ language extensions use `generic` as a keyword. Added a
912
- workaround that renames the namespace to `cpp_generic` when those language
913
- extensions are in effect.
914
-
915
- * Fixed some asynchronous operations that missed out on getting `async_result`
916
- support in 1.10.0. In particular, the buffered stream templates have been
917
- updated so that they adhere to current handler patterns.
918
-
919
- * Enabled move support for Microsoft Visual Studio 2012.
920
-
921
- * Added `use_future` support for Microsoft Visual Studio 2012.
922
-
923
- * Removed a use of `std::min` in the Windows IOCP backend to avoid a
924
- dependency on the `<algorithm>` header.
925
-
926
- * Eliminated some unnecessary handler copies.
927
-
928
- * Fixed support for older versions of OpenSSL that do not provide the
929
- `SSL_CTX_clear_options` function.
930
-
931
- * Fixed various minor and cosmetic issues in code and documentation.
932
-
933
- [heading Asio 1.10.0]
934
-
935
- * Added new traits classes, `handler_type` and `async_result`, that allow the
936
- customisation of the return type of an initiating function.
937
-
938
- * Added the `asio::spawn()` function, a high-level wrapper for running
939
- stackful coroutines, based on the Boost.Coroutine library. The `spawn()`
940
- function enables programs to implement asynchronous logic in a synchronous
941
- manner. For example: `size_t n = my_socket.async_read_some(my_buffer, yield);`.
942
- For further information, see [link asio.overview.core.spawn Stackful
943
- Coroutines].
944
-
945
- * Added the `asio::use_future` special value, which provides first-class
946
- support for returning a C++11 `std::future` from an asynchronous
947
- operation's initiating function. For example:
948
- `future<size_t> = my_socket.async_read_some(my_buffer, asio::use_future);`.
949
- For further information, see [link asio.overview.cpp2011.futures C++
950
- 2011 Support - Futures].
951
-
952
- * Promoted the stackless coroutine class and macros to be part of Asio's
953
- documented interface, rather than part of the HTTP server 4 example.
954
- For further information, see [link asio.overview.core.coroutine
955
- Stackless Coroutines].
956
-
957
- * Added a new handler hook called `asio_handler_is_continuation`.
958
- Asynchronous operations may represent a continuation of the asynchronous
959
- control flow associated with the current executing handler. The
960
- `asio_handler_is_continuation` hook can be customised to return `true` if
961
- this is the case, and Asio's implementation can use this knowledge to
962
- optimise scheduling of the new handler. To cover common cases, Asio
963
- customises the hook for strands, `spawn()` and composed asynchronous
964
- operations.
965
-
966
- * Added four new generic protocol classes, `generic::datagram_protocol`,
967
- `generic::raw_protocol`, `generic::seq_packet_protocol` and
968
- `generic::stream_protocol`, which implement the `Protocol` type
969
- requirements, but allow the user to specify the address family (e.g.
970
- `AF_INET`) and protocol type (e.g. `IPPROTO_TCP`) at runtime.
971
- For further information, see [link
972
- asio.overview.networking.other_protocols Support for Other Protocols].
973
-
974
- * Added C++11 move constructors that allow the conversion of a socket (or
975
- acceptor) into a more generic type. For example, an `ip::tcp::socket` can
976
- be converted into a `generic::stream_protocol::socket` via move
977
- construction.
978
- For further information, see [link
979
- asio.overview.networking.other_protocols Support for Other Protocols].
980
-
981
- * Extended the `basic_socket_acceptor<>`'s `accept()` and `async_accept()`
982
- functions to allow a new connection to be accepted directly into a socket
983
- of a more generic type. For example, an `ip::tcp::acceptor` can be used to
984
- accept into a `generic::stream_protocol::socket` object.
985
- For further information, see [link
986
- asio.overview.networking.other_protocols Support for Other Protocols].
987
-
988
- * Moved existing examples into a C++03-specific directory, and added a new
989
- directory for C++11-specific examples. A limited subset of the C++03
990
- examples have been converted to their C++11 equivalents.
991
-
992
- * Add the ability to use Asio without Boost, for a limited set of platforms.
993
- When using a C++11 compiler, most of Asio may now be used without a
994
- dependency on Boost header files or libraries. To use Asio in this way,
995
- define `ASIO_STANDALONE` on your compiler command line or as part of the
996
- project options. This standalone configuration has currently been tested for
997
- the following platforms and compilers:
998
-
999
- * Linux with g++ 4.7 (requires [^-std=c++11])
1000
-
1001
- * Mac OS X with clang++ / Xcode 4.6 (requires [^-std=c++11 -stdlib=libc++])
1002
-
1003
- * Various SSL enhancements. Thanks go to Nick Jones, on whose work these changes
1004
- are based.
1005
-
1006
- * Added support for SSL handshakes with re-use of data already read from
1007
- the wire. New overloads of the `ssl::stream<>` class's `handshake()` and
1008
- `async_handshake()` functions have been added. These accept a
1009
- `ConstBufferSequence` to be used as initial input to the ssl engine for
1010
- the handshake procedure.
1011
-
1012
- * Added support for creation of TLSv1.1 and TLSv1.2 `ssl::context` objects.
1013
-
1014
- * Added a `set_verify_depth()` function to the `ssl::context` and
1015
- `ssl::stream<>` classes.
1016
-
1017
- * Added the ability to load SSL certificate and key data from memory
1018
- buffers. New functions, `add_certificate_authority()`,
1019
- `use_certificate()`, `use_certificate_chain()`, `use_private_key()`,
1020
- `use_rsa_private_key()` and `use_tmp_dh()`, have been added to the
1021
- `ssl::context` class.
1022
-
1023
- * Changed `ssl::context` to automatically disable SSL compression by
1024
- default. To enable, use the new `ssl::context::clear_options()` function,
1025
- as in `my_context.clear_options(ssl::context::no_compression)`.
1026
-
1027
- * Fixed a potential deadlock in `signal_set` implementation.
1028
-
1029
- * Fixed an error in acceptor example in documentation.
1030
-
1031
- * Fixed copy-paste errors in waitable timer documentation.
1032
-
1033
- * Added assertions to satisfy some code analysis tools.
1034
-
1035
- * Fixed a malformed `#warning` directive.
1036
-
1037
- * Fixed a potential data race in the Linux `epoll` implementation.
1038
-
1039
- * Fixed a Windows-specific bug, where certain operations might generate an
1040
- `error_code` with an invalid (i.e. `NULL`) `error_category`.
1041
-
1042
- * Fixed `basic_waitable_timer`'s underlying implementation so that it can
1043
- handle any `time_point` value without overflowing the intermediate duration
1044
- objects.
1045
-
1046
- * Fixed a problem with lost thread wakeups that can occur when making
1047
- concurrent calls to `run()` and `poll()` on the same `io_service` object.
1048
-
1049
- * Fixed implementation of asynchronous connect operation so that it can cope
1050
- with spurious readiness notifications from the reactor.
1051
-
1052
- * Fixed a memory leak in the `ssl::rfc2818_verification` class.
1053
-
1054
- * Added a mechanism for disabling automatic Winsock initialisation. See the
1055
- header file [^asio/detail/winsock_init.hpp] for details.
1056
-
1057
- [heading Asio 1.8.3]
1058
-
1059
- * Fixed some 64-to-32-bit conversion warnings.
1060
-
1061
- * Fixed various small errors in documentation and comments.
1062
-
1063
- * Fixed an error in the example embedded in `basic_socket::get_option`'s
1064
- documentation.
1065
-
1066
- * Changed to use `long` rather than `int` for SSL_CTX options, to match OpenSSL.
1067
-
1068
- * Changed to use `_snwprintf` to address a compile error due to the changed
1069
- `swprintf` signature in recent versions of MinGW.
1070
-
1071
- * Fixed a deadlock that can occur on Windows when shutting down a pool of
1072
- `io_service` threads due to running out of work.
1073
-
1074
- * Changed UNIX domain socket example to treat errors from `accept` as non-fatal.
1075
-
1076
- * Added a small block recycling optimisation to improve default memory
1077
- allocation behaviour.
1078
-
1079
- [heading Asio 1.8.2]
1080
-
1081
- * Fixed an incompatibility between `ip::tcp::iostream` and C++11.
1082
-
1083
- * Decorated GCC attribute names with underscores to prevent interaction
1084
- with user-defined macros.
1085
-
1086
- * Added missing `#include <cctype>`, needed for some versions of MinGW.
1087
-
1088
- * Changed to use [^gcc]'s atomic builtins on ARM CPUs, when available.
1089
-
1090
- * Changed strand destruction to be a no-op, to allow strand objects to be
1091
- destroyed after their associated `io_service` has been destroyed.
1092
-
1093
- * Added support for some newer versions of glibc which provide the
1094
- `epoll_create1()` function but always fail with ENOSYS.
1095
-
1096
- * Changed the SSL implementation to throw an exception if SSL engine
1097
- initialisation fails.
1098
-
1099
- * Fixed another regression in `buffered_write_stream`.
1100
-
1101
- * Implemented various minor performance improvements, primarily targeted at
1102
- Linux x86 and x86-64 platforms.
1103
-
1104
- [heading Asio 1.8.1]
1105
-
1106
- * Changed the `epoll_reactor` backend to do lazy registration for `EPOLLOUT`
1107
- events.
1108
-
1109
- * Fixed the `epoll_reactor` handling of out-of-band data, which was broken by
1110
- an incomplete fix in the last release.
1111
-
1112
- * Changed Asio's SSL wrapper to respect OpenSSL's `OPENSSL_NO_ENGINE` feature
1113
- test `#define`.
1114
-
1115
- * Fixed `windows::object_handle` so that it works with Windows compilers that
1116
- support C++11 move semantics (such as [^g++]).
1117
-
1118
- * Improved the performance of strand rescheduling.
1119
-
1120
- * Added support for [^g++] 4.7 when compiling in C++11 mode.
1121
-
1122
- * Fixed a problem where `signal_set` handlers were not being delivered when
1123
- the `io_service` was constructed with a `concurrency_hint` of 1.
1124
-
1125
- [heading Asio 1.8.0]
1126
-
1127
- * Added a new class template `basic_waitable_timer` based around the C++11 clock
1128
- type requirements. It may be used with the clocks from the C++11 `<chrono>`
1129
- library facility or, if those are not available, Boost.Chrono. The typedefs
1130
- `high_resolution_timer`, `steady_timer` and `system_timer` may be used to
1131
- create timer objects for the standard clock types.
1132
-
1133
- * Added a new `windows::object_handle` class for performing waits on Windows
1134
- kernel objects. Thanks go to Boris Schaeling for contributing substantially
1135
- to the development of this feature.
1136
-
1137
- * On Linux, `connect()` can return EAGAIN in certain circumstances. Remapped
1138
- this to another error so that it doesn't look like a non-blocking operation.
1139
-
1140
- * Fixed a compile error on NetBSD.
1141
-
1142
- * Fixed deadlock on Mac OS X.
1143
-
1144
- * Fixed a regression in `buffered_write_stream`.
1145
-
1146
- * Fixed a non-paged pool "leak" on Windows when an `io_service` is repeatedly
1147
- run without anything to do.
1148
-
1149
- * Reverted earlier change to allow some speculative operations to be performed
1150
- without holding the lock, as it introduced a race condition in some
1151
- multithreaded scenarios.
1152
-
1153
- * Fixed a bug where the second buffer in an array of two buffers may be ignored
1154
- if the first buffer is empty.
1155
-
1156
- [heading Asio 1.6.1]
1157
-
1158
- * Implemented various performance improvements, including:
1159
-
1160
- * Using thread-local operation queues in single-threaded use cases (i.e. when
1161
- `concurrency_hint` is 1) to eliminate a lock/unlock pair.
1162
-
1163
- * Allowing some `epoll_reactor` speculative operations to be performed
1164
- without holding the lock.
1165
-
1166
- * Improving locality of reference by performing an `epoll_reactor`'s I/O
1167
- operation immediately before the corresponding handler is called. This also
1168
- improves scalability across CPUs when multiple threads are running the
1169
- `io_service`.
1170
-
1171
- * Specialising asynchronous read and write operations for buffer sequences
1172
- that are arrays (`boost::array` or `std::array`) of exactly two buffers.
1173
-
1174
- * Fixed a compile error in the regex overload of `async_read_until`.
1175
-
1176
- * Fixed a Windows-specific compile error by explicitly specifying the
1177
- `signal()` function from the global namespace.
1178
-
1179
- * Changed the `deadline_timer` implementation so that it does not read the
1180
- clock unless the timer heap is non-empty.
1181
-
1182
- * Changed the SSL stream's buffers' sizes so that they are large enough to hold
1183
- a complete TLS record.
1184
-
1185
- * Fixed the behaviour of the synchronous `null_buffers` operations so that they
1186
- obey the user's non-blocking setting.
1187
-
1188
- * Changed to set the size of the select `fd_set` at runtime when using Windows.
1189
-
1190
- * Disabled an MSVC warning due to const qualifier being applied to function type.
1191
-
1192
- * Fixed a crash that occurs when using the Intel C++ compiler.
1193
-
1194
- * Changed the initialisation of the OpenSSL library so that it supports all
1195
- available algorithms.
1196
-
1197
- * Fixed the SSL error mapping used when the session is gracefully shut down.
1198
-
1199
- * Added some latency test programs.
1200
-
1201
- * Clarified that a read operation ends when the buffer is full.
1202
-
1203
- * Fixed an exception safety issue in `epoll_reactor` initialisation.
1204
-
1205
- * Made the number of strand implementations configurable by defining
1206
- `(BOOST_)ASIO_STRAND_IMPLEMENTATIONS` to the desired number.
1207
-
1208
- * Added support for a new `(BOOST_)ASIO_ENABLE_SEQUENTIAL_STRAND_ALLOCATION` flag
1209
- which switches the allocation of strand implementations to use a round-robin
1210
- approach rather than hashing.
1211
-
1212
- * Fixed potential strand starvation issue that can occur when `strand.post()`
1213
- is used.
1214
-
1215
- [heading Asio 1.6.0]
1216
-
1217
- * Improved support for C++0x move construction to further reduce copying of
1218
- handler objects. In certain designs it is possible to eliminate virtually all
1219
- copies. Move support is now enabled when compiling in [^-std=c++0x] mode on
1220
- g++ 4.5 or higher.
1221
-
1222
- * Added build support for platforms that don't provide either of `signal()` or
1223
- `sigaction()`.
1224
-
1225
- * Changed to use C++0x variadic templates when they are available, rather than
1226
- generating function overloads using the Boost.Preprocessor library.
1227
-
1228
- * Ensured the value of `errno` is preserved across the implementation's signal
1229
- handler.
1230
-
1231
- * On Windows, ensured the count of outstanding work is decremented for
1232
- abandoned operations (i.e. operations that are being cleaned up within the
1233
- `io_service` destructor).
1234
-
1235
- * Fixed behaviour of zero-length reads and writes in the new SSL implementation.
1236
-
1237
- * Added support for building with OpenSSL 1.0 when `OPENSSL_NO_SSL2` is defined.
1238
-
1239
- * Changed most examples to treat a failure by an accept operation as non-fatal.
1240
-
1241
- * Fixed an error in the [^tick_count_timer] example by making the duration type
1242
- signed. Previously, a wait on an already-passed deadline would not return for
1243
- a very long time.
1244
-
1245
- [heading Asio 1.5.3]
1246
-
1247
- * Added a new, completely rewritten SSL implementation. The new implementation
1248
- compiles faster, shows substantially improved performance, and supports
1249
- custom memory allocation and handler invocation. It includes new API features
1250
- such as certificate verification callbacks and has improved error reporting.
1251
- The new implementation is source-compatible with the old for most uses.
1252
- However, if necessary, the old implementation may still be used by defining
1253
- `(BOOST_)ASIO_ENABLE_OLD_SSL`.
1254
-
1255
- * Added new `asio::buffer()` overloads for `std::array`, when available. The
1256
- support is automatically enabled when compiling in [^-std=c++0x] mode on g++
1257
- 4.3 or higher, or when using MSVC 10. The support may be explicitly enabled
1258
- by defining `(BOOST_)ASIO_HAS_STD_ARRAY`, or disabled by defining
1259
- `(BOOST_)ASIO_DISABLE_STD_ARRAY`.
1260
-
1261
- * Changed to use the C++0x standard library templates `array`, `shared_ptr`,
1262
- `weak_ptr` and `atomic` when they are available, rather than the Boost
1263
- equivalents.
1264
-
1265
- * Support for `std::error_code` and `std::system_error` is no longer enabled by
1266
- default for g++ 4.5, as that compiler's standard library does not implement
1267
- `std::system_error::what()` correctly.
1268
-
1269
- [heading Asio 1.5.2]
1270
-
1271
- * Added support for C++0x move construction and assignment to sockets, serial
1272
- ports, POSIX descriptors and Windows handles.
1273
-
1274
- * Added support for the `fork()` system call. Programs that use `fork()` must
1275
- call `io_service.notify_fork()` at the appropriate times. Two new examples
1276
- have been added showing how to use this feature.
1277
-
1278
- * Cleaned up the handling of errors reported by the `close()` system call. In
1279
- particular, assume that most operating systems won't have `close()` fail with
1280
- `EWOULDBLOCK`, but if it does then set the blocking mode and restart the call.
1281
- If any other error occurs, assume the descriptor is closed.
1282
-
1283
- * The kqueue flag `EV_ONESHOT` seems to cause problems on some versions of Mac
1284
- OS X, with the `io_service` destructor getting stuck inside the `close()`
1285
- system call. Changed the kqueue backend to use `EV_CLEAR` instead.
1286
-
1287
- * Changed exception reporting to include the function name in exception `what()`
1288
- messages.
1289
-
1290
- * Fixed an insufficient initialisers warning with MinGW.
1291
-
1292
- * Changed the `shutdown_service()` member functions to be private.
1293
-
1294
- * Added archetypes for testing socket option functions.
1295
-
1296
- * Added a missing lock in `signal_set_service::cancel()`.
1297
-
1298
- * Fixed a copy/paste error in `SignalHandler` example.
1299
-
1300
- * Added the inclusion of the signal header to `signal_set_service.hpp` so that
1301
- constants like `NSIG` may be used.
1302
-
1303
- * Changed the `signal_set_service` implementation so that it doesn't assume
1304
- that `SIGRTMAX` is a compile-time constant.
1305
-
1306
- * Changed the Boost.Asio examples so that they don't use Boost.Thread's
1307
- convenience header. Use the header file that is specifically for the
1308
- boost::thread class instead.
1309
-
1310
- [heading Asio 1.5.1]
1311
-
1312
- * Added support for signal handling, using a new class called `signal_set`.
1313
- Programs may add one or more signals to the set, and then perform an
1314
- `async_wait()` operation. The specified handler will be called when one of
1315
- the signals occurs. The same signal number may registered with multiple
1316
- `signal_set` objects, however the signal number must be used only with Asio.
1317
-
1318
- * Added handler tracking, a new debugging aid. When enabled by defining
1319
- `(BOOST_)ASIO_ENABLE_HANDLER_TRACKING`, Asio writes debugging output to the
1320
- standard error stream. The output records asynchronous operations and the
1321
- relationships between their handlers. It may be post-processed using the
1322
- included [^handlerviz.pl] tool to create a visual representation of the
1323
- handlers (requires GraphViz).
1324
-
1325
- * Fixed a bug in `asio::streambuf` where the `consume()` function did not
1326
- always update the internal buffer pointers correctly. The problem may occur
1327
- when the `asio::streambuf` is filled with data using the standard C++ member
1328
- functions such as `sputn()`. (Note: the problem does not manifest when the
1329
- streambuf is populated by the Asio free functions `read()`,
1330
- `async_read()`, `read_until()` or `async_read_until()`.)
1331
-
1332
- * Fixed a bug on kqueue-based platforms, where reactor read operations that
1333
- return false from their `perform()` function are not correctly re-registered
1334
- with kqueue.
1335
-
1336
- * Support for `std::error_code` and `std::system_error` is no longer enabled by
1337
- default for MSVC10, as that compiler's standard library does not implement
1338
- `std::system_error::what()` correctly.
1339
-
1340
- * Modified the `buffers_iterator<>` and `ip::basic_resolver_iterator` classes
1341
- so that the value_type typedefs are non-const byte types.
1342
-
1343
- [heading Asio 1.5.0]
1344
-
1345
- * Added support for timeouts on socket iostreams, such as `ip::tcp::iostream`.
1346
- A timeout is set by calling `expires_at()` or `expires_from_now()` to
1347
- establish a deadline. Any socket operations which occur past the deadline
1348
- will put the iostream into a bad state.
1349
-
1350
- * Added a new `error()` member function to socket iostreams, for retrieving the
1351
- error code from the most recent system call.
1352
-
1353
- * Added a new `basic_deadline_timer::cancel_one()` function. This function lets
1354
- you cancel a single waiting handler on a timer. Handlers are cancelled in
1355
- FIFO order.
1356
-
1357
- * Added a new `transfer_exactly()` completion condition. This can be used to
1358
- send or receive a specified number of bytes even if the total size of the
1359
- buffer (or buffer sequence) is larger.
1360
-
1361
- * Added new free functions `connect()` and `async_connect()`. These operations
1362
- try each endpoint in a list until the socket is successfully connected.
1363
-
1364
- * Extended the `buffer_size()` function so that it works for buffer sequences
1365
- in addition to individual buffers.
1366
-
1367
- * Added a new `buffer_copy()` function that can be used to copy the raw bytes
1368
- between individual buffers and buffer sequences.
1369
-
1370
- * Added new non-throwing overloads of `read()`, `read_at()`, `write()` and
1371
- `write_at()` that do not require a completion condition.
1372
-
1373
- * Added friendlier compiler errors for when a completion handler does not meet
1374
- the necessary type requirements. When C++0x is available (currently supported
1375
- for g++ 4.5 or later, and MSVC 10), `static_assert` is also used to generate
1376
- an informative error message. This checking may be disabled by defining
1377
- `(BOOST_)ASIO_DISABLE_HANDLER_TYPE_REQUIREMENTS`.
1378
-
1379
- * Added support for using `std::error_code` and `std::system_error`, when
1380
- available. The support is automatically enabled when compiling in
1381
- [^-std=c++0x] mode on g++ 4.5 or higher, or when using MSVC 10. The support
1382
- may be explicitly enabled by defining `ASIO_HAS_STD_SYSTEM_ERROR`, or
1383
- disabled by defining `ASIO_DISABLE_STD_SYSTEM_ERROR`. (Available in non-Boost
1384
- version of Asio only.)
1385
-
1386
- * Made the `is_loopback()`, `is_unspecified()` and `is_multicast()` functions
1387
- consistently available across the `ip::address`, `ip::address_v4` and
1388
- `ip::address_v6` classes.
1389
-
1390
- * Added new `non_blocking()` functions for managing the non-blocking behaviour
1391
- of a socket or descriptor. The `io_control()` commands named `non_blocking_io`
1392
- are now deprecated in favour of these new functions.
1393
-
1394
- * Added new `native_non_blocking()` functions for managing the non-blocking
1395
- mode of the underlying socket or descriptor. These functions are intended to
1396
- allow the encapsulation of arbitrary non-blocking system calls as
1397
- asynchronous operations, in a way that is transparent to the user of the
1398
- socket object. The functions have no effect on the behaviour of the
1399
- synchronous operations of the socket or descriptor.
1400
-
1401
- * Added the `io_control()` member function for socket acceptors.
1402
-
1403
- * For consistency with the C++0x standard library, deprecated the `native_type`
1404
- typedefs in favour of `native_handle_type`, and the `native()` member
1405
- functions in favour of `native_handle()`.
1406
-
1407
- * Added a `release()` member function to posix descriptors. This function
1408
- releases ownership of the underlying native descriptor to the caller.
1409
-
1410
- * Added support for sequenced packet sockets (`SOCK_SEQPACKET`).
1411
-
1412
- * Added a new `io_service::stopped()` function that can be used to determine
1413
- whether the `io_service` has stopped (i.e. a `reset()` call is needed prior
1414
- to any further calls to `run()`, `run_one()`, `poll()` or `poll_one()`).
1415
-
1416
- * Reduced the copying of handler function objects.
1417
-
1418
- * Added support for C++0x move construction to further reduce copying of
1419
- handler objects. Move support is enabled when compiling in [^-std=c++0x] mode
1420
- on g++ 4.5 or higher, or when using MSVC10.
1421
-
1422
- * Removed the dependency on OS-provided macros for the well-known IPv4 and IPv6
1423
- addresses. This should eliminate the annoying "missing braces around
1424
- initializer" warnings.
1425
-
1426
- * Reduced the size of `ip::basic_endpoint<>` objects (such as
1427
- `ip::tcp::endpoint` and `ip::udp::endpoint`).
1428
-
1429
- * Changed the reactor backends to assume that any descriptors or sockets added
1430
- using `assign()` may have been `dup()`-ed, and so require explicit
1431
- deregistration from the reactor.
1432
-
1433
- * Changed the SSL error category to return error strings from the OpenSSL
1434
- library.
1435
-
1436
- * Changed the separate compilation support such that, to use Asio's SSL
1437
- capabilities, you should also include 'asio/ssl/impl/src.hpp` in one source
1438
- file in your program.
1439
-
1440
- * Removed the deprecated member functions named `io_service()`. The
1441
- `get_io_service()` member functions should be used instead.
1442
-
1443
- * Removed the deprecated typedefs `resolver_query` and `resolver_iterator` from
1444
- the `ip::tcp`, `ip::udp` and `ip::icmp` classes.
1445
-
1446
- * Fixed a compile error on some versions of g++ due to anonymous enums.
1447
-
1448
- * Added an explicit cast to the `FIONBIO` constant to int to suppress a compiler
1449
- warning on some platforms.
1450
-
1451
- * Fixed warnings reported by g++'s [^-Wshadow] compiler option.
1452
-
1453
- [heading Asio 1.4.8]
1454
-
1455
- * Fixed an integer overflow problem that occurs when
1456
- `ip::address_v4::broadcast()` is used on 64-bit platforms.
1457
-
1458
- * Fixed a problem on older Linux kernels (where epoll is used without `timerfd`
1459
- support) that prevents timely delivery of `deadline_timer` handlers, after the
1460
- program has been running for some time.
1461
-
1462
- [heading Asio 1.4.7]
1463
-
1464
- * Fixed a problem on kqueue-based platforms where a `deadline_timer` may
1465
- never fire if the `io_service` is running in a background thread.
1466
-
1467
- * Fixed a const-correctness issue that prevented valid uses of
1468
- `has_service<>` from compiling.
1469
-
1470
- * Fixed MinGW cross-compilation.
1471
-
1472
- * Removed dependency on deprecated Boost.System functions (Boost.Asio only).
1473
-
1474
- * Ensured `close()`/`closesocket()` failures are correctly propagated.
1475
-
1476
- * Added a check for errors returned by `InitializeCriticalSectionAndSpinCount`.
1477
-
1478
- * Added support for hardware flow control on QNX.
1479
-
1480
- * Always use `pselect()` on HP-UX, if it is available.
1481
-
1482
- * Ensured handler arguments are passed as lvalues.
1483
-
1484
- * Fixed Windows build when thread support is disabled.
1485
-
1486
- * Fixed a Windows-specific problem where `deadline_timer` objects with expiry
1487
- times set more than 5 minutes in the future may never expire.
1488
-
1489
- * Fixed the resolver backend on BSD platforms so that an empty service name
1490
- resolves to port number `0`, as per the documentation.
1491
-
1492
- * Fixed read operations so that they do not accept buffer sequences of type
1493
- `const_buffers_1`.
1494
-
1495
- * Redefined `Protocol` and `id` to avoid clashing with Objective-C++ keywords.
1496
-
1497
- * Fixed a `vector` reallocation performance issue that can occur when there are
1498
- many active `deadline_timer` objects.
1499
-
1500
- * Fixed the kqueue backend so that it compiles on NetBSD.
1501
-
1502
- * Fixed the socket `io_control()` implementation on 64-bit Mac OS X and BSD
1503
- platforms.
1504
-
1505
- * Fixed a Windows-specific problem where failures from `accept()` are
1506
- incorrectly treated as successes.
1507
-
1508
- * Deprecated the separate compilation header `asio/impl/src.cpp` in
1509
- favour of `asio/impl/src.hpp`.
1510
-
1511
- [heading Asio 1.4.6]
1512
-
1513
- * Reduced compile times. (Note that some programs may need to add additional
1514
- `#include`s, e.g. if the program uses boost::array but does not explicitly
1515
- include `<boost/array.hpp>`.)
1516
-
1517
- * Reduced the size of generated code.
1518
-
1519
- * Refactored `deadline_timer` implementation to improve performance.
1520
-
1521
- * Improved multiprocessor scalability on Windows by using a dedicated hidden
1522
- thread to wait for timers.
1523
-
1524
- * Improved performance of `asio::streambuf` with `async_read()` and
1525
- `async_read_until()`. These read operations now use the existing capacity of
1526
- the `streambuf` when reading, rather than limiting the read to 512 bytes.
1527
-
1528
- * Added optional separate compilation. To enable, include
1529
- `asio/impl/src.cpp` in one source file in a program, then
1530
- build the program with `(BOOST_)ASIO_SEPARATE_COMPILATION` defined in the
1531
- project\/compiler settings. Alternatively, `(BOOST_)ASIO_DYN_LINK` may be
1532
- defined to build a separately-compiled Asio as part of a shared library.
1533
-
1534
- * Added new macro `(BOOST_)ASIO_DISABLE_FENCED_BLOCK` to permit the disabling of
1535
- memory fences around completion handlers, even if thread support is enabled.
1536
-
1537
- * Reworked timeout examples to better illustrate typical use cases.
1538
-
1539
- * Ensured that handler arguments are passed as const types.
1540
-
1541
- * Fixed incorrect parameter order in `null_buffers` variant of `async_send_to`.
1542
-
1543
- * Ensured unsigned char is used with `isdigit` in `getaddrinfo` emulation.
1544
-
1545
- * Fixed handling of very small but non-zero timeouts.
1546
-
1547
- * Fixed crash that occurred when an empty buffer sequence was passed to a
1548
- composed read or write operation.
1549
-
1550
- * Added missing operator+ overload in `buffers_iterator`.
1551
-
1552
- * Implemented cancellation of `null_buffers` operations on Windows.
1553
-
1554
- [heading Asio 1.4.5]
1555
-
1556
- * Improved performance.
1557
-
1558
- * Reduced compile times.
1559
-
1560
- * Reduced the size of generated code.
1561
-
1562
- * Extended the guarantee that background threads don't call user code to
1563
- all asynchronous operations.
1564
-
1565
- * Changed to use edge-triggered epoll on Linux.
1566
-
1567
- * Changed to use `timerfd` for dispatching timers on Linux, when
1568
- available.
1569
-
1570
- * Changed to use one-shot notifications with kqueue on Mac OS X and BSD
1571
- platforms.
1572
-
1573
- * Added a bitmask type `ip::resolver_query_base::flags` as per the TR2
1574
- proposal. This type prevents implicit conversion from `int` to
1575
- `flags`, allowing the compiler to catch cases where users incorrectly
1576
- pass a numeric port number as the service name.
1577
-
1578
- * Added `#define NOMINMAX` for all Windows compilers. Users can define
1579
- `(BOOST_)ASIO_NO_NOMINMAX` to suppress this definition.
1580
-
1581
- * Fixed a bug where 0-byte asynchronous reads were incorrectly passing
1582
- an `error::eof` result to the completion handler.
1583
-
1584
- * Changed the `io_control()` member functions to always call `ioctl` on
1585
- the underlying descriptor when modifying blocking mode.
1586
-
1587
- * Changed the resolver implementation so that it no longer requires the
1588
- typedefs `InternetProtocol::resolver_query` and
1589
- `InternetProtocol::resolver_iterator`, as neither typedef is part of
1590
- the documented `InternetProtocol` requirements. The corresponding
1591
- typedefs in the `ip::tcp`, `ip::udp` and `ip::icmp` classes have been
1592
- deprecated.
1593
-
1594
- * Fixed out-of-band handling for reactors not based on `select()`.
1595
-
1596
- * Added new `(BOOST_)ASIO_DISABLE_THREADS` macro that allows Asio's
1597
- threading support to be independently disabled.
1598
-
1599
- * Minor documentation improvements.
1600
-
1601
- [heading Asio 1.4.4]
1602
-
1603
- * Added a new HTTP Server 4 example illustrating the use of stackless
1604
- coroutines with Asio.
1605
-
1606
- * Changed handler allocation and invocation to use `boost::addressof` to
1607
- get the address of handler objects, rather than applying `operator&`
1608
- directly.
1609
-
1610
- * Restricted MSVC buffer debugging workaround to 2008, as it causes a
1611
- crash with 2010 beta 2.
1612
-
1613
- * Fixed a problem with the lifetime of handler memory, where Windows
1614
- needs the `OVERLAPPED` structure to be valid until both the initiating
1615
- function call has returned and the completion packet has been
1616
- delivered.
1617
-
1618
- * Don't block signals while performing system calls, but instead restart
1619
- the calls if they are interrupted.
1620
-
1621
- * Documented the guarantee made by strand objects with respect to order
1622
- of handler invocation.
1623
-
1624
- * Changed strands to use a pool of implementations, to make copying of
1625
- strands cheaper.
1626
-
1627
- * Ensured that kqueue support is enabled for BSD platforms.
1628
-
1629
- * Added a `boost_` prefix to the `extern "C"` thread entry point
1630
- function.
1631
-
1632
- * In `getaddrinfo` emulation, only check the socket type (`SOCK_STREAM`
1633
- or `SOCK_DGRAM`) if a service name has been specified. This should
1634
- allow the emulation to work with raw sockets.
1635
-
1636
- * Added a workaround for some broken Windows firewalls that make a
1637
- socket appear bound to 0.0.0.0 when it is in fact bound to 127.0.0.1.
1638
-
1639
- * Applied a fix for reported excessive CPU usage under Solaris.
1640
-
1641
- * Added some support for platforms that use older compilers such as g++
1642
- 2.95.
1643
-
1644
- [heading Asio 1.4.3]
1645
-
1646
- * Added a new ping example to illustrate the use of ICMP sockets.
1647
-
1648
- * Changed the `buffered*_stream<>` templates to treat 0-byte reads and
1649
- writes as no-ops, to comply with the documented type requirements for
1650
- `SyncReadStream`, `AsyncReadStream`, `SyncWriteStream` and
1651
- `AsyncWriteStream`.
1652
-
1653
- * Changed some instances of the `throw` keyword to
1654
- `boost::throw_exception()` to allow Asio to be used when exception
1655
- support is disabled. Note that the SSL wrappers still require
1656
- exception support.
1657
-
1658
- * Made Asio compatible with the OpenSSL 1.0 beta.
1659
-
1660
- * Eliminated a redundant system call in the Solaris /dev/poll backend.
1661
-
1662
- * Fixed a bug in resizing of the bucket array in the internal hash maps.
1663
-
1664
- * Ensured correct propagation of the error code when a synchronous
1665
- accept fails.
1666
-
1667
- * Ensured correct propagation of the error code when a synchronous read
1668
- or write on a Windows `HANDLE` fails.
1669
-
1670
- * Fixed failures reported when `_GLIBCXX_DEBUG` is defined.
1671
-
1672
- * Fixed custom memory allocation support for timers.
1673
-
1674
- * Tidied up various warnings reported by g++.
1675
-
1676
- * Various documentation improvements, including more obvious hyperlinks
1677
- to function overloads, header file information, examples for the
1678
- handler type requirements, and adding enum values to the index.
1679
-
1680
- [heading Asio 1.4.2]
1681
-
1682
- * Implement automatic resizing of the bucket array in the internal hash
1683
- maps. This is to improve performance for very large numbers of
1684
- asynchronous operations and also to reduce memory usage for very small
1685
- numbers. A new macro `(BOOST_)ASIO_HASH_MAP_BUCKETS` may be used to
1686
- tweak the sizes used for the bucket arrays. (N.B. this feature
1687
- introduced a bug which was fixed in Asio 1.4.3 / Boost 1.40.)
1688
-
1689
- * Add performance optimisation for the Windows IOCP backend for when no
1690
- timers are used.
1691
-
1692
- * Prevent locale settings from affecting formatting of TCP and UDP
1693
- endpoints.
1694
-
1695
- * Fix a memory leak that occurred when an asynchronous SSL operation's
1696
- completion handler threw an exception.
1697
-
1698
- * Fix the implementation of `io_control()` so that it adheres to the
1699
- documented type requirements for IoControlCommand.
1700
-
1701
- * Fix incompatibility between Asio and ncurses.h.
1702
-
1703
- * On Windows, specifically handle the case when an overlapped `ReadFile`
1704
- call fails with `ERROR_MORE_DATA`. This enables a hack where a
1705
- `windows::stream_handle` can be used with a message-oriented named
1706
- pipe.
1707
-
1708
- * Fix system call wrappers to always clear the error on success, as
1709
- POSIX allows successful system calls to modify errno.
1710
-
1711
- * Don't include termios.h if `(BOOST_)ASIO_DISABLE_SERIAL_PORT` is
1712
- defined.
1713
-
1714
- * Cleaned up some more MSVC level 4 warnings.
1715
-
1716
- * Various documentation fixes.
1717
-
1718
- [heading Asio 1.4.1]
1719
-
1720
- * Improved compatibility with some Windows firewall software.
1721
-
1722
- * Ensured arguments to `windows::overlapped_ptr::complete()` are correctly
1723
- passed to the completion handler.
1724
-
1725
- * Fixed a link problem and multicast failure on QNX.
1726
-
1727
- * Fixed a compile error in SSL support on MinGW / g++ 3.4.5.
1728
-
1729
- * Drop back to using a pipe for notification if eventfd is not available
1730
- at runtime on Linux.
1731
-
1732
- * Various minor bug and documentation fixes.
1733
-
1734
- [heading Asio 1.4.0]
1735
-
1736
- * Enhanced CompletionCondition concept with the signature
1737
- `size_t CompletionCondition(error_code ec, size_t total)`, where the return
1738
- value indicates the maximum number of bytes to be transferred on the next
1739
- read or write operation. (The old CompletionCondition signature is still
1740
- supported for backwards compatibility).
1741
-
1742
- * New `windows::overlapped_ptr` class to allow arbitrary overlapped I/O
1743
- functions (such as `TransmitFile`) to be used with Asio.
1744
-
1745
- * On recent versions of Linux, an `eventfd` descriptor is now used (rather than
1746
- a pipe) to interrupt a blocked select/epoll reactor.
1747
-
1748
- * Added const overloads of `lowest_layer()`.
1749
-
1750
- * Synchronous read, write, accept and connect operations are now thread safe
1751
- (meaning that it is now permitted to perform concurrent synchronous
1752
- operations on an individual socket, if supported by the OS).
1753
-
1754
- * Reactor-based `io_service` implementations now use lazy initialisation to
1755
- reduce the memory usage of an `io_service` object used only as a message
1756
- queue.
1757
-
1758
- [heading Asio 1.2.0]
1759
-
1760
- * Added support for serial ports.
1761
-
1762
- * Added support for UNIX domain sockets.
1763
-
1764
- * Added support for raw sockets and ICMP.
1765
-
1766
- * Added wrappers for POSIX stream-oriented file descriptors (excluding regular
1767
- files).
1768
-
1769
- * Added wrappers for Windows stream-oriented `HANDLE`s such as named pipes
1770
- (requires `HANDLE`s that work with I/O completion ports).
1771
-
1772
- * Added wrappers for Windows random-access `HANDLE`s such as files (requires
1773
- `HANDLE`s that work with I/O completion ports).
1774
-
1775
- * Added support for reactor-style operations (i.e. they report readiness but
1776
- perform no I/O) using a new `null_buffers` type.
1777
-
1778
- * Added an iterator type for bytewise traversal of buffer sequences.
1779
-
1780
- * Added new `read_until()` and `async_read_until()` overloads that take a
1781
- user-defined function object for locating message boundaries.
1782
-
1783
- * Added an experimental two-lock queue (enabled by defining
1784
- `(BOOST_)ASIO_ENABLE_TWO_LOCK_QUEUE`) that may provide better `io_service`
1785
- scalability across many processors.
1786
-
1787
- * Various fixes, performance improvements, and more complete coverage of the
1788
- custom memory allocation support.
1789
-
1790
- [heading Asio 1.0.0]
1791
-
1792
- First stable release of Asio.
1793
-
1794
- [endsect]