couchbase 3.5.4 → 3.5.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/ext/CMakeLists.txt +8 -6
- data/ext/cache/cpm/{CPM_0.38.6.cmake → CPM_0.40.5.cmake} +152 -22
- data/ext/cache/extconf_include.rb +3 -3
- data/ext/cache/mozilla-ca-bundle.crt +32 -87
- data/ext/cache/mozilla-ca-bundle.sha256 +1 -1
- data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/CMakeLists.txt +30 -6
- data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/cmake/utils.cmake +13 -2
- data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/async_logger-inl.h +5 -7
- data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/mpmc_blocking_q.h +3 -3
- data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/os-inl.h +3 -3
- data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/thread_pool-inl.h +3 -8
- data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/thread_pool.h +3 -14
- data/ext/cache/{fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/include/fmt → spdlog/7251ead404dccd824789f8f3a13df2a6fb56440c/spdlog/include/spdlog/fmt/bundled}/base.h +47 -31
- data/ext/cache/{fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/include/fmt → spdlog/7251ead404dccd824789f8f3a13df2a6fb56440c/spdlog/include/spdlog/fmt/bundled}/format-inl.h +32 -8
- data/ext/cache/{fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/include/fmt → spdlog/7251ead404dccd824789f8f3a13df2a6fb56440c/spdlog/include/spdlog/fmt/bundled}/format.h +22 -14
- data/ext/cache/{fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/include/fmt → spdlog/7251ead404dccd824789f8f3a13df2a6fb56440c/spdlog/include/spdlog/fmt/bundled}/ranges.h +1 -1
- data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/mdc.h +4 -0
- data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/pattern_formatter-inl.h +16 -2
- data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/ansicolor_sink.h +1 -1
- data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/base_sink.h +4 -4
- data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/callback_sink.h +1 -1
- data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/daily_file_sink.h +3 -0
- data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/hourly_file_sink.h +2 -0
- data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/msvc_sink.h +1 -1
- data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/rotating_file_sink-inl.h +1 -1
- data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/syslog_sink.h +3 -2
- data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/wincolor_sink-inl.h +9 -0
- data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/version.h +2 -2
- data/ext/cache/{fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/src/format.cc → spdlog/7251ead404dccd824789f8f3a13df2a6fb56440c/spdlog/src/bundled_fmtlib_format.cpp} +10 -5
- data/ext/couchbase/CMakeLists.txt +3 -2
- data/ext/couchbase/cmake/APKBUILD.in +54 -0
- data/ext/couchbase/cmake/Backtrace.cmake +3 -1
- data/ext/couchbase/cmake/CPM.cmake +1 -1
- data/ext/couchbase/cmake/CompilerWarnings.cmake +0 -5
- data/ext/couchbase/cmake/Packaging.cmake +174 -11
- data/ext/couchbase/cmake/RPath.cmake +10 -0
- data/ext/couchbase/cmake/Testing.cmake +0 -4
- data/ext/couchbase/cmake/ThirdPartyDependencies.cmake +7 -26
- data/ext/couchbase/cmake/VersionInfo.cmake +4 -0
- data/ext/couchbase/cmake/build_version.hxx.in +1 -0
- data/ext/couchbase/cmake/couchbase-cxx-client.spec.in +2 -2
- data/ext/couchbase/cmake/couchbase_cxx_client.pc.in +2 -2
- data/ext/couchbase/core/agent_config.cxx +1 -1
- data/ext/couchbase/core/agent_group_config.cxx +1 -1
- data/ext/couchbase/core/bucket.cxx +9 -9
- data/ext/couchbase/core/cluster.cxx +0 -2
- data/ext/couchbase/core/cluster_agent_config.cxx +1 -1
- data/ext/couchbase/core/collections_component.cxx +1 -1
- data/ext/couchbase/core/columnar/agent_config.cxx +2 -2
- data/ext/couchbase/core/columnar/error.hxx +0 -1
- data/ext/couchbase/core/columnar/query_component.cxx +2 -2
- data/ext/couchbase/core/config_profiles.cxx +1 -1
- data/ext/couchbase/core/core_sdk_shim.cxx +1 -1
- data/ext/couchbase/core/crud_component.cxx +1 -1
- data/ext/couchbase/core/design_document_namespace_fmt.hxx +1 -1
- data/ext/couchbase/core/diagnostics_fmt.hxx +1 -1
- data/ext/couchbase/core/document_id.cxx +1 -1
- data/ext/couchbase/core/document_id_fmt.hxx +1 -1
- data/ext/couchbase/core/error_context/analytics_json.hxx +3 -1
- data/ext/couchbase/core/error_context/key_value_json.hxx +1 -1
- data/ext/couchbase/core/error_context/query_public_json.hxx +1 -1
- data/ext/couchbase/core/error_context/subdocument_json.hxx +1 -1
- data/ext/couchbase/core/fmt/key_value_error_map_attribute.hxx +1 -1
- data/ext/couchbase/core/fmt/key_value_extended_error_info.hxx +1 -1
- data/ext/couchbase/core/fmt/key_value_status_code.hxx +1 -1
- data/ext/couchbase/core/http_component.cxx +3 -3
- data/ext/couchbase/core/impl/analytics.cxx +1 -0
- data/ext/couchbase/core/impl/best_effort_retry_strategy.cxx +1 -1
- data/ext/couchbase/core/impl/collection.cxx +28 -4
- data/ext/couchbase/core/impl/date_range.cxx +2 -2
- data/ext/couchbase/core/impl/date_range_query.cxx +2 -2
- data/ext/couchbase/core/impl/dns_srv_tracker.cxx +1 -1
- data/ext/couchbase/core/impl/error.cxx +27 -4
- data/ext/couchbase/core/impl/expiry.cxx +2 -2
- data/ext/couchbase/core/impl/fail_fast_retry_strategy.cxx +1 -2
- data/ext/couchbase/core/impl/get_replica.hxx +2 -0
- data/ext/couchbase/core/impl/key_value_error_context.cxx +6 -4
- data/ext/couchbase/core/impl/lookup_in_replica.hxx +2 -0
- data/ext/couchbase/core/impl/numeric_range.cxx +1 -1
- data/ext/couchbase/core/impl/observe_seqno.hxx +2 -0
- data/ext/couchbase/core/impl/query.cxx +1 -0
- data/ext/couchbase/core/impl/query_error_context.cxx +3 -2
- data/ext/couchbase/core/impl/scope.cxx +5 -6
- data/ext/couchbase/core/impl/search.cxx +3 -1
- data/ext/couchbase/core/io/config_tracker.cxx +1 -1
- data/ext/couchbase/core/io/dns_client.cxx +23 -8
- data/ext/couchbase/core/io/http_command.hxx +2 -2
- data/ext/couchbase/core/io/http_parser.cxx +1 -1
- data/ext/couchbase/core/io/http_session.cxx +4 -0
- data/ext/couchbase/core/io/http_session.hxx +4 -2
- data/ext/couchbase/core/io/mcbp_command.hxx +2 -2
- data/ext/couchbase/core/key_value_config.cxx +2 -2
- data/ext/couchbase/core/logger/logger.hxx +1 -1
- data/ext/couchbase/core/management/rbac_fmt.hxx +1 -1
- data/ext/couchbase/core/mcbp/operation_queue.cxx +1 -1
- data/ext/couchbase/core/mcbp/packet.cxx +1 -1
- data/ext/couchbase/core/meta/features.hxx +11 -0
- data/ext/couchbase/core/meta/version.cxx +48 -7
- data/ext/couchbase/core/operations/document_analytics.cxx +23 -17
- data/ext/couchbase/core/operations/document_analytics.hxx +1 -0
- data/ext/couchbase/core/operations/document_append.hxx +2 -0
- data/ext/couchbase/core/operations/document_decrement.hxx +2 -0
- data/ext/couchbase/core/operations/document_exists.hxx +2 -0
- data/ext/couchbase/core/operations/document_get.hxx +2 -0
- data/ext/couchbase/core/operations/document_get_all_replicas.hxx +2 -0
- data/ext/couchbase/core/operations/document_get_and_lock.hxx +2 -0
- data/ext/couchbase/core/operations/document_get_and_touch.hxx +2 -0
- data/ext/couchbase/core/operations/document_get_any_replica.hxx +2 -0
- data/ext/couchbase/core/operations/document_get_projected.hxx +2 -0
- data/ext/couchbase/core/operations/document_increment.hxx +2 -0
- data/ext/couchbase/core/operations/document_insert.hxx +2 -0
- data/ext/couchbase/core/operations/document_lookup_in.hxx +2 -0
- data/ext/couchbase/core/operations/document_lookup_in_all_replicas.hxx +2 -0
- data/ext/couchbase/core/operations/document_lookup_in_any_replica.hxx +2 -0
- data/ext/couchbase/core/operations/document_mutate_in.hxx +2 -0
- data/ext/couchbase/core/operations/document_prepend.hxx +2 -0
- data/ext/couchbase/core/operations/document_query.hxx +1 -0
- data/ext/couchbase/core/operations/document_remove.hxx +2 -0
- data/ext/couchbase/core/operations/document_replace.hxx +2 -0
- data/ext/couchbase/core/operations/document_search.hxx +1 -0
- data/ext/couchbase/core/operations/document_touch.hxx +2 -0
- data/ext/couchbase/core/operations/document_unlock.hxx +2 -0
- data/ext/couchbase/core/operations/document_upsert.hxx +2 -0
- data/ext/couchbase/core/operations/document_view.hxx +1 -0
- data/ext/couchbase/core/operations/http_noop.hxx +2 -0
- data/ext/couchbase/core/operations/management/CMakeLists.txt +0 -1
- data/ext/couchbase/core/operations/management/analytics_dataset_create.cxx +1 -1
- data/ext/couchbase/core/operations/management/analytics_dataset_create.hxx +1 -0
- data/ext/couchbase/core/operations/management/analytics_dataset_drop.cxx +1 -1
- data/ext/couchbase/core/operations/management/analytics_dataset_drop.hxx +1 -0
- data/ext/couchbase/core/operations/management/analytics_dataset_get_all.hxx +1 -0
- data/ext/couchbase/core/operations/management/analytics_dataverse_create.cxx +1 -1
- data/ext/couchbase/core/operations/management/analytics_dataverse_create.hxx +1 -0
- data/ext/couchbase/core/operations/management/analytics_dataverse_drop.cxx +1 -1
- data/ext/couchbase/core/operations/management/analytics_dataverse_drop.hxx +1 -0
- data/ext/couchbase/core/operations/management/analytics_get_pending_mutations.cxx +1 -1
- data/ext/couchbase/core/operations/management/analytics_get_pending_mutations.hxx +2 -0
- data/ext/couchbase/core/operations/management/analytics_index_create.hxx +1 -0
- data/ext/couchbase/core/operations/management/analytics_index_drop.cxx +1 -1
- data/ext/couchbase/core/operations/management/analytics_index_drop.hxx +1 -0
- data/ext/couchbase/core/operations/management/analytics_index_get_all.hxx +1 -0
- data/ext/couchbase/core/operations/management/analytics_link_connect.cxx +1 -1
- data/ext/couchbase/core/operations/management/analytics_link_connect.hxx +1 -0
- data/ext/couchbase/core/operations/management/analytics_link_create.hxx +1 -0
- data/ext/couchbase/core/operations/management/analytics_link_disconnect.cxx +1 -1
- data/ext/couchbase/core/operations/management/analytics_link_disconnect.hxx +1 -0
- data/ext/couchbase/core/operations/management/analytics_link_drop.cxx +1 -1
- data/ext/couchbase/core/operations/management/analytics_link_drop.hxx +1 -0
- data/ext/couchbase/core/operations/management/analytics_link_get_all.cxx +24 -16
- data/ext/couchbase/core/operations/management/analytics_link_get_all.hxx +4 -3
- data/ext/couchbase/core/operations/management/analytics_link_replace.hxx +1 -0
- data/ext/couchbase/core/operations/management/analytics_link_utils.hxx +4 -3
- data/ext/couchbase/core/operations/management/bucket_create.hxx +1 -0
- data/ext/couchbase/core/operations/management/bucket_describe.cxx +1 -1
- data/ext/couchbase/core/operations/management/bucket_describe.hxx +1 -0
- data/ext/couchbase/core/operations/management/bucket_drop.cxx +1 -1
- data/ext/couchbase/core/operations/management/bucket_drop.hxx +1 -0
- data/ext/couchbase/core/operations/management/bucket_flush.cxx +1 -1
- data/ext/couchbase/core/operations/management/bucket_flush.hxx +1 -0
- data/ext/couchbase/core/operations/management/bucket_get.cxx +1 -1
- data/ext/couchbase/core/operations/management/bucket_get.hxx +1 -0
- data/ext/couchbase/core/operations/management/bucket_get_all.hxx +1 -0
- data/ext/couchbase/core/operations/management/bucket_update.hxx +1 -0
- data/ext/couchbase/core/operations/management/change_password.cxx +1 -1
- data/ext/couchbase/core/operations/management/change_password.hxx +1 -0
- data/ext/couchbase/core/operations/management/cluster_describe.hxx +1 -0
- data/ext/couchbase/core/operations/management/cluster_developer_preview_enable.hxx +1 -0
- data/ext/couchbase/core/operations/management/collection_create.cxx +1 -1
- data/ext/couchbase/core/operations/management/collection_create.hxx +2 -0
- data/ext/couchbase/core/operations/management/collection_drop.cxx +1 -1
- data/ext/couchbase/core/operations/management/collection_drop.hxx +1 -0
- data/ext/couchbase/core/operations/management/collection_update.cxx +1 -1
- data/ext/couchbase/core/operations/management/collection_update.hxx +2 -0
- data/ext/couchbase/core/operations/management/collections_manifest_get.hxx +2 -0
- data/ext/couchbase/core/operations/management/eventing_deploy_function.cxx +1 -1
- data/ext/couchbase/core/operations/management/eventing_deploy_function.hxx +3 -2
- data/ext/couchbase/core/operations/management/eventing_drop_function.cxx +1 -1
- data/ext/couchbase/core/operations/management/eventing_drop_function.hxx +3 -2
- data/ext/couchbase/core/operations/management/eventing_get_all_functions.hxx +3 -2
- data/ext/couchbase/core/operations/management/eventing_get_function.cxx +1 -1
- data/ext/couchbase/core/operations/management/eventing_get_function.hxx +3 -2
- data/ext/couchbase/core/operations/management/eventing_get_status.hxx +3 -2
- data/ext/couchbase/core/operations/management/eventing_pause_function.cxx +1 -1
- data/ext/couchbase/core/operations/management/eventing_pause_function.hxx +3 -2
- data/ext/couchbase/core/operations/management/eventing_resume_function.cxx +1 -1
- data/ext/couchbase/core/operations/management/eventing_resume_function.hxx +3 -2
- data/ext/couchbase/core/operations/management/eventing_undeploy_function.cxx +1 -1
- data/ext/couchbase/core/operations/management/eventing_undeploy_function.hxx +3 -2
- data/ext/couchbase/core/operations/management/eventing_upsert_function.cxx +1 -2
- data/ext/couchbase/core/operations/management/eventing_upsert_function.hxx +3 -2
- data/ext/couchbase/core/operations/management/freeform.hxx +2 -0
- data/ext/couchbase/core/operations/management/group_drop.cxx +1 -1
- data/ext/couchbase/core/operations/management/group_drop.hxx +1 -0
- data/ext/couchbase/core/operations/management/group_get.cxx +1 -1
- data/ext/couchbase/core/operations/management/group_get.hxx +1 -0
- data/ext/couchbase/core/operations/management/group_get_all.hxx +1 -0
- data/ext/couchbase/core/operations/management/group_upsert.hxx +1 -0
- data/ext/couchbase/core/operations/management/query_index_build.hxx +7 -5
- data/ext/couchbase/core/operations/management/query_index_build_deferred.hxx +3 -0
- data/ext/couchbase/core/operations/management/query_index_create.cxx +1 -1
- data/ext/couchbase/core/operations/management/query_index_create.hxx +1 -0
- data/ext/couchbase/core/operations/management/query_index_drop.cxx +1 -1
- data/ext/couchbase/core/operations/management/query_index_drop.hxx +1 -0
- data/ext/couchbase/core/operations/management/query_index_get_all.hxx +2 -0
- data/ext/couchbase/core/operations/management/query_index_get_all_deferred.hxx +3 -0
- data/ext/couchbase/core/operations/management/role_get_all.hxx +1 -0
- data/ext/couchbase/core/operations/management/scope_create.cxx +1 -1
- data/ext/couchbase/core/operations/management/scope_create.hxx +1 -0
- data/ext/couchbase/core/operations/management/scope_drop.cxx +1 -1
- data/ext/couchbase/core/operations/management/scope_drop.hxx +1 -0
- data/ext/couchbase/core/operations/management/scope_get_all.cxx +1 -1
- data/ext/couchbase/core/operations/management/scope_get_all.hxx +1 -0
- data/ext/couchbase/core/operations/management/search_get_stats.hxx +1 -0
- data/ext/couchbase/core/operations/management/search_index_analyze_document.cxx +1 -1
- data/ext/couchbase/core/operations/management/search_index_analyze_document.hxx +1 -0
- data/ext/couchbase/core/operations/management/search_index_control_ingest.cxx +1 -1
- data/ext/couchbase/core/operations/management/search_index_control_ingest.hxx +1 -0
- data/ext/couchbase/core/operations/management/search_index_control_plan_freeze.cxx +1 -1
- data/ext/couchbase/core/operations/management/search_index_control_plan_freeze.hxx +1 -0
- data/ext/couchbase/core/operations/management/search_index_control_query.cxx +1 -1
- data/ext/couchbase/core/operations/management/search_index_control_query.hxx +1 -0
- data/ext/couchbase/core/operations/management/search_index_drop.cxx +1 -1
- data/ext/couchbase/core/operations/management/search_index_drop.hxx +1 -0
- data/ext/couchbase/core/operations/management/search_index_get.cxx +1 -1
- data/ext/couchbase/core/operations/management/search_index_get.hxx +1 -0
- data/ext/couchbase/core/operations/management/search_index_get_all.cxx +1 -1
- data/ext/couchbase/core/operations/management/search_index_get_all.hxx +1 -0
- data/ext/couchbase/core/operations/management/search_index_get_documents_count.cxx +1 -1
- data/ext/couchbase/core/operations/management/search_index_get_documents_count.hxx +2 -0
- data/ext/couchbase/core/operations/management/search_index_get_stats.cxx +1 -1
- data/ext/couchbase/core/operations/management/search_index_get_stats.hxx +1 -0
- data/ext/couchbase/core/operations/management/search_index_upsert.cxx +1 -1
- data/ext/couchbase/core/operations/management/search_index_upsert.hxx +1 -0
- data/ext/couchbase/core/operations/management/user_drop.hxx +1 -0
- data/ext/couchbase/core/operations/management/user_get.hxx +1 -0
- data/ext/couchbase/core/operations/management/user_get_all.hxx +1 -0
- data/ext/couchbase/core/operations/management/user_upsert.cxx +3 -3
- data/ext/couchbase/core/operations/management/user_upsert.hxx +1 -0
- data/ext/couchbase/core/operations/management/view_index_drop.cxx +1 -1
- data/ext/couchbase/core/operations/management/view_index_drop.hxx +1 -0
- data/ext/couchbase/core/operations/management/view_index_get.cxx +1 -1
- data/ext/couchbase/core/operations/management/view_index_get.hxx +1 -0
- data/ext/couchbase/core/operations/management/view_index_get_all.cxx +1 -1
- data/ext/couchbase/core/operations/management/view_index_get_all.hxx +2 -0
- data/ext/couchbase/core/operations/management/view_index_upsert.cxx +1 -1
- data/ext/couchbase/core/operations/management/view_index_upsert.hxx +1 -0
- data/ext/couchbase/core/origin.cxx +3 -2
- data/ext/couchbase/core/platform/base64.h +8 -8
- data/ext/couchbase/core/protocol/client_opcode_fmt.hxx +1 -1
- data/ext/couchbase/core/protocol/client_response.hxx +1 -1
- data/ext/couchbase/core/protocol/frame_info_id_fmt.hxx +1 -1
- data/ext/couchbase/core/protocol/hello_feature_fmt.hxx +1 -1
- data/ext/couchbase/core/protocol/magic_fmt.hxx +1 -1
- data/ext/couchbase/core/protocol/server_opcode_fmt.hxx +1 -1
- data/ext/couchbase/core/query_context.hxx +7 -6
- data/ext/couchbase/core/retry_orchestrator.cxx +1 -1
- data/ext/couchbase/core/sasl/CMakeLists.txt +0 -1
- data/ext/couchbase/core/sasl/error_fmt.h +1 -1
- data/ext/couchbase/core/seed_config.cxx +2 -2
- data/ext/couchbase/core/service_type_fmt.hxx +1 -1
- data/ext/couchbase/core/topology/capabilities_fmt.hxx +1 -1
- data/ext/couchbase/core/topology/collections_manifest_fmt.hxx +2 -1
- data/ext/couchbase/core/topology/configuration_fmt.hxx +1 -1
- data/ext/couchbase/core/transactions/async_attempt_context.cxx +1 -1
- data/ext/couchbase/core/transactions/async_attempt_context.hxx +9 -22
- data/ext/couchbase/core/transactions/attempt_context.cxx +1 -1
- data/ext/couchbase/core/transactions/attempt_context.hxx +6 -33
- data/ext/couchbase/core/transactions/attempt_context_impl.cxx +41 -41
- data/ext/couchbase/core/transactions/attempt_context_impl.hxx +15 -16
- data/ext/couchbase/core/transactions/exceptions_fmt.hxx +1 -1
- data/ext/couchbase/core/transactions/internal/atr_cleanup_entry.hxx +1 -1
- data/ext/couchbase/core/transactions/internal/client_record.hxx +4 -3
- data/ext/couchbase/core/transactions/internal/doc_record_fmt.hxx +1 -1
- data/ext/couchbase/core/transactions/internal/exceptions_internal.hxx +0 -2
- data/ext/couchbase/core/transactions/internal/exceptions_internal_fmt.hxx +1 -1
- data/ext/couchbase/core/transactions/internal/logging.hxx +2 -0
- data/ext/couchbase/core/transactions/internal/transaction_context.hxx +3 -0
- data/ext/couchbase/core/transactions/result_fmt.hxx +1 -1
- data/ext/couchbase/core/transactions/transaction_context.cxx +12 -2
- data/ext/couchbase/core/transactions/transaction_get_result.hxx +0 -20
- data/ext/couchbase/core/transactions/transaction_links.hxx +1 -1
- data/ext/couchbase/core/utils/join_strings.hxx +2 -2
- data/ext/couchbase/core/utils/keyspace.hxx +2 -1
- data/ext/couchbase/core/utils/url_codec.cxx +1 -1
- data/ext/couchbase/couchbase/common_options.hxx +16 -1
- data/ext/couchbase/couchbase/fmt/analytics_scan_consistency.hxx +0 -2
- data/ext/couchbase/couchbase/fmt/analytics_status.hxx +0 -2
- data/ext/couchbase/couchbase/fmt/cas.hxx +0 -2
- data/ext/couchbase/couchbase/fmt/durability_level.hxx +0 -2
- data/ext/couchbase/couchbase/fmt/error.hxx +0 -2
- data/ext/couchbase/couchbase/fmt/error_context.hxx +0 -2
- data/ext/couchbase/couchbase/fmt/mutation_token.hxx +0 -2
- data/ext/couchbase/couchbase/fmt/query_profile.hxx +0 -2
- data/ext/couchbase/couchbase/fmt/query_scan_consistency.hxx +0 -2
- data/ext/couchbase/couchbase/fmt/query_status.hxx +0 -2
- data/ext/couchbase/couchbase/fmt/retry_reason.hxx +5 -1
- data/ext/couchbase/couchbase/fmt/search_scan_consistency.hxx +0 -2
- data/ext/couchbase/couchbase/fmt/tls_verify_mode.hxx +0 -2
- data/ext/couchbase/couchbase/fmt/transaction_keyspace.hxx +0 -2
- data/ext/couchbase/couchbase/metrics/otel_meter.hxx +16 -20
- data/ext/extconf.rb +1 -0
- data/ext/rcb_analytics.cxx +7 -7
- data/ext/rcb_backend.cxx +6 -1
- data/ext/rcb_buckets.cxx +1 -1
- data/ext/rcb_collections.cxx +1 -1
- data/ext/rcb_crud.cxx +51 -30
- data/ext/rcb_diagnostics.cxx +1 -1
- data/ext/rcb_exceptions.cxx +3 -2
- data/ext/rcb_extras.cxx +1 -1
- data/ext/rcb_range_scan.cxx +1 -1
- data/ext/rcb_search.cxx +1 -1
- data/ext/rcb_users.cxx +2 -2
- data/ext/rcb_utils.hxx +32 -0
- data/lib/couchbase/logger.rb +3 -3
- data/lib/couchbase/options.rb +48 -0
- data/lib/couchbase/version.rb +1 -1
- metadata +131 -153
- data/ext/cache/fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/CMakeLists.txt +0 -520
- data/ext/cache/fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/ChangeLog.md +0 -2598
- data/ext/cache/fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/LICENSE +0 -27
- data/ext/cache/fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/README.md +0 -484
- data/ext/cache/fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/src/fmt.cc +0 -135
- data/ext/cache/fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/src/os.cc +0 -403
- data/ext/cache/fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/support/cmake/FindSetEnv.cmake +0 -7
- data/ext/cache/fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/support/cmake/JoinPaths.cmake +0 -26
- data/ext/cache/fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/support/cmake/fmt-config.cmake.in +0 -7
- data/ext/cache/fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/support/cmake/fmt.pc.in +0 -11
- data/ext/cache/spdlog/19df5d3d8e5526c255d27414e09568671ef87483/spdlog/include/spdlog/fmt/bundled/args.h +0 -235
- data/ext/cache/spdlog/19df5d3d8e5526c255d27414e09568671ef87483/spdlog/include/spdlog/fmt/bundled/chrono.h +0 -2240
- data/ext/cache/spdlog/19df5d3d8e5526c255d27414e09568671ef87483/spdlog/include/spdlog/fmt/bundled/color.h +0 -643
- data/ext/cache/spdlog/19df5d3d8e5526c255d27414e09568671ef87483/spdlog/include/spdlog/fmt/bundled/compile.h +0 -535
- data/ext/cache/spdlog/19df5d3d8e5526c255d27414e09568671ef87483/spdlog/include/spdlog/fmt/bundled/core.h +0 -2969
- data/ext/cache/spdlog/19df5d3d8e5526c255d27414e09568671ef87483/spdlog/include/spdlog/fmt/bundled/format-inl.h +0 -1678
- data/ext/cache/spdlog/19df5d3d8e5526c255d27414e09568671ef87483/spdlog/include/spdlog/fmt/bundled/format.h +0 -4535
- data/ext/cache/spdlog/19df5d3d8e5526c255d27414e09568671ef87483/spdlog/include/spdlog/fmt/bundled/os.h +0 -455
- data/ext/cache/spdlog/19df5d3d8e5526c255d27414e09568671ef87483/spdlog/include/spdlog/fmt/bundled/ostream.h +0 -245
- data/ext/cache/spdlog/19df5d3d8e5526c255d27414e09568671ef87483/spdlog/include/spdlog/fmt/bundled/printf.h +0 -675
- data/ext/cache/spdlog/19df5d3d8e5526c255d27414e09568671ef87483/spdlog/include/spdlog/fmt/bundled/ranges.h +0 -738
- data/ext/cache/spdlog/19df5d3d8e5526c255d27414e09568671ef87483/spdlog/include/spdlog/fmt/bundled/std.h +0 -537
- data/ext/cache/spdlog/19df5d3d8e5526c255d27414e09568671ef87483/spdlog/include/spdlog/fmt/bundled/xchar.h +0 -259
- data/ext/cache/spdlog/19df5d3d8e5526c255d27414e09568671ef87483/spdlog/src/bundled_fmtlib_format.cpp +0 -46
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/LICENSE +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/cmake/ide.cmake +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/cmake/pch.h.in +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/cmake/spdlog.pc.in +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/cmake/spdlogCPack.cmake +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/cmake/spdlogConfig.cmake.in +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/cmake/version.rc.in +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/async.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/async_logger.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/cfg/argv.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/cfg/env.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/cfg/helpers-inl.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/cfg/helpers.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/common-inl.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/common.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/backtracer-inl.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/backtracer.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/circular_q.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/console_globals.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/file_helper-inl.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/file_helper.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/fmt_helper.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/log_msg-inl.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/log_msg.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/log_msg_buffer-inl.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/log_msg_buffer.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/null_mutex.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/os.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/periodic_worker-inl.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/periodic_worker.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/registry-inl.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/registry.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/synchronous_factory.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/tcp_client-windows.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/tcp_client.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/udp_client-windows.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/udp_client.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/windows_include.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/fmt/bin_to_hex.h +0 -0
- /data/ext/cache/{fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/include/fmt → spdlog/7251ead404dccd824789f8f3a13df2a6fb56440c/spdlog/include/spdlog/fmt/bundled}/args.h +0 -0
- /data/ext/cache/{fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/include/fmt → spdlog/7251ead404dccd824789f8f3a13df2a6fb56440c/spdlog/include/spdlog/fmt/bundled}/chrono.h +0 -0
- /data/ext/cache/{fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/include/fmt → spdlog/7251ead404dccd824789f8f3a13df2a6fb56440c/spdlog/include/spdlog/fmt/bundled}/color.h +0 -0
- /data/ext/cache/{fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/include/fmt → spdlog/7251ead404dccd824789f8f3a13df2a6fb56440c/spdlog/include/spdlog/fmt/bundled}/compile.h +0 -0
- /data/ext/cache/{fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/include/fmt → spdlog/7251ead404dccd824789f8f3a13df2a6fb56440c/spdlog/include/spdlog/fmt/bundled}/core.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/fmt/bundled/fmt.license.rst +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/fmt/bundled/locale.h +0 -0
- /data/ext/cache/{fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/include/fmt → spdlog/7251ead404dccd824789f8f3a13df2a6fb56440c/spdlog/include/spdlog/fmt/bundled}/os.h +0 -0
- /data/ext/cache/{fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/include/fmt → spdlog/7251ead404dccd824789f8f3a13df2a6fb56440c/spdlog/include/spdlog/fmt/bundled}/ostream.h +0 -0
- /data/ext/cache/{fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/include/fmt → spdlog/7251ead404dccd824789f8f3a13df2a6fb56440c/spdlog/include/spdlog/fmt/bundled}/printf.h +0 -0
- /data/ext/cache/{fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/include/fmt → spdlog/7251ead404dccd824789f8f3a13df2a6fb56440c/spdlog/include/spdlog/fmt/bundled}/std.h +0 -0
- /data/ext/cache/{fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/include/fmt → spdlog/7251ead404dccd824789f8f3a13df2a6fb56440c/spdlog/include/spdlog/fmt/bundled}/xchar.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/fmt/chrono.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/fmt/compile.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/fmt/fmt.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/fmt/ostr.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/fmt/ranges.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/fmt/std.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/fmt/xchar.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/formatter.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/fwd.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/logger-inl.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/logger.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/pattern_formatter.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/android_sink.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/ansicolor_sink-inl.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/base_sink-inl.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/basic_file_sink-inl.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/basic_file_sink.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/dist_sink.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/dup_filter_sink.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/kafka_sink.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/mongo_sink.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/null_sink.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/ostream_sink.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/qt_sinks.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/ringbuffer_sink.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/rotating_file_sink.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/sink-inl.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/sink.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/stdout_color_sinks-inl.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/stdout_color_sinks.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/stdout_sinks-inl.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/stdout_sinks.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/systemd_sink.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/tcp_sink.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/udp_sink.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/win_eventlog_sink.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/wincolor_sink.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/spdlog-inl.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/spdlog.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/stopwatch.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/tweakme.h +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/src/async.cpp +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/src/cfg.cpp +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/src/color_sinks.cpp +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/src/file_sinks.cpp +0 -0
- /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/src/spdlog.cpp +0 -0
- /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).
|