Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
7.1.3
->8.0.1
Release Notes
fmtlib/fmt
v8.0.1
Compare Source
Fixed the version number in the inline namespace
(
#​2374 <https://github.com/fmtlib/fmt/issues/2374>
_).Added a missing presentation type check for
std::string
(
#​2402 <https://github.com/fmtlib/fmt/issues/2402>
_).Fixed a linkage error when mixing code built with clang and gcc
(
#​2377 <https://github.com/fmtlib/fmt/issues/2377>
_).Fixed documentation issues
(
#​2396 <https://github.com/fmtlib/fmt/pull/2396>
,#​2403 <https://github.com/fmtlib/fmt/issues/2403>
,#​2406 <https://github.com/fmtlib/fmt/issues/2406>
).Thanks
@mkurdej (Marek Kurdej) <https://github.com/mkurdej>
.Removed dead code in FP formatter (
#​2398 <https://github.com/fmtlib/fmt/pull/2398>
).Thanks
@javierhonduco (Javier Honduvilla Coto) <https://github.com/javierhonduco>
.Fixed various warnings and compilation issues
(
#​2351 <https://github.com/fmtlib/fmt/issues/2351>
,#​2359 <https://github.com/fmtlib/fmt/issues/2359>
,#​2365 <https://github.com/fmtlib/fmt/pull/2365>
,#​2368 <https://github.com/fmtlib/fmt/issues/2368>
,#​2370 <https://github.com/fmtlib/fmt/pull/2370>
,#​2376 <https://github.com/fmtlib/fmt/pull/2376>
,#​2381 <https://github.com/fmtlib/fmt/pull/2381>
,#​2382 <https://github.com/fmtlib/fmt/pull/2382>
,#​2386 <https://github.com/fmtlib/fmt/issues/2386>
,#​2389 <https://github.com/fmtlib/fmt/pull/2389>
,#​2395 <https://github.com/fmtlib/fmt/pull/2395>
,#​2397 <https://github.com/fmtlib/fmt/pull/2397>
,#​2400 <https://github.com/fmtlib/fmt/issues/2400>
_#​2401 <https://github.com/fmtlib/fmt/issues/2401>
,#​2407 <https://github.com/fmtlib/fmt/pull/2407>
).Thanks
@zx2c4 (Jason A. Donenfeld) <https://github.com/zx2c4>
,@AidanSun05 (Aidan Sun) <https://github.com/AidanSun05>
,@mattiasljungstrom (Mattias Ljungström) <https://github.com/mattiasljungstrom>
,@joemmett (Jonathan Emmett) <https://github.com/joemmett>
,@erengy (Eren Okka) <https://github.com/erengy>
,@patlkli (Patrick Geltinger) <https://github.com/patlkli>
,@gsjaardema (Greg Sjaardema) <https://github.com/gsjaardema>
,@phprus (Vladislav Shchapov) <https://github.com/phprus>
.v8.0.0
Compare Source
Enabled compile-time format string check by default.
For example (
godbolt <https://godbolt.org/z/sMxcohGjz>
__):.. code:: c++
#include <fmt/core.h>
int main() {
fmt::print("{:d}", "I am not a number");
}
gives a compile-time error on compilers with C++20
consteval
support(gcc 10+, clang 11+) because
d
is not a valid format specifier for astring.
To pass a runtime string wrap it in
fmt::runtime
:.. code:: c++
fmt::print(fmt::runtime("{:d}"), "I am not a number");
Added compile-time formatting
(
#​2019 <https://github.com/fmtlib/fmt/pull/2019>
,#​2044 <https://github.com/fmtlib/fmt/pull/2044>
,#​2056 <https://github.com/fmtlib/fmt/pull/2056>
,#​2072 <https://github.com/fmtlib/fmt/pull/2072>
,#​2075 <https://github.com/fmtlib/fmt/pull/2075>
,#​2078 <https://github.com/fmtlib/fmt/issues/2078>
,#​2129 <https://github.com/fmtlib/fmt/pull/2129>
,#​2326 <https://github.com/fmtlib/fmt/pull/2326>
).For example (
godbolt <https://godbolt.org/z/Mxx9d89jM>
__):.. code:: c++
#include <fmt/compile.h>
consteval auto compile_time_itoa(int 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_itoa(42);
Most of the formatting functionality is available at compile time with a
notable exception of floating-point numbers and pointers.
Thanks
@alexezeder (Alexey Ochapov) <https://github.com/alexezeder>
_.Optimized handling of format specifiers during format string compilation.
For example, hexadecimal formatting (
"{:x}"
) is now 3-7x faster thanbefore when using
format_to
with format string compilation and astack-allocated buffer (
#​1944 <https://github.com/fmtlib/fmt/issues/1944>
_).Before (7.1.3)::
Benchmark Time CPU Iterations
FMTCompileOld/0 15.5 ns 15.5 ns
4330289
FMTCompileOld/42 16.6 ns 16.6 ns4327826
FMTCompileOld/273123 18.7 ns 18.6 ns3703586
FMTCompileOld/9223372036854775807 19.4 ns 19.4 ns3524300
After (8.x)::
Benchmark Time CPU Iterations
FMTCompileNew/0 1.99 ns 1.99 ns
3605236
FMTCompileNew/42 2.33 ns 2.33 ns2798656
FMTCompileNew/273123 3.72 ns 3.71 ns1902303
FMTCompileNew/9223372036854775807 5.28 ns 5.26 ns1307116
It is even faster than
std::to_chars
from libc++ compiled with clang onmacOS::
Benchmark Time CPU Iterations
ToChars/0 4.42 ns 4.41 ns
1601966
ToChars/42 5.00 ns 4.98 ns1407352
ToChars/273123 7.26 ns 7.24 ns9578413
ToChars/9223372036854775807 8.77 ns 8.75 ns7587253
In other cases, especially involving
std::string
construction, thespeed up is usually lower because handling format specifiers takes a smaller
fraction of the total time.
Added the
_cf
user-defined literal to represent a compiled format string.It can be used instead of the
FMT_COMPILE
macro(
#​2043 <https://github.com/fmtlib/fmt/pull/2043>
,#​2242 <https://github.com/fmtlib/fmt/pull/2242>
):.. code:: c++
#include <fmt/compile.h>
using namespace fmt::literals;
auto s = fmt::format(FMT_COMPILE("{}"), 42); // 🙁 not modern
auto s = fmt::format("{}"_cf, 42); // 🙂 modern as hell
It requires compiler support for class types in non-type template parameters
(a C++20 feature) which is available in GCC 9.3+.
Thanks
@alexezeder (Alexey Ochapov) <https://github.com/alexezeder>
_.Format string compilation now requires
format
functions offormatter
specializations for user-defined types to be
const
:.. code:: c++
template <> struct fmt::formatter<my_type>: formatter<string_view> {
template
auto format(my_type obj, FormatContext& ctx) const { // Note const here.
// ...
}
};
Added UDL-based named argument support to format string compilation
(
#​2243 <https://github.com/fmtlib/fmt/pull/2243>
,#​2281 <https://github.com/fmtlib/fmt/pull/2281>
). For example:.. code:: c++
#include <fmt/compile.h>
using namespace fmt::literals;
auto s = fmt::format(FMT_COMPILE("{answer}"), "answer"_a = 42);
Here the argument named "answer" is resolved at compile time with no
runtime overhead.
Thanks
@alexezeder (Alexey Ochapov) <https://github.com/alexezeder>
_.Added format string compilation support to
fmt::print
(
#​2280 <https://github.com/fmtlib/fmt/issues/2280>
,#​2304 <https://github.com/fmtlib/fmt/pull/2304>
).Thanks
@alexezeder (Alexey Ochapov) <https://github.com/alexezeder>
_.Added initial support for compiling {fmt} as a C++20 module
(
#​2235 <https://github.com/fmtlib/fmt/pull/2235>
,#​2240 <https://github.com/fmtlib/fmt/pull/2240>
,#​2260 <https://github.com/fmtlib/fmt/pull/2260>
,#​2282 <https://github.com/fmtlib/fmt/pull/2282>
,#​2283 <https://github.com/fmtlib/fmt/pull/2283>
,#​2288 <https://github.com/fmtlib/fmt/pull/2288>
,#​2298 <https://github.com/fmtlib/fmt/pull/2298>
,#​2306 <https://github.com/fmtlib/fmt/pull/2306>
,#​2307 <https://github.com/fmtlib/fmt/pull/2307>
,#​2309 <https://github.com/fmtlib/fmt/pull/2309>
,#​2318 <https://github.com/fmtlib/fmt/pull/2318>
,#​2324 <https://github.com/fmtlib/fmt/pull/2324>
,#​2332 <https://github.com/fmtlib/fmt/pull/2332>
,#​2340 <https://github.com/fmtlib/fmt/pull/2340>
).Thanks
@DanielaE (Daniela Engert) <https://github.com/DanielaE>
_.Made symbols private by default reducing shared library size
(
#​2301 <https://github.com/fmtlib/fmt/pull/2301>
). For example there wasa ~15% reported reduction on one platform.
Thanks
@sergiud (Sergiu Deitsch) <https://github.com/sergiud>
.Optimized includes making the result of preprocessing
fmt/format.h
~20% smaller with libstdc++/C++20 and slightly improving build times
(
#​1998 <https://github.com/fmtlib/fmt/issues/1998>
_).Added support of ranges with non-const
begin
/end
(
#​1953 <https://github.com/fmtlib/fmt/pull/1953>
).Thanks
@kitegi (sarah) <https://github.com/kitegi>
.Added support of
std::byte
and other formattable types tofmt::join
(
#​1981 <https://github.com/fmtlib/fmt/issues/1981>
,#​2040 <https://github.com/fmtlib/fmt/issues/2040>
,#​2050 <https://github.com/fmtlib/fmt/pull/2050>
,#​2262 <https://github.com/fmtlib/fmt/issues/2262>
). For example:.. code:: c++
#include <fmt/format.h>
#include
#include
int main() {
auto bytes = std::vector{std::byte(4), std::byte(2)};
fmt::print("{}", fmt::join(bytes, ""));
}
prints "42".
Thanks
@kamibo (Camille Bordignon) <https://github.com/kamibo>
_.Implemented the default format for
std::chrono::system_clock
(
#​2319 <https://github.com/fmtlib/fmt/issues/2319>
,#​2345 <https://github.com/fmtlib/fmt/pull/2345>
). For example:.. code:: c++
#include <fmt/chrono.h>
int main() {
fmt::print("{}", std::chrono::system_clock::now());
}
prints "2021-06-18 15:22:00" (the output depends on the current date and
time). Thanks
@sunmy2019 <https://github.com/sunmy2019>
_.Made more chrono specifiers locale independent by default. Use the
'L'
specifier to get localized formatting. For example:
.. code:: c++
#include <fmt/chrono.h>
int main() {
std::locale::global(std::locale("ru_RU.UTF-8"));
auto monday = std::chrono::weekday(1);
fmt::print("{}\n", monday); // prints "Mon"
fmt::print("{:L}\n", monday); // prints "пн"
}
Improved locale handling in chrono formatting
(
#​2337 <https://github.com/fmtlib/fmt/issues/2337>
,#​2349 <https://github.com/fmtlib/fmt/pull/2349>
,#​2350 <https://github.com/fmtlib/fmt/pull/2350>
).Thanks
@phprus (Vladislav Shchapov) <https://github.com/phprus>
.Deprecated
fmt/locale.h
moving the formatting functions that take alocale to
fmt/format.h
(char
) andfmt/xchar
(other overloads).This doesn't introduce a dependency on
<locale>
so there is virtually nocompile time effect.
Made parameter order in
vformat_to
consistent withformat_to
(
#​2327 <https://github.com/fmtlib/fmt/issues/2327>
_).Added support for time points with arbitrary durations
(
#​2208 <https://github.com/fmtlib/fmt/issues/2208>
_). For example:.. code:: c++
#include <fmt/chrono.h>
int main() {
using tp = std::chrono::time_point<
std::chrono::system_clock, std::chrono::seconds>;
fmt::print("{:%S}", tp(std::chrono::seconds(42)));
}
prints "42".
Formatting floating-point numbers no longer produces trailing zeros by default
for consistency with
std::format
. For example:.. code:: c++
#include <fmt/core.h>
int main() {
fmt::print("{0:.3}", 1.1);
}
prints "1.1". Use the
'#'
specifier to keep trailing zeros.Dropped a limit on the number of elements in a range and replaced
{}
with[]
as range delimiters for consistency with Python'sstr.format
.The
'L'
specifier for locale-specific numeric formatting can now becombined with presentation specifiers as in
std::format
. For example:.. code:: c++
#include <fmt/core.h>
#include
int main() {
std::locale::global(std::locale("fr_FR.UTF-8"));
fmt::print("{0:.2Lf}", 0.42);
}
prints "0,42". The deprecated
'n'
specifier has been removed.Made the
0
specifier ignored for infinity and NaN(
#​2305 <https://github.com/fmtlib/fmt/issues/2305>
,#​2310 <https://github.com/fmtlib/fmt/pull/2310>
).Thanks
@Liedtke (Matthias Liedtke) <https://github.com/Liedtke>
_.Made the hexfloat formatting use the right alignment by default
(
#​2308 <https://github.com/fmtlib/fmt/issues/2308>
,#​2317 <https://github.com/fmtlib/fmt/pull/2317>
).Thanks
@Liedtke (Matthias Liedtke) <https://github.com/Liedtke>
_.Removed the deprecated numeric alignment (
'='
). Use the'0'
specifierinstead.
Removed the deprecated
fmt/posix.h
header that has been replaced withfmt/os.h
.Removed the deprecated
format_to_n_context
,format_to_n_args
andmake_format_to_n_args
. They have been replaced withformat_context
,format_args` and
make_format_args`` respectively.Moved
wchar_t
-specific functions and types tofmt/xchar.h
.You can define
FMT_DEPRECATED_INCLUDE_XCHAR
to automatically includefmt/xchar.h
fromfmt/format.h
but this will be disabled in the nextmajor release.
Fixed handling of the
'+'
specifier in localized formatting(
#​2133 <https://github.com/fmtlib/fmt/issues/2133>
_).Added support for the
's'
format specifier that gives textualrepresentation of
bool
(
#​2094 <https://github.com/fmtlib/fmt/issues/2094>
,#​2109 <https://github.com/fmtlib/fmt/pull/2109>
). For example:.. code:: c++
#include <fmt/core.h>
int main() {
fmt::print("{:s}", true);
}
prints "true".
Thanks
@powercoderlol (Ivan Polyakov) <https://github.com/powercoderlol>
_.Made
fmt::ptr
work with function pointers(
#​2131 <https://github.com/fmtlib/fmt/pull/2131>
_). For example:.. code:: c++
#include <fmt/format.h>
int main() {
fmt::print("My main: {}\n", fmt::ptr(main));
}
Thanks
@mikecrowe (Mike Crowe) <https://github.com/mikecrowe>
_.Fixed
fmt::formatted_size
with format string compilation(
#​2141 <https://github.com/fmtlib/fmt/pull/2141>
,#​2161 <https://github.com/fmtlib/fmt/pull/2161>
).Thanks
@alexezeder (Alexey Ochapov) <https://github.com/alexezeder>
_.Fixed handling of empty format strings during format string compilation
(
#​2042 <https://github.com/fmtlib/fmt/issues/2042>
_):.. code:: c++
auto s = fmt::format(FMT_COMPILE(""));
Thanks
@alexezeder (Alexey Ochapov) <https://github.com/alexezeder>
_.Fixed handling of enums in
fmt::to_string
(
#​2036 <https://github.com/fmtlib/fmt/issues/2036>
_).Improved width computation
(
#​2033 <https://github.com/fmtlib/fmt/issues/2033>
,#​2091 <https://github.com/fmtlib/fmt/issues/2091>
). For example:.. code:: c++
#include <fmt/core.h>
int main() {
fmt::print("{:-<10}{}\n", "你好", "世界");
fmt::print("{:-<10}{}\n", "hello", "world");
}
prints
.. image:: https://user-images.githubusercontent.com/576385/
1198403
-cea3ca80-beb9-11eb-91e0-54266c48e181.pngon a modern terminal.
The experimental fast output stream (
fmt::ostream
) is now truncated bydefault for consistency with
fopen
(
#​2018 <https://github.com/fmtlib/fmt/issues/2018>
_). For example:.. code:: c++
#include <fmt/os.h>
int main() {
fmt::ostream out1 = fmt::output_file("guide");
out1.print("Zaphod");
out1.close();
fmt::ostream out2 = fmt::output_file("guide");
out2.print("Ford");
}
writes "Ford" to the file "guide". To preserve the old file content if any
pass
fmt::file::WRONLY | fmt::file::CREATE
flags tofmt::output_file
.Fixed moving of
fmt::ostream
that holds buffered data(
#​2197 <https://github.com/fmtlib/fmt/issues/2197>
,#​2198 <https://github.com/fmtlib/fmt/pull/2198>
).Thanks
@vtta <https://github.com/vtta>
_.Replaced the
fmt::system_error
exception with a function of the samename that constructs
std::system_error
(
#​2266 <https://github.com/fmtlib/fmt/issues/2266>
_).Replaced the
fmt::windows_error
exception with a function of the samename that constructs
std::system_error
with the category returned byfmt::system_category()
(
#​2274 <https://github.com/fmtlib/fmt/issues/2274>
,#​2275 <https://github.com/fmtlib/fmt/pull/2275>
).The latter is similar to
std::sytem_category
but correctly handles UTF-8.Thanks
@phprus (Vladislav Shchapov) <https://github.com/phprus>
_.Replaced
fmt::error_code
withstd::error_code
and made it formattable(
#​2269 <https://github.com/fmtlib/fmt/issues/2269>
,#​2270 <https://github.com/fmtlib/fmt/pull/2270>
,#​2273 <https://github.com/fmtlib/fmt/pull/2273>
).Thanks
@phprus (Vladislav Shchapov) <https://github.com/phprus>
.Added speech synthesis support
(
#​2206 <https://github.com/fmtlib/fmt/pull/2206>
_).Made
format_to
work with a memory buffer that has a custom allocator(
#​2300 <https://github.com/fmtlib/fmt/pull/2300>
).Thanks
@voxmea <https://github.com/voxmea>
.Added
Allocator::max_size
support tobasic_memory_buffer
.(
#​1960 <https://github.com/fmtlib/fmt/pull/1960>
).Thanks
@phprus (Vladislav Shchapov) <https://github.com/phprus>
.Added wide string support to
fmt::join
(
#​2236 <https://github.com/fmtlib/fmt/pull/2236>
).Thanks
@crbrz <https://github.com/crbrz>
.Made iterators passed to
formatter
specializations via a format contextsatisfy C++20
std::output_iterator
requirements(
#​2156 <https://github.com/fmtlib/fmt/issues/2156>
,#​2158 <https://github.com/fmtlib/fmt/pull/2158>
,#​2195 <https://github.com/fmtlib/fmt/issues/2195>
,#​2204 <https://github.com/fmtlib/fmt/pull/2204>
).Thanks
@randomnetcat (Jason Cobb) <https://github.com/randomnetcat>
_.Optimized the
printf
implementation(
#​1982 <https://github.com/fmtlib/fmt/pull/1982>
,#​1984 <https://github.com/fmtlib/fmt/pull/1984>
,#​2016 <https://github.com/fmtlib/fmt/pull/2016>
,#​2164 <https://github.com/fmtlib/fmt/pull/2164>
).Thanks
@rimathia <https://github.com/rimathia>
_ and@moiwi <https://github.com/moiwi>
_.Improved detection of
constexpr
char_traits
(
#​2246 <https://github.com/fmtlib/fmt/pull/2246>
,#​2257 <https://github.com/fmtlib/fmt/pull/2257>
).Thanks
@phprus (Vladislav Shchapov) <https://github.com/phprus>
_.Fixed writing to
stdout
when it is redirected toNUL
on Windows(
#​2080 <https://github.com/fmtlib/fmt/issues/2080>
_).Fixed exception propagation from iterators
(
#​2097 <https://github.com/fmtlib/fmt/issues/2097>
_).Improved
strftime
error handling(
#​2238 <https://github.com/fmtlib/fmt/issues/2238>
,#​2244 <https://github.com/fmtlib/fmt/pull/2244>
).Thanks
@yumeyao <https://github.com/yumeyao>
_.Stopped using deprecated GCC UDL template extension.
Added
fmt/args.h
to the install target(
#​2096 <https://github.com/fmtlib/fmt/issues/2096>
_).Error messages are now passed to assert when exceptions are disabled
(
#​2145 <https://github.com/fmtlib/fmt/pull/2145>
).Thanks
@NobodyXu (Jiahao XU) <https://github.com/NobodyXu>
.Added the
FMT_MASTER_PROJECT
CMake option to control build and installtargets when {fmt} is included via
add_subdirectory
(
#​2098 <https://github.com/fmtlib/fmt/issues/2098>
,#​2100 <https://github.com/fmtlib/fmt/pull/2100>
).Thanks
@randomizedthinking <https://github.com/randomizedthinking>
_.Improved build configuration
(
#​2026 <https://github.com/fmtlib/fmt/pull/2026>
,#​2122 <https://github.com/fmtlib/fmt/pull/2122>
).Thanks
@luncliff (Park DongHa) <https://github.com/luncliff>
_ and@ibaned (Dan Ibanez) <https://github.com/ibaned>
_.Fixed various warnings and compilation issues
(
#​1947 <https://github.com/fmtlib/fmt/issues/1947>
,#​1959 <https://github.com/fmtlib/fmt/pull/1959>
,#​1963 <https://github.com/fmtlib/fmt/pull/1963>
,#​1965 <https://github.com/fmtlib/fmt/pull/1965>
,#​1966 <https://github.com/fmtlib/fmt/issues/1966>
,#​1974 <https://github.com/fmtlib/fmt/pull/1974>
,#​1975 <https://github.com/fmtlib/fmt/pull/1975>
,#​1990 <https://github.com/fmtlib/fmt/pull/1990>
,#​2000 <https://github.com/fmtlib/fmt/issues/2000>
,#​2001 <https://github.com/fmtlib/fmt/pull/2001>
,#​2002 <https://github.com/fmtlib/fmt/issues/2002>
,#​2004 <https://github.com/fmtlib/fmt/issues/2004>
,#​2006 <https://github.com/fmtlib/fmt/pull/2006>
,#​2009 <https://github.com/fmtlib/fmt/pull/2009>
,#​2010 <https://github.com/fmtlib/fmt/pull/2010>
,#​2038 <https://github.com/fmtlib/fmt/issues/2038>
,#​2039 <https://github.com/fmtlib/fmt/issues/2039>
,#​2047 <https://github.com/fmtlib/fmt/issues/2047>
,#​2053 <https://github.com/fmtlib/fmt/pull/2053>
,#​2059 <https://github.com/fmtlib/fmt/issues/2059>
,#​2065 <https://github.com/fmtlib/fmt/pull/2065>
,#​2067 <https://github.com/fmtlib/fmt/pull/2067>
,#​2068 <https://github.com/fmtlib/fmt/pull/2068>
,#​2073 <https://github.com/fmtlib/fmt/pull/2073>
,#​2103 <https://github.com/fmtlib/fmt/issues/2103>
_#​2105 <https://github.com/fmtlib/fmt/issues/2105>
_#​2106 <https://github.com/fmtlib/fmt/pull/2106>
,#​2107 <https://github.com/fmtlib/fmt/pull/2107>
,#​2116 <https://github.com/fmtlib/fmt/issues/2116>
_#​2117 <https://github.com/fmtlib/fmt/pull/2117>
,#​2118 <https://github.com/fmtlib/fmt/issues/2118>
#​2119 <https://github.com/fmtlib/fmt/pull/2119>
,#​2127 <https://github.com/fmtlib/fmt/issues/2127>
,#​2128 <https://github.com/fmtlib/fmt/pull/2128>
,#​2140 <https://github.com/fmtlib/fmt/issues/2140>
,#​2142 <https://github.com/fmtlib/fmt/issues/2142>
,#​2143 <https://github.com/fmtlib/fmt/pull/2143>
,#​2144 <https://github.com/fmtlib/fmt/pull/2144>
,#​2147 <https://github.com/fmtlib/fmt/issues/2147>
,#​2148 <https://github.com/fmtlib/fmt/issues/2148>
,#​2149 <https://github.com/fmtlib/fmt/issues/2149>
,#​2152 <https://github.com/fmtlib/fmt/pull/2152>
,#​2160 <https://github.com/fmtlib/fmt/pull/2160>
,#​2170 <https://github.com/fmtlib/fmt/issues/2170>
,#​2175 <https://github.com/fmtlib/fmt/issues/2175>
,#​2176 <https://github.com/fmtlib/fmt/issues/2176>
,#​2177 <https://github.com/fmtlib/fmt/pull/2177>
,#​2178 <https://github.com/fmtlib/fmt/issues/2178>
,#​2179 <https://github.com/fmtlib/fmt/pull/2179>
,#​2180 <https://github.com/fmtlib/fmt/issues/2180>
,#​2181 <https://github.com/fmtlib/fmt/issues/2181>
,#​2183 <https://github.com/fmtlib/fmt/pull/2183>
,#​2184 <https://github.com/fmtlib/fmt/issues/2184>
,#​2185 <https://github.com/fmtlib/fmt/issues/2185>
,#​2186 <https://github.com/fmtlib/fmt/pull/2186>
,#​2187 <https://github.com/fmtlib/fmt/pull/2187>
,#​2190 <https://github.com/fmtlib/fmt/pull/2190>
,#​2192 <https://github.com/fmtlib/fmt/pull/2192>
,#​2194 <https://github.com/fmtlib/fmt/pull/2194>
,#​2205 <https://github.com/fmtlib/fmt/pull/2205>
,#​2210 <https://github.com/fmtlib/fmt/issues/2210>
,#​2211 <https://github.com/fmtlib/fmt/pull/2211>
,#​2215 <https://github.com/fmtlib/fmt/pull/2215>
,#​2216 <https://github.com/fmtlib/fmt/pull/2216>
,#​2218 <https://github.com/fmtlib/fmt/pull/2218>
,#​2220 <https://github.com/fmtlib/fmt/pull/2220>
,#​2228 <https://github.com/fmtlib/fmt/issues/2228>
,#​2229 <https://github.com/fmtlib/fmt/pull/2229>
,#​2230 <https://github.com/fmtlib/fmt/pull/2230>
,#​2233 <https://github.com/fmtlib/fmt/issues/2233>
,#​2239 <https://github.com/fmtlib/fmt/pull/2239>
,#​2248 <https://github.com/fmtlib/fmt/issues/2248>
,#​2252 <https://github.com/fmtlib/fmt/issues/2252>
,#​2253 <https://github.com/fmtlib/fmt/pull/2253>
,#​2255 <https://github.com/fmtlib/fmt/pull/2255>
,#​2261 <https://github.com/fmtlib/fmt/issues/2261>
,#​2278 <https://github.com/fmtlib/fmt/issues/2278>
,#​2284 <https://github.com/fmtlib/fmt/issues/2284>
,#​2287 <https://github.com/fmtlib/fmt/pull/2287>
,#​2289 <https://github.com/fmtlib/fmt/pull/2289>
,#​2290 <https://github.com/fmtlib/fmt/pull/2290>
,#​2293 <https://github.com/fmtlib/fmt/pull/2293>
,#​2295 <https://github.com/fmtlib/fmt/issues/2295>
,#​2296 <https://github.com/fmtlib/fmt/pull/2296>
,#​2297 <https://github.com/fmtlib/fmt/pull/2297>
,#​2311 <https://github.com/fmtlib/fmt/issues/2311>
,#​2313 <https://github.com/fmtlib/fmt/pull/2313>
,#​2315 <https://github.com/fmtlib/fmt/pull/2315>
,#​2320 <https://github.com/fmtlib/fmt/issues/2320>
,#​2321 <https://github.com/fmtlib/fmt/pull/2321>
,#​2323 <https://github.com/fmtlib/fmt/pull/2323>
,#​2328 <https://github.com/fmtlib/fmt/issues/2328>
,#​2329 <https://github.com/fmtlib/fmt/pull/2329>
,#​2333 <https://github.com/fmtlib/fmt/pull/2333>
,#​2338 <https://github.com/fmtlib/fmt/pull/2338>
,#​2341 <https://github.com/fmtlib/fmt/pull/2341>
).Thanks
@darklukee <https://github.com/darklukee>
,@fagg (Ashton Fagg) <https://github.com/fagg>
,@killerbot242 (Lieven de Cock) <https://github.com/killerbot242>
,@jgopel (Jonathan Gopel) <https://github.com/jgopel>
,@yeswalrus (Walter Gray) <https://github.com/yeswalrus>
,@Finkman <https://github.com/Finkman>
,@HazardyKnusperkeks (Björn Schäpers) <https://github.com/HazardyKnusperkeks>
,@dkavolis (Daumantas Kavolis) <https://github.com/dkavolis>
_@concatime (Issam Maghni) <https://github.com/concatime>
,@chronoxor (Ivan Shynkarenka) <https://github.com/chronoxor>
,@summivox (Yin Zhong) <https://github.com/summivox>
,@yNeo <https://github.com/yNeo>
,@Apache-HB (Elliot) <https://github.com/Apache-HB>
,@alexezeder (Alexey Ochapov) <https://github.com/alexezeder>
,@toojays (John Steele Scott) <https://github.com/toojays>
,@Brainy0207 <https://github.com/Brainy0207>
,@vadz (VZ) <https://github.com/vadz>
,@imsherlock (Ryan Sherlock) <https://github.com/imsherlock>
,@phprus (Vladislav Shchapov) <https://github.com/phprus>
,@white238 (Chris White) <https://github.com/white238>
,@yafshar (Yaser Afshar) <https://github.com/yafshar>
,@BillyDonahue (Billy Donahue) <https://github.com/BillyDonahue>
,@jstaahl <https://github.com/jstaahl>
,@denchat <https://github.com/denchat>
,@DanielaE (Daniela Engert) <https://github.com/DanielaE>
,@ilyakurdyukov (Ilya Kurdyukov) <https://github.com/ilyakurdyukov>
,@ilmai <https://github.com/ilmai>
,@JessyDL (Jessy De Lannoit) <https://github.com/JessyDL>
,@sergiud (Sergiu Deitsch) <https://github.com/sergiud>
,@mwinterb <https://github.com/mwinterb>
,@sven-herrmann <https://github.com/sven-herrmann>
,@jmelas (John Melas) <https://github.com/jmelas>
,@twoixter (Jose Miguel Pérez) <https://github.com/twoixter>
,@crbrz <https://github.com/crbrz>
,@upsj (Tobias Ribizel) <https://github.com/upsj>
_.Improved documentation
(
#​1986 <https://github.com/fmtlib/fmt/issues/1986>
,#​2051 <https://github.com/fmtlib/fmt/pull/2051>
,#​2057 <https://github.com/fmtlib/fmt/issues/2057>
,#​2081 <https://github.com/fmtlib/fmt/pull/2081>
,#​2084 <https://github.com/fmtlib/fmt/issues/2084>
,#​2312 <https://github.com/fmtlib/fmt/pull/2312>
).Thanks
@imba-tjd (谭九鼎) <https://github.com/imba-tjd>
,@0x416c69 (AlιAѕѕaѕѕιN) <https://github.com/0x416c69>
,@mordante <https://github.com/mordante>
_.Continuous integration and test improvements
(
#​1969 <https://github.com/fmtlib/fmt/issues/1969>
,#​1991 <https://github.com/fmtlib/fmt/pull/1991>
,#​2020 <https://github.com/fmtlib/fmt/pull/2020>
,#​2110 <https://github.com/fmtlib/fmt/pull/2110>
,#​2114 <https://github.com/fmtlib/fmt/pull/2114>
,#​2196 <https://github.com/fmtlib/fmt/issues/2196>
,#​2217 <https://github.com/fmtlib/fmt/pull/2217>
,#​2247 <https://github.com/fmtlib/fmt/pull/2247>
,#​2256 <https://github.com/fmtlib/fmt/pull/2256>
,#​2336 <https://github.com/fmtlib/fmt/pull/2336>
,#​2346 <https://github.com/fmtlib/fmt/pull/2346>
).Thanks
@jgopel (Jonathan Gopel) <https://github.com/jgopel>
,@alexezeder (Alexey Ochapov) <https://github.com/alexezeder>
_ and@DanielaE (Daniela Engert) <https://github.com/DanielaE>
_.Configuration
📅 Schedule: At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by WhiteSource Renovate. View repository job log here.