couchbase 3.5.4 → 3.5.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (466) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/ext/CMakeLists.txt +8 -6
  4. data/ext/cache/cpm/{CPM_0.38.6.cmake → CPM_0.40.5.cmake} +152 -22
  5. data/ext/cache/extconf_include.rb +3 -3
  6. data/ext/cache/mozilla-ca-bundle.crt +94 -118
  7. data/ext/cache/mozilla-ca-bundle.sha256 +1 -1
  8. data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/CMakeLists.txt +30 -6
  9. data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/cmake/utils.cmake +13 -2
  10. data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/async_logger-inl.h +5 -7
  11. data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/mpmc_blocking_q.h +3 -3
  12. data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/os-inl.h +3 -3
  13. data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/thread_pool-inl.h +3 -8
  14. data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/thread_pool.h +3 -14
  15. data/ext/cache/{fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/include/fmt → spdlog/7251ead404dccd824789f8f3a13df2a6fb56440c/spdlog/include/spdlog/fmt/bundled}/base.h +47 -31
  16. data/ext/cache/{fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/include/fmt → spdlog/7251ead404dccd824789f8f3a13df2a6fb56440c/spdlog/include/spdlog/fmt/bundled}/format-inl.h +32 -8
  17. data/ext/cache/{fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/include/fmt → spdlog/7251ead404dccd824789f8f3a13df2a6fb56440c/spdlog/include/spdlog/fmt/bundled}/format.h +22 -14
  18. data/ext/cache/{fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/include/fmt → spdlog/7251ead404dccd824789f8f3a13df2a6fb56440c/spdlog/include/spdlog/fmt/bundled}/ranges.h +1 -1
  19. data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/mdc.h +4 -0
  20. data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/pattern_formatter-inl.h +16 -2
  21. data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/ansicolor_sink.h +1 -1
  22. data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/base_sink.h +4 -4
  23. data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/callback_sink.h +1 -1
  24. data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/daily_file_sink.h +3 -0
  25. data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/hourly_file_sink.h +2 -0
  26. data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/msvc_sink.h +1 -1
  27. data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/rotating_file_sink-inl.h +1 -1
  28. data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/syslog_sink.h +3 -2
  29. data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/wincolor_sink-inl.h +9 -0
  30. data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/version.h +2 -2
  31. data/ext/cache/{fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/src/format.cc → spdlog/7251ead404dccd824789f8f3a13df2a6fb56440c/spdlog/src/bundled_fmtlib_format.cpp} +10 -5
  32. data/ext/couchbase/CMakeLists.txt +3 -2
  33. data/ext/couchbase/cmake/APKBUILD.in +54 -0
  34. data/ext/couchbase/cmake/Backtrace.cmake +3 -1
  35. data/ext/couchbase/cmake/CPM.cmake +1 -1
  36. data/ext/couchbase/cmake/CompilerWarnings.cmake +0 -5
  37. data/ext/couchbase/cmake/Packaging.cmake +174 -11
  38. data/ext/couchbase/cmake/RPath.cmake +10 -0
  39. data/ext/couchbase/cmake/Testing.cmake +0 -4
  40. data/ext/couchbase/cmake/ThirdPartyDependencies.cmake +7 -26
  41. data/ext/couchbase/cmake/VersionInfo.cmake +4 -0
  42. data/ext/couchbase/cmake/build_version.hxx.in +1 -0
  43. data/ext/couchbase/cmake/couchbase-cxx-client.spec.in +2 -2
  44. data/ext/couchbase/cmake/couchbase_cxx_client.pc.in +2 -2
  45. data/ext/couchbase/core/agent_config.cxx +1 -1
  46. data/ext/couchbase/core/agent_group_config.cxx +1 -1
  47. data/ext/couchbase/core/bucket.cxx +25 -23
  48. data/ext/couchbase/core/bucket.hxx +2 -1
  49. data/ext/couchbase/core/cluster.cxx +9 -9
  50. data/ext/couchbase/core/cluster.hxx +2 -1
  51. data/ext/couchbase/core/cluster_agent_config.cxx +1 -1
  52. data/ext/couchbase/core/collections_component.cxx +1 -1
  53. data/ext/couchbase/core/columnar/agent_config.cxx +2 -2
  54. data/ext/couchbase/core/columnar/error.hxx +0 -1
  55. data/ext/couchbase/core/columnar/query_component.cxx +2 -2
  56. data/ext/couchbase/core/config_profiles.cxx +1 -1
  57. data/ext/couchbase/core/core_sdk_shim.cxx +1 -1
  58. data/ext/couchbase/core/crud_component.cxx +1 -1
  59. data/ext/couchbase/core/design_document_namespace_fmt.hxx +1 -1
  60. data/ext/couchbase/core/diagnostics_fmt.hxx +1 -1
  61. data/ext/couchbase/core/document_id.cxx +1 -1
  62. data/ext/couchbase/core/document_id_fmt.hxx +1 -1
  63. data/ext/couchbase/core/error_context/analytics_json.hxx +3 -1
  64. data/ext/couchbase/core/error_context/key_value_json.hxx +1 -1
  65. data/ext/couchbase/core/error_context/query_public_json.hxx +1 -1
  66. data/ext/couchbase/core/error_context/subdocument_json.hxx +1 -1
  67. data/ext/couchbase/core/fmt/key_value_error_map_attribute.hxx +1 -1
  68. data/ext/couchbase/core/fmt/key_value_extended_error_info.hxx +1 -1
  69. data/ext/couchbase/core/fmt/key_value_status_code.hxx +1 -1
  70. data/ext/couchbase/core/http_component.cxx +3 -3
  71. data/ext/couchbase/core/impl/analytics.cxx +1 -0
  72. data/ext/couchbase/core/impl/best_effort_retry_strategy.cxx +1 -1
  73. data/ext/couchbase/core/impl/cluster.cxx +55 -18
  74. data/ext/couchbase/core/impl/collection.cxx +40 -15
  75. data/ext/couchbase/core/impl/date_range.cxx +2 -2
  76. data/ext/couchbase/core/impl/date_range_query.cxx +2 -2
  77. data/ext/couchbase/core/impl/dns_srv_tracker.cxx +1 -1
  78. data/ext/couchbase/core/impl/error.cxx +27 -4
  79. data/ext/couchbase/core/impl/expiry.cxx +2 -2
  80. data/ext/couchbase/core/impl/fail_fast_retry_strategy.cxx +1 -2
  81. data/ext/couchbase/core/impl/get_replica.hxx +2 -0
  82. data/ext/couchbase/core/impl/key_value_error_context.cxx +6 -4
  83. data/ext/couchbase/core/impl/lookup_in_replica.hxx +2 -0
  84. data/ext/couchbase/core/impl/numeric_range.cxx +1 -1
  85. data/ext/couchbase/core/impl/observe_poll.cxx +7 -7
  86. data/ext/couchbase/core/impl/observe_seqno.hxx +2 -0
  87. data/ext/couchbase/core/impl/query.cxx +1 -0
  88. data/ext/couchbase/core/impl/query_error_context.cxx +3 -2
  89. data/ext/couchbase/core/impl/replica_utils.cxx +5 -5
  90. data/ext/couchbase/core/impl/replica_utils.hxx +2 -1
  91. data/ext/couchbase/core/impl/scope.cxx +5 -6
  92. data/ext/couchbase/core/impl/search.cxx +3 -1
  93. data/ext/couchbase/core/io/config_tracker.cxx +1 -1
  94. data/ext/couchbase/core/io/dns_client.cxx +23 -8
  95. data/ext/couchbase/core/io/http_command.hxx +2 -2
  96. data/ext/couchbase/core/io/http_parser.cxx +1 -1
  97. data/ext/couchbase/core/io/http_session.cxx +4 -0
  98. data/ext/couchbase/core/io/http_session.hxx +4 -2
  99. data/ext/couchbase/core/io/mcbp_command.hxx +2 -2
  100. data/ext/couchbase/core/key_value_config.cxx +2 -2
  101. data/ext/couchbase/core/logger/logger.cxx +1 -1
  102. data/ext/couchbase/core/logger/logger.hxx +1 -1
  103. data/ext/couchbase/core/management/rbac_fmt.hxx +1 -1
  104. data/ext/couchbase/core/mcbp/operation_queue.cxx +1 -1
  105. data/ext/couchbase/core/mcbp/packet.cxx +1 -1
  106. data/ext/couchbase/core/meta/features.hxx +16 -0
  107. data/ext/couchbase/core/meta/version.cxx +48 -7
  108. data/ext/couchbase/core/operations/document_analytics.cxx +23 -17
  109. data/ext/couchbase/core/operations/document_analytics.hxx +1 -0
  110. data/ext/couchbase/core/operations/document_append.hxx +2 -0
  111. data/ext/couchbase/core/operations/document_decrement.hxx +2 -0
  112. data/ext/couchbase/core/operations/document_exists.hxx +2 -0
  113. data/ext/couchbase/core/operations/document_get.hxx +2 -0
  114. data/ext/couchbase/core/operations/document_get_all_replicas.hxx +5 -4
  115. data/ext/couchbase/core/operations/document_get_and_lock.hxx +2 -0
  116. data/ext/couchbase/core/operations/document_get_and_touch.hxx +2 -0
  117. data/ext/couchbase/core/operations/document_get_any_replica.hxx +5 -3
  118. data/ext/couchbase/core/operations/document_get_projected.hxx +2 -0
  119. data/ext/couchbase/core/operations/document_increment.hxx +2 -0
  120. data/ext/couchbase/core/operations/document_insert.hxx +2 -0
  121. data/ext/couchbase/core/operations/document_lookup_in.hxx +2 -0
  122. data/ext/couchbase/core/operations/document_lookup_in_all_replicas.hxx +5 -3
  123. data/ext/couchbase/core/operations/document_lookup_in_any_replica.hxx +5 -3
  124. data/ext/couchbase/core/operations/document_mutate_in.hxx +2 -0
  125. data/ext/couchbase/core/operations/document_prepend.hxx +2 -0
  126. data/ext/couchbase/core/operations/document_query.hxx +1 -0
  127. data/ext/couchbase/core/operations/document_remove.hxx +2 -0
  128. data/ext/couchbase/core/operations/document_replace.hxx +2 -0
  129. data/ext/couchbase/core/operations/document_search.hxx +1 -0
  130. data/ext/couchbase/core/operations/document_touch.hxx +2 -0
  131. data/ext/couchbase/core/operations/document_unlock.hxx +2 -0
  132. data/ext/couchbase/core/operations/document_upsert.hxx +2 -0
  133. data/ext/couchbase/core/operations/document_view.hxx +1 -0
  134. data/ext/couchbase/core/operations/http_noop.hxx +2 -0
  135. data/ext/couchbase/core/operations/management/CMakeLists.txt +0 -1
  136. data/ext/couchbase/core/operations/management/analytics_dataset_create.cxx +1 -1
  137. data/ext/couchbase/core/operations/management/analytics_dataset_create.hxx +1 -0
  138. data/ext/couchbase/core/operations/management/analytics_dataset_drop.cxx +1 -1
  139. data/ext/couchbase/core/operations/management/analytics_dataset_drop.hxx +1 -0
  140. data/ext/couchbase/core/operations/management/analytics_dataset_get_all.hxx +1 -0
  141. data/ext/couchbase/core/operations/management/analytics_dataverse_create.cxx +1 -1
  142. data/ext/couchbase/core/operations/management/analytics_dataverse_create.hxx +1 -0
  143. data/ext/couchbase/core/operations/management/analytics_dataverse_drop.cxx +1 -1
  144. data/ext/couchbase/core/operations/management/analytics_dataverse_drop.hxx +1 -0
  145. data/ext/couchbase/core/operations/management/analytics_get_pending_mutations.cxx +1 -1
  146. data/ext/couchbase/core/operations/management/analytics_get_pending_mutations.hxx +2 -0
  147. data/ext/couchbase/core/operations/management/analytics_index_create.hxx +1 -0
  148. data/ext/couchbase/core/operations/management/analytics_index_drop.cxx +1 -1
  149. data/ext/couchbase/core/operations/management/analytics_index_drop.hxx +1 -0
  150. data/ext/couchbase/core/operations/management/analytics_index_get_all.hxx +1 -0
  151. data/ext/couchbase/core/operations/management/analytics_link_connect.cxx +1 -1
  152. data/ext/couchbase/core/operations/management/analytics_link_connect.hxx +1 -0
  153. data/ext/couchbase/core/operations/management/analytics_link_create.hxx +1 -0
  154. data/ext/couchbase/core/operations/management/analytics_link_disconnect.cxx +1 -1
  155. data/ext/couchbase/core/operations/management/analytics_link_disconnect.hxx +1 -0
  156. data/ext/couchbase/core/operations/management/analytics_link_drop.cxx +1 -1
  157. data/ext/couchbase/core/operations/management/analytics_link_drop.hxx +1 -0
  158. data/ext/couchbase/core/operations/management/analytics_link_get_all.cxx +24 -16
  159. data/ext/couchbase/core/operations/management/analytics_link_get_all.hxx +4 -3
  160. data/ext/couchbase/core/operations/management/analytics_link_replace.hxx +1 -0
  161. data/ext/couchbase/core/operations/management/analytics_link_utils.hxx +4 -3
  162. data/ext/couchbase/core/operations/management/bucket_create.hxx +1 -0
  163. data/ext/couchbase/core/operations/management/bucket_describe.cxx +1 -1
  164. data/ext/couchbase/core/operations/management/bucket_describe.hxx +1 -0
  165. data/ext/couchbase/core/operations/management/bucket_drop.cxx +1 -1
  166. data/ext/couchbase/core/operations/management/bucket_drop.hxx +1 -0
  167. data/ext/couchbase/core/operations/management/bucket_flush.cxx +1 -1
  168. data/ext/couchbase/core/operations/management/bucket_flush.hxx +1 -0
  169. data/ext/couchbase/core/operations/management/bucket_get.cxx +1 -1
  170. data/ext/couchbase/core/operations/management/bucket_get.hxx +1 -0
  171. data/ext/couchbase/core/operations/management/bucket_get_all.hxx +1 -0
  172. data/ext/couchbase/core/operations/management/bucket_update.hxx +1 -0
  173. data/ext/couchbase/core/operations/management/change_password.cxx +1 -1
  174. data/ext/couchbase/core/operations/management/change_password.hxx +1 -0
  175. data/ext/couchbase/core/operations/management/cluster_describe.hxx +1 -0
  176. data/ext/couchbase/core/operations/management/cluster_developer_preview_enable.hxx +1 -0
  177. data/ext/couchbase/core/operations/management/collection_create.cxx +1 -1
  178. data/ext/couchbase/core/operations/management/collection_create.hxx +2 -0
  179. data/ext/couchbase/core/operations/management/collection_drop.cxx +1 -1
  180. data/ext/couchbase/core/operations/management/collection_drop.hxx +1 -0
  181. data/ext/couchbase/core/operations/management/collection_update.cxx +1 -1
  182. data/ext/couchbase/core/operations/management/collection_update.hxx +2 -0
  183. data/ext/couchbase/core/operations/management/collections_manifest_get.hxx +2 -0
  184. data/ext/couchbase/core/operations/management/eventing_deploy_function.cxx +1 -1
  185. data/ext/couchbase/core/operations/management/eventing_deploy_function.hxx +3 -2
  186. data/ext/couchbase/core/operations/management/eventing_drop_function.cxx +1 -1
  187. data/ext/couchbase/core/operations/management/eventing_drop_function.hxx +3 -2
  188. data/ext/couchbase/core/operations/management/eventing_get_all_functions.hxx +3 -2
  189. data/ext/couchbase/core/operations/management/eventing_get_function.cxx +1 -1
  190. data/ext/couchbase/core/operations/management/eventing_get_function.hxx +3 -2
  191. data/ext/couchbase/core/operations/management/eventing_get_status.hxx +3 -2
  192. data/ext/couchbase/core/operations/management/eventing_pause_function.cxx +1 -1
  193. data/ext/couchbase/core/operations/management/eventing_pause_function.hxx +3 -2
  194. data/ext/couchbase/core/operations/management/eventing_resume_function.cxx +1 -1
  195. data/ext/couchbase/core/operations/management/eventing_resume_function.hxx +3 -2
  196. data/ext/couchbase/core/operations/management/eventing_undeploy_function.cxx +1 -1
  197. data/ext/couchbase/core/operations/management/eventing_undeploy_function.hxx +3 -2
  198. data/ext/couchbase/core/operations/management/eventing_upsert_function.cxx +1 -2
  199. data/ext/couchbase/core/operations/management/eventing_upsert_function.hxx +3 -2
  200. data/ext/couchbase/core/operations/management/freeform.hxx +2 -0
  201. data/ext/couchbase/core/operations/management/group_drop.cxx +1 -1
  202. data/ext/couchbase/core/operations/management/group_drop.hxx +1 -0
  203. data/ext/couchbase/core/operations/management/group_get.cxx +1 -1
  204. data/ext/couchbase/core/operations/management/group_get.hxx +1 -0
  205. data/ext/couchbase/core/operations/management/group_get_all.hxx +1 -0
  206. data/ext/couchbase/core/operations/management/group_upsert.hxx +1 -0
  207. data/ext/couchbase/core/operations/management/query_index_build.hxx +7 -5
  208. data/ext/couchbase/core/operations/management/query_index_build_deferred.hxx +3 -0
  209. data/ext/couchbase/core/operations/management/query_index_create.cxx +1 -1
  210. data/ext/couchbase/core/operations/management/query_index_create.hxx +1 -0
  211. data/ext/couchbase/core/operations/management/query_index_drop.cxx +1 -1
  212. data/ext/couchbase/core/operations/management/query_index_drop.hxx +1 -0
  213. data/ext/couchbase/core/operations/management/query_index_get_all.hxx +2 -0
  214. data/ext/couchbase/core/operations/management/query_index_get_all_deferred.hxx +3 -0
  215. data/ext/couchbase/core/operations/management/role_get_all.hxx +1 -0
  216. data/ext/couchbase/core/operations/management/scope_create.cxx +1 -1
  217. data/ext/couchbase/core/operations/management/scope_create.hxx +1 -0
  218. data/ext/couchbase/core/operations/management/scope_drop.cxx +1 -1
  219. data/ext/couchbase/core/operations/management/scope_drop.hxx +1 -0
  220. data/ext/couchbase/core/operations/management/scope_get_all.cxx +1 -1
  221. data/ext/couchbase/core/operations/management/scope_get_all.hxx +1 -0
  222. data/ext/couchbase/core/operations/management/search_get_stats.hxx +1 -0
  223. data/ext/couchbase/core/operations/management/search_index_analyze_document.cxx +1 -1
  224. data/ext/couchbase/core/operations/management/search_index_analyze_document.hxx +1 -0
  225. data/ext/couchbase/core/operations/management/search_index_control_ingest.cxx +1 -1
  226. data/ext/couchbase/core/operations/management/search_index_control_ingest.hxx +1 -0
  227. data/ext/couchbase/core/operations/management/search_index_control_plan_freeze.cxx +1 -1
  228. data/ext/couchbase/core/operations/management/search_index_control_plan_freeze.hxx +1 -0
  229. data/ext/couchbase/core/operations/management/search_index_control_query.cxx +1 -1
  230. data/ext/couchbase/core/operations/management/search_index_control_query.hxx +1 -0
  231. data/ext/couchbase/core/operations/management/search_index_drop.cxx +1 -1
  232. data/ext/couchbase/core/operations/management/search_index_drop.hxx +1 -0
  233. data/ext/couchbase/core/operations/management/search_index_get.cxx +1 -1
  234. data/ext/couchbase/core/operations/management/search_index_get.hxx +1 -0
  235. data/ext/couchbase/core/operations/management/search_index_get_all.cxx +1 -1
  236. data/ext/couchbase/core/operations/management/search_index_get_all.hxx +1 -0
  237. data/ext/couchbase/core/operations/management/search_index_get_documents_count.cxx +1 -1
  238. data/ext/couchbase/core/operations/management/search_index_get_documents_count.hxx +2 -0
  239. data/ext/couchbase/core/operations/management/search_index_get_stats.cxx +1 -1
  240. data/ext/couchbase/core/operations/management/search_index_get_stats.hxx +1 -0
  241. data/ext/couchbase/core/operations/management/search_index_upsert.cxx +1 -1
  242. data/ext/couchbase/core/operations/management/search_index_upsert.hxx +1 -0
  243. data/ext/couchbase/core/operations/management/user_drop.hxx +1 -0
  244. data/ext/couchbase/core/operations/management/user_get.hxx +1 -0
  245. data/ext/couchbase/core/operations/management/user_get_all.hxx +1 -0
  246. data/ext/couchbase/core/operations/management/user_upsert.cxx +3 -3
  247. data/ext/couchbase/core/operations/management/user_upsert.hxx +1 -0
  248. data/ext/couchbase/core/operations/management/view_index_drop.cxx +1 -1
  249. data/ext/couchbase/core/operations/management/view_index_drop.hxx +1 -0
  250. data/ext/couchbase/core/operations/management/view_index_get.cxx +1 -1
  251. data/ext/couchbase/core/operations/management/view_index_get.hxx +1 -0
  252. data/ext/couchbase/core/operations/management/view_index_get_all.cxx +1 -1
  253. data/ext/couchbase/core/operations/management/view_index_get_all.hxx +2 -0
  254. data/ext/couchbase/core/operations/management/view_index_upsert.cxx +1 -1
  255. data/ext/couchbase/core/operations/management/view_index_upsert.hxx +1 -0
  256. data/ext/couchbase/core/origin.cxx +3 -2
  257. data/ext/couchbase/core/platform/base64.h +8 -8
  258. data/ext/couchbase/core/protocol/client_opcode_fmt.hxx +1 -1
  259. data/ext/couchbase/core/protocol/client_response.hxx +1 -1
  260. data/ext/couchbase/core/protocol/frame_info_id_fmt.hxx +1 -1
  261. data/ext/couchbase/core/protocol/hello_feature_fmt.hxx +1 -1
  262. data/ext/couchbase/core/protocol/magic_fmt.hxx +1 -1
  263. data/ext/couchbase/core/protocol/server_opcode_fmt.hxx +1 -1
  264. data/ext/couchbase/core/query_context.hxx +7 -6
  265. data/ext/couchbase/core/retry_orchestrator.cxx +1 -1
  266. data/ext/couchbase/core/sasl/CMakeLists.txt +0 -1
  267. data/ext/couchbase/core/sasl/error_fmt.h +1 -1
  268. data/ext/couchbase/core/seed_config.cxx +2 -2
  269. data/ext/couchbase/core/service_type_fmt.hxx +1 -1
  270. data/ext/couchbase/core/topology/capabilities_fmt.hxx +1 -1
  271. data/ext/couchbase/core/topology/collections_manifest_fmt.hxx +2 -1
  272. data/ext/couchbase/core/topology/configuration_fmt.hxx +1 -1
  273. data/ext/couchbase/core/transactions/async_attempt_context.cxx +1 -1
  274. data/ext/couchbase/core/transactions/async_attempt_context.hxx +9 -22
  275. data/ext/couchbase/core/transactions/attempt_context.cxx +1 -1
  276. data/ext/couchbase/core/transactions/attempt_context.hxx +6 -33
  277. data/ext/couchbase/core/transactions/attempt_context_impl.cxx +41 -41
  278. data/ext/couchbase/core/transactions/attempt_context_impl.hxx +15 -16
  279. data/ext/couchbase/core/transactions/exceptions_fmt.hxx +1 -1
  280. data/ext/couchbase/core/transactions/internal/atr_cleanup_entry.hxx +1 -1
  281. data/ext/couchbase/core/transactions/internal/client_record.hxx +4 -3
  282. data/ext/couchbase/core/transactions/internal/doc_record_fmt.hxx +1 -1
  283. data/ext/couchbase/core/transactions/internal/exceptions_internal.hxx +0 -2
  284. data/ext/couchbase/core/transactions/internal/exceptions_internal_fmt.hxx +1 -1
  285. data/ext/couchbase/core/transactions/internal/logging.hxx +2 -0
  286. data/ext/couchbase/core/transactions/internal/transaction_context.hxx +3 -0
  287. data/ext/couchbase/core/transactions/result_fmt.hxx +1 -1
  288. data/ext/couchbase/core/transactions/transaction_context.cxx +12 -2
  289. data/ext/couchbase/core/transactions/transaction_get_result.hxx +0 -20
  290. data/ext/couchbase/core/transactions/transaction_links.hxx +1 -1
  291. data/ext/couchbase/core/utils/join_strings.hxx +2 -2
  292. data/ext/couchbase/core/utils/keyspace.hxx +2 -1
  293. data/ext/couchbase/core/utils/url_codec.cxx +1 -1
  294. data/ext/couchbase/couchbase/common_options.hxx +16 -1
  295. data/ext/couchbase/couchbase/fmt/analytics_scan_consistency.hxx +0 -2
  296. data/ext/couchbase/couchbase/fmt/analytics_status.hxx +0 -2
  297. data/ext/couchbase/couchbase/fmt/cas.hxx +0 -2
  298. data/ext/couchbase/couchbase/fmt/durability_level.hxx +0 -2
  299. data/ext/couchbase/couchbase/fmt/error.hxx +0 -2
  300. data/ext/couchbase/couchbase/fmt/error_context.hxx +0 -2
  301. data/ext/couchbase/couchbase/fmt/mutation_token.hxx +0 -2
  302. data/ext/couchbase/couchbase/fmt/query_profile.hxx +0 -2
  303. data/ext/couchbase/couchbase/fmt/query_scan_consistency.hxx +0 -2
  304. data/ext/couchbase/couchbase/fmt/query_status.hxx +0 -2
  305. data/ext/couchbase/couchbase/fmt/retry_reason.hxx +5 -1
  306. data/ext/couchbase/couchbase/fmt/search_scan_consistency.hxx +0 -2
  307. data/ext/couchbase/couchbase/fmt/tls_verify_mode.hxx +0 -2
  308. data/ext/couchbase/couchbase/fmt/transaction_keyspace.hxx +0 -2
  309. data/ext/couchbase/couchbase/metrics/otel_meter.hxx +16 -20
  310. data/ext/couchbase.cxx +1 -0
  311. data/ext/extconf.rb +11 -0
  312. data/ext/rcb_analytics.cxx +7 -7
  313. data/ext/rcb_backend.cxx +83 -2
  314. data/ext/rcb_buckets.cxx +1 -1
  315. data/ext/rcb_collections.cxx +1 -1
  316. data/ext/rcb_crud.cxx +51 -30
  317. data/ext/rcb_diagnostics.cxx +1 -1
  318. data/ext/rcb_exceptions.cxx +3 -2
  319. data/ext/rcb_extras.cxx +1 -1
  320. data/ext/rcb_logger.cxx +6 -1
  321. data/ext/rcb_logger.hxx +3 -0
  322. data/ext/rcb_range_scan.cxx +3 -5
  323. data/ext/rcb_search.cxx +1 -1
  324. data/ext/rcb_users.cxx +2 -2
  325. data/ext/rcb_utils.hxx +32 -0
  326. data/lib/couchbase/bucket.rb +0 -8
  327. data/lib/couchbase/cluster.rb +2 -13
  328. data/lib/couchbase/collection.rb +0 -43
  329. data/lib/couchbase/collection_options.rb +3 -3
  330. data/lib/couchbase/datastructures/couchbase_queue.rb +1 -1
  331. data/lib/couchbase/datastructures/couchbase_set.rb +1 -1
  332. data/lib/couchbase/deprecations.rb +61 -0
  333. data/lib/couchbase/fork_hooks.rb +32 -0
  334. data/lib/couchbase/logger.rb +3 -3
  335. data/lib/couchbase/management/analytics_index_manager.rb +1 -1
  336. data/lib/couchbase/management/bucket_manager.rb +1 -1
  337. data/lib/couchbase/management/collection_manager.rb +1 -1
  338. data/lib/couchbase/management/query_index_manager.rb +1 -1
  339. data/lib/couchbase/options.rb +50 -2
  340. data/lib/couchbase/protostellar/request_generator/query.rb +1 -1
  341. data/lib/couchbase/utils/time.rb +1 -1
  342. data/lib/couchbase/version.rb +1 -1
  343. data/lib/couchbase.rb +2 -0
  344. metadata +133 -153
  345. data/ext/cache/fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/CMakeLists.txt +0 -520
  346. data/ext/cache/fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/ChangeLog.md +0 -2598
  347. data/ext/cache/fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/LICENSE +0 -27
  348. data/ext/cache/fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/README.md +0 -484
  349. data/ext/cache/fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/src/fmt.cc +0 -135
  350. data/ext/cache/fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/src/os.cc +0 -403
  351. data/ext/cache/fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/support/cmake/FindSetEnv.cmake +0 -7
  352. data/ext/cache/fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/support/cmake/JoinPaths.cmake +0 -26
  353. data/ext/cache/fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/support/cmake/fmt-config.cmake.in +0 -7
  354. data/ext/cache/fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/support/cmake/fmt.pc.in +0 -11
  355. data/ext/cache/spdlog/19df5d3d8e5526c255d27414e09568671ef87483/spdlog/include/spdlog/fmt/bundled/args.h +0 -235
  356. data/ext/cache/spdlog/19df5d3d8e5526c255d27414e09568671ef87483/spdlog/include/spdlog/fmt/bundled/chrono.h +0 -2240
  357. data/ext/cache/spdlog/19df5d3d8e5526c255d27414e09568671ef87483/spdlog/include/spdlog/fmt/bundled/color.h +0 -643
  358. data/ext/cache/spdlog/19df5d3d8e5526c255d27414e09568671ef87483/spdlog/include/spdlog/fmt/bundled/compile.h +0 -535
  359. data/ext/cache/spdlog/19df5d3d8e5526c255d27414e09568671ef87483/spdlog/include/spdlog/fmt/bundled/core.h +0 -2969
  360. data/ext/cache/spdlog/19df5d3d8e5526c255d27414e09568671ef87483/spdlog/include/spdlog/fmt/bundled/format-inl.h +0 -1678
  361. data/ext/cache/spdlog/19df5d3d8e5526c255d27414e09568671ef87483/spdlog/include/spdlog/fmt/bundled/format.h +0 -4535
  362. data/ext/cache/spdlog/19df5d3d8e5526c255d27414e09568671ef87483/spdlog/include/spdlog/fmt/bundled/os.h +0 -455
  363. data/ext/cache/spdlog/19df5d3d8e5526c255d27414e09568671ef87483/spdlog/include/spdlog/fmt/bundled/ostream.h +0 -245
  364. data/ext/cache/spdlog/19df5d3d8e5526c255d27414e09568671ef87483/spdlog/include/spdlog/fmt/bundled/printf.h +0 -675
  365. data/ext/cache/spdlog/19df5d3d8e5526c255d27414e09568671ef87483/spdlog/include/spdlog/fmt/bundled/ranges.h +0 -738
  366. data/ext/cache/spdlog/19df5d3d8e5526c255d27414e09568671ef87483/spdlog/include/spdlog/fmt/bundled/std.h +0 -537
  367. data/ext/cache/spdlog/19df5d3d8e5526c255d27414e09568671ef87483/spdlog/include/spdlog/fmt/bundled/xchar.h +0 -259
  368. data/ext/cache/spdlog/19df5d3d8e5526c255d27414e09568671ef87483/spdlog/src/bundled_fmtlib_format.cpp +0 -46
  369. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/LICENSE +0 -0
  370. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/cmake/ide.cmake +0 -0
  371. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/cmake/pch.h.in +0 -0
  372. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/cmake/spdlog.pc.in +0 -0
  373. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/cmake/spdlogCPack.cmake +0 -0
  374. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/cmake/spdlogConfig.cmake.in +0 -0
  375. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/cmake/version.rc.in +0 -0
  376. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/async.h +0 -0
  377. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/async_logger.h +0 -0
  378. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/cfg/argv.h +0 -0
  379. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/cfg/env.h +0 -0
  380. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/cfg/helpers-inl.h +0 -0
  381. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/cfg/helpers.h +0 -0
  382. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/common-inl.h +0 -0
  383. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/common.h +0 -0
  384. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/backtracer-inl.h +0 -0
  385. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/backtracer.h +0 -0
  386. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/circular_q.h +0 -0
  387. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/console_globals.h +0 -0
  388. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/file_helper-inl.h +0 -0
  389. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/file_helper.h +0 -0
  390. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/fmt_helper.h +0 -0
  391. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/log_msg-inl.h +0 -0
  392. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/log_msg.h +0 -0
  393. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/log_msg_buffer-inl.h +0 -0
  394. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/log_msg_buffer.h +0 -0
  395. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/null_mutex.h +0 -0
  396. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/os.h +0 -0
  397. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/periodic_worker-inl.h +0 -0
  398. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/periodic_worker.h +0 -0
  399. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/registry-inl.h +0 -0
  400. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/registry.h +0 -0
  401. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/synchronous_factory.h +0 -0
  402. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/tcp_client-windows.h +0 -0
  403. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/tcp_client.h +0 -0
  404. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/udp_client-windows.h +0 -0
  405. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/udp_client.h +0 -0
  406. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/windows_include.h +0 -0
  407. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/fmt/bin_to_hex.h +0 -0
  408. /data/ext/cache/{fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/include/fmt → spdlog/7251ead404dccd824789f8f3a13df2a6fb56440c/spdlog/include/spdlog/fmt/bundled}/args.h +0 -0
  409. /data/ext/cache/{fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/include/fmt → spdlog/7251ead404dccd824789f8f3a13df2a6fb56440c/spdlog/include/spdlog/fmt/bundled}/chrono.h +0 -0
  410. /data/ext/cache/{fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/include/fmt → spdlog/7251ead404dccd824789f8f3a13df2a6fb56440c/spdlog/include/spdlog/fmt/bundled}/color.h +0 -0
  411. /data/ext/cache/{fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/include/fmt → spdlog/7251ead404dccd824789f8f3a13df2a6fb56440c/spdlog/include/spdlog/fmt/bundled}/compile.h +0 -0
  412. /data/ext/cache/{fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/include/fmt → spdlog/7251ead404dccd824789f8f3a13df2a6fb56440c/spdlog/include/spdlog/fmt/bundled}/core.h +0 -0
  413. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/fmt/bundled/fmt.license.rst +0 -0
  414. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/fmt/bundled/locale.h +0 -0
  415. /data/ext/cache/{fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/include/fmt → spdlog/7251ead404dccd824789f8f3a13df2a6fb56440c/spdlog/include/spdlog/fmt/bundled}/os.h +0 -0
  416. /data/ext/cache/{fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/include/fmt → spdlog/7251ead404dccd824789f8f3a13df2a6fb56440c/spdlog/include/spdlog/fmt/bundled}/ostream.h +0 -0
  417. /data/ext/cache/{fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/include/fmt → spdlog/7251ead404dccd824789f8f3a13df2a6fb56440c/spdlog/include/spdlog/fmt/bundled}/printf.h +0 -0
  418. /data/ext/cache/{fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/include/fmt → spdlog/7251ead404dccd824789f8f3a13df2a6fb56440c/spdlog/include/spdlog/fmt/bundled}/std.h +0 -0
  419. /data/ext/cache/{fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/include/fmt → spdlog/7251ead404dccd824789f8f3a13df2a6fb56440c/spdlog/include/spdlog/fmt/bundled}/xchar.h +0 -0
  420. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/fmt/chrono.h +0 -0
  421. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/fmt/compile.h +0 -0
  422. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/fmt/fmt.h +0 -0
  423. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/fmt/ostr.h +0 -0
  424. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/fmt/ranges.h +0 -0
  425. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/fmt/std.h +0 -0
  426. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/fmt/xchar.h +0 -0
  427. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/formatter.h +0 -0
  428. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/fwd.h +0 -0
  429. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/logger-inl.h +0 -0
  430. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/logger.h +0 -0
  431. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/pattern_formatter.h +0 -0
  432. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/android_sink.h +0 -0
  433. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/ansicolor_sink-inl.h +0 -0
  434. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/base_sink-inl.h +0 -0
  435. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/basic_file_sink-inl.h +0 -0
  436. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/basic_file_sink.h +0 -0
  437. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/dist_sink.h +0 -0
  438. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/dup_filter_sink.h +0 -0
  439. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/kafka_sink.h +0 -0
  440. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/mongo_sink.h +0 -0
  441. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/null_sink.h +0 -0
  442. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/ostream_sink.h +0 -0
  443. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/qt_sinks.h +0 -0
  444. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/ringbuffer_sink.h +0 -0
  445. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/rotating_file_sink.h +0 -0
  446. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/sink-inl.h +0 -0
  447. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/sink.h +0 -0
  448. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/stdout_color_sinks-inl.h +0 -0
  449. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/stdout_color_sinks.h +0 -0
  450. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/stdout_sinks-inl.h +0 -0
  451. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/stdout_sinks.h +0 -0
  452. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/systemd_sink.h +0 -0
  453. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/tcp_sink.h +0 -0
  454. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/udp_sink.h +0 -0
  455. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/win_eventlog_sink.h +0 -0
  456. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/wincolor_sink.h +0 -0
  457. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/spdlog-inl.h +0 -0
  458. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/spdlog.h +0 -0
  459. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/stopwatch.h +0 -0
  460. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/tweakme.h +0 -0
  461. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/src/async.cpp +0 -0
  462. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/src/cfg.cpp +0 -0
  463. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/src/color_sinks.cpp +0 -0
  464. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/src/file_sinks.cpp +0 -0
  465. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/src/spdlog.cpp +0 -0
  466. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/src/stdout_sinks.cpp +0 -0
