couchbase 3.5.4 → 3.5.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (441) 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 +32 -87
  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 +9 -9
  48. data/ext/couchbase/core/cluster.cxx +0 -2
  49. data/ext/couchbase/core/cluster_agent_config.cxx +1 -1
  50. data/ext/couchbase/core/collections_component.cxx +1 -1
  51. data/ext/couchbase/core/columnar/agent_config.cxx +2 -2
  52. data/ext/couchbase/core/columnar/error.hxx +0 -1
  53. data/ext/couchbase/core/columnar/query_component.cxx +2 -2
  54. data/ext/couchbase/core/config_profiles.cxx +1 -1
  55. data/ext/couchbase/core/core_sdk_shim.cxx +1 -1
  56. data/ext/couchbase/core/crud_component.cxx +1 -1
  57. data/ext/couchbase/core/design_document_namespace_fmt.hxx +1 -1
  58. data/ext/couchbase/core/diagnostics_fmt.hxx +1 -1
  59. data/ext/couchbase/core/document_id.cxx +1 -1
  60. data/ext/couchbase/core/document_id_fmt.hxx +1 -1
  61. data/ext/couchbase/core/error_context/analytics_json.hxx +3 -1
  62. data/ext/couchbase/core/error_context/key_value_json.hxx +1 -1
  63. data/ext/couchbase/core/error_context/query_public_json.hxx +1 -1
  64. data/ext/couchbase/core/error_context/subdocument_json.hxx +1 -1
  65. data/ext/couchbase/core/fmt/key_value_error_map_attribute.hxx +1 -1
  66. data/ext/couchbase/core/fmt/key_value_extended_error_info.hxx +1 -1
  67. data/ext/couchbase/core/fmt/key_value_status_code.hxx +1 -1
  68. data/ext/couchbase/core/http_component.cxx +3 -3
  69. data/ext/couchbase/core/impl/analytics.cxx +1 -0
  70. data/ext/couchbase/core/impl/best_effort_retry_strategy.cxx +1 -1
  71. data/ext/couchbase/core/impl/collection.cxx +28 -4
  72. data/ext/couchbase/core/impl/date_range.cxx +2 -2
  73. data/ext/couchbase/core/impl/date_range_query.cxx +2 -2
  74. data/ext/couchbase/core/impl/dns_srv_tracker.cxx +1 -1
  75. data/ext/couchbase/core/impl/error.cxx +27 -4
  76. data/ext/couchbase/core/impl/expiry.cxx +2 -2
  77. data/ext/couchbase/core/impl/fail_fast_retry_strategy.cxx +1 -2
  78. data/ext/couchbase/core/impl/get_replica.hxx +2 -0
  79. data/ext/couchbase/core/impl/key_value_error_context.cxx +6 -4
  80. data/ext/couchbase/core/impl/lookup_in_replica.hxx +2 -0
  81. data/ext/couchbase/core/impl/numeric_range.cxx +1 -1
  82. data/ext/couchbase/core/impl/observe_seqno.hxx +2 -0
  83. data/ext/couchbase/core/impl/query.cxx +1 -0
  84. data/ext/couchbase/core/impl/query_error_context.cxx +3 -2
  85. data/ext/couchbase/core/impl/scope.cxx +5 -6
  86. data/ext/couchbase/core/impl/search.cxx +3 -1
  87. data/ext/couchbase/core/io/config_tracker.cxx +1 -1
  88. data/ext/couchbase/core/io/dns_client.cxx +23 -8
  89. data/ext/couchbase/core/io/http_command.hxx +2 -2
  90. data/ext/couchbase/core/io/http_parser.cxx +1 -1
  91. data/ext/couchbase/core/io/http_session.cxx +4 -0
  92. data/ext/couchbase/core/io/http_session.hxx +4 -2
  93. data/ext/couchbase/core/io/mcbp_command.hxx +2 -2
  94. data/ext/couchbase/core/key_value_config.cxx +2 -2
  95. data/ext/couchbase/core/logger/logger.hxx +1 -1
  96. data/ext/couchbase/core/management/rbac_fmt.hxx +1 -1
  97. data/ext/couchbase/core/mcbp/operation_queue.cxx +1 -1
  98. data/ext/couchbase/core/mcbp/packet.cxx +1 -1
  99. data/ext/couchbase/core/meta/features.hxx +11 -0
  100. data/ext/couchbase/core/meta/version.cxx +48 -7
  101. data/ext/couchbase/core/operations/document_analytics.cxx +23 -17
  102. data/ext/couchbase/core/operations/document_analytics.hxx +1 -0
  103. data/ext/couchbase/core/operations/document_append.hxx +2 -0
  104. data/ext/couchbase/core/operations/document_decrement.hxx +2 -0
  105. data/ext/couchbase/core/operations/document_exists.hxx +2 -0
  106. data/ext/couchbase/core/operations/document_get.hxx +2 -0
  107. data/ext/couchbase/core/operations/document_get_all_replicas.hxx +2 -0
  108. data/ext/couchbase/core/operations/document_get_and_lock.hxx +2 -0
  109. data/ext/couchbase/core/operations/document_get_and_touch.hxx +2 -0
  110. data/ext/couchbase/core/operations/document_get_any_replica.hxx +2 -0
  111. data/ext/couchbase/core/operations/document_get_projected.hxx +2 -0
  112. data/ext/couchbase/core/operations/document_increment.hxx +2 -0
  113. data/ext/couchbase/core/operations/document_insert.hxx +2 -0
  114. data/ext/couchbase/core/operations/document_lookup_in.hxx +2 -0
  115. data/ext/couchbase/core/operations/document_lookup_in_all_replicas.hxx +2 -0
  116. data/ext/couchbase/core/operations/document_lookup_in_any_replica.hxx +2 -0
  117. data/ext/couchbase/core/operations/document_mutate_in.hxx +2 -0
  118. data/ext/couchbase/core/operations/document_prepend.hxx +2 -0
  119. data/ext/couchbase/core/operations/document_query.hxx +1 -0
  120. data/ext/couchbase/core/operations/document_remove.hxx +2 -0
  121. data/ext/couchbase/core/operations/document_replace.hxx +2 -0
  122. data/ext/couchbase/core/operations/document_search.hxx +1 -0
  123. data/ext/couchbase/core/operations/document_touch.hxx +2 -0
  124. data/ext/couchbase/core/operations/document_unlock.hxx +2 -0
  125. data/ext/couchbase/core/operations/document_upsert.hxx +2 -0
  126. data/ext/couchbase/core/operations/document_view.hxx +1 -0
  127. data/ext/couchbase/core/operations/http_noop.hxx +2 -0
  128. data/ext/couchbase/core/operations/management/CMakeLists.txt +0 -1
  129. data/ext/couchbase/core/operations/management/analytics_dataset_create.cxx +1 -1
  130. data/ext/couchbase/core/operations/management/analytics_dataset_create.hxx +1 -0
  131. data/ext/couchbase/core/operations/management/analytics_dataset_drop.cxx +1 -1
  132. data/ext/couchbase/core/operations/management/analytics_dataset_drop.hxx +1 -0
  133. data/ext/couchbase/core/operations/management/analytics_dataset_get_all.hxx +1 -0
  134. data/ext/couchbase/core/operations/management/analytics_dataverse_create.cxx +1 -1
  135. data/ext/couchbase/core/operations/management/analytics_dataverse_create.hxx +1 -0
  136. data/ext/couchbase/core/operations/management/analytics_dataverse_drop.cxx +1 -1
  137. data/ext/couchbase/core/operations/management/analytics_dataverse_drop.hxx +1 -0
  138. data/ext/couchbase/core/operations/management/analytics_get_pending_mutations.cxx +1 -1
  139. data/ext/couchbase/core/operations/management/analytics_get_pending_mutations.hxx +2 -0
  140. data/ext/couchbase/core/operations/management/analytics_index_create.hxx +1 -0
  141. data/ext/couchbase/core/operations/management/analytics_index_drop.cxx +1 -1
  142. data/ext/couchbase/core/operations/management/analytics_index_drop.hxx +1 -0
  143. data/ext/couchbase/core/operations/management/analytics_index_get_all.hxx +1 -0
  144. data/ext/couchbase/core/operations/management/analytics_link_connect.cxx +1 -1
  145. data/ext/couchbase/core/operations/management/analytics_link_connect.hxx +1 -0
  146. data/ext/couchbase/core/operations/management/analytics_link_create.hxx +1 -0
  147. data/ext/couchbase/core/operations/management/analytics_link_disconnect.cxx +1 -1
  148. data/ext/couchbase/core/operations/management/analytics_link_disconnect.hxx +1 -0
  149. data/ext/couchbase/core/operations/management/analytics_link_drop.cxx +1 -1
  150. data/ext/couchbase/core/operations/management/analytics_link_drop.hxx +1 -0
  151. data/ext/couchbase/core/operations/management/analytics_link_get_all.cxx +24 -16
  152. data/ext/couchbase/core/operations/management/analytics_link_get_all.hxx +4 -3
  153. data/ext/couchbase/core/operations/management/analytics_link_replace.hxx +1 -0
  154. data/ext/couchbase/core/operations/management/analytics_link_utils.hxx +4 -3
  155. data/ext/couchbase/core/operations/management/bucket_create.hxx +1 -0
  156. data/ext/couchbase/core/operations/management/bucket_describe.cxx +1 -1
  157. data/ext/couchbase/core/operations/management/bucket_describe.hxx +1 -0
  158. data/ext/couchbase/core/operations/management/bucket_drop.cxx +1 -1
  159. data/ext/couchbase/core/operations/management/bucket_drop.hxx +1 -0
  160. data/ext/couchbase/core/operations/management/bucket_flush.cxx +1 -1
  161. data/ext/couchbase/core/operations/management/bucket_flush.hxx +1 -0
  162. data/ext/couchbase/core/operations/management/bucket_get.cxx +1 -1
  163. data/ext/couchbase/core/operations/management/bucket_get.hxx +1 -0
  164. data/ext/couchbase/core/operations/management/bucket_get_all.hxx +1 -0
  165. data/ext/couchbase/core/operations/management/bucket_update.hxx +1 -0
  166. data/ext/couchbase/core/operations/management/change_password.cxx +1 -1
  167. data/ext/couchbase/core/operations/management/change_password.hxx +1 -0
  168. data/ext/couchbase/core/operations/management/cluster_describe.hxx +1 -0
  169. data/ext/couchbase/core/operations/management/cluster_developer_preview_enable.hxx +1 -0
  170. data/ext/couchbase/core/operations/management/collection_create.cxx +1 -1
  171. data/ext/couchbase/core/operations/management/collection_create.hxx +2 -0
  172. data/ext/couchbase/core/operations/management/collection_drop.cxx +1 -1
  173. data/ext/couchbase/core/operations/management/collection_drop.hxx +1 -0
  174. data/ext/couchbase/core/operations/management/collection_update.cxx +1 -1
  175. data/ext/couchbase/core/operations/management/collection_update.hxx +2 -0
  176. data/ext/couchbase/core/operations/management/collections_manifest_get.hxx +2 -0
  177. data/ext/couchbase/core/operations/management/eventing_deploy_function.cxx +1 -1
  178. data/ext/couchbase/core/operations/management/eventing_deploy_function.hxx +3 -2
  179. data/ext/couchbase/core/operations/management/eventing_drop_function.cxx +1 -1
  180. data/ext/couchbase/core/operations/management/eventing_drop_function.hxx +3 -2
  181. data/ext/couchbase/core/operations/management/eventing_get_all_functions.hxx +3 -2
  182. data/ext/couchbase/core/operations/management/eventing_get_function.cxx +1 -1
  183. data/ext/couchbase/core/operations/management/eventing_get_function.hxx +3 -2
  184. data/ext/couchbase/core/operations/management/eventing_get_status.hxx +3 -2
  185. data/ext/couchbase/core/operations/management/eventing_pause_function.cxx +1 -1
  186. data/ext/couchbase/core/operations/management/eventing_pause_function.hxx +3 -2
  187. data/ext/couchbase/core/operations/management/eventing_resume_function.cxx +1 -1
  188. data/ext/couchbase/core/operations/management/eventing_resume_function.hxx +3 -2
  189. data/ext/couchbase/core/operations/management/eventing_undeploy_function.cxx +1 -1
  190. data/ext/couchbase/core/operations/management/eventing_undeploy_function.hxx +3 -2
  191. data/ext/couchbase/core/operations/management/eventing_upsert_function.cxx +1 -2
  192. data/ext/couchbase/core/operations/management/eventing_upsert_function.hxx +3 -2
  193. data/ext/couchbase/core/operations/management/freeform.hxx +2 -0
  194. data/ext/couchbase/core/operations/management/group_drop.cxx +1 -1
  195. data/ext/couchbase/core/operations/management/group_drop.hxx +1 -0
  196. data/ext/couchbase/core/operations/management/group_get.cxx +1 -1
  197. data/ext/couchbase/core/operations/management/group_get.hxx +1 -0
  198. data/ext/couchbase/core/operations/management/group_get_all.hxx +1 -0
  199. data/ext/couchbase/core/operations/management/group_upsert.hxx +1 -0
  200. data/ext/couchbase/core/operations/management/query_index_build.hxx +7 -5
  201. data/ext/couchbase/core/operations/management/query_index_build_deferred.hxx +3 -0
  202. data/ext/couchbase/core/operations/management/query_index_create.cxx +1 -1
  203. data/ext/couchbase/core/operations/management/query_index_create.hxx +1 -0
  204. data/ext/couchbase/core/operations/management/query_index_drop.cxx +1 -1
  205. data/ext/couchbase/core/operations/management/query_index_drop.hxx +1 -0
  206. data/ext/couchbase/core/operations/management/query_index_get_all.hxx +2 -0
  207. data/ext/couchbase/core/operations/management/query_index_get_all_deferred.hxx +3 -0
  208. data/ext/couchbase/core/operations/management/role_get_all.hxx +1 -0
  209. data/ext/couchbase/core/operations/management/scope_create.cxx +1 -1
  210. data/ext/couchbase/core/operations/management/scope_create.hxx +1 -0
  211. data/ext/couchbase/core/operations/management/scope_drop.cxx +1 -1
  212. data/ext/couchbase/core/operations/management/scope_drop.hxx +1 -0
  213. data/ext/couchbase/core/operations/management/scope_get_all.cxx +1 -1
  214. data/ext/couchbase/core/operations/management/scope_get_all.hxx +1 -0
  215. data/ext/couchbase/core/operations/management/search_get_stats.hxx +1 -0
  216. data/ext/couchbase/core/operations/management/search_index_analyze_document.cxx +1 -1
  217. data/ext/couchbase/core/operations/management/search_index_analyze_document.hxx +1 -0
  218. data/ext/couchbase/core/operations/management/search_index_control_ingest.cxx +1 -1
  219. data/ext/couchbase/core/operations/management/search_index_control_ingest.hxx +1 -0
  220. data/ext/couchbase/core/operations/management/search_index_control_plan_freeze.cxx +1 -1
  221. data/ext/couchbase/core/operations/management/search_index_control_plan_freeze.hxx +1 -0
  222. data/ext/couchbase/core/operations/management/search_index_control_query.cxx +1 -1
  223. data/ext/couchbase/core/operations/management/search_index_control_query.hxx +1 -0
  224. data/ext/couchbase/core/operations/management/search_index_drop.cxx +1 -1
  225. data/ext/couchbase/core/operations/management/search_index_drop.hxx +1 -0
  226. data/ext/couchbase/core/operations/management/search_index_get.cxx +1 -1
  227. data/ext/couchbase/core/operations/management/search_index_get.hxx +1 -0
  228. data/ext/couchbase/core/operations/management/search_index_get_all.cxx +1 -1
  229. data/ext/couchbase/core/operations/management/search_index_get_all.hxx +1 -0
  230. data/ext/couchbase/core/operations/management/search_index_get_documents_count.cxx +1 -1
  231. data/ext/couchbase/core/operations/management/search_index_get_documents_count.hxx +2 -0
  232. data/ext/couchbase/core/operations/management/search_index_get_stats.cxx +1 -1
  233. data/ext/couchbase/core/operations/management/search_index_get_stats.hxx +1 -0
  234. data/ext/couchbase/core/operations/management/search_index_upsert.cxx +1 -1
  235. data/ext/couchbase/core/operations/management/search_index_upsert.hxx +1 -0
  236. data/ext/couchbase/core/operations/management/user_drop.hxx +1 -0
  237. data/ext/couchbase/core/operations/management/user_get.hxx +1 -0
  238. data/ext/couchbase/core/operations/management/user_get_all.hxx +1 -0
  239. data/ext/couchbase/core/operations/management/user_upsert.cxx +3 -3
  240. data/ext/couchbase/core/operations/management/user_upsert.hxx +1 -0
  241. data/ext/couchbase/core/operations/management/view_index_drop.cxx +1 -1
  242. data/ext/couchbase/core/operations/management/view_index_drop.hxx +1 -0
  243. data/ext/couchbase/core/operations/management/view_index_get.cxx +1 -1
  244. data/ext/couchbase/core/operations/management/view_index_get.hxx +1 -0
  245. data/ext/couchbase/core/operations/management/view_index_get_all.cxx +1 -1
  246. data/ext/couchbase/core/operations/management/view_index_get_all.hxx +2 -0
  247. data/ext/couchbase/core/operations/management/view_index_upsert.cxx +1 -1
  248. data/ext/couchbase/core/operations/management/view_index_upsert.hxx +1 -0
  249. data/ext/couchbase/core/origin.cxx +3 -2
  250. data/ext/couchbase/core/platform/base64.h +8 -8
  251. data/ext/couchbase/core/protocol/client_opcode_fmt.hxx +1 -1
  252. data/ext/couchbase/core/protocol/client_response.hxx +1 -1
  253. data/ext/couchbase/core/protocol/frame_info_id_fmt.hxx +1 -1
  254. data/ext/couchbase/core/protocol/hello_feature_fmt.hxx +1 -1
  255. data/ext/couchbase/core/protocol/magic_fmt.hxx +1 -1
  256. data/ext/couchbase/core/protocol/server_opcode_fmt.hxx +1 -1
  257. data/ext/couchbase/core/query_context.hxx +7 -6
  258. data/ext/couchbase/core/retry_orchestrator.cxx +1 -1
  259. data/ext/couchbase/core/sasl/CMakeLists.txt +0 -1
  260. data/ext/couchbase/core/sasl/error_fmt.h +1 -1
  261. data/ext/couchbase/core/seed_config.cxx +2 -2
  262. data/ext/couchbase/core/service_type_fmt.hxx +1 -1
  263. data/ext/couchbase/core/topology/capabilities_fmt.hxx +1 -1
  264. data/ext/couchbase/core/topology/collections_manifest_fmt.hxx +2 -1
  265. data/ext/couchbase/core/topology/configuration_fmt.hxx +1 -1
  266. data/ext/couchbase/core/transactions/async_attempt_context.cxx +1 -1
  267. data/ext/couchbase/core/transactions/async_attempt_context.hxx +9 -22
  268. data/ext/couchbase/core/transactions/attempt_context.cxx +1 -1
  269. data/ext/couchbase/core/transactions/attempt_context.hxx +6 -33
  270. data/ext/couchbase/core/transactions/attempt_context_impl.cxx +41 -41
  271. data/ext/couchbase/core/transactions/attempt_context_impl.hxx +15 -16
  272. data/ext/couchbase/core/transactions/exceptions_fmt.hxx +1 -1
  273. data/ext/couchbase/core/transactions/internal/atr_cleanup_entry.hxx +1 -1
  274. data/ext/couchbase/core/transactions/internal/client_record.hxx +4 -3
  275. data/ext/couchbase/core/transactions/internal/doc_record_fmt.hxx +1 -1
  276. data/ext/couchbase/core/transactions/internal/exceptions_internal.hxx +0 -2
  277. data/ext/couchbase/core/transactions/internal/exceptions_internal_fmt.hxx +1 -1
  278. data/ext/couchbase/core/transactions/internal/logging.hxx +2 -0
  279. data/ext/couchbase/core/transactions/internal/transaction_context.hxx +3 -0
  280. data/ext/couchbase/core/transactions/result_fmt.hxx +1 -1
  281. data/ext/couchbase/core/transactions/transaction_context.cxx +12 -2
  282. data/ext/couchbase/core/transactions/transaction_get_result.hxx +0 -20
  283. data/ext/couchbase/core/transactions/transaction_links.hxx +1 -1
  284. data/ext/couchbase/core/utils/join_strings.hxx +2 -2
  285. data/ext/couchbase/core/utils/keyspace.hxx +2 -1
  286. data/ext/couchbase/core/utils/url_codec.cxx +1 -1
  287. data/ext/couchbase/couchbase/common_options.hxx +16 -1
  288. data/ext/couchbase/couchbase/fmt/analytics_scan_consistency.hxx +0 -2
  289. data/ext/couchbase/couchbase/fmt/analytics_status.hxx +0 -2
  290. data/ext/couchbase/couchbase/fmt/cas.hxx +0 -2
  291. data/ext/couchbase/couchbase/fmt/durability_level.hxx +0 -2
  292. data/ext/couchbase/couchbase/fmt/error.hxx +0 -2
  293. data/ext/couchbase/couchbase/fmt/error_context.hxx +0 -2
  294. data/ext/couchbase/couchbase/fmt/mutation_token.hxx +0 -2
  295. data/ext/couchbase/couchbase/fmt/query_profile.hxx +0 -2
  296. data/ext/couchbase/couchbase/fmt/query_scan_consistency.hxx +0 -2
  297. data/ext/couchbase/couchbase/fmt/query_status.hxx +0 -2
  298. data/ext/couchbase/couchbase/fmt/retry_reason.hxx +5 -1
  299. data/ext/couchbase/couchbase/fmt/search_scan_consistency.hxx +0 -2
  300. data/ext/couchbase/couchbase/fmt/tls_verify_mode.hxx +0 -2
  301. data/ext/couchbase/couchbase/fmt/transaction_keyspace.hxx +0 -2
  302. data/ext/couchbase/couchbase/metrics/otel_meter.hxx +16 -20
  303. data/ext/extconf.rb +1 -0
  304. data/ext/rcb_analytics.cxx +7 -7
  305. data/ext/rcb_backend.cxx +6 -1
  306. data/ext/rcb_buckets.cxx +1 -1
  307. data/ext/rcb_collections.cxx +1 -1
  308. data/ext/rcb_crud.cxx +51 -30
  309. data/ext/rcb_diagnostics.cxx +1 -1
  310. data/ext/rcb_exceptions.cxx +3 -2
  311. data/ext/rcb_extras.cxx +1 -1
  312. data/ext/rcb_range_scan.cxx +1 -1
  313. data/ext/rcb_search.cxx +1 -1
  314. data/ext/rcb_users.cxx +2 -2
  315. data/ext/rcb_utils.hxx +32 -0
  316. data/lib/couchbase/logger.rb +3 -3
  317. data/lib/couchbase/options.rb +48 -0
  318. data/lib/couchbase/version.rb +1 -1
  319. metadata +131 -153
  320. data/ext/cache/fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/CMakeLists.txt +0 -520
  321. data/ext/cache/fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/ChangeLog.md +0 -2598
  322. data/ext/cache/fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/LICENSE +0 -27
  323. data/ext/cache/fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/README.md +0 -484
  324. data/ext/cache/fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/src/fmt.cc +0 -135
  325. data/ext/cache/fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/src/os.cc +0 -403
  326. data/ext/cache/fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/support/cmake/FindSetEnv.cmake +0 -7
  327. data/ext/cache/fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/support/cmake/JoinPaths.cmake +0 -26
  328. data/ext/cache/fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/support/cmake/fmt-config.cmake.in +0 -7
  329. data/ext/cache/fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/support/cmake/fmt.pc.in +0 -11
  330. data/ext/cache/spdlog/19df5d3d8e5526c255d27414e09568671ef87483/spdlog/include/spdlog/fmt/bundled/args.h +0 -235
  331. data/ext/cache/spdlog/19df5d3d8e5526c255d27414e09568671ef87483/spdlog/include/spdlog/fmt/bundled/chrono.h +0 -2240
  332. data/ext/cache/spdlog/19df5d3d8e5526c255d27414e09568671ef87483/spdlog/include/spdlog/fmt/bundled/color.h +0 -643
  333. data/ext/cache/spdlog/19df5d3d8e5526c255d27414e09568671ef87483/spdlog/include/spdlog/fmt/bundled/compile.h +0 -535
  334. data/ext/cache/spdlog/19df5d3d8e5526c255d27414e09568671ef87483/spdlog/include/spdlog/fmt/bundled/core.h +0 -2969
  335. data/ext/cache/spdlog/19df5d3d8e5526c255d27414e09568671ef87483/spdlog/include/spdlog/fmt/bundled/format-inl.h +0 -1678
  336. data/ext/cache/spdlog/19df5d3d8e5526c255d27414e09568671ef87483/spdlog/include/spdlog/fmt/bundled/format.h +0 -4535
  337. data/ext/cache/spdlog/19df5d3d8e5526c255d27414e09568671ef87483/spdlog/include/spdlog/fmt/bundled/os.h +0 -455
  338. data/ext/cache/spdlog/19df5d3d8e5526c255d27414e09568671ef87483/spdlog/include/spdlog/fmt/bundled/ostream.h +0 -245
  339. data/ext/cache/spdlog/19df5d3d8e5526c255d27414e09568671ef87483/spdlog/include/spdlog/fmt/bundled/printf.h +0 -675
  340. data/ext/cache/spdlog/19df5d3d8e5526c255d27414e09568671ef87483/spdlog/include/spdlog/fmt/bundled/ranges.h +0 -738
  341. data/ext/cache/spdlog/19df5d3d8e5526c255d27414e09568671ef87483/spdlog/include/spdlog/fmt/bundled/std.h +0 -537
  342. data/ext/cache/spdlog/19df5d3d8e5526c255d27414e09568671ef87483/spdlog/include/spdlog/fmt/bundled/xchar.h +0 -259
  343. data/ext/cache/spdlog/19df5d3d8e5526c255d27414e09568671ef87483/spdlog/src/bundled_fmtlib_format.cpp +0 -46
  344. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/LICENSE +0 -0
  345. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/cmake/ide.cmake +0 -0
  346. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/cmake/pch.h.in +0 -0
  347. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/cmake/spdlog.pc.in +0 -0
  348. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/cmake/spdlogCPack.cmake +0 -0
  349. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/cmake/spdlogConfig.cmake.in +0 -0
  350. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/cmake/version.rc.in +0 -0
  351. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/async.h +0 -0
  352. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/async_logger.h +0 -0
  353. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/cfg/argv.h +0 -0
  354. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/cfg/env.h +0 -0
  355. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/cfg/helpers-inl.h +0 -0
  356. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/cfg/helpers.h +0 -0
  357. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/common-inl.h +0 -0
  358. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/common.h +0 -0
  359. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/backtracer-inl.h +0 -0
  360. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/backtracer.h +0 -0
  361. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/circular_q.h +0 -0
  362. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/console_globals.h +0 -0
  363. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/file_helper-inl.h +0 -0
  364. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/file_helper.h +0 -0
  365. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/fmt_helper.h +0 -0
  366. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/log_msg-inl.h +0 -0
  367. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/log_msg.h +0 -0
  368. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/log_msg_buffer-inl.h +0 -0
  369. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/log_msg_buffer.h +0 -0
  370. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/null_mutex.h +0 -0
  371. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/os.h +0 -0
  372. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/periodic_worker-inl.h +0 -0
  373. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/periodic_worker.h +0 -0
  374. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/registry-inl.h +0 -0
  375. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/registry.h +0 -0
  376. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/synchronous_factory.h +0 -0
  377. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/tcp_client-windows.h +0 -0
  378. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/tcp_client.h +0 -0
  379. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/udp_client-windows.h +0 -0
  380. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/udp_client.h +0 -0
  381. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/windows_include.h +0 -0
  382. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/fmt/bin_to_hex.h +0 -0
  383. /data/ext/cache/{fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/include/fmt → spdlog/7251ead404dccd824789f8f3a13df2a6fb56440c/spdlog/include/spdlog/fmt/bundled}/args.h +0 -0
  384. /data/ext/cache/{fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/include/fmt → spdlog/7251ead404dccd824789f8f3a13df2a6fb56440c/spdlog/include/spdlog/fmt/bundled}/chrono.h +0 -0
  385. /data/ext/cache/{fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/include/fmt → spdlog/7251ead404dccd824789f8f3a13df2a6fb56440c/spdlog/include/spdlog/fmt/bundled}/color.h +0 -0
  386. /data/ext/cache/{fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/include/fmt → spdlog/7251ead404dccd824789f8f3a13df2a6fb56440c/spdlog/include/spdlog/fmt/bundled}/compile.h +0 -0
  387. /data/ext/cache/{fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/include/fmt → spdlog/7251ead404dccd824789f8f3a13df2a6fb56440c/spdlog/include/spdlog/fmt/bundled}/core.h +0 -0
  388. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/fmt/bundled/fmt.license.rst +0 -0
  389. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/fmt/bundled/locale.h +0 -0
  390. /data/ext/cache/{fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/include/fmt → spdlog/7251ead404dccd824789f8f3a13df2a6fb56440c/spdlog/include/spdlog/fmt/bundled}/os.h +0 -0
  391. /data/ext/cache/{fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/include/fmt → spdlog/7251ead404dccd824789f8f3a13df2a6fb56440c/spdlog/include/spdlog/fmt/bundled}/ostream.h +0 -0
  392. /data/ext/cache/{fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/include/fmt → spdlog/7251ead404dccd824789f8f3a13df2a6fb56440c/spdlog/include/spdlog/fmt/bundled}/printf.h +0 -0
  393. /data/ext/cache/{fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/include/fmt → spdlog/7251ead404dccd824789f8f3a13df2a6fb56440c/spdlog/include/spdlog/fmt/bundled}/std.h +0 -0
  394. /data/ext/cache/{fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/include/fmt → spdlog/7251ead404dccd824789f8f3a13df2a6fb56440c/spdlog/include/spdlog/fmt/bundled}/xchar.h +0 -0
  395. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/fmt/chrono.h +0 -0
  396. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/fmt/compile.h +0 -0
  397. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/fmt/fmt.h +0 -0
  398. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/fmt/ostr.h +0 -0
  399. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/fmt/ranges.h +0 -0
  400. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/fmt/std.h +0 -0
  401. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/fmt/xchar.h +0 -0
  402. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/formatter.h +0 -0
  403. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/fwd.h +0 -0
  404. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/logger-inl.h +0 -0
  405. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/logger.h +0 -0
  406. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/pattern_formatter.h +0 -0
  407. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/android_sink.h +0 -0
  408. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/ansicolor_sink-inl.h +0 -0
  409. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/base_sink-inl.h +0 -0
  410. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/basic_file_sink-inl.h +0 -0
  411. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/basic_file_sink.h +0 -0
  412. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/dist_sink.h +0 -0
  413. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/dup_filter_sink.h +0 -0
  414. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/kafka_sink.h +0 -0
  415. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/mongo_sink.h +0 -0
  416. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/null_sink.h +0 -0
  417. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/ostream_sink.h +0 -0
  418. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/qt_sinks.h +0 -0
  419. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/ringbuffer_sink.h +0 -0
  420. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/rotating_file_sink.h +0 -0
  421. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/sink-inl.h +0 -0
  422. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/sink.h +0 -0
  423. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/stdout_color_sinks-inl.h +0 -0
  424. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/stdout_color_sinks.h +0 -0
  425. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/stdout_sinks-inl.h +0 -0
  426. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/stdout_sinks.h +0 -0
  427. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/systemd_sink.h +0 -0
  428. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/tcp_sink.h +0 -0
  429. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/udp_sink.h +0 -0
  430. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/win_eventlog_sink.h +0 -0
  431. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/wincolor_sink.h +0 -0
  432. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/spdlog-inl.h +0 -0
  433. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/spdlog.h +0 -0
  434. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/stopwatch.h +0 -0
  435. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/tweakme.h +0 -0
  436. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/src/async.cpp +0 -0
  437. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/src/cfg.cpp +0 -0
  438. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/src/color_sinks.cpp +0 -0
  439. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/src/file_sinks.cpp +0 -0
  440. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/src/spdlog.cpp +0 -0
  441. /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).