Name | Modified | Size | Downloads / Week |
---|---|---|---|
Parent folder | |||
fmt-12.0.0.zip | 2025-09-17 | 1.4 MB | |
12.0.0 source code.tar.gz | 2025-09-17 | 709.1 kB | |
12.0.0 source code.zip | 2025-09-17 | 764.2 kB | |
README.md | 2025-09-17 | 6.2 kB | |
Totals: 4 Items | 2.9 MB | 8 |
- Optimized the default floating point formatting (https://github.com/fmtlib/fmt/issues/3675, https://github.com/fmtlib/fmt/issues/4516). In particular, formatting a
double
with format string compilation into a stack allocated buffer is more than 60% faster in version 12.0 compared to 11.2 according to dtoa-benchmark:
Function Time (ns) Speedup
fmt11 34.471 1.00x
fmt12 21.000 1.64x
- Added
constexpr
support tofmt::format
. For example:
```c++ #include <fmt/compile.h>
using namespace fmt::literals; std::string s = fmt::format(""_cf, 42); ```
now works at compile time provided that std::string
supports constexpr
(https://github.com/fmtlib/fmt/issues/3403, https://github.com/fmtlib/fmt/pull/4456). Thanks @msvetkin.
- Added
FMT_STATIC_FORMAT
that allows formatting into a string of the exact required size at compile time.
For example:
```c++ #include <fmt/compile.h>
constexpr auto s = FMT_STATIC_FORMAT("{}", 42); ```
compiles to just
s
__ZL1s:
.asciiz "42"
It can be accessed as a C string with s.c_str()
or as a string view with s.str()
.
-
Improved C++20 module support (https://github.com/fmtlib/fmt/pull/4451, https://github.com/fmtlib/fmt/pull/4459, https://github.com/fmtlib/fmt/pull/4476, https://github.com/fmtlib/fmt/pull/4488, https://github.com/fmtlib/fmt/issues/4491, https://github.com/fmtlib/fmt/pull/4495). Thanks @arBmind, @tkhyn, @Mishura4, @anonymouspc and @autoantwort.
-
Switched to using estimated display width in precision. For example:
c++
fmt::print("|{:.4}|\n|1234|\n", "🐱🐱🐱");
prints
because 🐱
has an estimated width of 2 (https://github.com/fmtlib/fmt/issues/4272, https://github.com/fmtlib/fmt/pull/4443, https://github.com/fmtlib/fmt/pull/4475). Thanks @nikhilreddydev and @localspook.
-
Fix interaction between debug presentation, precision, and width for strings (https://github.com/fmtlib/fmt/pull/4478). Thanks @localspook.
-
Implemented allocator propagation on
basic_memory_buffer
move (https://github.com/fmtlib/fmt/issues/4487, https://github.com/fmtlib/fmt/pull/4490). Thanks @toprakmurat. -
Fixed an ambiguity between
std::reference_wrapper<T>
andformat_as
formatters (https://github.com/fmtlib/fmt/issues/4424, https://github.com/fmtlib/fmt/pull/4434). Thanks @jeremy-rifkin. -
Removed the following deprecated APIs:
-
has_formatter
: useis_formattable
instead, -basic_format_args::parse_context_type
,basic_format_args::formatter_type
and similar aliases in context types, - wide stream overload offmt::printf
, - wide stream overloads offmt::print
that take text styles, -is_*char
traits, -fmt::localtime
. -
Deprecated wide overloads of
fmt::fprintf
andfmt::sprintf
. -
Improved diagnostics for the incorrect usage of
fmt::ptr
(https://github.com/fmtlib/fmt/pull/4453). Thanks @TobiSchluter. -
Made handling of ANSI escape sequences more efficient (https://github.com/fmtlib/fmt/pull/4511, https://github.com/fmtlib/fmt/pull/4528). Thanks @localspook and @Anas-Hamdane.
-
Fixed a buffer overflow on all emphasis flags set (https://github.com/fmtlib/fmt/pull/4498). Thanks @dominicpoeschko.
-
Fixed an integer overflow for precision close to the max
int
value. -
Fixed compatibility with WASI (https://github.com/fmtlib/fmt/issues/4496, https://github.com/fmtlib/fmt/pull/4497). Thanks @whitequark.
-
Fixed
back_insert_iterator
detection, preventing a fallback on slower path that handles arbitrary iterators (https://github.com/fmtlib/fmt/issues/4454). -
Fixed handling of invalid glibc
FILE
buffers (https://github.com/fmtlib/fmt/issues/4469). -
Added
wchar_t
support to thestd::byte
formatter (https://github.com/fmtlib/fmt/issues/4479, https://github.com/fmtlib/fmt/pull/4480). Thanks @phprus. -
Changed component prefix from
fmt-
tofmt_
for compatibility with NSIS/CPack on Windows, e.g.fmt-doc
changed tofmt_doc
(https://github.com/fmtlib/fmt/issues/4441, https://github.com/fmtlib/fmt/pull/4442). Thanks @n-stein. -
Added the
FMT_CUSTOM_ASSERT_FAIL
macro to simplify providing a customfmt::assert_fail
implementation (https://github.com/fmtlib/fmt/pull/4505). Thanks @HazardyKnusperkeks. -
Switched to
FMT_THROW
on reporting format errors so that it can be overriden by users when exceptions are disabled (https://github.com/fmtlib/fmt/pull/4521). Thanks @HazardyKnusperkeks. -
Improved master project detection and disabled install targets when using {fmt} as a subproject by default (https://github.com/fmtlib/fmt/pull/4536). Thanks @crueter.
-
Made various code improvements (https://github.com/fmtlib/fmt/pull/4445, https://github.com/fmtlib/fmt/pull/4448, https://github.com/fmtlib/fmt/pull/4473, https://github.com/fmtlib/fmt/pull/4522). Thanks @localspook, @tchaikov and @way4sahil.
-
Added Conan instructions to the docs (https://github.com/fmtlib/fmt/pull/4537). Thanks @uilianries.
-
Removed Bazel files to avoid issues with downstream packaging (https://github.com/fmtlib/fmt/pull/4530). Thanks @mering.
-
Added more entries for generated files to
.gitignore
(https://github.com/fmtlib/fmt/pull/4355, https://github.com/fmtlib/fmt/pull/4512). Thanks @dinomight and @localspook. -
Fixed various warnings and compilation issues (https://github.com/fmtlib/fmt/pull/4447, https://github.com/fmtlib/fmt/issues/4470, https://github.com/fmtlib/fmt/pull/4474, https://github.com/fmtlib/fmt/pull/4477, https://github.com/fmtlib/fmt/pull/4471, https://github.com/fmtlib/fmt/pull/4483, https://github.com/fmtlib/fmt/pull/4515, https://github.com/fmtlib/fmt/issues/4533, https://github.com/fmtlib/fmt/pull/4534). Thanks @dodomorandi, @localspook, @remyjette, @Tomek-Stolarczyk, @Mishura4, @mattiasljungstrom and @FatihBAKIR.