@@ -33,10 +33,6 @@ elseif(NOT CMAKE_CXX_STANDARD)
33
33
  set(CMAKE_CXX_STANDARD_REQUIRED ON)
34
34
  endif()
35
35
 
36
- # make sure __cplusplus is defined when using msvc and enable parallel build
37
- if(MSVC)
38
- string(APPEND CMAKE_CXX_FLAGS " /Zc:__cplusplus /MP")
39
- endif()
40
36
 
41
37
  set(CMAKE_CXX_EXTENSIONS OFF)
42
38
 
@@ -80,6 +76,10 @@ option(SPDLOG_BUILD_BENCH "Build benchmarks (Requires https://github.com/google/
80
76
 
81
77
  # sanitizer options
82
78
  option(SPDLOG_SANITIZE_ADDRESS "Enable address sanitizer in tests" OFF)
79
+ option(SPDLOG_SANITIZE_THREAD "Enable thread sanitizer in tests" OFF)
80
+ if(SPDLOG_SANITIZE_ADDRESS AND SPDLOG_SANITIZE_THREAD)
81
+ message(FATAL_ERROR "SPDLOG_SANITIZE_ADDRESS and SPDLOG_SANITIZE_THREAD are mutually exclusive")
82
+ endif()
83
83
 
84
84
  # warning options
85
85
  option(SPDLOG_BUILD_WARNINGS "Enable compiler warnings" OFF)
@@ -108,9 +108,15 @@ endif()
108
108
  if(WIN32)
109
109
  option(SPDLOG_WCHAR_SUPPORT "Support wchar api" OFF)
110
110
  option(SPDLOG_WCHAR_FILENAMES "Support wchar filenames" OFF)
111
+ option(SPDLOG_WCHAR_CONSOLE "Support wchar output to console" OFF)
111
112
  else()
112
113
  set(SPDLOG_WCHAR_SUPPORT OFF CACHE BOOL "non supported option" FORCE)
113
114
  set(SPDLOG_WCHAR_FILENAMES OFF CACHE BOOL "non supported option" FORCE)
115
+ set(SPDLOG_WCHAR_CONSOLE OFF CACHE BOOL "non supported option" FORCE)
116
+ endif()
117
+
118
+ if(MSVC)
119
+ option(SPDLOG_MSVC_UTF8 "Enable/disable msvc /utf-8 flag required by fmt lib" ON)
114
120
  endif()
115
121
 
116
122
  if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
@@ -159,7 +165,7 @@ if(SPDLOG_BUILD_SHARED OR BUILD_SHARED_LIBS)
159
165
  endif()
160
166
  add_library(spdlog SHARED ${SPDLOG_SRCS} ${SPDLOG_ALL_HEADERS})
161
167
  target_compile_definitions(spdlog PUBLIC SPDLOG_SHARED_LIB)
162
- if(MSVC)
168
+ if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
163
169
  target_compile_options(spdlog PUBLIC $<$<AND:$<CXX_COMPILER_ID:MSVC>,$<NOT:$<COMPILE_LANGUAGE:CUDA>>>:/wd4251
164
170
  /wd4275>)
165
171
  endif()
@@ -192,6 +198,13 @@ if(COMMAND target_precompile_headers AND SPDLOG_ENABLE_PCH)
192
198
  target_precompile_headers(spdlog PRIVATE ${PROJECT_BINARY_DIR}/spdlog_pch.h)
193
199
  endif()
194
200
 
201
+ # sanitizer support
202
+ if(SPDLOG_SANITIZE_ADDRESS)
203
+ spdlog_enable_addr_sanitizer(spdlog)
204
+ elseif (SPDLOG_SANITIZE_THREAD)
205
+ spdlog_enable_thread_sanitizer(spdlog)
206
+ endif ()
207
+
195
208
  # ---------------------------------------------------------------------------------------
196
209
  # Header only version
197
210
  # ---------------------------------------------------------------------------------------
@@ -213,7 +226,7 @@ if(SPDLOG_FMT_EXTERNAL OR SPDLOG_FMT_EXTERNAL_HO)
213
226
  target_compile_definitions(spdlog PUBLIC SPDLOG_FMT_EXTERNAL)
214
227
  target_compile_definitions(spdlog_header_only INTERFACE SPDLOG_FMT_EXTERNAL)
215
228
 
216
- # use external fmt-header-nly
229
+ # use external fmt-header-only
217
230
  if(SPDLOG_FMT_EXTERNAL_HO)
218
231
  target_link_libraries(spdlog PUBLIC fmt::fmt-header-only)
219
232
  target_link_libraries(spdlog_header_only INTERFACE fmt::fmt-header-only)
@@ -237,9 +250,11 @@ endif()
237
250
  # Misc definitions according to tweak options
238
251
  # ---------------------------------------------------------------------------------------
239
252
  set(SPDLOG_WCHAR_TO_UTF8_SUPPORT ${SPDLOG_WCHAR_SUPPORT})
253
+ set(SPDLOG_UTF8_TO_WCHAR_CONSOLE ${SPDLOG_WCHAR_CONSOLE})
240
254
  foreach(
241
255
  SPDLOG_OPTION
242
256
  SPDLOG_WCHAR_TO_UTF8_SUPPORT
257
+ SPDLOG_UTF8_TO_WCHAR_CONSOLE
243
258
  SPDLOG_WCHAR_FILENAMES
244
259
  SPDLOG_NO_EXCEPTIONS
245
260
  SPDLOG_CLOCK_COARSE
@@ -255,6 +270,15 @@ foreach(
255
270
  endif()
256
271
  endforeach()
257
272
 
273
+ if(MSVC)
274
+ target_compile_options(spdlog PRIVATE "/Zc:__cplusplus")
275
+ target_compile_options(spdlog_header_only INTERFACE "/Zc:__cplusplus")
276
+ if(SPDLOG_MSVC_UTF8)
277
+ target_compile_options(spdlog PUBLIC "/utf-8")
278
+ target_compile_options(spdlog_header_only INTERFACE "/utf-8")
279
+ endif()
280
+ endif()
281
+
258
282
  # ---------------------------------------------------------------------------------------
259
283
  # If exceptions are disabled, disable them in the bundled fmt as well
260
284
  # ---------------------------------------------------------------------------------------
@@ -49,7 +49,7 @@ function(spdlog_enable_warnings target_name)
49
49
  endfunction()
50
50
 
51
51
  # Enable address sanitizer (gcc/clang only)
52
- function(spdlog_enable_sanitizer target_name)
52
+ function(spdlog_enable_addr_sanitizer target_name)
53
53
  if(NOT CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
54
54
  message(FATAL_ERROR "Sanitizer supported only for gcc/clang")
55
55
  endif()
@@ -58,5 +58,16 @@ function(spdlog_enable_sanitizer target_name)
58
58
  target_compile_options(${target_name} PRIVATE -fno-sanitize=signed-integer-overflow)
59
59
  target_compile_options(${target_name} PRIVATE -fno-sanitize-recover=all)
60
60
  target_compile_options(${target_name} PRIVATE -fno-omit-frame-pointer)
61
- target_link_libraries(${target_name} PRIVATE -fsanitize=address,undefined -fuse-ld=gold)
61
+ target_link_libraries(${target_name} PRIVATE -fsanitize=address,undefined)
62
+ endfunction()
63
+
64
+ # Enable thread sanitizer (gcc/clang only)
65
+ function(spdlog_enable_thread_sanitizer target_name)
66
+ if(NOT CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
67
+ message(FATAL_ERROR "Sanitizer supported only for gcc/clang")
68
+ endif()
69
+ message(STATUS "Thread sanitizer enabled")
70
+ target_compile_options(${target_name} PRIVATE -fsanitize=thread)
71
+ target_compile_options(${target_name} PRIVATE -fno-omit-frame-pointer)
72
+ target_link_libraries(${target_name} PRIVATE -fsanitize=thread)
62
73
  endfunction()
@@ -43,15 +43,13 @@ SPDLOG_LOGGER_CATCH(msg.source)
43
43
  }
44
44
 
45
45
  // send flush request to the thread pool
46
- SPDLOG_INLINE void spdlog::async_logger::flush_(){SPDLOG_TRY{auto pool_ptr = thread_pool_.lock();
47
- if (!pool_ptr) {
46
+ SPDLOG_INLINE void spdlog::async_logger::flush_(){
47
+ SPDLOG_TRY{if (auto pool_ptr = thread_pool_.lock()){
48
+ pool_ptr->post_flush(shared_from_this(), overflow_policy_);
49
+ }
50
+ else {
48
51
  throw_spdlog_ex("async flush: thread pool doesn't exist anymore");
49
52
  }
50
-
51
- std::future<void> future = pool_ptr->post_flush(shared_from_this(), overflow_policy_);
52
- // Wait for the flush operation to complete.
53
- // This might throw exception if the flush message get dropped because of overflow.
54
- future.get();
55
53
  }
56
54
  SPDLOG_LOGGER_CATCH(source_loc())
57
55
  }
@@ -148,19 +148,19 @@ public:
148
148
  #endif
149
149
 
150
150
  size_t overrun_counter() {
151
- std::unique_lock<std::mutex> lock(queue_mutex_);
151
+ std::lock_guard<std::mutex> lock(queue_mutex_);
152
152
  return q_.overrun_counter();
153
153
  }
154
154
 
155
155
  size_t discard_counter() { return discard_counter_.load(std::memory_order_relaxed); }
156
156
 
157
157
  size_t size() {
158
- std::unique_lock<std::mutex> lock(queue_mutex_);
158
+ std::lock_guard<std::mutex> lock(queue_mutex_);
159
159
  return q_.size();
160
160
  }
161
161
 
162
162
  void reset_overrun_counter() {
163
- std::unique_lock<std::mutex> lock(queue_mutex_);
163
+ std::lock_guard<std::mutex> lock(queue_mutex_);
164
164
  q_.reset_overrun_counter();
165
165
  }
166
166
 
@@ -483,12 +483,12 @@ SPDLOG_INLINE void utf8_to_wstrbuf(string_view_t str, wmemory_buf_t &target) {
483
483
 
484
484
  // find the size to allocate for the result buffer
485
485
  int result_size =
486
- ::MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, str.data(), str_size, NULL, 0);
486
+ ::MultiByteToWideChar(CP_UTF8, 0, str.data(), str_size, NULL, 0);
487
487
 
488
488
  if (result_size > 0) {
489
489
  target.resize(result_size);
490
- result_size = ::MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, str.data(), str_size,
491
- target.data(), result_size);
490
+ result_size = ::MultiByteToWideChar(CP_UTF8, 0, str.data(), str_size, target.data(),
491
+ result_size);
492
492
  if (result_size > 0) {
493
493
  assert(result_size == target.size());
494
494
  return;
@@ -62,13 +62,9 @@ void SPDLOG_INLINE thread_pool::post_log(async_logger_ptr &&worker_ptr,
62
62
  post_async_msg_(std::move(async_m), overflow_policy);
63
63
  }
64
64
 
65
- std::future<void> SPDLOG_INLINE thread_pool::post_flush(async_logger_ptr &&worker_ptr,
66
- async_overflow_policy overflow_policy) {
67
- std::promise<void> promise;
68
- std::future<void> future = promise.get_future();
69
- post_async_msg_(async_msg(std::move(worker_ptr), async_msg_type::flush, std::move(promise)),
70
- overflow_policy);
71
- return future;
65
+ void SPDLOG_INLINE thread_pool::post_flush(async_logger_ptr &&worker_ptr,
66
+ async_overflow_policy overflow_policy) {
67
+ post_async_msg_(async_msg(std::move(worker_ptr), async_msg_type::flush), overflow_policy);
72
68
  }
73
69
 
74
70
  size_t SPDLOG_INLINE thread_pool::overrun_counter() { return q_.overrun_counter(); }
@@ -112,7 +108,6 @@ bool SPDLOG_INLINE thread_pool::process_next_msg_() {
112
108
  }
113
109
  case async_msg_type::flush: {
114
110
  incoming_async_msg.worker_ptr->backend_flush_();
115
- incoming_async_msg.flush_promise.set_value();
116
111
  return true;
117
112
  }
118
113
 
@@ -9,7 +9,6 @@
9
9
 
10
10
  #include <chrono>
11
11
  #include <functional>
12
- #include <future>
13
12
  #include <memory>
14
13
  #include <thread>
15
14
  #include <vector>
@@ -28,7 +27,6 @@ enum class async_msg_type { log, flush, terminate };
28
27
  struct async_msg : log_msg_buffer {
29
28
  async_msg_type msg_type{async_msg_type::log};
30
29
  async_logger_ptr worker_ptr;
31
- std::promise<void> flush_promise;
32
30
 
33
31
  async_msg() = default;
34
32
  ~async_msg() = default;
@@ -58,20 +56,12 @@ struct async_msg : log_msg_buffer {
58
56
  async_msg(async_logger_ptr &&worker, async_msg_type the_type, const details::log_msg &m)
59
57
  : log_msg_buffer{m},
60
58
  msg_type{the_type},
61
- worker_ptr{std::move(worker)},
62
- flush_promise{} {}
59
+ worker_ptr{std::move(worker)} {}
63
60
 
64
61
  async_msg(async_logger_ptr &&worker, async_msg_type the_type)
65
62
  : log_msg_buffer{},
66
63
  msg_type{the_type},
67
- worker_ptr{std::move(worker)},
68
- flush_promise{} {}
69
-
70
- async_msg(async_logger_ptr &&worker, async_msg_type the_type, std::promise<void> &&promise)
71
- : log_msg_buffer{},
72
- msg_type{the_type},
73
- worker_ptr{std::move(worker)},
74
- flush_promise{std::move(promise)} {}
64
+ worker_ptr{std::move(worker)} {}
75
65
 
76
66
  explicit async_msg(async_msg_type the_type)
77
67
  : async_msg{nullptr, the_type} {}
@@ -98,8 +88,7 @@ public:
98
88
  void post_log(async_logger_ptr &&worker_ptr,
99
89
  const details::log_msg &msg,
100
90
  async_overflow_policy overflow_policy);
101
- std::future<void> post_flush(async_logger_ptr &&worker_ptr,
102
- async_overflow_policy overflow_policy);
91
+ void post_flush(async_logger_ptr &&worker_ptr, async_overflow_policy overflow_policy);
103
92
  size_t overrun_counter();
104
93
  void reset_overrun_counter();
105
94
  size_t discard_counter();
@@ -23,7 +23,7 @@
23
23
  #endif
24
24
 
25
25
  // The fmt library version in the form major * 10000 + minor * 100 + patch.
26
- #define FMT_VERSION 110001
26
+ #define FMT_VERSION 110002
27
27
 
28
28
  // Detect compiler versions.
29
29
  #if defined(__clang__) && !defined(__ibmxl__)
@@ -441,7 +441,8 @@ struct is_std_string_like : std::false_type {};
441
441
  template <typename T>
442
442
  struct is_std_string_like<T, void_t<decltype(std::declval<T>().find_first_of(
443
443
  typename T::value_type(), 0))>>
444
- : std::true_type {};
444
+ : std::is_convertible<decltype(std::declval<T>().data()),
445
+ const typename T::value_type*> {};
445
446
 
446
447
  // Returns true iff the literal encoding is UTF-8.
447
448
  constexpr auto is_utf8_enabled() -> bool {
@@ -466,6 +467,7 @@ template <typename Char> FMT_CONSTEXPR auto length(const Char* s) -> size_t {
466
467
  template <typename Char>
467
468
  FMT_CONSTEXPR auto compare(const Char* s1, const Char* s2, std::size_t n)
468
469
  -> int {
470
+ if (!is_constant_evaluated() && sizeof(Char) == 1) return memcmp(s1, s2, n);
469
471
  for (; n != 0; ++s1, ++s2, --n) {
470
472
  if (*s1 < *s2) return -1;
471
473
  if (*s1 > *s2) return 1;
@@ -473,14 +475,22 @@ FMT_CONSTEXPR auto compare(const Char* s1, const Char* s2, std::size_t n)
473
475
  return 0;
474
476
  }
475
477
 
478
+ namespace adl {
479
+ using namespace std;
480
+
481
+ template <typename Container>
482
+ auto invoke_back_inserter()
483
+ -> decltype(back_inserter(std::declval<Container&>()));
484
+ } // namespace adl
485
+
476
486
  template <typename It, typename Enable = std::true_type>
477
487
  struct is_back_insert_iterator : std::false_type {};
488
+
478
489
  template <typename It>
479
490
  struct is_back_insert_iterator<
480
- It,
481
- bool_constant<std::is_same<
482
- decltype(back_inserter(std::declval<typename It::container_type&>())),
483
- It>::value>> : std::true_type {};
491
+ It, bool_constant<std::is_same<
492
+ decltype(adl::invoke_back_inserter<typename It::container_type>()),
493
+ It>::value>> : std::true_type {};
484
494
 
485
495
  // Extracts a reference to the container from *insert_iterator.
486
496
  template <typename OutputIt>
@@ -611,11 +621,12 @@ namespace detail {
611
621
  // to it, deducing Char. Explicitly convertible types such as the ones returned
612
622
  // from FMT_STRING are intentionally excluded.
613
623
  template <typename Char, FMT_ENABLE_IF(is_char<Char>::value)>
614
- auto to_string_view(const Char* s) -> basic_string_view<Char> {
624
+ constexpr auto to_string_view(const Char* s) -> basic_string_view<Char> {
615
625
  return s;
616
626
  }
617
627
  template <typename T, FMT_ENABLE_IF(is_std_string_like<T>::value)>
618
- auto to_string_view(const T& s) -> basic_string_view<typename T::value_type> {
628
+ constexpr auto to_string_view(const T& s)
629
+ -> basic_string_view<typename T::value_type> {
619
630
  return s;
620
631
  }
621
632
  template <typename Char>
@@ -919,12 +930,9 @@ template <typename T> class buffer {
919
930
  try_reserve(size_ + count);
920
931
  auto free_cap = capacity_ - size_;
921
932
  if (free_cap < count) count = free_cap;
922
- if (std::is_same<T, U>::value) {
923
- memcpy(ptr_ + size_, begin, count * sizeof(T));
924
- } else {
925
- T* out = ptr_ + size_;
926
- for (size_t i = 0; i < count; ++i) out[i] = begin[i];
927
- }
933
+ // A loop is faster than memcpy on small sizes.
934
+ T* out = ptr_ + size_;
935
+ for (size_t i = 0; i < count; ++i) out[i] = begin[i];
928
936
  size_ += count;
929
937
  begin += count;
930
938
  }
@@ -1157,6 +1165,7 @@ template <typename T> class basic_appender {
1157
1165
  using difference_type = ptrdiff_t;
1158
1166
  using pointer = T*;
1159
1167
  using reference = T&;
1168
+ using container_type = detail::buffer<T>;
1160
1169
  FMT_UNCHECKED_ITERATOR(basic_appender);
1161
1170
 
1162
1171
  FMT_CONSTEXPR basic_appender(detail::buffer<T>& buf) : buffer_(&buf) {}
@@ -1173,6 +1182,8 @@ template <typename T> class basic_appender {
1173
1182
  using appender = basic_appender<char>;
1174
1183
 
1175
1184
  namespace detail {
1185
+ template <typename T>
1186
+ struct is_back_insert_iterator<basic_appender<T>> : std::true_type {};
1176
1187
 
1177
1188
  template <typename T, typename Enable = void>
1178
1189
  struct locking : std::true_type {};
@@ -1189,12 +1200,6 @@ FMT_CONSTEXPR inline auto is_locking() -> bool {
1189
1200
  }
1190
1201
 
1191
1202
  // An optimized version of std::copy with the output value type (T).
1192
- template <typename T, typename InputIt>
1193
- auto copy(InputIt begin, InputIt end, appender out) -> appender {
1194
- get_container(out).append(begin, end);
1195
- return out;
1196
- }
1197
-
1198
1203
  template <typename T, typename InputIt, typename OutputIt,
1199
1204
  FMT_ENABLE_IF(is_back_insert_iterator<OutputIt>::value)>
1200
1205
  auto copy(InputIt begin, InputIt end, OutputIt out) -> OutputIt {
@@ -1209,14 +1214,6 @@ FMT_CONSTEXPR auto copy(InputIt begin, InputIt end, OutputIt out) -> OutputIt {
1209
1214
  return out;
1210
1215
  }
1211
1216
 
1212
- template <typename T>
1213
- FMT_CONSTEXPR auto copy(const T* begin, const T* end, T* out) -> T* {
1214
- if (is_constant_evaluated()) return copy<T, const T*, T*>(begin, end, out);
1215
- auto size = to_unsigned(end - begin);
1216
- if (size > 0) memcpy(out, begin, size * sizeof(T));
1217
- return out + size;
1218
- }
1219
-
1220
1217
  template <typename T, typename V, typename OutputIt>
1221
1218
  FMT_CONSTEXPR auto copy(basic_string_view<V> s, OutputIt out) -> OutputIt {
1222
1219
  return copy<T>(s.begin(), s.end(), out);
@@ -1238,12 +1235,25 @@ constexpr auto has_const_formatter() -> bool {
1238
1235
  return has_const_formatter_impl<Context>(static_cast<T*>(nullptr));
1239
1236
  }
1240
1237
 
1238
+ template <typename It, typename Enable = std::true_type>
1239
+ struct is_buffer_appender : std::false_type {};
1240
+ template <typename It>
1241
+ struct is_buffer_appender<
1242
+ It, bool_constant<
1243
+ is_back_insert_iterator<It>::value &&
1244
+ std::is_base_of<buffer<typename It::container_type::value_type>,
1245
+ typename It::container_type>::value>>
1246
+ : std::true_type {};
1247
+
1241
1248
  // Maps an output iterator to a buffer.
1242
- template <typename T, typename OutputIt>
1249
+ template <typename T, typename OutputIt,
1250
+ FMT_ENABLE_IF(!is_buffer_appender<OutputIt>::value)>
1243
1251
  auto get_buffer(OutputIt out) -> iterator_buffer<OutputIt, T> {
1244
1252
  return iterator_buffer<OutputIt, T>(out);
1245
1253
  }
1246
- template <typename T> auto get_buffer(basic_appender<T> out) -> buffer<T>& {
1254
+ template <typename T, typename OutputIt,
1255
+ FMT_ENABLE_IF(is_buffer_appender<OutputIt>::value)>
1256
+ auto get_buffer(OutputIt out) -> buffer<T>& {
1247
1257
  return get_container(out);
1248
1258
  }
1249
1259
 
@@ -1475,6 +1485,12 @@ template <typename Context> struct arg_mapper {
1475
1485
 
1476
1486
  FMT_MAP_API auto map(void* val) -> const void* { return val; }
1477
1487
  FMT_MAP_API auto map(const void* val) -> const void* { return val; }
1488
+ FMT_MAP_API auto map(volatile void* val) -> const void* {
1489
+ return const_cast<const void*>(val);
1490
+ }
1491
+ FMT_MAP_API auto map(const volatile void* val) -> const void* {
1492
+ return const_cast<const void*>(val);
1493
+ }
1478
1494
  FMT_MAP_API auto map(std::nullptr_t val) -> const void* { return val; }
1479
1495
 
1480
1496
  // Use SFINAE instead of a const T* parameter to avoid a conflict with the
@@ -1760,7 +1776,7 @@ template <typename Context> class basic_format_arg {
1760
1776
  * `vis(value)` will be called with the value of type `double`.
1761
1777
  */
1762
1778
  template <typename Visitor>
1763
- FMT_CONSTEXPR auto visit(Visitor&& vis) const -> decltype(vis(0)) {
1779
+ FMT_CONSTEXPR FMT_INLINE auto visit(Visitor&& vis) const -> decltype(vis(0)) {
1764
1780
  switch (type_) {
1765
1781
  case detail::type::none_type:
1766
1782
  break;
@@ -1443,12 +1443,26 @@ template <typename T> struct span {
1443
1443
  size_t size;
1444
1444
  };
1445
1445
 
1446
- #ifdef _WIN32
1447
- inline void flockfile(FILE* f) { _lock_file(f); }
1448
- inline void funlockfile(FILE* f) { _unlock_file(f); }
1449
- inline int getc_unlocked(FILE* f) { return _fgetc_nolock(f); }
1446
+ template <typename F> auto flockfile(F* f) -> decltype(_lock_file(f)) {
1447
+ _lock_file(f);
1448
+ }
1449
+ template <typename F> auto funlockfile(F* f) -> decltype(_unlock_file(f)) {
1450
+ _unlock_file(f);
1451
+ }
1452
+
1453
+ #ifndef getc_unlocked
1454
+ template <typename F> auto getc_unlocked(F* f) -> decltype(_fgetc_nolock(f)) {
1455
+ return _fgetc_nolock(f);
1456
+ }
1450
1457
  #endif
1451
1458
 
1459
+ template <typename F = FILE, typename Enable = void>
1460
+ struct has_flockfile : std::false_type {};
1461
+
1462
+ template <typename F>
1463
+ struct has_flockfile<F, void_t<decltype(flockfile(&std::declval<F&>()))>>
1464
+ : std::true_type {};
1465
+
1452
1466
  // A FILE wrapper. F is FILE defined as a template parameter to make system API
1453
1467
  // detection work.
1454
1468
  template <typename F> class file_base {
@@ -1619,7 +1633,15 @@ inline auto get_file(FILE* f, ...) -> fallback_file<FILE> { return f; }
1619
1633
 
1620
1634
  using file_ref = decltype(get_file(static_cast<FILE*>(nullptr), 0));
1621
1635
 
1636
+ template <typename F = FILE, typename Enable = void>
1622
1637
  class file_print_buffer : public buffer<char> {
1638
+ public:
1639
+ explicit file_print_buffer(F*) : buffer(nullptr, size_t()) {}
1640
+ };
1641
+
1642
+ template <typename F>
1643
+ class file_print_buffer<F, enable_if_t<has_flockfile<F>::value>>
1644
+ : public buffer<char> {
1623
1645
  private:
1624
1646
  file_ref file_;
1625
1647
 
@@ -1634,7 +1656,7 @@ class file_print_buffer : public buffer<char> {
1634
1656
  }
1635
1657
 
1636
1658
  public:
1637
- explicit file_print_buffer(FILE* f) : buffer(grow, size_t()), file_(f) {
1659
+ explicit file_print_buffer(F* f) : buffer(grow, size_t()), file_(f) {
1638
1660
  flockfile(f);
1639
1661
  file_.init_buffer();
1640
1662
  auto buf = file_.get_write_buffer();
@@ -1643,7 +1665,8 @@ class file_print_buffer : public buffer<char> {
1643
1665
  ~file_print_buffer() {
1644
1666
  file_.advance_write_buffer(size());
1645
1667
  bool flush = file_.needs_flush();
1646
- funlockfile(file_);
1668
+ F* f = file_; // Make funlockfile depend on the template parameter F
1669
+ funlockfile(f); // for the system API detection to work.
1647
1670
  if (flush) fflush(file_);
1648
1671
  }
1649
1672
  };
@@ -1692,8 +1715,9 @@ FMT_FUNC void vprint_buffered(std::FILE* f, string_view fmt, format_args args) {
1692
1715
  }
1693
1716
 
1694
1717
  FMT_FUNC void vprint(std::FILE* f, string_view fmt, format_args args) {
1695
- if (!detail::file_ref(f).is_buffered()) return vprint_buffered(f, fmt, args);
1696
- auto&& buffer = detail::file_print_buffer(f);
1718
+ if (!detail::file_ref(f).is_buffered() || !detail::has_flockfile<>())
1719
+ return vprint_buffered(f, fmt, args);
1720
+ auto&& buffer = detail::file_print_buffer<>(f);
1697
1721
  return detail::vformat_to(buffer, fmt, args);
1698
1722
  }
1699
1723
 
@@ -106,6 +106,13 @@
106
106
  # define FMT_NOINLINE
107
107
  #endif
108
108
 
109
+ namespace std {
110
+ template <> struct iterator_traits<fmt::appender> {
111
+ using iterator_category = output_iterator_tag;
112
+ using value_type = char;
113
+ };
114
+ } // namespace std
115
+
109
116
  #ifndef FMT_THROW
110
117
  # if FMT_EXCEPTIONS
111
118
  # if FMT_MSC_VERSION || defined(__NVCC__)
@@ -546,6 +553,7 @@ constexpr auto to_pointer(OutputIt, size_t) -> T* {
546
553
  template <typename T> auto to_pointer(basic_appender<T> it, size_t n) -> T* {
547
554
  buffer<T>& buf = get_container(it);
548
555
  auto size = buf.size();
556
+ buf.try_reserve(size + n);
549
557
  if (buf.capacity() < size + n) return nullptr;
550
558
  buf.try_resize(size + n);
551
559
  return buf.data() + size;
@@ -1119,7 +1127,7 @@ template <typename Char, typename Sign> constexpr auto sign(Sign s) -> Char {
1119
1127
  #if !FMT_GCC_VERSION || FMT_GCC_VERSION >= 604
1120
1128
  static_assert(std::is_same<Sign, sign_t>::value, "");
1121
1129
  #endif
1122
- return static_cast<Char>("\0-+ "[s]);
1130
+ return static_cast<char>(((' ' << 24) | ('+' << 16) | ('-' << 8)) >> (s * 8));
1123
1131
  }
1124
1132
 
1125
1133
  template <typename T> FMT_CONSTEXPR auto count_digits_fallback(T n) -> int {
@@ -2317,15 +2325,13 @@ FMT_CONSTEXPR auto write(OutputIt out, T value) -> OutputIt {
2317
2325
  if (negative) abs_value = ~abs_value + 1;
2318
2326
  int num_digits = count_digits(abs_value);
2319
2327
  auto size = (negative ? 1 : 0) + static_cast<size_t>(num_digits);
2320
- auto it = reserve(out, size);
2321
- if (auto ptr = to_pointer<Char>(it, size)) {
2328
+ if (auto ptr = to_pointer<Char>(out, size)) {
2322
2329
  if (negative) *ptr++ = static_cast<Char>('-');
2323
2330
  format_decimal<Char>(ptr, abs_value, num_digits);
2324
2331
  return out;
2325
2332
  }
2326
- if (negative) *it++ = static_cast<Char>('-');
2327
- it = format_decimal<Char>(it, abs_value, num_digits).end;
2328
- return base_iterator(out, it);
2333
+ if (negative) *out++ = static_cast<Char>('-');
2334
+ return format_decimal<Char>(out, abs_value, num_digits).end;
2329
2335
  }
2330
2336
 
2331
2337
  // DEPRECATED!
@@ -3629,9 +3635,7 @@ auto write(OutputIt out, monostate, format_specs = {}, locale_ref = {})
3629
3635
  template <typename Char, typename OutputIt>
3630
3636
  FMT_CONSTEXPR auto write(OutputIt out, basic_string_view<Char> value)
3631
3637
  -> OutputIt {
3632
- auto it = reserve(out, value.size());
3633
- it = copy_noinline<Char>(value.begin(), value.end(), it);
3634
- return base_iterator(out, it);
3638
+ return copy_noinline<Char>(value.begin(), value.end(), out);
3635
3639
  }
3636
3640
 
3637
3641
  template <typename Char, typename OutputIt, typename T,
@@ -3972,15 +3976,19 @@ struct formatter<T, Char, enable_if_t<detail::has_format_as<T>::value>>
3972
3976
  : formatter<detail::format_as_t<T>, Char> {
3973
3977
  template <typename FormatContext>
3974
3978
  auto format(const T& value, FormatContext& ctx) const -> decltype(ctx.out()) {
3975
- using base = formatter<detail::format_as_t<T>, Char>;
3976
3979
  auto&& val = format_as(value); // Make an lvalue reference for format.
3977
- return base::format(val, ctx);
3980
+ return formatter<detail::format_as_t<T>, Char>::format(val, ctx);
3978
3981
  }
3979
3982
  };
3980
3983
 
3981
- #define FMT_FORMAT_AS(Type, Base) \
3982
- template <typename Char> \
3983
- struct formatter<Type, Char> : formatter<Base, Char> {}
3984
+ #define FMT_FORMAT_AS(Type, Base) \
3985
+ template <typename Char> \
3986
+ struct formatter<Type, Char> : formatter<Base, Char> { \
3987
+ template <typename FormatContext> \
3988
+ auto format(Type value, FormatContext& ctx) const -> decltype(ctx.out()) { \
3989
+ return formatter<Base, Char>::format(value, ctx); \
3990
+ } \
3991
+ }
3984
3992
 
3985
3993
  FMT_FORMAT_AS(signed char, int);
3986
3994
  FMT_FORMAT_AS(unsigned char, unsigned);
@@ -490,7 +490,7 @@ struct range_formatter<
490
490
  auto out = ctx.out();
491
491
  auto it = detail::range_begin(range);
492
492
  auto end = detail::range_end(range);
493
- if (is_debug) return write_debug_string(out, it, end);
493
+ if (is_debug) return write_debug_string(out, std::move(it), end);
494
494
 
495
495
  out = detail::copy<Char>(opening_bracket_, out);
496
496
  int i = 0;
@@ -3,6 +3,10 @@
3
3
 
4
4
  #pragma once
5
5
 
6
+ #if defined(SPDLOG_NO_TLS)
7
+ #error "This header requires thread local storage support, but SPDLOG_NO_TLS is defined."
8
+ #endif
9
+
6
10
  #include <map>
7
11
  #include <string>
8
12