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
@@ -1,2598 +0,0 @@
1
- # 11.0.1 - 2024-07-05
2
-
3
- - Fixed version number in the inline namespace
4
- (https://github.com/fmtlib/fmt/issues/4047).
5
-
6
- - Fixed disabling Unicode support via CMake
7
- (https://github.com/fmtlib/fmt/issues/4051).
8
-
9
- - Fixed deprecated `visit_format_arg` (https://github.com/fmtlib/fmt/pull/4043).
10
- Thanks @nebkat.
11
-
12
- - Fixed handling of a sign and improved the `std::complex` formater
13
- (https://github.com/fmtlib/fmt/pull/4034,
14
- https://github.com/fmtlib/fmt/pull/4050). Thanks @tesch1 and @phprus.
15
-
16
- - Removed a redundant check in the formatter for `std::expected`
17
- (https://github.com/fmtlib/fmt/pull/4040). Thanks @phprus.
18
-
19
- # 11.0.0 - 2024-07-01
20
-
21
- - Added `fmt/base.h` which provides a subset of the API with minimal include
22
- dependencies and enough functionality to replace all uses of the `printf`
23
- family of functions. This brings the compile time of code using {fmt} much
24
- closer to the equivalent `printf` code as shown on the following benchmark
25
- that compiles 100 source files:
26
-
27
- | Method | Compile Time (s) |
28
- |--------------|------------------|
29
- | printf | 1.6 |
30
- | IOStreams | 25.9 |
31
- | fmt 10.x | 19.0 |
32
- | fmt 11.0 | 4.8 |
33
- | tinyformat | 29.1 |
34
- | Boost Format | 55.0 |
35
-
36
- This gives almost 4x improvement in build speed compared to version 10.
37
- Note that the benchmark is purely formatting code and includes. In real
38
- projects the difference from `printf` will be smaller partly because common
39
- standard headers will be included in almost any translation unit (TU) anyway.
40
- In particular, in every case except `printf` above ~1s is spent in total on
41
- including `<type_traits>` in all TUs.
42
-
43
- - Optimized includes in other headers such as `fmt/format.h` which is now
44
- roughly equivalent to the old `fmt/core.h` in terms of build speed.
45
-
46
- - Migrated the documentation at https://fmt.dev/ from Sphinx to MkDocs.
47
-
48
- - Improved C++20 module support
49
- (https://github.com/fmtlib/fmt/issues/3990,
50
- https://github.com/fmtlib/fmt/pull/3991,
51
- https://github.com/fmtlib/fmt/issues/3993,
52
- https://github.com/fmtlib/fmt/pull/3994,
53
- https://github.com/fmtlib/fmt/pull/3997,
54
- https://github.com/fmtlib/fmt/pull/3998,
55
- https://github.com/fmtlib/fmt/pull/4004,
56
- https://github.com/fmtlib/fmt/pull/4005,
57
- https://github.com/fmtlib/fmt/pull/4006,
58
- https://github.com/fmtlib/fmt/pull/4013,
59
- https://github.com/fmtlib/fmt/pull/4027,
60
- https://github.com/fmtlib/fmt/pull/4029). In particular, native CMake support
61
- for modules is now used if available. Thanks @yujincheng08 and @matt77hias.
62
-
63
- - Added an option to replace standard includes with `import std` enabled via
64
- the `FMT_IMPORT_STD` macro (https://github.com/fmtlib/fmt/issues/3921,
65
- https://github.com/fmtlib/fmt/pull/3928). Thanks @matt77hias.
66
-
67
- - Exported `fmt::range_format`, `fmt::range_format_kind` and
68
- `fmt::compiled_string` from the `fmt` module
69
- (https://github.com/fmtlib/fmt/pull/3970,
70
- https://github.com/fmtlib/fmt/pull/3999).
71
- Thanks @matt77hias and @yujincheng08.
72
-
73
- - Improved integration with stdio in `fmt::print`, enabling direct writes
74
- into a C stream buffer in common cases. This may give significant
75
- performance improvements ranging from tens of percent to [2x](
76
- https://stackoverflow.com/a/78457454/471164) and eliminates dynamic memory
77
- allocations on the buffer level. It is currently enabled for built-in and
78
- string types with wider availability coming up in future releases.
79
-
80
- For example, it gives ~24% improvement on a [simple benchmark](
81
- https://isocpp.org/files/papers/P3107R5.html#perf) compiled with Apple clang
82
- version 15.0.0 (clang-1500.1.0.2.5) and run on macOS 14.2.1:
83
-
84
- ```
85
- -------------------------------------------------------
86
- Benchmark Time CPU Iterations
87
- -------------------------------------------------------
88
- printf 81.8 ns 81.5 ns 8496899
89
- fmt::print (10.x) 63.8 ns 61.9 ns 11524151
90
- fmt::print (11.0) 51.3 ns 51.0 ns 13846580
91
- ```
92
-
93
- - Improved safety of `fmt::format_to` when writing to an array
94
- (https://github.com/fmtlib/fmt/pull/3805).
95
- For example ([godbolt](https://www.godbolt.org/z/cYrn8dWY8)):
96
-
97
- ```c++
98
- auto volkswagen = char[4];
99
- auto result = fmt::format_to(volkswagen, "elephant");
100
- ```
101
-
102
- no longer results in a buffer overflow. Instead the output will be truncated
103
- and you can get the end iterator and whether truncation occurred from the
104
- `result` object. Thanks @ThePhD.
105
-
106
- - Enabled Unicode support by default in MSVC, bringing it on par with other
107
- compilers and making it unnecessary for users to enable it explicitly.
108
- Most of {fmt} is encoding-agnostic but this prevents mojibake in places
109
- where encoding matters such as path formatting and terminal output.
110
- You can control the Unicode support via the CMake `FMT_UNICODE` option.
111
- Note that some {fmt} packages such as the one in vcpkg have already been
112
- compiled with Unicode enabled.
113
-
114
- - Added a formatter for `std::expected`
115
- (https://github.com/fmtlib/fmt/pull/3834). Thanks @dominicpoeschko.
116
-
117
- - Added a formatter for `std::complex`
118
- (https://github.com/fmtlib/fmt/issues/1467,
119
- https://github.com/fmtlib/fmt/issues/3886,
120
- https://github.com/fmtlib/fmt/pull/3892,
121
- https://github.com/fmtlib/fmt/pull/3900). Thanks @phprus.
122
-
123
- - Added a formatter for `std::type_info`
124
- (https://github.com/fmtlib/fmt/pull/3978). Thanks @matt77hias.
125
-
126
- - Specialized `formatter` for `std::basic_string` types with custom traits
127
- and allocators (https://github.com/fmtlib/fmt/issues/3938,
128
- https://github.com/fmtlib/fmt/pull/3943). Thanks @dieram3.
129
-
130
- - Added formatters for `std::chrono::day`, `std::chrono::month`,
131
- `std::chrono::year` and `std::chrono::year_month_day`
132
- (https://github.com/fmtlib/fmt/issues/3758,
133
- https://github.com/fmtlib/fmt/issues/3772,
134
- https://github.com/fmtlib/fmt/pull/3906,
135
- https://github.com/fmtlib/fmt/pull/3913). For example:
136
-
137
- ```c++
138
- #include <fmt/chrono.h>
139
- #include <fmt/color.h>
140
-
141
- int main() {
142
- fmt::print(fg(fmt::color::green), "{}\n", std::chrono::day(7));
143
- }
144
- ```
145
-
146
- prints a green day:
147
-
148
- <img width="306" alt="image" src="https://github.com/fmtlib/fmt/assets/576385/6e395f8b-451a-4cf7-bccc-ee92ca0dec65">
149
-
150
- Thanks @zivshek.
151
-
152
- - Fixed handling of precision in `%S` (https://github.com/fmtlib/fmt/issues/3794,
153
- https://github.com/fmtlib/fmt/pull/3814). Thanks @js324.
154
-
155
- - Added support for the `-` specifier (glibc `strftime` extension) to day of
156
- the month (`%d`) and week of the year (`%W`, `%U`, `%V`) specifiers
157
- (https://github.com/fmtlib/fmt/pull/3976). Thanks @ZaheenJ.
158
-
159
- - Fixed the scope of the `-` extension in chrono formatting so that it doesn't
160
- apply to subsequent specifiers (https://github.com/fmtlib/fmt/issues/3811,
161
- https://github.com/fmtlib/fmt/pull/3812). Thanks @phprus.
162
-
163
- - Improved handling of `time_point::min()`
164
- (https://github.com/fmtlib/fmt/issues/3282).
165
-
166
- - Added support for character range formatting
167
- (https://github.com/fmtlib/fmt/issues/3857,
168
- https://github.com/fmtlib/fmt/pull/3863). Thanks @js324.
169
-
170
- - Added `string` and `debug_string` range formatters
171
- (https://github.com/fmtlib/fmt/pull/3973,
172
- https://github.com/fmtlib/fmt/pull/4024). Thanks @matt77hias.
173
-
174
- - Enabled ADL for `begin` and `end` in `fmt::join`
175
- (https://github.com/fmtlib/fmt/issues/3813,
176
- https://github.com/fmtlib/fmt/pull/3824). Thanks @bbolli.
177
-
178
- - Made contiguous iterator optimizations apply to `std::basic_string` iterators
179
- (https://github.com/fmtlib/fmt/pull/3798). Thanks @phprus.
180
-
181
- - Added support for ranges with mutable `begin` and `end`
182
- (https://github.com/fmtlib/fmt/issues/3752,
183
- https://github.com/fmtlib/fmt/pull/3800,
184
- https://github.com/fmtlib/fmt/pull/3955). Thanks @tcbrindle and @Arghnews.
185
-
186
- - Added support for move-only iterators to `fmt::join`
187
- (https://github.com/fmtlib/fmt/issues/3802,
188
- https://github.com/fmtlib/fmt/pull/3946). Thanks @Arghnews.
189
-
190
- - Moved range and iterator overloads of `fmt::join` to `fmt/ranges.h`, next
191
- to other overloads.
192
-
193
- - Fixed handling of types with `begin` returning `void` such as Eigen matrices
194
- (https://github.com/fmtlib/fmt/issues/3839,
195
- https://github.com/fmtlib/fmt/pull/3964). Thanks @Arghnews.
196
-
197
- - Added an `fmt::formattable` concept (https://github.com/fmtlib/fmt/pull/3974).
198
- Thanks @matt77hias.
199
-
200
- - Added support for `__float128` (https://github.com/fmtlib/fmt/issues/3494).
201
-
202
- - Fixed rounding issues when formatting `long double` with fixed precision
203
- (https://github.com/fmtlib/fmt/issues/3539).
204
-
205
- - Made `fmt::isnan` not trigger floating-point exception for NaN values
206
- (https://github.com/fmtlib/fmt/issues/3948,
207
- https://github.com/fmtlib/fmt/pull/3951). Thanks @alexdewar.
208
-
209
- - Removed dependency on `<memory>` for `std::allocator_traits` when possible
210
- (https://github.com/fmtlib/fmt/pull/3804). Thanks @phprus.
211
-
212
- - Enabled compile-time checks in formatting functions that take text colors and
213
- styles.
214
-
215
- - Deprecated wide stream overloads of `fmt::print` that take text styles.
216
-
217
- - Made format string compilation work with clang 12 and later despite
218
- only partial non-type template parameter support
219
- (https://github.com/fmtlib/fmt/issues/4000,
220
- https://github.com/fmtlib/fmt/pull/4001). Thanks @yujincheng08.
221
-
222
- - Made `fmt::iterator_buffer`'s move constructor `noexcept`
223
- (https://github.com/fmtlib/fmt/pull/3808). Thanks @waywardmonkeys.
224
-
225
- - Started enforcing that `formatter::format` is const for compatibility
226
- with `std::format` (https://github.com/fmtlib/fmt/issues/3447).
227
-
228
- - Added `fmt::basic_format_arg::visit` and deprecated `fmt::visit_format_arg`.
229
-
230
- - Made `fmt::basic_string_view` not constructible from `nullptr` for
231
- consistency with `std::string_view` in C++23
232
- (https://github.com/fmtlib/fmt/pull/3846). Thanks @dalle.
233
-
234
- - Fixed `fmt::group_digits` for negative integers
235
- (https://github.com/fmtlib/fmt/issues/3891,
236
- https://github.com/fmtlib/fmt/pull/3901). Thanks @phprus.
237
-
238
- - Fixed handling of negative ids in `fmt::basic_format_args::get`
239
- (https://github.com/fmtlib/fmt/pull/3945). Thanks @marlenecota.
240
-
241
- - Improved named argument validation
242
- (https://github.com/fmtlib/fmt/issues/3817).
243
-
244
- - Disabled copy construction/assignment for `fmt::format_arg_store` and
245
- fixed moved construction (https://github.com/fmtlib/fmt/pull/3833).
246
- Thanks @ivafanas.
247
-
248
- - Worked around a locale issue in RHEL/devtoolset
249
- (https://github.com/fmtlib/fmt/issues/3858,
250
- https://github.com/fmtlib/fmt/pull/3859). Thanks @g199209.
251
-
252
- - Added RTTI detection for MSVC (https://github.com/fmtlib/fmt/pull/3821,
253
- https://github.com/fmtlib/fmt/pull/3963). Thanks @edo9300.
254
-
255
- - Migrated the documentation from Sphinx to MkDocs.
256
-
257
- - Improved documentation and README
258
- (https://github.com/fmtlib/fmt/issues/3775,
259
- https://github.com/fmtlib/fmt/pull/3784,
260
- https://github.com/fmtlib/fmt/issues/3788,
261
- https://github.com/fmtlib/fmt/pull/3789,
262
- https://github.com/fmtlib/fmt/pull/3793,
263
- https://github.com/fmtlib/fmt/issues/3818,
264
- https://github.com/fmtlib/fmt/pull/3820,
265
- https://github.com/fmtlib/fmt/pull/3822,
266
- https://github.com/fmtlib/fmt/pull/3843,
267
- https://github.com/fmtlib/fmt/pull/3890,
268
- https://github.com/fmtlib/fmt/issues/3894,
269
- https://github.com/fmtlib/fmt/pull/3895,
270
- https://github.com/fmtlib/fmt/pull/3905,
271
- https://github.com/fmtlib/fmt/issues/3942,
272
- https://github.com/fmtlib/fmt/pull/4008).
273
- Thanks @zencatalyst, WolleTD, @tupaschoal, @Dobiasd, @frank-weinberg, @bbolli,
274
- @phprus, @waywardmonkeys, @js324 and @tchaikov.
275
-
276
- - Improved CI and tests
277
- (https://github.com/fmtlib/fmt/issues/3878,
278
- https://github.com/fmtlib/fmt/pull/3883,
279
- https://github.com/fmtlib/fmt/issues/3897,
280
- https://github.com/fmtlib/fmt/pull/3979,
281
- https://github.com/fmtlib/fmt/pull/3980,
282
- https://github.com/fmtlib/fmt/pull/3988,
283
- https://github.com/fmtlib/fmt/pull/4010,
284
- https://github.com/fmtlib/fmt/pull/4012,
285
- https://github.com/fmtlib/fmt/pull/4038).
286
- Thanks @vgorrX, @waywardmonkeys, @tchaikov and @phprus.
287
-
288
- - Fixed buffer overflow when using format string compilation with debug format
289
- and `std::back_insert_iterator` (https://github.com/fmtlib/fmt/issues/3795,
290
- https://github.com/fmtlib/fmt/pull/3797). Thanks @phprus.
291
-
292
- - Improved Bazel support
293
- (https://github.com/fmtlib/fmt/pull/3792,
294
- https://github.com/fmtlib/fmt/pull/3801,
295
- https://github.com/fmtlib/fmt/pull/3962,
296
- https://github.com/fmtlib/fmt/pull/3965). Thanks @Vertexwahn.
297
-
298
- - Improved/fixed the CMake config
299
- (https://github.com/fmtlib/fmt/issues/3777,
300
- https://github.com/fmtlib/fmt/pull/3783,
301
- https://github.com/fmtlib/fmt/issues/3847,
302
- https://github.com/fmtlib/fmt/pull/3907). Thanks @phprus and @xTachyon.
303
-
304
- - Fixed various warnings and compilation issues
305
- (https://github.com/fmtlib/fmt/issues/3685,
306
- https://github.com/fmtlib/fmt/issues/3769,
307
- https://github.com/fmtlib/fmt/issues/3796,
308
- https://github.com/fmtlib/fmt/issues/3803,
309
- https://github.com/fmtlib/fmt/pull/3806,
310
- https://github.com/fmtlib/fmt/pull/3807,
311
- https://github.com/fmtlib/fmt/issues/3809,
312
- https://github.com/fmtlib/fmt/pull/3810,
313
- https://github.com/fmtlib/fmt/issues/3830,
314
- https://github.com/fmtlib/fmt/pull/3832,
315
- https://github.com/fmtlib/fmt/issues/3835,
316
- https://github.com/fmtlib/fmt/pull/3844,
317
- https://github.com/fmtlib/fmt/issues/3854,
318
- https://github.com/fmtlib/fmt/pull/3856,
319
- https://github.com/fmtlib/fmt/pull/3865,
320
- https://github.com/fmtlib/fmt/pull/3866,
321
- https://github.com/fmtlib/fmt/pull/3880,
322
- https://github.com/fmtlib/fmt/issues/3881,
323
- https://github.com/fmtlib/fmt/issues/3884,
324
- https://github.com/fmtlib/fmt/issues/3898,
325
- https://github.com/fmtlib/fmt/pull/3899,
326
- https://github.com/fmtlib/fmt/pull/3909,
327
- https://github.com/fmtlib/fmt/pull/3917,
328
- https://github.com/fmtlib/fmt/pull/3923,
329
- https://github.com/fmtlib/fmt/pull/3924,
330
- https://github.com/fmtlib/fmt/issues/3925,
331
- https://github.com/fmtlib/fmt/pull/3930,
332
- https://github.com/fmtlib/fmt/pull/3931,
333
- https://github.com/fmtlib/fmt/pull/3933,
334
- https://github.com/fmtlib/fmt/issues/3935,
335
- https://github.com/fmtlib/fmt/pull/3937,
336
- https://github.com/fmtlib/fmt/pull/3967,
337
- https://github.com/fmtlib/fmt/pull/3968,
338
- https://github.com/fmtlib/fmt/pull/3972,
339
- https://github.com/fmtlib/fmt/pull/3983,
340
- https://github.com/fmtlib/fmt/issues/3992,
341
- https://github.com/fmtlib/fmt/pull/3995,
342
- https://github.com/fmtlib/fmt/pull/4009,
343
- https://github.com/fmtlib/fmt/pull/4023).
344
- Thanks @hmbj, @phprus, @res2k, @Baardi, @matt77hias, @waywardmonkeys, @hmbj,
345
- @yakra, @prlw1, @Arghnews, @mtillmann0, @ShifftC, @eepp, @jimmy-park and
346
- @ChristianGebhardt.
347
-
348
- # 10.2.1 - 2024-01-04
349
-
350
- - Fixed ABI compatibility with earlier 10.x versions
351
- (https://github.com/fmtlib/fmt/issues/3785,
352
- https://github.com/fmtlib/fmt/pull/3786). Thanks @saraedum.
353
-
354
- # 10.2.0 - 2024-01-01
355
-
356
- - Added support for the `%j` specifier (the number of days) for
357
- `std::chrono::duration` (https://github.com/fmtlib/fmt/issues/3643,
358
- https://github.com/fmtlib/fmt/pull/3732). Thanks @intelfx.
359
-
360
- - Added support for the chrono suffix for days and changed
361
- the suffix for minutes from "m" to the correct "min"
362
- (https://github.com/fmtlib/fmt/issues/3662,
363
- https://github.com/fmtlib/fmt/pull/3664).
364
- For example ([godbolt](https://godbolt.org/z/9KhMnq9ba)):
365
-
366
- ```c++
367
- #include <fmt/chrono.h>
368
-
369
- int main() {
370
- fmt::print("{}\n", std::chrono::days(42)); // prints "42d"
371
- }
372
- ```
373
-
374
- Thanks @Richardk2n.
375
-
376
- - Fixed an overflow in `std::chrono::time_point` formatting with large dates
377
- (https://github.com/fmtlib/fmt/issues/3725,
378
- https://github.com/fmtlib/fmt/pull/3727). Thanks @cschreib.
379
-
380
- - Added a formatter for `std::source_location`
381
- (https://github.com/fmtlib/fmt/pull/3730).
382
- For example ([godbolt](https://godbolt.org/z/YajfKjhhr)):
383
-
384
- ```c++
385
- #include <source_location>
386
- #include <fmt/std.h>
387
-
388
- int main() {
389
- fmt::print("{}\n", std::source_location::current());
390
- }
391
- ```
392
-
393
- prints
394
-
395
- ```
396
- /app/example.cpp:5:51: int main()
397
- ```
398
-
399
- Thanks @felix642.
400
-
401
- - Added a formatter for `std::bitset`
402
- (https://github.com/fmtlib/fmt/pull/3660).
403
- For example ([godbolt](https://godbolt.org/z/bdEaGeYxe)):
404
-
405
- ```c++
406
- #include <bitset>
407
- #include <fmt/std.h>
408
-
409
- int main() {
410
- fmt::print("{}\n", std::bitset<6>(42)); // prints "101010"
411
- }
412
- ```
413
-
414
- Thanks @muggenhor.
415
-
416
- - Added an experimental `nested_formatter` that provides an easy way of
417
- applying a formatter to one or more subobjects while automatically handling
418
- width, fill and alignment. For example:
419
-
420
- ```c++
421
- #include <fmt/format.h>
422
-
423
- struct point {
424
- double x, y;
425
- };
426
-
427
- template <>
428
- struct fmt::formatter<point> : nested_formatter<double> {
429
- auto format(point p, format_context& ctx) const {
430
- return write_padded(ctx, [=](auto out) {
431
- return format_to(out, "({}, {})", nested(p.x), nested(p.y));
432
- });
433
- }
434
- };
435
-
436
- int main() {
437
- fmt::print("[{:>20.2f}]", point{1, 2});
438
- }
439
- ```
440
-
441
- prints
442
-
443
- ```
444
- [ (1.00, 2.00)]
445
- ```
446
-
447
- - Added the generic representation (`g`) to `std::filesystem::path`
448
- (https://github.com/fmtlib/fmt/issues/3715,
449
- https://github.com/fmtlib/fmt/pull/3729). For example:
450
-
451
- ```c++
452
- #include <filesystem>
453
- #include <fmt/std.h>
454
-
455
- int main() {
456
- fmt::print("{:g}\n", std::filesystem::path("C:\\foo"));
457
- }
458
- ```
459
-
460
- prints `"C:/foo"` on Windows.
461
-
462
- Thanks @js324.
463
-
464
- - Made `format_as` work with references
465
- (https://github.com/fmtlib/fmt/pull/3739). Thanks @tchaikov.
466
-
467
- - Fixed formatting of invalid UTF-8 with precision
468
- (https://github.com/fmtlib/fmt/issues/3284).
469
-
470
- - Fixed an inconsistency between `fmt::to_string` and `fmt::format`
471
- (https://github.com/fmtlib/fmt/issues/3684).
472
-
473
- - Disallowed unsafe uses of `fmt::styled`
474
- (https://github.com/fmtlib/fmt/issues/3625):
475
-
476
- ```c++
477
- auto s = fmt::styled(std::string("dangle"), fmt::emphasis::bold);
478
- fmt::print("{}\n", s); // compile error
479
- ```
480
-
481
- Pass `fmt::styled(...)` as a parameter instead.
482
-
483
- - Added a null check when formatting a C string with the `s` specifier
484
- (https://github.com/fmtlib/fmt/issues/3706).
485
-
486
- - Disallowed the `c` specifier for `bool`
487
- (https://github.com/fmtlib/fmt/issues/3726,
488
- https://github.com/fmtlib/fmt/pull/3734). Thanks @js324.
489
-
490
- - Made the default formatting unlocalized in `fmt::ostream_formatter` for
491
- consistency with the rest of the library
492
- (https://github.com/fmtlib/fmt/issues/3460).
493
-
494
- - Fixed localized formatting in bases other than decimal
495
- (https://github.com/fmtlib/fmt/issues/3693,
496
- https://github.com/fmtlib/fmt/pull/3750). Thanks @js324.
497
-
498
- - Fixed a performance regression in experimental `fmt::ostream::print`
499
- (https://github.com/fmtlib/fmt/issues/3674).
500
-
501
- - Added synchronization with the underlying output stream when writing to
502
- the Windows console
503
- (https://github.com/fmtlib/fmt/pull/3668,
504
- https://github.com/fmtlib/fmt/issues/3688,
505
- https://github.com/fmtlib/fmt/pull/3689).
506
- Thanks @Roman-Koshelev and @dimztimz.
507
-
508
- - Changed to only export `format_error` when {fmt} is built as a shared
509
- library (https://github.com/fmtlib/fmt/issues/3626,
510
- https://github.com/fmtlib/fmt/pull/3627). Thanks @phprus.
511
-
512
- - Made `fmt::streamed` `constexpr`.
513
- (https://github.com/fmtlib/fmt/pull/3650). Thanks @muggenhor.
514
-
515
- - Made `fmt::format_int` `constexpr`
516
- (https://github.com/fmtlib/fmt/issues/4031,
517
- https://github.com/fmtlib/fmt/pull/4032). Thanks @dixlorenz.
518
-
519
- - Enabled `consteval` on older versions of MSVC
520
- (https://github.com/fmtlib/fmt/pull/3757). Thanks @phprus.
521
-
522
- - Added an option to build without `wchar_t` support on Windows
523
- (https://github.com/fmtlib/fmt/issues/3631,
524
- https://github.com/fmtlib/fmt/pull/3636). Thanks @glebm.
525
-
526
- - Improved build and CI configuration
527
- (https://github.com/fmtlib/fmt/pull/3679,
528
- https://github.com/fmtlib/fmt/issues/3701,
529
- https://github.com/fmtlib/fmt/pull/3702,
530
- https://github.com/fmtlib/fmt/pull/3749).
531
- Thanks @jcar87, @pklima and @tchaikov.
532
-
533
- - Fixed various warnings, compilation and test issues
534
- (https://github.com/fmtlib/fmt/issues/3607,
535
- https://github.com/fmtlib/fmt/pull/3610,
536
- https://github.com/fmtlib/fmt/pull/3624,
537
- https://github.com/fmtlib/fmt/pull/3630,
538
- https://github.com/fmtlib/fmt/pull/3634,
539
- https://github.com/fmtlib/fmt/pull/3638,
540
- https://github.com/fmtlib/fmt/issues/3645,
541
- https://github.com/fmtlib/fmt/issues/3646,
542
- https://github.com/fmtlib/fmt/pull/3647,
543
- https://github.com/fmtlib/fmt/pull/3652,
544
- https://github.com/fmtlib/fmt/issues/3654,
545
- https://github.com/fmtlib/fmt/pull/3663,
546
- https://github.com/fmtlib/fmt/issues/3670,
547
- https://github.com/fmtlib/fmt/pull/3680,
548
- https://github.com/fmtlib/fmt/issues/3694,
549
- https://github.com/fmtlib/fmt/pull/3695,
550
- https://github.com/fmtlib/fmt/pull/3699,
551
- https://github.com/fmtlib/fmt/issues/3705,
552
- https://github.com/fmtlib/fmt/issues/3710,
553
- https://github.com/fmtlib/fmt/issues/3712,
554
- https://github.com/fmtlib/fmt/pull/3713,
555
- https://github.com/fmtlib/fmt/issues/3714,
556
- https://github.com/fmtlib/fmt/pull/3716,
557
- https://github.com/fmtlib/fmt/pull/3723,
558
- https://github.com/fmtlib/fmt/issues/3738,
559
- https://github.com/fmtlib/fmt/issues/3740,
560
- https://github.com/fmtlib/fmt/pull/3741,
561
- https://github.com/fmtlib/fmt/pull/3743,
562
- https://github.com/fmtlib/fmt/issues/3745,
563
- https://github.com/fmtlib/fmt/pull/3747,
564
- https://github.com/fmtlib/fmt/pull/3748,
565
- https://github.com/fmtlib/fmt/pull/3751,
566
- https://github.com/fmtlib/fmt/pull/3754,
567
- https://github.com/fmtlib/fmt/pull/3755,
568
- https://github.com/fmtlib/fmt/issues/3760,
569
- https://github.com/fmtlib/fmt/pull/3762,
570
- https://github.com/fmtlib/fmt/issues/3763,
571
- https://github.com/fmtlib/fmt/pull/3764,
572
- https://github.com/fmtlib/fmt/issues/3774,
573
- https://github.com/fmtlib/fmt/pull/3779).
574
- Thanks @danakj, @vinayyadav3016, @cyyever, @phprus, @qimiko, @saschasc,
575
- @gsjaardema, @lazka, @Zhaojun-Liu, @carlsmedstad, @hotwatermorning,
576
- @cptFracassa, @kuguma, @PeterJohnson, @H1X4Dev, @asantoni, @eltociear,
577
- @msimberg, @tchaikov, @waywardmonkeys.
578
-
579
- - Improved documentation and README
580
- (https://github.com/fmtlib/fmt/issues/2086,
581
- https://github.com/fmtlib/fmt/issues/3637,
582
- https://github.com/fmtlib/fmt/pull/3642,
583
- https://github.com/fmtlib/fmt/pull/3653,
584
- https://github.com/fmtlib/fmt/pull/3655,
585
- https://github.com/fmtlib/fmt/pull/3661,
586
- https://github.com/fmtlib/fmt/issues/3673,
587
- https://github.com/fmtlib/fmt/pull/3677,
588
- https://github.com/fmtlib/fmt/pull/3737,
589
- https://github.com/fmtlib/fmt/issues/3742,
590
- https://github.com/fmtlib/fmt/pull/3744).
591
- Thanks @idzm, @perlun, @joycebrum, @fennewald, @reinhardt1053, @GeorgeLS.
592
-
593
- - Updated CI dependencies
594
- (https://github.com/fmtlib/fmt/pull/3615,
595
- https://github.com/fmtlib/fmt/pull/3622,
596
- https://github.com/fmtlib/fmt/pull/3623,
597
- https://github.com/fmtlib/fmt/pull/3666,
598
- https://github.com/fmtlib/fmt/pull/3696,
599
- https://github.com/fmtlib/fmt/pull/3697,
600
- https://github.com/fmtlib/fmt/pull/3759,
601
- https://github.com/fmtlib/fmt/pull/3782).
602
-
603
- # 10.1.1 - 2023-08-28
604
-
605
- - Added formatters for `std::atomic` and `atomic_flag`
606
- (https://github.com/fmtlib/fmt/pull/3574,
607
- https://github.com/fmtlib/fmt/pull/3594).
608
- Thanks @wangzw and @AlexGuteniev.
609
- - Fixed an error about partial specialization of `formatter<string>`
610
- after instantiation when compiled with gcc and C++20
611
- (https://github.com/fmtlib/fmt/issues/3584).
612
- - Fixed compilation as a C++20 module with gcc and clang
613
- (https://github.com/fmtlib/fmt/issues/3587,
614
- https://github.com/fmtlib/fmt/pull/3597,
615
- https://github.com/fmtlib/fmt/pull/3605).
616
- Thanks @MathewBensonCode.
617
- - Made `fmt::to_string` work with types that have `format_as`
618
- overloads (https://github.com/fmtlib/fmt/pull/3575). Thanks @phprus.
619
- - Made `formatted_size` work with integral format specifiers at
620
- compile time (https://github.com/fmtlib/fmt/pull/3591).
621
- Thanks @elbeno.
622
- - Fixed a warning about the `no_unique_address` attribute on clang-cl
623
- (https://github.com/fmtlib/fmt/pull/3599). Thanks @lukester1975.
624
- - Improved compatibility with the legacy GBK encoding
625
- (https://github.com/fmtlib/fmt/issues/3598,
626
- https://github.com/fmtlib/fmt/pull/3599). Thanks @YuHuanTin.
627
- - Added OpenSSF Scorecard analysis
628
- (https://github.com/fmtlib/fmt/issues/3530,
629
- https://github.com/fmtlib/fmt/pull/3571). Thanks @joycebrum.
630
- - Updated CI dependencies
631
- (https://github.com/fmtlib/fmt/pull/3591,
632
- https://github.com/fmtlib/fmt/pull/3592,
633
- https://github.com/fmtlib/fmt/pull/3593,
634
- https://github.com/fmtlib/fmt/pull/3602).
635
-
636
- # 10.1.0 - 2023-08-12
637
-
638
- - Optimized format string compilation resulting in up to 40% speed up
639
- in compiled `format_to` and \~4x speed up in compiled `format_to_n`
640
- on a concatenation benchmark
641
- (https://github.com/fmtlib/fmt/issues/3133,
642
- https://github.com/fmtlib/fmt/issues/3484).
643
-
644
- {fmt} 10.0:
645
-
646
- ---------------------------------------------------------
647
- Benchmark Time CPU Iterations
648
- ---------------------------------------------------------
649
- BM_format_to 78.9 ns 78.9 ns 8881746
650
- BM_format_to_n 568 ns 568 ns 1232089
651
-
652
- {fmt} 10.1:
653
-
654
- ---------------------------------------------------------
655
- Benchmark Time CPU Iterations
656
- ---------------------------------------------------------
657
- BM_format_to 54.9 ns 54.9 ns 12727944
658
- BM_format_to_n 133 ns 133 ns 5257795
659
-
660
- - Optimized storage of an empty allocator in `basic_memory_buffer`
661
- (https://github.com/fmtlib/fmt/pull/3485). Thanks @Minty-Meeo.
662
-
663
- - Added formatters for proxy references to elements of
664
- `std::vector<bool>` and `std::bitset<N>`
665
- (https://github.com/fmtlib/fmt/issues/3567,
666
- https://github.com/fmtlib/fmt/pull/3570). For example
667
- ([godbolt](https://godbolt.org/z/zYb79Pvn8)):
668
-
669
- ```c++
670
- #include <vector>
671
- #include <fmt/std.h>
672
-
673
- int main() {
674
- auto v = std::vector<bool>{true};
675
- fmt::print("{}", v[0]);
676
- }
677
- ```
678
-
679
- Thanks @phprus and @felix642.
680
-
681
- - Fixed an ambiguous formatter specialization for containers that look
682
- like container adaptors such as `boost::flat_set`
683
- (https://github.com/fmtlib/fmt/issues/3556,
684
- https://github.com/fmtlib/fmt/pull/3561). Thanks @5chmidti.
685
-
686
- - Fixed compilation when formatting durations not convertible from
687
- `std::chrono::seconds`
688
- (https://github.com/fmtlib/fmt/pull/3430). Thanks @patlkli.
689
-
690
- - Made the `formatter` specialization for `char*` const-correct
691
- (https://github.com/fmtlib/fmt/pull/3432). Thanks @timsong-cpp.
692
-
693
- - Made `{}` and `{:}` handled consistently during compile-time checks
694
- (https://github.com/fmtlib/fmt/issues/3526).
695
-
696
- - Disallowed passing temporaries to `make_format_args` to improve API
697
- safety by preventing dangling references.
698
-
699
- - Improved the compile-time error for unformattable types
700
- (https://github.com/fmtlib/fmt/pull/3478). Thanks @BRevzin.
701
-
702
- - Improved the floating-point formatter
703
- (https://github.com/fmtlib/fmt/pull/3448,
704
- https://github.com/fmtlib/fmt/pull/3450).
705
- Thanks @florimond-collette.
706
-
707
- - Fixed handling of precision for `long double` larger than 64 bits.
708
- (https://github.com/fmtlib/fmt/issues/3539,
709
- https://github.com/fmtlib/fmt/issues/3564).
710
-
711
- - Made floating-point and chrono tests less platform-dependent
712
- (https://github.com/fmtlib/fmt/issues/3337,
713
- https://github.com/fmtlib/fmt/issues/3433,
714
- https://github.com/fmtlib/fmt/pull/3434). Thanks @phprus.
715
-
716
- - Removed the remnants of the Grisu floating-point formatter that has
717
- been replaced by Dragonbox in earlier versions.
718
-
719
- - Added `throw_format_error` to the public API
720
- (https://github.com/fmtlib/fmt/pull/3551). Thanks @mjerabek.
721
-
722
- - Made `FMT_THROW` assert even if assertions are disabled when
723
- compiling with exceptions disabled
724
- (https://github.com/fmtlib/fmt/issues/3418,
725
- https://github.com/fmtlib/fmt/pull/3439). Thanks @BRevzin.
726
-
727
- - Made `format_as` and `std::filesystem::path` formatter work with
728
- exotic code unit types.
729
- (https://github.com/fmtlib/fmt/pull/3457,
730
- https://github.com/fmtlib/fmt/pull/3476). Thanks @gix and @hmbj.
731
-
732
- - Added support for the `?` format specifier to
733
- `std::filesystem::path` and made the default unescaped for
734
- consistency with strings.
735
-
736
- - Deprecated the wide stream overload of `printf`.
737
-
738
- - Removed unused `basic_printf_parse_context`.
739
-
740
- - Improved RTTI detection used when formatting exceptions
741
- (https://github.com/fmtlib/fmt/pull/3468). Thanks @danakj.
742
-
743
- - Improved compatibility with VxWorks7
744
- (https://github.com/fmtlib/fmt/pull/3467). Thanks @wenshan1.
745
-
746
- - Improved documentation
747
- (https://github.com/fmtlib/fmt/issues/3174,
748
- https://github.com/fmtlib/fmt/issues/3423,
749
- https://github.com/fmtlib/fmt/pull/3454,
750
- https://github.com/fmtlib/fmt/issues/3458,
751
- https://github.com/fmtlib/fmt/pull/3461,
752
- https://github.com/fmtlib/fmt/issues/3487,
753
- https://github.com/fmtlib/fmt/pull/3515).
754
- Thanks @zencatalyst, @rlalik and @mikecrowe.
755
-
756
- - Improved build and CI configurations
757
- (https://github.com/fmtlib/fmt/issues/3449,
758
- https://github.com/fmtlib/fmt/pull/3451,
759
- https://github.com/fmtlib/fmt/pull/3452,
760
- https://github.com/fmtlib/fmt/pull/3453,
761
- https://github.com/fmtlib/fmt/pull/3459,
762
- https://github.com/fmtlib/fmt/issues/3481,
763
- https://github.com/fmtlib/fmt/pull/3486,
764
- https://github.com/fmtlib/fmt/issues/3489,
765
- https://github.com/fmtlib/fmt/pull/3496,
766
- https://github.com/fmtlib/fmt/issues/3517,
767
- https://github.com/fmtlib/fmt/pull/3523,
768
- https://github.com/fmtlib/fmt/pull/3563).
769
- Thanks @joycebrum, @glebm, @phprus, @petrmanek, @setoye and @abouvier.
770
-
771
- - Fixed various warnings and compilation issues
772
- (https://github.com/fmtlib/fmt/issues/3408,
773
- https://github.com/fmtlib/fmt/issues/3424,
774
- https://github.com/fmtlib/fmt/issues/3444,
775
- https://github.com/fmtlib/fmt/pull/3446,
776
- https://github.com/fmtlib/fmt/pull/3475,
777
- https://github.com/fmtlib/fmt/pull/3482,
778
- https://github.com/fmtlib/fmt/issues/3492,
779
- https://github.com/fmtlib/fmt/pull/3493,
780
- https://github.com/fmtlib/fmt/pull/3508,
781
- https://github.com/fmtlib/fmt/issues/3509,
782
- https://github.com/fmtlib/fmt/issues/3533,
783
- https://github.com/fmtlib/fmt/pull/3542,
784
- https://github.com/fmtlib/fmt/issues/3543,
785
- https://github.com/fmtlib/fmt/issues/3540,
786
- https://github.com/fmtlib/fmt/pull/3544,
787
- https://github.com/fmtlib/fmt/issues/3548,
788
- https://github.com/fmtlib/fmt/pull/3549,
789
- https://github.com/fmtlib/fmt/pull/3550,
790
- https://github.com/fmtlib/fmt/pull/3552).
791
- Thanks @adesitter, @hmbj, @Minty-Meeo, @phprus, @TobiSchluter,
792
- @kieranclancy, @alexeedm, @jurihock, @Ozomahtli and @razaqq.
793
-
794
- # 10.0.0 - 2023-05-09
795
-
796
- - Replaced Grisu with a new floating-point formatting algorithm for
797
- given precision (https://github.com/fmtlib/fmt/issues/3262,
798
- https://github.com/fmtlib/fmt/issues/2750,
799
- https://github.com/fmtlib/fmt/pull/3269,
800
- https://github.com/fmtlib/fmt/pull/3276). The new algorithm
801
- is based on Dragonbox already used for the shortest representation
802
- and gives substantial performance improvement:
803
-
804
- ![](https://user-images.githubusercontent.com/33922675/211956670-84891a09-6867-47d9-82fc-3230da7abe0f.png)
805
-
806
- - Red: new algorithm
807
- - Green: new algorithm with `FMT_USE_FULL_CACHE_DRAGONBOX` defined
808
- to 1
809
- - Blue: old algorithm
810
-
811
- Thanks @jk-jeon.
812
-
813
- - Replaced `snprintf`-based hex float formatter with an internal
814
- implementation (https://github.com/fmtlib/fmt/pull/3179,
815
- https://github.com/fmtlib/fmt/pull/3203). This removes the
816
- last usage of `s(n)printf` in {fmt}. Thanks @phprus.
817
-
818
- - Fixed alignment of floating-point numbers with localization
819
- (https://github.com/fmtlib/fmt/issues/3263,
820
- https://github.com/fmtlib/fmt/pull/3272). Thanks @ShawnZhong.
821
-
822
- - Made handling of `#` consistent with `std::format`.
823
-
824
- - Improved C++20 module support
825
- (https://github.com/fmtlib/fmt/pull/3134,
826
- https://github.com/fmtlib/fmt/pull/3254,
827
- https://github.com/fmtlib/fmt/pull/3386,
828
- https://github.com/fmtlib/fmt/pull/3387,
829
- https://github.com/fmtlib/fmt/pull/3388,
830
- https://github.com/fmtlib/fmt/pull/3392,
831
- https://github.com/fmtlib/fmt/pull/3397,
832
- https://github.com/fmtlib/fmt/pull/3399,
833
- https://github.com/fmtlib/fmt/pull/3400).
834
- Thanks @laitingsheng, @Orvid and @DanielaE.
835
-
836
- - Switched to the [modules CMake library](https://github.com/vitaut/modules)
837
- which allows building {fmt} as a C++20 module with clang:
838
-
839
- CXX=clang++ cmake -DFMT_MODULE=ON .
840
- make
841
-
842
- - Made `format_as` work with any user-defined type and not just enums.
843
- For example ([godbolt](https://godbolt.org/z/b7rqhq5Kh)):
844
-
845
- ```c++
846
- #include <fmt/format.h>
847
-
848
- struct floaty_mc_floatface {
849
- double value;
850
- };
851
-
852
- auto format_as(floaty_mc_floatface f) { return f.value; }
853
-
854
- int main() {
855
- fmt::print("{:8}\n", floaty_mc_floatface{0.42}); // prints " 0.42"
856
- }
857
- ```
858
-
859
- - Removed deprecated implicit conversions for enums and conversions to
860
- primitive types for compatibility with `std::format` and to prevent
861
- potential ODR violations. Use `format_as` instead.
862
-
863
- - Added support for fill, align and width to the time point formatter
864
- (https://github.com/fmtlib/fmt/issues/3237,
865
- https://github.com/fmtlib/fmt/pull/3260,
866
- https://github.com/fmtlib/fmt/pull/3275). For example
867
- ([godbolt](https://godbolt.org/z/rKP6MGz6c)):
868
-
869
- ```c++
870
- #include <fmt/chrono.h>
871
-
872
- int main() {
873
- // prints " 2023"
874
- fmt::print("{:>8%Y}\n", std::chrono::system_clock::now());
875
- }
876
- ```
877
-
878
- Thanks @ShawnZhong.
879
-
880
- - Implemented formatting of subseconds
881
- (https://github.com/fmtlib/fmt/issues/2207,
882
- https://github.com/fmtlib/fmt/issues/3117,
883
- https://github.com/fmtlib/fmt/pull/3115,
884
- https://github.com/fmtlib/fmt/pull/3143,
885
- https://github.com/fmtlib/fmt/pull/3144,
886
- https://github.com/fmtlib/fmt/pull/3349). For example
887
- ([godbolt](https://godbolt.org/z/45738oGEo)):
888
-
889
- ```c++
890
- #include <fmt/chrono.h>
891
-
892
- int main() {
893
- // prints 01.234567
894
- fmt::print("{:%S}\n", std::chrono::microseconds(1234567));
895
- }
896
- ```
897
-
898
- Thanks @patrickroocks @phprus and @BRevzin.
899
-
900
- - Added precision support to `%S`
901
- (https://github.com/fmtlib/fmt/pull/3148). Thanks @SappyJoy
902
-
903
- - Added support for `std::utc_time`
904
- (https://github.com/fmtlib/fmt/issues/3098,
905
- https://github.com/fmtlib/fmt/pull/3110). Thanks @patrickroocks.
906
-
907
- - Switched formatting of `std::chrono::system_clock` from local time
908
- to UTC for compatibility with the standard
909
- (https://github.com/fmtlib/fmt/issues/3199,
910
- https://github.com/fmtlib/fmt/pull/3230). Thanks @ned14.
911
-
912
- - Added support for `%Ez` and `%Oz` to chrono formatters.
913
- (https://github.com/fmtlib/fmt/issues/3220,
914
- https://github.com/fmtlib/fmt/pull/3222). Thanks @phprus.
915
-
916
- - Improved validation of format specifiers for `std::chrono::duration`
917
- (https://github.com/fmtlib/fmt/issues/3219,
918
- https://github.com/fmtlib/fmt/pull/3232). Thanks @ShawnZhong.
919
-
920
- - Fixed formatting of time points before the epoch
921
- (https://github.com/fmtlib/fmt/issues/3117,
922
- https://github.com/fmtlib/fmt/pull/3261). For example
923
- ([godbolt](https://godbolt.org/z/f7bcznb3W)):
924
-
925
- ```c++
926
- #include <fmt/chrono.h>
927
-
928
- int main() {
929
- auto t = std::chrono::system_clock::from_time_t(0) -
930
- std::chrono::milliseconds(250);
931
- fmt::print("{:%S}\n", t); // prints 59.750000000
932
- }
933
- ```
934
-
935
- Thanks @ShawnZhong.
936
-
937
- - Experimental: implemented glibc extension for padding seconds,
938
- minutes and hours
939
- (https://github.com/fmtlib/fmt/issues/2959,
940
- https://github.com/fmtlib/fmt/pull/3271). Thanks @ShawnZhong.
941
-
942
- - Added a formatter for `std::exception`
943
- (https://github.com/fmtlib/fmt/issues/2977,
944
- https://github.com/fmtlib/fmt/issues/3012,
945
- https://github.com/fmtlib/fmt/pull/3062,
946
- https://github.com/fmtlib/fmt/pull/3076,
947
- https://github.com/fmtlib/fmt/pull/3119). For example
948
- ([godbolt](https://godbolt.org/z/8xoWGs9e4)):
949
-
950
- ```c++
951
- #include <fmt/std.h>
952
- #include <vector>
953
-
954
- int main() {
955
- try {
956
- std::vector<bool>().at(0);
957
- } catch(const std::exception& e) {
958
- fmt::print("{}", e);
959
- }
960
- }
961
- ```
962
-
963
- prints:
964
-
965
- vector<bool>::_M_range_check: __n (which is 0) >= this->size() (which is 0)
966
-
967
- on libstdc++. Thanks @zach2good and @phprus.
968
-
969
- - Moved `std::error_code` formatter from `fmt/os.h` to `fmt/std.h`.
970
- (https://github.com/fmtlib/fmt/pull/3125). Thanks @phprus.
971
-
972
- - Added formatters for standard container adapters:
973
- `std::priority_queue`, `std::queue` and `std::stack`
974
- (https://github.com/fmtlib/fmt/issues/3215,
975
- https://github.com/fmtlib/fmt/pull/3279). For example
976
- ([godbolt](https://godbolt.org/z/74h1xY9qK)):
977
-
978
- ```c++
979
- #include <fmt/ranges.h>
980
- #include <stack>
981
- #include <vector>
982
-
983
- int main() {
984
- auto s = std::stack<bool, std::vector<bool>>();
985
- for (auto b: {true, false, true}) s.push(b);
986
- fmt::print("{}\n", s); // prints [true, false, true]
987
- }
988
- ```
989
-
990
- Thanks @ShawnZhong.
991
-
992
- - Added a formatter for `std::optional` to `fmt/std.h`
993
- (https://github.com/fmtlib/fmt/issues/1367,
994
- https://github.com/fmtlib/fmt/pull/3303).
995
- Thanks @tom-huntington.
996
-
997
- - Fixed formatting of valueless by exception variants
998
- (https://github.com/fmtlib/fmt/pull/3347). Thanks @TheOmegaCarrot.
999
-
1000
- - Made `fmt::ptr` accept `unique_ptr` with a custom deleter
1001
- (https://github.com/fmtlib/fmt/pull/3177). Thanks @hmbj.
1002
-
1003
- - Fixed formatting of noncopyable ranges and nested ranges of chars
1004
- (https://github.com/fmtlib/fmt/pull/3158
1005
- https://github.com/fmtlib/fmt/issues/3286,
1006
- https://github.com/fmtlib/fmt/pull/3290). Thanks @BRevzin.
1007
-
1008
- - Fixed issues with formatting of paths and ranges of paths
1009
- (https://github.com/fmtlib/fmt/issues/3319,
1010
- https://github.com/fmtlib/fmt/pull/3321
1011
- https://github.com/fmtlib/fmt/issues/3322). Thanks @phprus.
1012
-
1013
- - Improved handling of invalid Unicode in paths.
1014
-
1015
- - Enabled compile-time checks on Apple clang 14 and later
1016
- (https://github.com/fmtlib/fmt/pull/3331). Thanks @cloyce.
1017
-
1018
- - Improved compile-time checks of named arguments
1019
- (https://github.com/fmtlib/fmt/issues/3105,
1020
- https://github.com/fmtlib/fmt/pull/3214). Thanks @rbrich.
1021
-
1022
- - Fixed formatting when both alignment and `0` are given
1023
- (https://github.com/fmtlib/fmt/issues/3236,
1024
- https://github.com/fmtlib/fmt/pull/3248). Thanks @ShawnZhong.
1025
-
1026
- - Improved Unicode support in the experimental file API on Windows
1027
- (https://github.com/fmtlib/fmt/issues/3234,
1028
- https://github.com/fmtlib/fmt/pull/3293). Thanks @Fros1er.
1029
-
1030
- - Unified UTF transcoding
1031
- (https://github.com/fmtlib/fmt/pull/3416). Thanks @phprus.
1032
-
1033
- - Added support for UTF-8 digit separators via an experimental locale
1034
- facet (https://github.com/fmtlib/fmt/issues/1861). For
1035
- example ([godbolt](https://godbolt.org/z/f7bcznb3W)):
1036
-
1037
- ```c++
1038
- auto loc = std::locale(
1039
- std::locale(), new fmt::format_facet<std::locale>("’"));
1040
- auto s = fmt::format(loc, "{:L}", 1000);
1041
- ```
1042
-
1043
- where `’` is U+2019 used as a digit separator in the de_CH locale.
1044
-
1045
- - Added an overload of `formatted_size` that takes a locale
1046
- (https://github.com/fmtlib/fmt/issues/3084,
1047
- https://github.com/fmtlib/fmt/pull/3087). Thanks @gerboengels.
1048
-
1049
- - Removed the deprecated `FMT_DEPRECATED_OSTREAM`.
1050
-
1051
- - Fixed a UB when using a null `std::string_view` with
1052
- `fmt::to_string` or format string compilation
1053
- (https://github.com/fmtlib/fmt/issues/3241,
1054
- https://github.com/fmtlib/fmt/pull/3244). Thanks @phprus.
1055
-
1056
- - Added `starts_with` to the fallback `string_view` implementation
1057
- (https://github.com/fmtlib/fmt/pull/3080). Thanks @phprus.
1058
-
1059
- - Added `fmt::basic_format_string::get()` for compatibility with
1060
- `basic_format_string`
1061
- (https://github.com/fmtlib/fmt/pull/3111). Thanks @huangqinjin.
1062
-
1063
- - Added `println` for compatibility with C++23
1064
- (https://github.com/fmtlib/fmt/pull/3267). Thanks @ShawnZhong.
1065
-
1066
- - Renamed the `FMT_EXPORT` macro for shared library usage to
1067
- `FMT_LIB_EXPORT`.
1068
-
1069
- - Improved documentation
1070
- (https://github.com/fmtlib/fmt/issues/3108,
1071
- https://github.com/fmtlib/fmt/issues/3169,
1072
- https://github.com/fmtlib/fmt/pull/3243).
1073
- https://github.com/fmtlib/fmt/pull/3404,
1074
- https://github.com/fmtlib/fmt/pull/4002).
1075
- Thanks @Cleroth, @Vertexwahn and @yujincheng08.
1076
-
1077
- - Improved build configuration and tests
1078
- (https://github.com/fmtlib/fmt/pull/3118,
1079
- https://github.com/fmtlib/fmt/pull/3120,
1080
- https://github.com/fmtlib/fmt/pull/3188,
1081
- https://github.com/fmtlib/fmt/issues/3189,
1082
- https://github.com/fmtlib/fmt/pull/3198,
1083
- https://github.com/fmtlib/fmt/pull/3205,
1084
- https://github.com/fmtlib/fmt/pull/3207,
1085
- https://github.com/fmtlib/fmt/pull/3210,
1086
- https://github.com/fmtlib/fmt/pull/3240,
1087
- https://github.com/fmtlib/fmt/pull/3256,
1088
- https://github.com/fmtlib/fmt/pull/3264,
1089
- https://github.com/fmtlib/fmt/issues/3299,
1090
- https://github.com/fmtlib/fmt/pull/3302,
1091
- https://github.com/fmtlib/fmt/pull/3312,
1092
- https://github.com/fmtlib/fmt/issues/3317,
1093
- https://github.com/fmtlib/fmt/pull/3328,
1094
- https://github.com/fmtlib/fmt/pull/3333,
1095
- https://github.com/fmtlib/fmt/pull/3369,
1096
- https://github.com/fmtlib/fmt/issues/3373,
1097
- https://github.com/fmtlib/fmt/pull/3395,
1098
- https://github.com/fmtlib/fmt/pull/3406,
1099
- https://github.com/fmtlib/fmt/pull/3411).
1100
- Thanks @dimztimz, @phprus, @DavidKorczynski, @ChrisThrasher,
1101
- @FrancoisCarouge, @kennyweiss, @luzpaz, @codeinred, @Mixaill, @joycebrum,
1102
- @kevinhwang and @Vertexwahn.
1103
-
1104
- - Fixed a regression in handling empty format specifiers after a colon
1105
- (`{:}`) (https://github.com/fmtlib/fmt/pull/3086). Thanks @oxidase.
1106
-
1107
- - Worked around a broken implementation of
1108
- `std::is_constant_evaluated` in some versions of libstdc++ on clang
1109
- (https://github.com/fmtlib/fmt/issues/3247,
1110
- https://github.com/fmtlib/fmt/pull/3281). Thanks @phprus.
1111
-
1112
- - Fixed formatting of volatile variables
1113
- (https://github.com/fmtlib/fmt/pull/3068).
1114
-
1115
- - Fixed various warnings and compilation issues
1116
- (https://github.com/fmtlib/fmt/pull/3057,
1117
- https://github.com/fmtlib/fmt/pull/3066,
1118
- https://github.com/fmtlib/fmt/pull/3072,
1119
- https://github.com/fmtlib/fmt/pull/3082,
1120
- https://github.com/fmtlib/fmt/pull/3091,
1121
- https://github.com/fmtlib/fmt/issues/3092,
1122
- https://github.com/fmtlib/fmt/pull/3093,
1123
- https://github.com/fmtlib/fmt/pull/3095,
1124
- https://github.com/fmtlib/fmt/issues/3096,
1125
- https://github.com/fmtlib/fmt/pull/3097,
1126
- https://github.com/fmtlib/fmt/issues/3128,
1127
- https://github.com/fmtlib/fmt/pull/3129,
1128
- https://github.com/fmtlib/fmt/pull/3137,
1129
- https://github.com/fmtlib/fmt/pull/3139,
1130
- https://github.com/fmtlib/fmt/issues/3140,
1131
- https://github.com/fmtlib/fmt/pull/3142,
1132
- https://github.com/fmtlib/fmt/issues/3149,
1133
- https://github.com/fmtlib/fmt/pull/3150,
1134
- https://github.com/fmtlib/fmt/issues/3154,
1135
- https://github.com/fmtlib/fmt/issues/3163,
1136
- https://github.com/fmtlib/fmt/issues/3178,
1137
- https://github.com/fmtlib/fmt/pull/3184,
1138
- https://github.com/fmtlib/fmt/pull/3196,
1139
- https://github.com/fmtlib/fmt/issues/3204,
1140
- https://github.com/fmtlib/fmt/pull/3206,
1141
- https://github.com/fmtlib/fmt/pull/3208,
1142
- https://github.com/fmtlib/fmt/issues/3213,
1143
- https://github.com/fmtlib/fmt/pull/3216,
1144
- https://github.com/fmtlib/fmt/issues/3224,
1145
- https://github.com/fmtlib/fmt/issues/3226,
1146
- https://github.com/fmtlib/fmt/issues/3228,
1147
- https://github.com/fmtlib/fmt/pull/3229,
1148
- https://github.com/fmtlib/fmt/pull/3259,
1149
- https://github.com/fmtlib/fmt/issues/3274,
1150
- https://github.com/fmtlib/fmt/issues/3287,
1151
- https://github.com/fmtlib/fmt/pull/3288,
1152
- https://github.com/fmtlib/fmt/issues/3292,
1153
- https://github.com/fmtlib/fmt/pull/3295,
1154
- https://github.com/fmtlib/fmt/pull/3296,
1155
- https://github.com/fmtlib/fmt/issues/3298,
1156
- https://github.com/fmtlib/fmt/issues/3325,
1157
- https://github.com/fmtlib/fmt/pull/3326,
1158
- https://github.com/fmtlib/fmt/issues/3334,
1159
- https://github.com/fmtlib/fmt/issues/3342,
1160
- https://github.com/fmtlib/fmt/pull/3343,
1161
- https://github.com/fmtlib/fmt/issues/3351,
1162
- https://github.com/fmtlib/fmt/pull/3352,
1163
- https://github.com/fmtlib/fmt/pull/3362,
1164
- https://github.com/fmtlib/fmt/issues/3365,
1165
- https://github.com/fmtlib/fmt/pull/3366,
1166
- https://github.com/fmtlib/fmt/pull/3374,
1167
- https://github.com/fmtlib/fmt/issues/3377,
1168
- https://github.com/fmtlib/fmt/pull/3378,
1169
- https://github.com/fmtlib/fmt/issues/3381,
1170
- https://github.com/fmtlib/fmt/pull/3398,
1171
- https://github.com/fmtlib/fmt/pull/3413,
1172
- https://github.com/fmtlib/fmt/issues/3415).
1173
- Thanks @phprus, @gsjaardema, @NewbieOrange, @EngineLessCC, @asmaloney,
1174
- @HazardyKnusperkeks, @sergiud, @Youw, @thesmurph, @czudziakm,
1175
- @Roman-Koshelev, @chronoxor, @ShawnZhong, @russelltg, @glebm, @tmartin-gh,
1176
- @Zhaojun-Liu, @louiswins and @mogemimi.
1177
-
1178
- # 9.1.0 - 2022-08-27
1179
-
1180
- - `fmt::formatted_size` now works at compile time
1181
- (https://github.com/fmtlib/fmt/pull/3026). For example
1182
- ([godbolt](https://godbolt.org/z/1MW5rMdf8)):
1183
-
1184
- ```c++
1185
- #include <fmt/compile.h>
1186
-
1187
- int main() {
1188
- using namespace fmt::literals;
1189
- constexpr size_t n = fmt::formatted_size("{}"_cf, 42);
1190
- fmt::print("{}\n", n); // prints 2
1191
- }
1192
- ```
1193
-
1194
- Thanks @marksantaniello.
1195
-
1196
- - Fixed handling of invalid UTF-8
1197
- (https://github.com/fmtlib/fmt/pull/3038,
1198
- https://github.com/fmtlib/fmt/pull/3044,
1199
- https://github.com/fmtlib/fmt/pull/3056).
1200
- Thanks @phprus and @skeeto.
1201
-
1202
- - Improved Unicode support in `ostream` overloads of `print`
1203
- (https://github.com/fmtlib/fmt/pull/2994,
1204
- https://github.com/fmtlib/fmt/pull/3001,
1205
- https://github.com/fmtlib/fmt/pull/3025). Thanks @dimztimz.
1206
-
1207
- - Fixed handling of the sign specifier in localized formatting on
1208
- systems with 32-bit `wchar_t`
1209
- (https://github.com/fmtlib/fmt/issues/3041).
1210
-
1211
- - Added support for wide streams to `fmt::streamed`
1212
- (https://github.com/fmtlib/fmt/pull/2994). Thanks @phprus.
1213
-
1214
- - Added the `n` specifier that disables the output of delimiters when
1215
- formatting ranges (https://github.com/fmtlib/fmt/pull/2981,
1216
- https://github.com/fmtlib/fmt/pull/2983). For example
1217
- ([godbolt](https://godbolt.org/z/roKqGdj8c)):
1218
-
1219
- ```c++
1220
- #include <fmt/ranges.h>
1221
- #include <vector>
1222
-
1223
- int main() {
1224
- auto v = std::vector{1, 2, 3};
1225
- fmt::print("{:n}\n", v); // prints 1, 2, 3
1226
- }
1227
- ```
1228
-
1229
- Thanks @BRevzin.
1230
-
1231
- - Worked around problematic `std::string_view` constructors introduced
1232
- in C++23 (https://github.com/fmtlib/fmt/issues/3030,
1233
- https://github.com/fmtlib/fmt/issues/3050). Thanks @strega-nil-ms.
1234
-
1235
- - Improve handling (exclusion) of recursive ranges
1236
- (https://github.com/fmtlib/fmt/issues/2968,
1237
- https://github.com/fmtlib/fmt/pull/2974). Thanks @Dani-Hub.
1238
-
1239
- - Improved error reporting in format string compilation
1240
- (https://github.com/fmtlib/fmt/issues/3055).
1241
-
1242
- - Improved the implementation of
1243
- [Dragonbox](https://github.com/jk-jeon/dragonbox), the algorithm
1244
- used for the default floating-point formatting
1245
- (https://github.com/fmtlib/fmt/pull/2984). Thanks @jk-jeon.
1246
-
1247
- - Fixed issues with floating-point formatting on exotic platforms.
1248
-
1249
- - Improved the implementation of chrono formatting
1250
- (https://github.com/fmtlib/fmt/pull/3010). Thanks @phprus.
1251
-
1252
- - Improved documentation
1253
- (https://github.com/fmtlib/fmt/pull/2966,
1254
- https://github.com/fmtlib/fmt/pull/3009,
1255
- https://github.com/fmtlib/fmt/issues/3020,
1256
- https://github.com/fmtlib/fmt/pull/3037).
1257
- Thanks @mwinterb, @jcelerier and @remiburtin.
1258
-
1259
- - Improved build configuration
1260
- (https://github.com/fmtlib/fmt/pull/2991,
1261
- https://github.com/fmtlib/fmt/pull/2995,
1262
- https://github.com/fmtlib/fmt/issues/3004,
1263
- https://github.com/fmtlib/fmt/pull/3007,
1264
- https://github.com/fmtlib/fmt/pull/3040).
1265
- Thanks @dimztimz and @hwhsu1231.
1266
-
1267
- - Fixed various warnings and compilation issues
1268
- (https://github.com/fmtlib/fmt/issues/2969,
1269
- https://github.com/fmtlib/fmt/pull/2971,
1270
- https://github.com/fmtlib/fmt/issues/2975,
1271
- https://github.com/fmtlib/fmt/pull/2982,
1272
- https://github.com/fmtlib/fmt/pull/2985,
1273
- https://github.com/fmtlib/fmt/issues/2988,
1274
- https://github.com/fmtlib/fmt/issues/2989,
1275
- https://github.com/fmtlib/fmt/issues/3000,
1276
- https://github.com/fmtlib/fmt/issues/3006,
1277
- https://github.com/fmtlib/fmt/issues/3014,
1278
- https://github.com/fmtlib/fmt/issues/3015,
1279
- https://github.com/fmtlib/fmt/pull/3021,
1280
- https://github.com/fmtlib/fmt/issues/3023,
1281
- https://github.com/fmtlib/fmt/pull/3024,
1282
- https://github.com/fmtlib/fmt/pull/3029,
1283
- https://github.com/fmtlib/fmt/pull/3043,
1284
- https://github.com/fmtlib/fmt/issues/3052,
1285
- https://github.com/fmtlib/fmt/pull/3053,
1286
- https://github.com/fmtlib/fmt/pull/3054).
1287
- Thanks @h-friederich, @dimztimz, @olupton, @bernhardmgruber and @phprus.
1288
-
1289
- # 9.0.0 - 2022-07-04
1290
-
1291
- - Switched to the internal floating point formatter for all decimal
1292
- presentation formats. In particular this results in consistent
1293
- rounding on all platforms and removing the `s[n]printf` fallback for
1294
- decimal FP formatting.
1295
-
1296
- - Compile-time floating point formatting no longer requires the
1297
- header-only mode. For example
1298
- ([godbolt](https://godbolt.org/z/G37PTeG3b)):
1299
-
1300
- ```c++
1301
- #include <array>
1302
- #include <fmt/compile.h>
1303
-
1304
- consteval auto compile_time_dtoa(double value) -> std::array<char, 10> {
1305
- auto result = std::array<char, 10>();
1306
- fmt::format_to(result.data(), FMT_COMPILE("{}"), value);
1307
- return result;
1308
- }
1309
-
1310
- constexpr auto answer = compile_time_dtoa(0.42);
1311
- ```
1312
-
1313
- works with the default settings.
1314
-
1315
- - Improved the implementation of
1316
- [Dragonbox](https://github.com/jk-jeon/dragonbox), the algorithm
1317
- used for the default floating-point formatting
1318
- (https://github.com/fmtlib/fmt/pull/2713,
1319
- https://github.com/fmtlib/fmt/pull/2750). Thanks @jk-jeon.
1320
-
1321
- - Made `fmt::to_string` work with `__float128`. This uses the internal
1322
- FP formatter and works even on system without `__float128` support
1323
- in `[s]printf`.
1324
-
1325
- - Disabled automatic `std::ostream` insertion operator (`operator<<`)
1326
- discovery when `fmt/ostream.h` is included to prevent ODR
1327
- violations. You can get the old behavior by defining
1328
- `FMT_DEPRECATED_OSTREAM` but this will be removed in the next major
1329
- release. Use `fmt::streamed` or `fmt::ostream_formatter` to enable
1330
- formatting via `std::ostream` instead.
1331
-
1332
- - Added `fmt::ostream_formatter` that can be used to write `formatter`
1333
- specializations that perform formatting via `std::ostream`. For
1334
- example ([godbolt](https://godbolt.org/z/5sEc5qMsf)):
1335
-
1336
- ```c++
1337
- #include <fmt/ostream.h>
1338
-
1339
- struct date {
1340
- int year, month, day;
1341
-
1342
- friend std::ostream& operator<<(std::ostream& os, const date& d) {
1343
- return os << d.year << '-' << d.month << '-' << d.day;
1344
- }
1345
- };
1346
-
1347
- template <> struct fmt::formatter<date> : ostream_formatter {};
1348
-
1349
- std::string s = fmt::format("The date is {}", date{2012, 12, 9});
1350
- // s == "The date is 2012-12-9"
1351
- ```
1352
-
1353
- - Added the `fmt::streamed` function that takes an object and formats
1354
- it via `std::ostream`. For example
1355
- ([godbolt](https://godbolt.org/z/5G3346G1f)):
1356
-
1357
- ```c++
1358
- #include <thread>
1359
- #include <fmt/ostream.h>
1360
-
1361
- int main() {
1362
- fmt::print("Current thread id: {}\n",
1363
- fmt::streamed(std::this_thread::get_id()));
1364
- }
1365
- ```
1366
-
1367
- Note that `fmt/std.h` provides a `formatter` specialization for
1368
- `std::thread::id` so you don\'t need to format it via
1369
- `std::ostream`.
1370
-
1371
- - Deprecated implicit conversions of unscoped enums to integers for
1372
- consistency with scoped enums.
1373
-
1374
- - Added an argument-dependent lookup based `format_as` extension API
1375
- to simplify formatting of enums.
1376
-
1377
- - Added experimental `std::variant` formatting support
1378
- (https://github.com/fmtlib/fmt/pull/2941). For example
1379
- ([godbolt](https://godbolt.org/z/KG9z6cq68)):
1380
-
1381
- ```c++
1382
- #include <variant>
1383
- #include <fmt/std.h>
1384
-
1385
- int main() {
1386
- auto v = std::variant<int, std::string>(42);
1387
- fmt::print("{}\n", v);
1388
- }
1389
- ```
1390
-
1391
- prints:
1392
-
1393
- variant(42)
1394
-
1395
- Thanks @jehelset.
1396
-
1397
- - Added experimental `std::filesystem::path` formatting support
1398
- (https://github.com/fmtlib/fmt/issues/2865,
1399
- https://github.com/fmtlib/fmt/pull/2902,
1400
- https://github.com/fmtlib/fmt/issues/2917,
1401
- https://github.com/fmtlib/fmt/pull/2918). For example
1402
- ([godbolt](https://godbolt.org/z/o44dMexEb)):
1403
-
1404
- ```c++
1405
- #include <filesystem>
1406
- #include <fmt/std.h>
1407
-
1408
- int main() {
1409
- fmt::print("There is no place like {}.", std::filesystem::path("/home"));
1410
- }
1411
- ```
1412
-
1413
- prints:
1414
-
1415
- There is no place like "/home".
1416
-
1417
- Thanks @phprus.
1418
-
1419
- - Added a `std::thread::id` formatter to `fmt/std.h`. For example
1420
- ([godbolt](https://godbolt.org/z/j1azbYf3E)):
1421
-
1422
- ```c++
1423
- #include <thread>
1424
- #include <fmt/std.h>
1425
-
1426
- int main() {
1427
- fmt::print("Current thread id: {}\n", std::this_thread::get_id());
1428
- }
1429
- ```
1430
-
1431
- - Added `fmt::styled` that applies a text style to an individual
1432
- argument (https://github.com/fmtlib/fmt/pull/2793). For
1433
- example ([godbolt](https://godbolt.org/z/vWGW7v5M6)):
1434
-
1435
- ```c++
1436
- #include <fmt/chrono.h>
1437
- #include <fmt/color.h>
1438
-
1439
- int main() {
1440
- auto now = std::chrono::system_clock::now();
1441
- fmt::print(
1442
- "[{}] {}: {}\n",
1443
- fmt::styled(now, fmt::emphasis::bold),
1444
- fmt::styled("error", fg(fmt::color::red)),
1445
- "something went wrong");
1446
- }
1447
- ```
1448
-
1449
- prints
1450
-
1451
- ![](https://user-images.githubusercontent.com/576385/175071215-12809244-dab0-4005-96d8-7cd911c964d5.png)
1452
-
1453
- Thanks @rbrugo.
1454
-
1455
- - Made `fmt::print` overload for text styles correctly handle UTF-8
1456
- (https://github.com/fmtlib/fmt/issues/2681,
1457
- https://github.com/fmtlib/fmt/pull/2701). Thanks @AlexGuteniev.
1458
-
1459
- - Fixed Unicode handling when writing to an ostream.
1460
-
1461
- - Added support for nested specifiers to range formatting
1462
- (https://github.com/fmtlib/fmt/pull/2673). For example
1463
- ([godbolt](https://godbolt.org/z/xd3Gj38cf)):
1464
-
1465
- ```c++
1466
- #include <vector>
1467
- #include <fmt/ranges.h>
1468
-
1469
- int main() {
1470
- fmt::print("{::#x}\n", std::vector{10, 20, 30});
1471
- }
1472
- ```
1473
-
1474
- prints `[0xa, 0x14, 0x1e]`.
1475
-
1476
- Thanks @BRevzin.
1477
-
1478
- - Implemented escaping of wide strings in ranges
1479
- (https://github.com/fmtlib/fmt/pull/2904). Thanks @phprus.
1480
-
1481
- - Added support for ranges with `begin` / `end` found via the
1482
- argument-dependent lookup
1483
- (https://github.com/fmtlib/fmt/pull/2807). Thanks @rbrugo.
1484
-
1485
- - Fixed formatting of certain kinds of ranges of ranges
1486
- (https://github.com/fmtlib/fmt/pull/2787). Thanks @BRevzin.
1487
-
1488
- - Fixed handling of maps with element types other than `std::pair`
1489
- (https://github.com/fmtlib/fmt/pull/2944). Thanks @BrukerJWD.
1490
-
1491
- - Made tuple formatter enabled only if elements are formattable
1492
- (https://github.com/fmtlib/fmt/issues/2939,
1493
- https://github.com/fmtlib/fmt/pull/2940). Thanks @jehelset.
1494
-
1495
- - Made `fmt::join` compatible with format string compilation
1496
- (https://github.com/fmtlib/fmt/issues/2719,
1497
- https://github.com/fmtlib/fmt/pull/2720). Thanks @phprus.
1498
-
1499
- - Made compile-time checks work with named arguments of custom types
1500
- and `std::ostream` `print` overloads
1501
- (https://github.com/fmtlib/fmt/issues/2816,
1502
- https://github.com/fmtlib/fmt/issues/2817,
1503
- https://github.com/fmtlib/fmt/pull/2819). Thanks @timsong-cpp.
1504
-
1505
- - Removed `make_args_checked` because it is no longer needed for
1506
- compile-time checks
1507
- (https://github.com/fmtlib/fmt/pull/2760). Thanks @phprus.
1508
-
1509
- - Removed the following deprecated APIs: `_format`, `arg_join`, the
1510
- `format_to` overload that takes a memory buffer, `[v]fprintf` that
1511
- takes an `ostream`.
1512
-
1513
- - Removed the deprecated implicit conversion of `[const] signed char*`
1514
- and `[const] unsigned char*` to C strings.
1515
-
1516
- - Removed the deprecated `fmt/locale.h`.
1517
-
1518
- - Replaced the deprecated `fileno()` with `descriptor()` in
1519
- `buffered_file`.
1520
-
1521
- - Moved `to_string_view` to the `detail` namespace since it\'s an
1522
- implementation detail.
1523
-
1524
- - Made access mode of a created file consistent with `fopen` by
1525
- setting `S_IWGRP` and `S_IWOTH`
1526
- (https://github.com/fmtlib/fmt/pull/2733). Thanks @arogge.
1527
-
1528
- - Removed a redundant buffer resize when formatting to `std::ostream`
1529
- (https://github.com/fmtlib/fmt/issues/2842,
1530
- https://github.com/fmtlib/fmt/pull/2843). Thanks @jcelerier.
1531
-
1532
- - Made precision computation for strings consistent with width
1533
- (https://github.com/fmtlib/fmt/issues/2888).
1534
-
1535
- - Fixed handling of locale separators in floating point formatting
1536
- (https://github.com/fmtlib/fmt/issues/2830).
1537
-
1538
- - Made sign specifiers work with `__int128_t`
1539
- (https://github.com/fmtlib/fmt/issues/2773).
1540
-
1541
- - Improved support for systems such as CHERI with extra data stored in
1542
- pointers (https://github.com/fmtlib/fmt/pull/2932).
1543
- Thanks @davidchisnall.
1544
-
1545
- - Improved documentation
1546
- (https://github.com/fmtlib/fmt/pull/2706,
1547
- https://github.com/fmtlib/fmt/pull/2712,
1548
- https://github.com/fmtlib/fmt/pull/2789,
1549
- https://github.com/fmtlib/fmt/pull/2803,
1550
- https://github.com/fmtlib/fmt/pull/2805,
1551
- https://github.com/fmtlib/fmt/pull/2815,
1552
- https://github.com/fmtlib/fmt/pull/2924).
1553
- Thanks @BRevzin, @Pokechu22, @setoye, @rtobar, @rbrugo, @anoonD and
1554
- @leha-bot.
1555
-
1556
- - Improved build configuration
1557
- (https://github.com/fmtlib/fmt/pull/2766,
1558
- https://github.com/fmtlib/fmt/pull/2772,
1559
- https://github.com/fmtlib/fmt/pull/2836,
1560
- https://github.com/fmtlib/fmt/pull/2852,
1561
- https://github.com/fmtlib/fmt/pull/2907,
1562
- https://github.com/fmtlib/fmt/pull/2913,
1563
- https://github.com/fmtlib/fmt/pull/2914).
1564
- Thanks @kambala-decapitator, @mattiasljungstrom, @kieselnb, @nathannaveen
1565
- and @Vertexwahn.
1566
-
1567
- - Fixed various warnings and compilation issues
1568
- (https://github.com/fmtlib/fmt/issues/2408,
1569
- https://github.com/fmtlib/fmt/issues/2507,
1570
- https://github.com/fmtlib/fmt/issues/2697,
1571
- https://github.com/fmtlib/fmt/issues/2715,
1572
- https://github.com/fmtlib/fmt/issues/2717,
1573
- https://github.com/fmtlib/fmt/pull/2722,
1574
- https://github.com/fmtlib/fmt/pull/2724,
1575
- https://github.com/fmtlib/fmt/pull/2725,
1576
- https://github.com/fmtlib/fmt/issues/2726,
1577
- https://github.com/fmtlib/fmt/pull/2728,
1578
- https://github.com/fmtlib/fmt/pull/2732,
1579
- https://github.com/fmtlib/fmt/issues/2738,
1580
- https://github.com/fmtlib/fmt/pull/2742,
1581
- https://github.com/fmtlib/fmt/issues/2744,
1582
- https://github.com/fmtlib/fmt/issues/2745,
1583
- https://github.com/fmtlib/fmt/issues/2746,
1584
- https://github.com/fmtlib/fmt/issues/2754,
1585
- https://github.com/fmtlib/fmt/pull/2755,
1586
- https://github.com/fmtlib/fmt/issues/2757,
1587
- https://github.com/fmtlib/fmt/pull/2758,
1588
- https://github.com/fmtlib/fmt/issues/2761,
1589
- https://github.com/fmtlib/fmt/pull/2762,
1590
- https://github.com/fmtlib/fmt/issues/2763,
1591
- https://github.com/fmtlib/fmt/pull/2765,
1592
- https://github.com/fmtlib/fmt/issues/2769,
1593
- https://github.com/fmtlib/fmt/pull/2770,
1594
- https://github.com/fmtlib/fmt/issues/2771,
1595
- https://github.com/fmtlib/fmt/issues/2777,
1596
- https://github.com/fmtlib/fmt/pull/2779,
1597
- https://github.com/fmtlib/fmt/pull/2782,
1598
- https://github.com/fmtlib/fmt/pull/2783,
1599
- https://github.com/fmtlib/fmt/issues/2794,
1600
- https://github.com/fmtlib/fmt/issues/2796,
1601
- https://github.com/fmtlib/fmt/pull/2797,
1602
- https://github.com/fmtlib/fmt/pull/2801,
1603
- https://github.com/fmtlib/fmt/pull/2802,
1604
- https://github.com/fmtlib/fmt/issues/2808,
1605
- https://github.com/fmtlib/fmt/issues/2818,
1606
- https://github.com/fmtlib/fmt/pull/2819,
1607
- https://github.com/fmtlib/fmt/issues/2829,
1608
- https://github.com/fmtlib/fmt/issues/2835,
1609
- https://github.com/fmtlib/fmt/issues/2848,
1610
- https://github.com/fmtlib/fmt/issues/2860,
1611
- https://github.com/fmtlib/fmt/pull/2861,
1612
- https://github.com/fmtlib/fmt/pull/2882,
1613
- https://github.com/fmtlib/fmt/issues/2886,
1614
- https://github.com/fmtlib/fmt/issues/2891,
1615
- https://github.com/fmtlib/fmt/pull/2892,
1616
- https://github.com/fmtlib/fmt/issues/2895,
1617
- https://github.com/fmtlib/fmt/issues/2896,
1618
- https://github.com/fmtlib/fmt/pull/2903,
1619
- https://github.com/fmtlib/fmt/issues/2906,
1620
- https://github.com/fmtlib/fmt/issues/2908,
1621
- https://github.com/fmtlib/fmt/pull/2909,
1622
- https://github.com/fmtlib/fmt/issues/2920,
1623
- https://github.com/fmtlib/fmt/pull/2922,
1624
- https://github.com/fmtlib/fmt/pull/2927,
1625
- https://github.com/fmtlib/fmt/pull/2929,
1626
- https://github.com/fmtlib/fmt/issues/2936,
1627
- https://github.com/fmtlib/fmt/pull/2937,
1628
- https://github.com/fmtlib/fmt/pull/2938,
1629
- https://github.com/fmtlib/fmt/pull/2951,
1630
- https://github.com/fmtlib/fmt/issues/2954,
1631
- https://github.com/fmtlib/fmt/pull/2957,
1632
- https://github.com/fmtlib/fmt/issues/2958,
1633
- https://github.com/fmtlib/fmt/pull/2960).
1634
- Thanks @matrackif @Tobi823, @ivan-volnov, @VasiliPupkin256,
1635
- @federico-busato, @barcharcraz, @jk-jeon, @HazardyKnusperkeks, @dalboris,
1636
- @seanm, @gsjaardema, @timsong-cpp, @seanm, @frithrah, @chronoxor, @Agga,
1637
- @madmaxoft, @JurajX, @phprus and @Dani-Hub.
1638
-
1639
- # 8.1.1 - 2022-01-06
1640
-
1641
- - Restored ABI compatibility with version 8.0.x
1642
- (https://github.com/fmtlib/fmt/issues/2695,
1643
- https://github.com/fmtlib/fmt/pull/2696). Thanks @saraedum.
1644
- - Fixed chrono formatting on big endian systems
1645
- (https://github.com/fmtlib/fmt/issues/2698,
1646
- https://github.com/fmtlib/fmt/pull/2699).
1647
- Thanks @phprus and @xvitaly.
1648
- - Fixed a linkage error with mingw
1649
- (https://github.com/fmtlib/fmt/issues/2691,
1650
- https://github.com/fmtlib/fmt/pull/2692). Thanks @rbberger.
1651
-
1652
- # 8.1.0 - 2022-01-02
1653
-
1654
- - Optimized chrono formatting
1655
- (https://github.com/fmtlib/fmt/pull/2500,
1656
- https://github.com/fmtlib/fmt/pull/2537,
1657
- https://github.com/fmtlib/fmt/issues/2541,
1658
- https://github.com/fmtlib/fmt/pull/2544,
1659
- https://github.com/fmtlib/fmt/pull/2550,
1660
- https://github.com/fmtlib/fmt/pull/2551,
1661
- https://github.com/fmtlib/fmt/pull/2576,
1662
- https://github.com/fmtlib/fmt/issues/2577,
1663
- https://github.com/fmtlib/fmt/pull/2586,
1664
- https://github.com/fmtlib/fmt/pull/2591,
1665
- https://github.com/fmtlib/fmt/pull/2594,
1666
- https://github.com/fmtlib/fmt/pull/2602,
1667
- https://github.com/fmtlib/fmt/pull/2617,
1668
- https://github.com/fmtlib/fmt/issues/2628,
1669
- https://github.com/fmtlib/fmt/pull/2633,
1670
- https://github.com/fmtlib/fmt/issues/2670,
1671
- https://github.com/fmtlib/fmt/pull/2671).
1672
-
1673
- Processing of some specifiers such as `%z` and `%Y` is now up to
1674
- 10-20 times faster, for example on GCC 11 with libstdc++:
1675
-
1676
- ----------------------------------------------------------------------------
1677
- Benchmark Before After
1678
- ----------------------------------------------------------------------------
1679
- FMTFormatter_z 261 ns 26.3 ns
1680
- FMTFormatterCompile_z 246 ns 11.6 ns
1681
- FMTFormatter_Y 263 ns 26.1 ns
1682
- FMTFormatterCompile_Y 244 ns 10.5 ns
1683
- ----------------------------------------------------------------------------
1684
-
1685
- Thanks @phprus and @toughengineer.
1686
-
1687
- - Implemented subsecond formatting for chrono durations
1688
- (https://github.com/fmtlib/fmt/pull/2623). For example
1689
- ([godbolt](https://godbolt.org/z/es7vWTETe)):
1690
-
1691
- ```c++
1692
- #include <fmt/chrono.h>
1693
-
1694
- int main() {
1695
- fmt::print("{:%S}", std::chrono::milliseconds(1234));
1696
- }
1697
- ```
1698
-
1699
- prints \"01.234\".
1700
-
1701
- Thanks @matrackif.
1702
-
1703
- - Fixed handling of precision 0 when formatting chrono durations
1704
- (https://github.com/fmtlib/fmt/issues/2587,
1705
- https://github.com/fmtlib/fmt/pull/2588). Thanks @lukester1975.
1706
-
1707
- - Fixed an overflow on invalid inputs in the `tm` formatter
1708
- (https://github.com/fmtlib/fmt/pull/2564). Thanks @phprus.
1709
-
1710
- - Added `fmt::group_digits` that formats integers with a non-localized
1711
- digit separator (comma) for groups of three digits. For example
1712
- ([godbolt](https://godbolt.org/z/TxGxG9Poq)):
1713
-
1714
- ```c++
1715
- #include <fmt/format.h>
1716
-
1717
- int main() {
1718
- fmt::print("{} dollars", fmt::group_digits(1000000));
1719
- }
1720
- ```
1721
-
1722
- prints \"1,000,000 dollars\".
1723
-
1724
- - Added support for faint, conceal, reverse and blink text styles
1725
- (https://github.com/fmtlib/fmt/pull/2394):
1726
-
1727
- <https://user-images.githubusercontent.com/576385/147710227-c68f5317-f8fa-42c3-9123-7c4ba3c398cb.mp4>
1728
-
1729
- Thanks @benit8 and @data-man.
1730
-
1731
- - Added experimental support for compile-time floating point
1732
- formatting (https://github.com/fmtlib/fmt/pull/2426,
1733
- https://github.com/fmtlib/fmt/pull/2470). It is currently
1734
- limited to the header-only mode. Thanks @alexezeder.
1735
-
1736
- - Added UDL-based named argument support to compile-time format string
1737
- checks (https://github.com/fmtlib/fmt/issues/2640,
1738
- https://github.com/fmtlib/fmt/pull/2649). For example
1739
- ([godbolt](https://godbolt.org/z/ohGbbvonv)):
1740
-
1741
- ```c++
1742
- #include <fmt/format.h>
1743
-
1744
- int main() {
1745
- using namespace fmt::literals;
1746
- fmt::print("{answer:s}", "answer"_a=42);
1747
- }
1748
- ```
1749
-
1750
- gives a compile-time error on compilers with C++20 `consteval` and
1751
- non-type template parameter support (gcc 10+) because `s` is not a
1752
- valid format specifier for an integer.
1753
-
1754
- Thanks @alexezeder.
1755
-
1756
- - Implemented escaping of string range elements. For example
1757
- ([godbolt](https://godbolt.org/z/rKvM1vKf3)):
1758
-
1759
- ```c++
1760
- #include <fmt/ranges.h>
1761
- #include <vector>
1762
-
1763
- int main() {
1764
- fmt::print("{}", std::vector<std::string>{"\naan"});
1765
- }
1766
- ```
1767
-
1768
- is now printed as:
1769
-
1770
- ["\naan"]
1771
-
1772
- instead of:
1773
-
1774
- ["
1775
- aan"]
1776
-
1777
- - Added an experimental `?` specifier for escaping strings.
1778
- (https://github.com/fmtlib/fmt/pull/2674). Thanks @BRevzin.
1779
-
1780
- - Switched to JSON-like representation of maps and sets for
1781
- consistency with Python\'s `str.format`. For example
1782
- ([godbolt](https://godbolt.org/z/seKjoY9W5)):
1783
-
1784
- ```c++
1785
- #include <fmt/ranges.h>
1786
- #include <map>
1787
-
1788
- int main() {
1789
- fmt::print("{}", std::map<std::string, int>{{"answer", 42}});
1790
- }
1791
- ```
1792
-
1793
- is now printed as:
1794
-
1795
- {"answer": 42}
1796
-
1797
- - Extended `fmt::join` to support C++20-only ranges
1798
- (https://github.com/fmtlib/fmt/pull/2549). Thanks @BRevzin.
1799
-
1800
- - Optimized handling of non-const-iterable ranges and implemented
1801
- initial support for non-const-formattable types.
1802
-
1803
- - Disabled implicit conversions of scoped enums to integers that was
1804
- accidentally introduced in earlier versions
1805
- (https://github.com/fmtlib/fmt/pull/1841).
1806
-
1807
- - Deprecated implicit conversion of `[const] signed char*` and
1808
- `[const] unsigned char*` to C strings.
1809
-
1810
- - Deprecated `_format`, a legacy UDL-based format API
1811
- (https://github.com/fmtlib/fmt/pull/2646). Thanks @alexezeder.
1812
-
1813
- - Marked `format`, `formatted_size` and `to_string` as `[[nodiscard]]`
1814
- (https://github.com/fmtlib/fmt/pull/2612). @0x8000-0000.
1815
-
1816
- - Added missing diagnostic when trying to format function and member
1817
- pointers as well as objects convertible to pointers which is
1818
- explicitly disallowed
1819
- (https://github.com/fmtlib/fmt/issues/2598,
1820
- https://github.com/fmtlib/fmt/pull/2609,
1821
- https://github.com/fmtlib/fmt/pull/2610). Thanks @AlexGuteniev.
1822
-
1823
- - Optimized writing to a contiguous buffer with `format_to_n`
1824
- (https://github.com/fmtlib/fmt/pull/2489). Thanks @Roman-Koshelev.
1825
-
1826
- - Optimized writing to non-`char` buffers
1827
- (https://github.com/fmtlib/fmt/pull/2477). Thanks @Roman-Koshelev.
1828
-
1829
- - Decimal point is now localized when using the `L` specifier.
1830
-
1831
- - Improved floating point formatter implementation
1832
- (https://github.com/fmtlib/fmt/pull/2498,
1833
- https://github.com/fmtlib/fmt/pull/2499). Thanks @Roman-Koshelev.
1834
-
1835
- - Fixed handling of very large precision in fixed format
1836
- (https://github.com/fmtlib/fmt/pull/2616).
1837
-
1838
- - Made a table of cached powers used in FP formatting static
1839
- (https://github.com/fmtlib/fmt/pull/2509). Thanks @jk-jeon.
1840
-
1841
- - Resolved a lookup ambiguity with C++20 format-related functions due
1842
- to ADL (https://github.com/fmtlib/fmt/issues/2639,
1843
- https://github.com/fmtlib/fmt/pull/2641). Thanks @mkurdej.
1844
-
1845
- - Removed unnecessary inline namespace qualification
1846
- (https://github.com/fmtlib/fmt/issues/2642,
1847
- https://github.com/fmtlib/fmt/pull/2643). Thanks @mkurdej.
1848
-
1849
- - Implemented argument forwarding in `format_to_n`
1850
- (https://github.com/fmtlib/fmt/issues/2462,
1851
- https://github.com/fmtlib/fmt/pull/2463). Thanks @owent.
1852
-
1853
- - Fixed handling of implicit conversions in `fmt::to_string` and
1854
- format string compilation
1855
- (https://github.com/fmtlib/fmt/issues/2565).
1856
-
1857
- - Changed the default access mode of files created by
1858
- `fmt::output_file` to `-rw-r--r--` for consistency with `fopen`
1859
- (https://github.com/fmtlib/fmt/issues/2530).
1860
-
1861
- - Make `fmt::ostream::flush` public
1862
- (https://github.com/fmtlib/fmt/issues/2435).
1863
-
1864
- - Improved C++14/17 attribute detection
1865
- (https://github.com/fmtlib/fmt/pull/2615). Thanks @AlexGuteniev.
1866
-
1867
- - Improved `consteval` detection for MSVC
1868
- (https://github.com/fmtlib/fmt/pull/2559). Thanks @DanielaE.
1869
-
1870
- - Improved documentation
1871
- (https://github.com/fmtlib/fmt/issues/2406,
1872
- https://github.com/fmtlib/fmt/pull/2446,
1873
- https://github.com/fmtlib/fmt/issues/2493,
1874
- https://github.com/fmtlib/fmt/issues/2513,
1875
- https://github.com/fmtlib/fmt/pull/2515,
1876
- https://github.com/fmtlib/fmt/issues/2522,
1877
- https://github.com/fmtlib/fmt/pull/2562,
1878
- https://github.com/fmtlib/fmt/pull/2575,
1879
- https://github.com/fmtlib/fmt/pull/2606,
1880
- https://github.com/fmtlib/fmt/pull/2620,
1881
- https://github.com/fmtlib/fmt/issues/2676).
1882
- Thanks @sobolevn, @UnePierre, @zhsj, @phprus, @ericcurtin and @Lounarok.
1883
-
1884
- - Improved fuzzers and added a fuzzer for chrono timepoint formatting
1885
- (https://github.com/fmtlib/fmt/pull/2461,
1886
- https://github.com/fmtlib/fmt/pull/2469). @pauldreik,
1887
-
1888
- - Added the `FMT_SYSTEM_HEADERS` CMake option setting which marks
1889
- {fmt}\'s headers as system. It can be used to suppress warnings
1890
- (https://github.com/fmtlib/fmt/issues/2644,
1891
- https://github.com/fmtlib/fmt/pull/2651). Thanks @alexezeder.
1892
-
1893
- - Added the Bazel build system support
1894
- (https://github.com/fmtlib/fmt/pull/2505,
1895
- https://github.com/fmtlib/fmt/pull/2516). Thanks @Vertexwahn.
1896
-
1897
- - Improved build configuration and tests
1898
- (https://github.com/fmtlib/fmt/issues/2437,
1899
- https://github.com/fmtlib/fmt/pull/2558,
1900
- https://github.com/fmtlib/fmt/pull/2648,
1901
- https://github.com/fmtlib/fmt/pull/2650,
1902
- https://github.com/fmtlib/fmt/pull/2663,
1903
- https://github.com/fmtlib/fmt/pull/2677).
1904
- Thanks @DanielaE, @alexezeder and @phprus.
1905
-
1906
- - Fixed various warnings and compilation issues
1907
- (https://github.com/fmtlib/fmt/pull/2353,
1908
- https://github.com/fmtlib/fmt/pull/2356,
1909
- https://github.com/fmtlib/fmt/pull/2399,
1910
- https://github.com/fmtlib/fmt/issues/2408,
1911
- https://github.com/fmtlib/fmt/pull/2414,
1912
- https://github.com/fmtlib/fmt/pull/2427,
1913
- https://github.com/fmtlib/fmt/pull/2432,
1914
- https://github.com/fmtlib/fmt/pull/2442,
1915
- https://github.com/fmtlib/fmt/pull/2434,
1916
- https://github.com/fmtlib/fmt/issues/2439,
1917
- https://github.com/fmtlib/fmt/pull/2447,
1918
- https://github.com/fmtlib/fmt/pull/2450,
1919
- https://github.com/fmtlib/fmt/issues/2455,
1920
- https://github.com/fmtlib/fmt/issues/2465,
1921
- https://github.com/fmtlib/fmt/issues/2472,
1922
- https://github.com/fmtlib/fmt/issues/2474,
1923
- https://github.com/fmtlib/fmt/pull/2476,
1924
- https://github.com/fmtlib/fmt/issues/2478,
1925
- https://github.com/fmtlib/fmt/issues/2479,
1926
- https://github.com/fmtlib/fmt/issues/2481,
1927
- https://github.com/fmtlib/fmt/pull/2482,
1928
- https://github.com/fmtlib/fmt/pull/2483,
1929
- https://github.com/fmtlib/fmt/issues/2490,
1930
- https://github.com/fmtlib/fmt/pull/2491,
1931
- https://github.com/fmtlib/fmt/pull/2510,
1932
- https://github.com/fmtlib/fmt/pull/2518,
1933
- https://github.com/fmtlib/fmt/issues/2528,
1934
- https://github.com/fmtlib/fmt/pull/2529,
1935
- https://github.com/fmtlib/fmt/pull/2539,
1936
- https://github.com/fmtlib/fmt/issues/2540,
1937
- https://github.com/fmtlib/fmt/pull/2545,
1938
- https://github.com/fmtlib/fmt/pull/2555,
1939
- https://github.com/fmtlib/fmt/issues/2557,
1940
- https://github.com/fmtlib/fmt/issues/2570,
1941
- https://github.com/fmtlib/fmt/pull/2573,
1942
- https://github.com/fmtlib/fmt/pull/2582,
1943
- https://github.com/fmtlib/fmt/issues/2605,
1944
- https://github.com/fmtlib/fmt/pull/2611,
1945
- https://github.com/fmtlib/fmt/pull/2647,
1946
- https://github.com/fmtlib/fmt/issues/2627,
1947
- https://github.com/fmtlib/fmt/pull/2630,
1948
- https://github.com/fmtlib/fmt/issues/2635,
1949
- https://github.com/fmtlib/fmt/issues/2638,
1950
- https://github.com/fmtlib/fmt/issues/2653,
1951
- https://github.com/fmtlib/fmt/issues/2654,
1952
- https://github.com/fmtlib/fmt/issues/2661,
1953
- https://github.com/fmtlib/fmt/pull/2664,
1954
- https://github.com/fmtlib/fmt/pull/2684).
1955
- Thanks @DanielaE, @mwinterb, @cdacamar, @TrebledJ, @bodomartin, @cquammen,
1956
- @white238, @mmarkeloff, @palacaze, @jcelerier, @mborn-adi, @BrukerJWD,
1957
- @spyridon97, @phprus, @oliverlee, @joshessman-llnl, @akohlmey, @timkalu,
1958
- @olupton, @Acretock, @alexezeder, @andrewcorrigan, @lucpelletier and
1959
- @HazardyKnusperkeks.
1960
-
1961
- # 8.0.1 - 2021-07-02
1962
-
1963
- - Fixed the version number in the inline namespace
1964
- (https://github.com/fmtlib/fmt/issues/2374).
1965
- - Added a missing presentation type check for `std::string`
1966
- (https://github.com/fmtlib/fmt/issues/2402).
1967
- - Fixed a linkage error when mixing code built with clang and gcc
1968
- (https://github.com/fmtlib/fmt/issues/2377).
1969
- - Fixed documentation issues
1970
- (https://github.com/fmtlib/fmt/pull/2396,
1971
- https://github.com/fmtlib/fmt/issues/2403,
1972
- https://github.com/fmtlib/fmt/issues/2406). Thanks @mkurdej.
1973
- - Removed dead code in FP formatter (
1974
- https://github.com/fmtlib/fmt/pull/2398). Thanks @javierhonduco.
1975
- - Fixed various warnings and compilation issues
1976
- (https://github.com/fmtlib/fmt/issues/2351,
1977
- https://github.com/fmtlib/fmt/issues/2359,
1978
- https://github.com/fmtlib/fmt/pull/2365,
1979
- https://github.com/fmtlib/fmt/issues/2368,
1980
- https://github.com/fmtlib/fmt/pull/2370,
1981
- https://github.com/fmtlib/fmt/pull/2376,
1982
- https://github.com/fmtlib/fmt/pull/2381,
1983
- https://github.com/fmtlib/fmt/pull/2382,
1984
- https://github.com/fmtlib/fmt/issues/2386,
1985
- https://github.com/fmtlib/fmt/pull/2389,
1986
- https://github.com/fmtlib/fmt/pull/2395,
1987
- https://github.com/fmtlib/fmt/pull/2397,
1988
- https://github.com/fmtlib/fmt/issues/2400,
1989
- https://github.com/fmtlib/fmt/issues/2401,
1990
- https://github.com/fmtlib/fmt/pull/2407).
1991
- Thanks @zx2c4, @AidanSun05, @mattiasljungstrom, @joemmett, @erengy,
1992
- @patlkli, @gsjaardema and @phprus.
1993
-
1994
- # 8.0.0 - 2021-06-21
1995
-
1996
- - Enabled compile-time format string checks by default. For example
1997
- ([godbolt](https://godbolt.org/z/sMxcohGjz)):
1998
-
1999
- ```c++
2000
- #include <fmt/core.h>
2001
-
2002
- int main() {
2003
- fmt::print("{:d}", "I am not a number");
2004
- }
2005
- ```
2006
-
2007
- gives a compile-time error on compilers with C++20 `consteval`
2008
- support (gcc 10+, clang 11+) because `d` is not a valid format
2009
- specifier for a string.
2010
-
2011
- To pass a runtime string wrap it in `fmt::runtime`:
2012
-
2013
- ```c++
2014
- fmt::print(fmt::runtime("{:d}"), "I am not a number");
2015
- ```
2016
-
2017
- - Added compile-time formatting
2018
- (https://github.com/fmtlib/fmt/pull/2019,
2019
- https://github.com/fmtlib/fmt/pull/2044,
2020
- https://github.com/fmtlib/fmt/pull/2056,
2021
- https://github.com/fmtlib/fmt/pull/2072,
2022
- https://github.com/fmtlib/fmt/pull/2075,
2023
- https://github.com/fmtlib/fmt/issues/2078,
2024
- https://github.com/fmtlib/fmt/pull/2129,
2025
- https://github.com/fmtlib/fmt/pull/2326). For example
2026
- ([godbolt](https://godbolt.org/z/Mxx9d89jM)):
2027
-
2028
- ```c++
2029
- #include <fmt/compile.h>
2030
-
2031
- consteval auto compile_time_itoa(int value) -> std::array<char, 10> {
2032
- auto result = std::array<char, 10>();
2033
- fmt::format_to(result.data(), FMT_COMPILE("{}"), value);
2034
- return result;
2035
- }
2036
-
2037
- constexpr auto answer = compile_time_itoa(42);
2038
- ```
2039
-
2040
- Most of the formatting functionality is available at compile time
2041
- with a notable exception of floating-point numbers and pointers.
2042
- Thanks @alexezeder.
2043
-
2044
- - Optimized handling of format specifiers during format string
2045
- compilation. For example, hexadecimal formatting (`"{:x}"`) is now
2046
- 3-7x faster than before when using `format_to` with format string
2047
- compilation and a stack-allocated buffer
2048
- (https://github.com/fmtlib/fmt/issues/1944).
2049
-
2050
- Before (7.1.3):
2051
-
2052
- ----------------------------------------------------------------------------
2053
- Benchmark Time CPU Iterations
2054
- ----------------------------------------------------------------------------
2055
- FMTCompileOld/0 15.5 ns 15.5 ns 43302898
2056
- FMTCompileOld/42 16.6 ns 16.6 ns 43278267
2057
- FMTCompileOld/273123 18.7 ns 18.6 ns 37035861
2058
- FMTCompileOld/9223372036854775807 19.4 ns 19.4 ns 35243000
2059
- ----------------------------------------------------------------------------
2060
-
2061
- After (8.x):
2062
-
2063
- ----------------------------------------------------------------------------
2064
- Benchmark Time CPU Iterations
2065
- ----------------------------------------------------------------------------
2066
- FMTCompileNew/0 1.99 ns 1.99 ns 360523686
2067
- FMTCompileNew/42 2.33 ns 2.33 ns 279865664
2068
- FMTCompileNew/273123 3.72 ns 3.71 ns 190230315
2069
- FMTCompileNew/9223372036854775807 5.28 ns 5.26 ns 130711631
2070
- ----------------------------------------------------------------------------
2071
-
2072
- It is even faster than `std::to_chars` from libc++ compiled with
2073
- clang on macOS:
2074
-
2075
- ----------------------------------------------------------------------------
2076
- Benchmark Time CPU Iterations
2077
- ----------------------------------------------------------------------------
2078
- ToChars/0 4.42 ns 4.41 ns 160196630
2079
- ToChars/42 5.00 ns 4.98 ns 140735201
2080
- ToChars/273123 7.26 ns 7.24 ns 95784130
2081
- ToChars/9223372036854775807 8.77 ns 8.75 ns 75872534
2082
- ----------------------------------------------------------------------------
2083
-
2084
- In other cases, especially involving `std::string` construction, the
2085
- speed up is usually lower because handling format specifiers takes a
2086
- smaller fraction of the total time.
2087
-
2088
- - Added the `_cf` user-defined literal to represent a compiled format
2089
- string. It can be used instead of the `FMT_COMPILE` macro
2090
- (https://github.com/fmtlib/fmt/pull/2043,
2091
- https://github.com/fmtlib/fmt/pull/2242):
2092
-
2093
- ```c++
2094
- #include <fmt/compile.h>
2095
-
2096
- using namespace fmt::literals;
2097
- auto s = fmt::format(FMT_COMPILE("{}"), 42); // 🙁 not modern
2098
- auto s = fmt::format("{}"_cf, 42); // 🙂 modern as hell
2099
- ```
2100
-
2101
- It requires compiler support for class types in non-type template
2102
- parameters (a C++20 feature) which is available in GCC 9.3+.
2103
- Thanks @alexezeder.
2104
-
2105
- - Format string compilation now requires `format` functions of
2106
- `formatter` specializations for user-defined types to be `const`:
2107
-
2108
- ```c++
2109
- template <> struct fmt::formatter<my_type>: formatter<string_view> {
2110
- template <typename FormatContext>
2111
- auto format(my_type obj, FormatContext& ctx) const { // Note const here.
2112
- // ...
2113
- }
2114
- };
2115
- ```
2116
-
2117
- - Added UDL-based named argument support to format string compilation
2118
- (https://github.com/fmtlib/fmt/pull/2243,
2119
- https://github.com/fmtlib/fmt/pull/2281). For example:
2120
-
2121
- ```c++
2122
- #include <fmt/compile.h>
2123
-
2124
- using namespace fmt::literals;
2125
- auto s = fmt::format(FMT_COMPILE("{answer}"), "answer"_a = 42);
2126
- ```
2127
-
2128
- Here the argument named \"answer\" is resolved at compile time with
2129
- no runtime overhead. Thanks @alexezeder.
2130
-
2131
- - Added format string compilation support to `fmt::print`
2132
- (https://github.com/fmtlib/fmt/issues/2280,
2133
- https://github.com/fmtlib/fmt/pull/2304). Thanks @alexezeder.
2134
-
2135
- - Added initial support for compiling {fmt} as a C++20 module
2136
- (https://github.com/fmtlib/fmt/pull/2235,
2137
- https://github.com/fmtlib/fmt/pull/2240,
2138
- https://github.com/fmtlib/fmt/pull/2260,
2139
- https://github.com/fmtlib/fmt/pull/2282,
2140
- https://github.com/fmtlib/fmt/pull/2283,
2141
- https://github.com/fmtlib/fmt/pull/2288,
2142
- https://github.com/fmtlib/fmt/pull/2298,
2143
- https://github.com/fmtlib/fmt/pull/2306,
2144
- https://github.com/fmtlib/fmt/pull/2307,
2145
- https://github.com/fmtlib/fmt/pull/2309,
2146
- https://github.com/fmtlib/fmt/pull/2318,
2147
- https://github.com/fmtlib/fmt/pull/2324,
2148
- https://github.com/fmtlib/fmt/pull/2332,
2149
- https://github.com/fmtlib/fmt/pull/2340). Thanks @DanielaE.
2150
-
2151
- - Made symbols private by default reducing shared library size
2152
- (https://github.com/fmtlib/fmt/pull/2301). For example
2153
- there was a \~15% reported reduction on one platform. Thanks @sergiud.
2154
-
2155
- - Optimized includes making the result of preprocessing `fmt/format.h`
2156
- \~20% smaller with libstdc++/C++20 and slightly improving build
2157
- times (https://github.com/fmtlib/fmt/issues/1998).
2158
-
2159
- - Added support of ranges with non-const `begin` / `end`
2160
- (https://github.com/fmtlib/fmt/pull/1953). Thanks @kitegi.
2161
-
2162
- - Added support of `std::byte` and other formattable types to
2163
- `fmt::join` (https://github.com/fmtlib/fmt/issues/1981,
2164
- https://github.com/fmtlib/fmt/issues/2040,
2165
- https://github.com/fmtlib/fmt/pull/2050,
2166
- https://github.com/fmtlib/fmt/issues/2262). For example:
2167
-
2168
- ```c++
2169
- #include <fmt/format.h>
2170
- #include <cstddef>
2171
- #include <vector>
2172
-
2173
- int main() {
2174
- auto bytes = std::vector{std::byte(4), std::byte(2)};
2175
- fmt::print("{}", fmt::join(bytes, ""));
2176
- }
2177
- ```
2178
-
2179
- prints \"42\".
2180
-
2181
- Thanks @kamibo.
2182
-
2183
- - Implemented the default format for `std::chrono::system_clock`
2184
- (https://github.com/fmtlib/fmt/issues/2319,
2185
- https://github.com/fmtlib/fmt/pull/2345). For example:
2186
-
2187
- ```c++
2188
- #include <fmt/chrono.h>
2189
-
2190
- int main() {
2191
- fmt::print("{}", std::chrono::system_clock::now());
2192
- }
2193
- ```
2194
-
2195
- prints \"2021-06-18 15:22:00\" (the output depends on the current
2196
- date and time). Thanks @sunmy2019.
2197
-
2198
- - Made more chrono specifiers locale independent by default. Use the
2199
- `'L'` specifier to get localized formatting. For example:
2200
-
2201
- ```c++
2202
- #include <fmt/chrono.h>
2203
-
2204
- int main() {
2205
- std::locale::global(std::locale("ru_RU.UTF-8"));
2206
- auto monday = std::chrono::weekday(1);
2207
- fmt::print("{}\n", monday); // prints "Mon"
2208
- fmt::print("{:L}\n", monday); // prints "пн"
2209
- }
2210
- ```
2211
-
2212
- - Improved locale handling in chrono formatting
2213
- (https://github.com/fmtlib/fmt/issues/2337,
2214
- https://github.com/fmtlib/fmt/pull/2349,
2215
- https://github.com/fmtlib/fmt/pull/2350). Thanks @phprus.
2216
-
2217
- - Deprecated `fmt/locale.h` moving the formatting functions that take
2218
- a locale to `fmt/format.h` (`char`) and `fmt/xchar` (other
2219
- overloads). This doesn\'t introduce a dependency on `<locale>` so
2220
- there is virtually no compile time effect.
2221
-
2222
- - Deprecated an undocumented `format_to` overload that takes
2223
- `basic_memory_buffer`.
2224
-
2225
- - Made parameter order in `vformat_to` consistent with `format_to`
2226
- (https://github.com/fmtlib/fmt/issues/2327).
2227
-
2228
- - Added support for time points with arbitrary durations
2229
- (https://github.com/fmtlib/fmt/issues/2208). For example:
2230
-
2231
- ```c++
2232
- #include <fmt/chrono.h>
2233
-
2234
- int main() {
2235
- using tp = std::chrono::time_point<
2236
- std::chrono::system_clock, std::chrono::seconds>;
2237
- fmt::print("{:%S}", tp(std::chrono::seconds(42)));
2238
- }
2239
- ```
2240
-
2241
- prints \"42\".
2242
-
2243
- - Formatting floating-point numbers no longer produces trailing zeros
2244
- by default for consistency with `std::format`. For example:
2245
-
2246
- ```c++
2247
- #include <fmt/core.h>
2248
-
2249
- int main() {
2250
- fmt::print("{0:.3}", 1.1);
2251
- }
2252
- ```
2253
-
2254
- prints \"1.1\". Use the `'#'` specifier to keep trailing zeros.
2255
-
2256
- - Dropped a limit on the number of elements in a range and replaced
2257
- `{}` with `[]` as range delimiters for consistency with Python\'s
2258
- `str.format`.
2259
-
2260
- - The `'L'` specifier for locale-specific numeric formatting can now
2261
- be combined with presentation specifiers as in `std::format`. For
2262
- example:
2263
-
2264
- ```c++
2265
- #include <fmt/core.h>
2266
- #include <locale>
2267
-
2268
- int main() {
2269
- std::locale::global(std::locale("fr_FR.UTF-8"));
2270
- fmt::print("{0:.2Lf}", 0.42);
2271
- }
2272
- ```
2273
-
2274
- prints \"0,42\". The deprecated `'n'` specifier has been removed.
2275
-
2276
- - Made the `0` specifier ignored for infinity and NaN
2277
- (https://github.com/fmtlib/fmt/issues/2305,
2278
- https://github.com/fmtlib/fmt/pull/2310). Thanks @Liedtke.
2279
-
2280
- - Made the hexfloat formatting use the right alignment by default
2281
- (https://github.com/fmtlib/fmt/issues/2308,
2282
- https://github.com/fmtlib/fmt/pull/2317). Thanks @Liedtke.
2283
-
2284
- - Removed the deprecated numeric alignment (`'='`). Use the `'0'`
2285
- specifier instead.
2286
-
2287
- - Removed the deprecated `fmt/posix.h` header that has been replaced
2288
- with `fmt/os.h`.
2289
-
2290
- - Removed the deprecated `format_to_n_context`, `format_to_n_args` and
2291
- `make_format_to_n_args`. They have been replaced with
2292
- `format_context`, `` format_args` and ``make_format_args\`\`
2293
- respectively.
2294
-
2295
- - Moved `wchar_t`-specific functions and types to `fmt/xchar.h`. You
2296
- can define `FMT_DEPRECATED_INCLUDE_XCHAR` to automatically include
2297
- `fmt/xchar.h` from `fmt/format.h` but this will be disabled in the
2298
- next major release.
2299
-
2300
- - Fixed handling of the `'+'` specifier in localized formatting
2301
- (https://github.com/fmtlib/fmt/issues/2133).
2302
-
2303
- - Added support for the `'s'` format specifier that gives textual
2304
- representation of `bool`
2305
- (https://github.com/fmtlib/fmt/issues/2094,
2306
- https://github.com/fmtlib/fmt/pull/2109). For example:
2307
-
2308
- ```c++
2309
- #include <fmt/core.h>
2310
-
2311
- int main() {
2312
- fmt::print("{:s}", true);
2313
- }
2314
- ```
2315
-
2316
- prints \"true\". Thanks @powercoderlol.
2317
-
2318
- - Made `fmt::ptr` work with function pointers
2319
- (https://github.com/fmtlib/fmt/pull/2131). For example:
2320
-
2321
- ```c++
2322
- #include <fmt/format.h>
2323
-
2324
- int main() {
2325
- fmt::print("My main: {}\n", fmt::ptr(main));
2326
- }
2327
- ```
2328
-
2329
- Thanks @mikecrowe.
2330
-
2331
- - The undocumented support for specializing `formatter` for pointer
2332
- types has been removed.
2333
-
2334
- - Fixed `fmt::formatted_size` with format string compilation
2335
- (https://github.com/fmtlib/fmt/pull/2141,
2336
- https://github.com/fmtlib/fmt/pull/2161). Thanks @alexezeder.
2337
-
2338
- - Fixed handling of empty format strings during format string
2339
- compilation (https://github.com/fmtlib/fmt/issues/2042):
2340
-
2341
- ```c++
2342
- auto s = fmt::format(FMT_COMPILE(""));
2343
- ```
2344
-
2345
- Thanks @alexezeder.
2346
-
2347
- - Fixed handling of enums in `fmt::to_string`
2348
- (https://github.com/fmtlib/fmt/issues/2036).
2349
-
2350
- - Improved width computation
2351
- (https://github.com/fmtlib/fmt/issues/2033,
2352
- https://github.com/fmtlib/fmt/issues/2091). For example:
2353
-
2354
- ```c++
2355
- #include <fmt/core.h>
2356
-
2357
- int main() {
2358
- fmt::print("{:-<10}{}\n", "你好", "世界");
2359
- fmt::print("{:-<10}{}\n", "hello", "world");
2360
- }
2361
- ```
2362
-
2363
- prints
2364
-
2365
- ![](https://user-images.githubusercontent.com/576385/119840373-cea3ca80-beb9-11eb-91e0-54266c48e181.png)
2366
-
2367
- on a modern terminal.
2368
-
2369
- - The experimental fast output stream (`fmt::ostream`) is now
2370
- truncated by default for consistency with `fopen`
2371
- (https://github.com/fmtlib/fmt/issues/2018). For example:
2372
-
2373
- ```c++
2374
- #include <fmt/os.h>
2375
-
2376
- int main() {
2377
- fmt::ostream out1 = fmt::output_file("guide");
2378
- out1.print("Zaphod");
2379
- out1.close();
2380
- fmt::ostream out2 = fmt::output_file("guide");
2381
- out2.print("Ford");
2382
- }
2383
- ```
2384
-
2385
- writes \"Ford\" to the file \"guide\". To preserve the old file
2386
- content if any pass `fmt::file::WRONLY | fmt::file::CREATE` flags to
2387
- `fmt::output_file`.
2388
-
2389
- - Fixed moving of `fmt::ostream` that holds buffered data
2390
- (https://github.com/fmtlib/fmt/issues/2197,
2391
- https://github.com/fmtlib/fmt/pull/2198). Thanks @vtta.
2392
-
2393
- - Replaced the `fmt::system_error` exception with a function of the
2394
- same name that constructs `std::system_error`
2395
- (https://github.com/fmtlib/fmt/issues/2266).
2396
-
2397
- - Replaced the `fmt::windows_error` exception with a function of the
2398
- same name that constructs `std::system_error` with the category
2399
- returned by `fmt::system_category()`
2400
- (https://github.com/fmtlib/fmt/issues/2274,
2401
- https://github.com/fmtlib/fmt/pull/2275). The latter is
2402
- similar to `std::system_category` but correctly handles UTF-8.
2403
- Thanks @phprus.
2404
-
2405
- - Replaced `fmt::error_code` with `std::error_code` and made it
2406
- formattable (https://github.com/fmtlib/fmt/issues/2269,
2407
- https://github.com/fmtlib/fmt/pull/2270,
2408
- https://github.com/fmtlib/fmt/pull/2273). Thanks @phprus.
2409
-
2410
- - Added speech synthesis support
2411
- (https://github.com/fmtlib/fmt/pull/2206).
2412
-
2413
- - Made `format_to` work with a memory buffer that has a custom
2414
- allocator (https://github.com/fmtlib/fmt/pull/2300).
2415
- Thanks @voxmea.
2416
-
2417
- - Added `Allocator::max_size` support to `basic_memory_buffer`.
2418
- (https://github.com/fmtlib/fmt/pull/1960). Thanks @phprus.
2419
-
2420
- - Added wide string support to `fmt::join`
2421
- (https://github.com/fmtlib/fmt/pull/2236). Thanks @crbrz.
2422
-
2423
- - Made iterators passed to `formatter` specializations via a format
2424
- context satisfy C++20 `std::output_iterator` requirements
2425
- (https://github.com/fmtlib/fmt/issues/2156,
2426
- https://github.com/fmtlib/fmt/pull/2158,
2427
- https://github.com/fmtlib/fmt/issues/2195,
2428
- https://github.com/fmtlib/fmt/pull/2204). Thanks @randomnetcat.
2429
-
2430
- - Optimized the `printf` implementation
2431
- (https://github.com/fmtlib/fmt/pull/1982,
2432
- https://github.com/fmtlib/fmt/pull/1984,
2433
- https://github.com/fmtlib/fmt/pull/2016,
2434
- https://github.com/fmtlib/fmt/pull/2164).
2435
- Thanks @rimathia and @moiwi.
2436
-
2437
- - Improved detection of `constexpr` `char_traits`
2438
- (https://github.com/fmtlib/fmt/pull/2246,
2439
- https://github.com/fmtlib/fmt/pull/2257). Thanks @phprus.
2440
-
2441
- - Fixed writing to `stdout` when it is redirected to `NUL` on Windows
2442
- (https://github.com/fmtlib/fmt/issues/2080).
2443
-
2444
- - Fixed exception propagation from iterators
2445
- (https://github.com/fmtlib/fmt/issues/2097).
2446
-
2447
- - Improved `strftime` error handling
2448
- (https://github.com/fmtlib/fmt/issues/2238,
2449
- https://github.com/fmtlib/fmt/pull/2244). Thanks @yumeyao.
2450
-
2451
- - Stopped using deprecated GCC UDL template extension.
2452
-
2453
- - Added `fmt/args.h` to the install target
2454
- (https://github.com/fmtlib/fmt/issues/2096).
2455
-
2456
- - Error messages are now passed to assert when exceptions are disabled
2457
- (https://github.com/fmtlib/fmt/pull/2145). Thanks @NobodyXu.
2458
-
2459
- - Added the `FMT_MASTER_PROJECT` CMake option to control build and
2460
- install targets when {fmt} is included via `add_subdirectory`
2461
- (https://github.com/fmtlib/fmt/issues/2098,
2462
- https://github.com/fmtlib/fmt/pull/2100).
2463
- Thanks @randomizedthinking.
2464
-
2465
- - Improved build configuration
2466
- (https://github.com/fmtlib/fmt/pull/2026,
2467
- https://github.com/fmtlib/fmt/pull/2122).
2468
- Thanks @luncliff and @ibaned.
2469
-
2470
- - Fixed various warnings and compilation issues
2471
- (https://github.com/fmtlib/fmt/issues/1947,
2472
- https://github.com/fmtlib/fmt/pull/1959,
2473
- https://github.com/fmtlib/fmt/pull/1963,
2474
- https://github.com/fmtlib/fmt/pull/1965,
2475
- https://github.com/fmtlib/fmt/issues/1966,
2476
- https://github.com/fmtlib/fmt/pull/1974,
2477
- https://github.com/fmtlib/fmt/pull/1975,
2478
- https://github.com/fmtlib/fmt/pull/1990,
2479
- https://github.com/fmtlib/fmt/issues/2000,
2480
- https://github.com/fmtlib/fmt/pull/2001,
2481
- https://github.com/fmtlib/fmt/issues/2002,
2482
- https://github.com/fmtlib/fmt/issues/2004,
2483
- https://github.com/fmtlib/fmt/pull/2006,
2484
- https://github.com/fmtlib/fmt/pull/2009,
2485
- https://github.com/fmtlib/fmt/pull/2010,
2486
- https://github.com/fmtlib/fmt/issues/2038,
2487
- https://github.com/fmtlib/fmt/issues/2039,
2488
- https://github.com/fmtlib/fmt/issues/2047,
2489
- https://github.com/fmtlib/fmt/pull/2053,
2490
- https://github.com/fmtlib/fmt/issues/2059,
2491
- https://github.com/fmtlib/fmt/pull/2065,
2492
- https://github.com/fmtlib/fmt/pull/2067,
2493
- https://github.com/fmtlib/fmt/pull/2068,
2494
- https://github.com/fmtlib/fmt/pull/2073,
2495
- https://github.com/fmtlib/fmt/issues/2103,
2496
- https://github.com/fmtlib/fmt/issues/2105,
2497
- https://github.com/fmtlib/fmt/pull/2106,
2498
- https://github.com/fmtlib/fmt/pull/2107,
2499
- https://github.com/fmtlib/fmt/issues/2116,
2500
- https://github.com/fmtlib/fmt/pull/2117,
2501
- https://github.com/fmtlib/fmt/issues/2118,
2502
- https://github.com/fmtlib/fmt/pull/2119,
2503
- https://github.com/fmtlib/fmt/issues/2127,
2504
- https://github.com/fmtlib/fmt/pull/2128,
2505
- https://github.com/fmtlib/fmt/issues/2140,
2506
- https://github.com/fmtlib/fmt/issues/2142,
2507
- https://github.com/fmtlib/fmt/pull/2143,
2508
- https://github.com/fmtlib/fmt/pull/2144,
2509
- https://github.com/fmtlib/fmt/issues/2147,
2510
- https://github.com/fmtlib/fmt/issues/2148,
2511
- https://github.com/fmtlib/fmt/issues/2149,
2512
- https://github.com/fmtlib/fmt/pull/2152,
2513
- https://github.com/fmtlib/fmt/pull/2160,
2514
- https://github.com/fmtlib/fmt/issues/2170,
2515
- https://github.com/fmtlib/fmt/issues/2175,
2516
- https://github.com/fmtlib/fmt/issues/2176,
2517
- https://github.com/fmtlib/fmt/pull/2177,
2518
- https://github.com/fmtlib/fmt/issues/2178,
2519
- https://github.com/fmtlib/fmt/pull/2179,
2520
- https://github.com/fmtlib/fmt/issues/2180,
2521
- https://github.com/fmtlib/fmt/issues/2181,
2522
- https://github.com/fmtlib/fmt/pull/2183,
2523
- https://github.com/fmtlib/fmt/issues/2184,
2524
- https://github.com/fmtlib/fmt/issues/2185,
2525
- https://github.com/fmtlib/fmt/pull/2186,
2526
- https://github.com/fmtlib/fmt/pull/2187,
2527
- https://github.com/fmtlib/fmt/pull/2190,
2528
- https://github.com/fmtlib/fmt/pull/2192,
2529
- https://github.com/fmtlib/fmt/pull/2194,
2530
- https://github.com/fmtlib/fmt/pull/2205,
2531
- https://github.com/fmtlib/fmt/issues/2210,
2532
- https://github.com/fmtlib/fmt/pull/2211,
2533
- https://github.com/fmtlib/fmt/pull/2215,
2534
- https://github.com/fmtlib/fmt/pull/2216,
2535
- https://github.com/fmtlib/fmt/pull/2218,
2536
- https://github.com/fmtlib/fmt/pull/2220,
2537
- https://github.com/fmtlib/fmt/issues/2228,
2538
- https://github.com/fmtlib/fmt/pull/2229,
2539
- https://github.com/fmtlib/fmt/pull/2230,
2540
- https://github.com/fmtlib/fmt/issues/2233,
2541
- https://github.com/fmtlib/fmt/pull/2239,
2542
- https://github.com/fmtlib/fmt/issues/2248,
2543
- https://github.com/fmtlib/fmt/issues/2252,
2544
- https://github.com/fmtlib/fmt/pull/2253,
2545
- https://github.com/fmtlib/fmt/pull/2255,
2546
- https://github.com/fmtlib/fmt/issues/2261,
2547
- https://github.com/fmtlib/fmt/issues/2278,
2548
- https://github.com/fmtlib/fmt/issues/2284,
2549
- https://github.com/fmtlib/fmt/pull/2287,
2550
- https://github.com/fmtlib/fmt/pull/2289,
2551
- https://github.com/fmtlib/fmt/pull/2290,
2552
- https://github.com/fmtlib/fmt/pull/2293,
2553
- https://github.com/fmtlib/fmt/issues/2295,
2554
- https://github.com/fmtlib/fmt/pull/2296,
2555
- https://github.com/fmtlib/fmt/pull/2297,
2556
- https://github.com/fmtlib/fmt/issues/2311,
2557
- https://github.com/fmtlib/fmt/pull/2313,
2558
- https://github.com/fmtlib/fmt/pull/2315,
2559
- https://github.com/fmtlib/fmt/issues/2320,
2560
- https://github.com/fmtlib/fmt/pull/2321,
2561
- https://github.com/fmtlib/fmt/pull/2323,
2562
- https://github.com/fmtlib/fmt/issues/2328,
2563
- https://github.com/fmtlib/fmt/pull/2329,
2564
- https://github.com/fmtlib/fmt/pull/2333,
2565
- https://github.com/fmtlib/fmt/pull/2338,
2566
- https://github.com/fmtlib/fmt/pull/2341).
2567
- Thanks @darklukee, @fagg, @killerbot242, @jgopel, @yeswalrus, @Finkman,
2568
- @HazardyKnusperkeks, @dkavolis, @concatime, @chronoxor, @summivox, @yNeo,
2569
- @Apache-HB, @alexezeder, @toojays, @Brainy0207, @vadz, @imsherlock, @phprus,
2570
- @white238, @yafshar, @BillyDonahue, @jstaahl, @denchat, @DanielaE,
2571
- @ilyakurdyukov, @ilmai, @JessyDL, @sergiud, @mwinterb, @sven-herrmann,
2572
- @jmelas, @twoixter, @crbrz and @upsj.
2573
-
2574
- - Improved documentation
2575
- (https://github.com/fmtlib/fmt/issues/1986,
2576
- https://github.com/fmtlib/fmt/pull/2051,
2577
- https://github.com/fmtlib/fmt/issues/2057,
2578
- https://github.com/fmtlib/fmt/pull/2081,
2579
- https://github.com/fmtlib/fmt/issues/2084,
2580
- https://github.com/fmtlib/fmt/pull/2312).
2581
- Thanks @imba-tjd, @0x416c69 and @mordante.
2582
-
2583
- - Continuous integration and test improvements
2584
- (https://github.com/fmtlib/fmt/issues/1969,
2585
- https://github.com/fmtlib/fmt/pull/1991,
2586
- https://github.com/fmtlib/fmt/pull/2020,
2587
- https://github.com/fmtlib/fmt/pull/2110,
2588
- https://github.com/fmtlib/fmt/pull/2114,
2589
- https://github.com/fmtlib/fmt/issues/2196,
2590
- https://github.com/fmtlib/fmt/pull/2217,
2591
- https://github.com/fmtlib/fmt/pull/2247,
2592
- https://github.com/fmtlib/fmt/pull/2256,
2593
- https://github.com/fmtlib/fmt/pull/2336,
2594
- https://github.com/fmtlib/fmt/pull/2346).
2595
- Thanks @jgopel, @alexezeder and @DanielaE.
2596
-
2597
- The change log for versions 0.8.0 - 7.1.3 is available [here](
2598
- doc/ChangeLog-old.md).