Closed Wongboo closed 2 years ago
Thank you for the contribution. Currently, pkgsrc is in a freeze in preparation of the next quarterly release.
Okay
Thank you for the contribution. Currently, pkgsrc is in a freeze in preparation of the next quarterly release.
looks like quarterly release already finished, so?
9.1.0 - 2022-08-27
fmt::formatted_size
now works at compile time . For example (godbolt <https://godbolt.org/z/1MW5rMdf8>
__):.. code:: c++
include <fmt/compile.h>
int main() { using namespace fmt::literals; constexpr size_t n = fmt::formatted_size("{}"_cf, 42); fmt::print("{}\n", n); // prints 2 }
Fixed handling of invalid UTF-8.
Improved Unicode support in
ostream
overloads ofprint
.Fixed handling of the sign specifier in localized formatting on systems with 32-bit
wchar_t
.Added support for wide streams to
fmt::streamed
.Added the
n
specifier that disables the output of delimiters when formatting ranges. For example (godbolt <https://godbolt.org/z/roKqGdj8c>
__):.. code:: c++
include <fmt/ranges.h>
include
int main() { auto v = std::vector{1, 2, 3}; fmt::print("{:n}\n", v); // prints 1, 2, 3 }
Worked around problematic
std::string_view
constructors introduced in C++23Improve handling (exclusion) of recursive ranges
Improved error reporting in format string compilation.
Improved the implementation of
Dragonbox <https://github.com/jk-jeon/dragonbox>
_, the algorithm used for the default floating-point formatting.Fixed issues with floating-point formatting on exotic platforms.
Improved the implementation of chrono formatting.
Improved documentation.
Improved build configuration.
Fixed various warnings and compilation issues.
9.0.0 - 2022-07-04
Switched to the internal floating point formatter for all decimal presentation formats. In particular this results in consistent rounding on all platforms and removing the
s[n]printf
fallback for decimal FP formatting.Compile-time floating point formatting no longer requires the header-only mode. For example (
godbolt <https://godbolt.org/z/G37PTeG3b>
__):.. code:: c++
include
include <fmt/compile.h>
consteval auto compile_time_dtoa(double value) -> std::array<char, 10> { auto result = std::array<char, 10>(); fmt::format_to(result.data(), FMT_COMPILE("{}"), value); return result; }
constexpr auto answer = compile_time_dtoa(0.42);
works with the default settings.
Improved the implementation of
Dragonbox <https://github.com/jk-jeon/dragonbox>
_, the algorithm used for the default floating-point formatting.Made
fmt::to_string
work with__float128
. This uses the internal FP formatter and works even on system without__float128
support in[s]printf
.Disabled automatic
std::ostream
insertion operator (operator<<
) discovery whenfmt/ostream.h
is included to prevent ODR violations. You can get the old behavior by definingFMT_DEPRECATED_OSTREAM
but this will be removed in the next major release. Usefmt::streamed
orfmt::ostream_formatter
to enable formatting viastd::ostream
instead.Added
fmt::ostream_formatter
that can be used to writeformatter
specializations that perform formatting viastd::ostream
. For example (godbolt <https://godbolt.org/z/5sEc5qMsf>
__):.. code:: c++
include <fmt/ostream.h>
struct date { int year, month, day;
friend std::ostream& operator<<(std::ostream& os, const date& d) { return os << d.year << '-' << d.month << '-' << d.day; } };
template <> struct fmt::formatter : ostream_formatter {};
std::string s = fmt::format("The date is {}", date{2012, 12, 9}); // s == "The date is 2012-12-9"
Added the
fmt::streamed
function that takes an object and formats it viastd::ostream
. For example (godbolt <https://godbolt.org/z/5G3346G1f>
__):.. code:: c++
include
include <fmt/ostream.h>
int main() { fmt::print("Current thread id: {}\n", fmt::streamed(std::this_thread::get_id())); }
Note that
fmt/std.h
provides aformatter
specialization forstd::thread::id
so you don't need to format it viastd::ostream
.Deprecated implicit conversions of unscoped enums to integers for consistency with scoped enums.
Added an argument-dependent lookup based
format_as
extension API to simplify formatting of enums.Added experimental
std::variant
formatting support. For example (godbolt <https://godbolt.org/z/KG9z6cq68>
__):.. code:: c++
include
include <fmt/std.h>
int main() { auto v = std::variant<int, std::string>(42); fmt::print("{}\n", v); }
prints::
variant(42)
Thanks
@jehelset <https://github.com/jehelset>
_.Added experimental
std::filesystem::path
formatting support (#2865 <https://github.com/fmtlib/fmt/issues/2865>
,#2902 <https://github.com/fmtlib/fmt/pull/2902>
,#2917 <https://github.com/fmtlib/fmt/issues/2917>
,#2918 <https://github.com/fmtlib/fmt/pull/2918>
). For example (godbolt <https://godbolt.org/z/o44dMexEb>
__):.. code:: c++
include
include <fmt/std.h>
int main() { fmt::print("There is no place like {}.", std::filesystem::path("/home")); }
prints::
There is no place like "/home".
Added a
std::thread::id
formatter tofmt/std.h
. For example (godbolt <https://godbolt.org/z/j1azbYf3E>
__):.. code:: c++
include
include <fmt/std.h>
int main() { fmt::print("Current thread id: {}\n", std::this_thread::get_id()); }
Added
fmt::styled
that applies a text style to an individual argument. . For example (godbolt <https://godbolt.org/z/vWGW7v5M6>
__):.. code:: c++
include <fmt/chrono.h>
include <fmt/color.h>
int main() { auto now = std::chrono::system_clock::now(); fmt::print( "[{}] {}: {}\n", fmt::styled(now, fmt::emphasis::bold), fmt::styled("error", fg(fmt::color::red)), "something went wrong"); }
Made
fmt::print
overload for text styles correctly handle UTF-8.Fixed Unicode handling when writing to an ostream.
Added support for nested specifiers to range formatting:
.. code:: c++
include
include <fmt/ranges.h>
int main() { fmt::print("{::#x}\n", std::vector{10, 20, 30}); }
prints
[0xa, 0x14, 0x1e]
.Implemented escaping of wide strings in ranges.
Added support for ranges with
begin
/end
found via the argument-dependent lookup.Fixed formatting of certain kinds of ranges of ranges.
Fixed handling of maps with element types other than
std::pair
.Made tuple formatter enabled only if elements are formattable.
Made
fmt::join
compatible with format string compilation.Made compile-time checks work with named arguments of custom types and
std::ostream
print
overloads.Removed
make_args_checked
because it is no longer needed for compile-time.Removed the following deprecated APIs:
_format
,arg_join
, theformat_to
overload that takes a memory buffer,[v]fprintf
that takes anostream
.Removed the deprecated implicit conversion of
[const] signed char*
and[const] unsigned char*
to C strings.Removed the deprecated
fmt/locale.h
.Replaced the deprecated
fileno()
withdescriptor()
inbuffered_file
.Moved
to_string_view
to thedetail
namespace since it's an implementation detail.Made access mode of a created file consistent with
fopen
by settingS_IWGRP
andS_IWOTH
.Removed a redundant buffer resize when formatting to
std::ostream
.Made precision computation for strings consistent with width. .
Fixed handling of locale separators in floating point formatting.
Made sign specifiers work with
__int128_t
.Improved support for systems such as CHERI with extra data stored in pointers.
Improved documentation.
Improved build configuration.
Fixed various warnings and compilation issues.