2281 Commits

Author SHA1 Message Date
Jiami Lin
a90ad5d6fd
Fix formatting std::tm with null tm_zone (#4790) 2026-06-01 18:16:49 -07:00
Victor Zverovich
46cf422f54 Unify copyright notices 2026-05-31 08:54:06 -07:00
j4niwzis
029d543768
Fix compile time format for ranges, style, and std (#4759) 2026-05-31 08:21:35 -07:00
ahoarau
0acf106c52
Add println functions for formatted output with color support (#4782) 2026-05-25 08:30:36 -07:00
Vladislav Shchapov
a30cf7d1ad
Provide reasonable default definition for is_contiguous (#4770)
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2026-05-21 07:19:19 -07:00
Vladislav Shchapov
9cb8c0f92b
Fix ambiguous formatter<std::optional<T>> between fmt/std.h and fmt/ranges.h on C++26 (P3168R2) (#4761)
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2026-05-03 07:37:46 -07:00
Kağan Can Şit
d0e3d20af8
chore(IWYU):Remove redundant includes (#4758) 2026-04-29 20:50:56 -07:00
user202729
eeff8680ed
Avoid dropping null byte in format string (#4732)
* Avoid dropping null byte in format string

* Add a test for null byte in format string
2026-04-23 09:34:27 -07:00
Victor Zverovich
382609a920 Cleanup module test and CI config 2026-04-14 12:30:21 -07:00
Mathew Benson
8783c3c2d4
enable fmt_module tests by updating module-test.cc (#4702)
- Update g++ module testing to use g++ version 15 instead of 14.
  The module support in version 14 isn't very stable and the module
  testing was not working due to unresolved locale symbols.
- Update CI for linux and macos to add verbosity so its consistent with
  windows.
- Refactor test/CMakeLists.txt to enable testing for modules
- The tests in `module-test.cc` seem to not have been updated in some
  time despite changes in the main library.
- Wide String versions of several tests appear to be deprecated so have
  been removed.
- Refactored tests related to `fmt::format_args` that now requires lvalue
  references as opposed to direct values.
- Remove the none-working code identified in the `module-test.cc` file
  while updating.
2026-04-12 10:07:16 -07:00
Raúl Marín
4ccf1d4faf
Fix out-of-bounds read in vprintf with trailing '%' (#4742) 2026-04-10 12:23:57 -07:00
Kağan Can Şit
9396f77fe4
Remove unused header includes in test files (#4729) 2026-04-05 18:40:48 -07:00
Victor Zverovich
8572a24603 Cleanup CI config 2026-04-02 15:04:00 -07:00
Victor Zverovich
602df7dab8 Simplify copy 2026-03-28 09:33:45 -07:00
Victor Zverovich
dc05bee307 Don't assume nul termination in printf
Thanks ZUENS2020 for reporting.
2026-03-23 13:28:26 -07:00
sunmy2019
ea85b81ccd
Support fmt::runtime with wchar_t in fmt::format_to_n (#4715) 2026-03-21 17:10:17 -07:00
Victor Zverovich
d38881410a Deprecated initializer_list join 2026-03-05 16:42:07 -08:00
Yancey
8277ee6aa0
Update fmt::join to support more character types (#4686) 2026-03-04 08:14:08 -08:00
Victor Zverovich
e090e3ffad Apply cmake-format 2026-03-03 15:49:40 -08:00
Victor Zverovich
eef9ff4938 Fix module test 2026-03-03 12:53:45 -08:00
Victor Zverovich
011b24123b Cleanup module test 2026-03-03 12:30:54 -08:00
Mathew Benson
4e1b170b44
Add Separate CMake Target for C++20 Modules (#4685)
* Add Separate CMake Target for C++20 Modules

In the same vein as there is the `fmt::fmt-header-only`, `fmt::fmt` and
`fmt::fmt_c` targets, I propose the addition of a new target
`fmt::fmt-module` which will be for the compilation of the FMT_MODULE
library option.

The new target will have the properties requried for Compiling,
Installing and using the C++20 functionality in CMake

The `add_module_library` function is marked as deprecated as its
functionality is superseded.

Updated the logic for setting the FMT_USE_CMAKE_MODULE flag to check the
versions for Ninja and MSVC according the CMAKE Documents and setting
the FMT_MODULE flag based on this

* Add Separate CMake Target for C++20 Modules

In the same vein as there is the `fmt::fmt-header-only`, `fmt::fmt` and
`fmt::fmt_c` targets, I propose the addition of a new target
`fmt::fmt-module` which will be for the compilation of the FMT_MODULE
library option.

The new target will have the properties requried for Compiling,
Installing and using the C++20 functionality in CMake

Updated the logic for setting the FMT_USE_CMAKE_MODULE flag to check the
versions for Ninja and MSVC according the CMAKE Documents and setting
the FMT_MODULE flag based on this

Fixed the test/CMakeLists.txt file which used the FMT_MODULE flag to
separate the module and non-module library testing, in particular
disableing the module version.

The module testing still needs to be fixed, but the expected behavior of
testing the non-modular version is working.

---------

Co-authored-by: Mathew Benson <mathew@benson.co.ke>
Co-authored-by: ClausKlein <claus.klein@arcormail.de>
2026-03-02 09:11:31 -08:00
Victor Zverovich
dc97113ca1 Cleanup the C API 2026-02-21 17:15:19 -08:00
Soumik15630m
1dc644e021
Add C11 API with type-safe formatting (#4663) (#4671) 2026-02-16 07:06:32 -08:00
Stéén
b35de87ad9
std.h: Allow formatting std::unexpected type. (#4675)
In some cases, people might want to format the std::unexpected type itself,
independent of the value type, this commit makes it possible.

Co-authored-by: Robin Oger <robin.oger.work@gmail.com>
2026-02-11 15:06:59 -08:00
Victor Zverovich
eb99f6eba6 Move std::byte formatter to std.h 2026-02-03 10:16:20 -08:00
Victor Zverovich
b98926b73b uint128_fallback -> uint128 2026-02-02 19:13:14 -08:00
Victor Zverovich
3f98b54bd7 Move _BitInt next to bitref formatter 2026-02-02 17:08:10 -08:00
Victor Zverovich
45ed657df3 Cleanup locking 2026-02-01 11:09:19 -08:00
Victor Zverovich
76d480c6fd Cleanup handling of adaptors 2026-01-31 19:49:52 -08:00
Soumik15630m
5cc5072aa6
Fix range suppresor formatter (#4660) 2026-01-30 06:39:00 -08:00
Victor Zverovich
26c6b1c23d Move copy to format.h 2026-01-29 21:30:20 -08:00
Victor Zverovich
b2a96c6087 Stop doing heroics for pathological user code 2026-01-29 21:12:06 -08:00
Victor Zverovich
45f230b9b2 Remove const_check 2026-01-29 20:18:18 -08:00
Victor Zverovich
04864b1111 Remove unused include 2026-01-04 16:45:17 -08:00
Kareem Otoum
6b018edfb9
add support for positional arguments as width and precision specifiers (#4643)
* make positional arguments work as width and precision specifiers with floating-point formats too

* fix test case failing ci tests
2026-01-04 16:39:02 -08:00
Jaeheon Shim
46a45990fe
Fix missing named-arg validation for compiled format strings (#4638) 2026-01-03 18:27:32 -08:00
Murat Toğunçhan Düzgün
cbd4fc18c3
test(scan): add basic float scan coverage (#4644) 2026-01-02 14:34:18 -08:00
Victor Zverovich
ec73fb7247 Cleanup gtest cmake config 2025-12-09 18:27:32 -08:00
Zephyr Lykos
2a50a0d808
Remove unused symbol check (#4625)
Fixes: 56d7a8c157c6ff9f98dd53a092d439c736cfe934
Fixes: a3bf40838f6bf9b45544d3d3cd0f6a60e8c7218c
2025-12-08 12:23:37 -08:00
Victor Zverovich
19e4d5ecd9 Fix handling of pointers in format string compilation and FMT_BUILTIN_TYPES=0 2025-12-07 08:07:09 -08:00
bigmoonbit
2727215c11
chore: minor improvement for docs (#4616)
Signed-off-by: bigmoonbit <bigmoonbit@outlook.com>
2025-11-28 12:55:25 -08:00
Victor Zverovich
3391f9e992 Cleanup test 2025-11-22 19:14:32 -08:00
Victor Zverovich
7a0da1c68a Merge compile-time FP tests into other compile-time tests 2025-11-22 07:46:38 -08:00
Victor Zverovich
e3d2174b3c Remove more invalid tests 2025-11-22 07:30:11 -08:00
Victor Zverovich
a6fb4d3b06 Remove invalid tests 2025-11-22 07:00:06 -08:00
Victor Zverovich
1122268510 Make path formatting lossless with WTF-8 2025-11-05 10:59:06 -10:00
Victor Zverovich
33ad559eb8 Fix fuzzer 2025-11-02 07:52:16 -10:00
Victor Zverovich
08d38d6e78 Make error_code formatter debug-enabled 2025-10-19 10:35:45 -07:00
Vladislav Shchapov
85f6ecc7a0
Add format_as support for std::variant and std::expected formatters (#4575)
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2025-10-18 14:05:21 -07:00
Oleksandr Koval
486e7ba579
support std::optional holding cv-qualified types (#4562)
Fixes #4561
2025-10-03 04:40:44 -07:00
Victor Zverovich
bfdef8b15d Remove deprecated functions 2025-09-13 09:25:53 -07:00
Fatih BAKIR
18e160eb4c
Add missing include for crtdbg.h (#4534)
This header uses _CRT_ASSERT, which is defined in crtdbg.h but does not
include it, causing a build error in format-test.cc

Fixes the issue by including the header
2025-09-08 09:37:43 -07:00
Anas
0a94e06750
Combined emphases into a single escape sequence (#4528) 2025-09-05 09:50:56 -07:00
Victor Zverovich
e72e43af1c Apply clang-tidy 2025-09-03 11:05:41 -07:00
Victor Zverovich
882702c219 Apply clang-tidy 2025-09-01 12:21:17 -07:00
Victor Zverovich
02fb76d69b Add FMT_STATIC_FORMAT 2025-09-01 09:15:32 -07:00
Victor Zverovich
489fd7ca4b Simplify locale handling 2025-08-31 09:33:43 -07:00
Victor Zverovich
e7e71009c7 Make FP formatting compatible with exotic chars 2025-08-24 08:49:54 -07:00
Victor Zverovich
f91dc80f4c Minor cleanup 2025-08-16 14:49:26 -07:00
Victor Zverovich
4120581167 Minor cleanup 2025-08-16 14:20:06 -07:00
Victor Zverovich
7ffc3ca15b Minor cleanup 2025-08-16 12:20:02 -07:00
Murat Toprak
0d145936ec
Handle allocator propagation in basic_memory_buffer::move, Fix #4487 (#4490)
* Handle allocator propagation in basic_memory_buffer::move

Update `basic_memory_buffer::move` to respect `propagate_on_container_move_assignment`allocator trait.
If the allocator should not propagate and differs from the target's allocator,
fallback to copying the buffer instead of transferring ownership.

This avoids potential allocator mismatch issues and ensures exception safety.

* Add test cases for the updated move ctor

- Added two test cases `move_ctor_inline_buffer_non_propagating` and `move_ctor_dynamic_buffer_non_propagating`
- Added `PropageteOnMove` template parameter to `allocator_ref` class to be compatible with the old test cases
- `allocator_ref` now implements `!=` and `==` operators
2025-08-09 08:14:15 -07:00
Dominic Pöschko
35dcc58263
fix buffer overflow on all emphasis flags set (#4498) 2025-07-20 10:43:33 -07:00
Victor Zverovich
300ce75ca6 Handle invalid glibc FILE buffer 2025-07-06 11:17:16 -07:00
Victor Zverovich
513f978241 Cleanup os-test 2025-07-04 10:52:59 -07:00
Victor Zverovich
6a3b40524c Use actual example code and move safe_fopen to os-test 2025-07-04 09:50:55 -07:00
Victor Chernyakin
2fa3e1a1bb
Fix interaction between debug presentation, precision, and width for strings (#4478) 2025-07-04 07:33:47 -07:00
Vladislav Shchapov
571c02d475
Add xchar support for std::byte formatter (#4480)
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2025-06-23 14:02:11 -07:00
Victor Chernyakin
1ef8348070
Properly constrain detail::copy optimization (#4474) 2025-06-21 06:59:35 -07:00
Sahil Sinha
a5dccffa56 Add double and float support to scan test
- Add double_type and float_type to scan_type enum
- Add double* and float* pointers to scan_arg union
- Add constructors for double and float scan arguments
- Add switch cases for double and float types in visit()
- Implement basic read() functions for floating-point parsing

This partially resolves the TODO comment 'more types' in scan.h by adding
support for the two most commonly needed floating-point types.
2025-06-21 06:57:20 -07:00
Victor Zverovich
4a149f513f Test non-SSO constexpr string formatting 2025-06-20 07:10:12 -07:00
Victor Zverovich
730fd4d9a7 Remove redundant tests 2025-06-08 08:46:22 -07:00
Mikhail Svetkin
5860688d7e
Enable constexpr support for fmt::format (fmtlib#3403) (#4456) 2025-06-07 07:16:49 -07:00
Victor Zverovich
fc0c76a075 Handle large precision 2025-06-01 08:49:41 -07:00
Victor Zverovich
befbc5fdb8 Fix ADL lookup for memory_buffer 2025-05-26 09:44:35 -07:00
Victor Zverovich
8aa1d6a9fb Minor cleanup 2025-05-25 10:14:24 -07:00
Nikhil
6d79757a38
Interpret precision as display width (#4443) 2025-05-25 08:42:47 -07:00
Victor Chernyakin
b5266fd3b9
Remove some redundant consts (#4445)
`constexpr` variables are implicitly `const`.
2025-05-12 10:41:58 -07:00
Victor Zverovich
9b0ebd4435 Cleanup base-test 2025-05-11 15:42:08 -07:00
Victor Zverovich
7af94e5597 Remove old gcc workaround 2025-05-11 12:35:28 -07:00
Victor Zverovich
2924fcf8f6 Cleanup base-test 2025-05-11 10:36:42 -07:00
Victor Zverovich
a6cd72c9eb Cleanup base-test 2025-05-11 09:01:28 -07:00
Victor Zverovich
07885271a1 Minor cleanup 2025-05-11 07:54:23 -07:00
Jeremy Rifkin
4999416e5c
Fix reference_wrapper ambiguity with format_as (#4434) 2025-05-10 11:15:45 -07:00
Victor Zverovich
6caff7ed9c Cleanup test 2025-05-03 08:36:42 -07:00
Victor Zverovich
448929d491 Update and apply clang-format 2025-05-03 07:29:31 -07:00
Barry Revzin
8978ab09b2
Avoiding __builtin_strlen (#4429) 2025-04-27 09:32:10 -07:00
Victor Zverovich
c936e2e44e Implement debug format for error_code 2025-04-27 09:06:17 -07:00
Victor Zverovich
a7d7b894cd Implement the s specifier for error_code 2025-04-27 08:51:18 -07:00
Victor Zverovich
9db5e4df22 Don't specialize std::is_floating_point 2025-04-26 08:17:05 -07:00
Victor Zverovich
c81cbed2b7 Simplify test 2025-04-23 12:32:26 -07:00
LocalSpook
c709138359 Add support for incomplete types 2025-04-20 10:16:11 -07:00
Victor Zverovich
ed0d216f7e Fix localization and formatting of timezone names 2025-04-13 09:52:59 -07:00
Victor Zverovich
bd9554a29e Fix formatting of timezone names 2025-04-13 08:52:26 -07:00
Victor Zverovich
f086dc0d27 Fix timezone handling in tm 2025-04-13 08:23:40 -07:00
Victor Zverovich
f10b6dd816 Improve chrono formatting 2025-04-12 09:59:06 -07:00
Victor Zverovich
f470b9c566 Cleanup chrono tests and set consistent TZ 2025-04-12 09:12:49 -07:00
Victor Zverovich
b28214487d Fix handling of %Z 2025-04-12 08:51:22 -07:00
Victor Zverovich
6d69f0c5f2 Improve chorno tests 2025-04-12 08:24:49 -07:00
Victor Zverovich
da776c9a66 Test timezone 2025-04-12 07:53:58 -07:00
Victor Zverovich
5199e0f885 Fix a flush issue on libstdc++ 2025-03-30 10:54:14 -07:00
Victor Zverovich
2f58430573 Move buffering tests to os-test 2025-03-30 09:38:40 -07:00
Victor Zverovich
204661287b Improve local_time test 2025-03-29 10:56:11 -07:00
Victor Zverovich
e1ab383361 Report an error when timezone is not available 2025-03-29 09:10:00 -07:00
Victor Zverovich
b9e0e94a01 Enable more chrono tests on Windows 2025-03-29 08:20:49 -07:00
Victor Zverovich
b2dfcb2b80 Fix local_time test 2025-03-23 19:51:33 -07:00
Victor Zverovich
7ac97cbd1d Enable some local_time tests and make them deterministic 2025-03-23 11:50:03 -07:00
Victor Zverovich
17898794a9 Use fmt::local_time 2025-03-23 11:18:14 -07:00
Victor Zverovich
443a8ef342 Deprecate fmt::localtime 2025-03-23 10:46:02 -07:00
Victor Zverovich
43e31614cc Test ambiguous time 2025-03-23 10:34:37 -07:00
Victor Zverovich
9d6e24c64e Fix handling of long with FMT_BUILTIN_TYPES=0 2025-03-22 07:52:54 -07:00
Victor Zverovich
191c504b10 Cleanup build config 2025-03-16 08:24:31 -07:00
Victor Zverovich
dd780fde44 Add clang-3.4 2025-03-15 12:22:10 -07:00
Dean Glazeski
37e6474718
Fix dynamic named arg format spec handling (#4361)
When dealing with dynamic named format args, need to account for
nested named args when skipping the content of the replacement.

Fixes #4360
2025-03-15 09:34:11 -07:00
Victor Zverovich
9212ff6ca1 Apply coding conventions and use constexpr 2025-03-02 09:03:06 -08:00
Dean Glazeski
864bdf9638
Report error on duplicate named arg names (#4367) 2025-03-02 07:47:03 -08:00
Victor Chernyakin
b776cf66fc
Optimize text_style using bit packing (#4363) 2025-03-01 11:18:19 -08:00
Victor Zverovich
d42a068dbd Apply coding conventions 2025-02-05 11:06:45 -08:00
Markus Kitsinger
f2cec917da
Move is_compiled_string to public API (#4342) 2025-02-04 16:20:27 -08:00
Victor Zverovich
52eeeb52a6 Make exponent threshold depend on representation (#3649) 2025-01-26 12:10:48 -08:00
timsong-cpp
cb6fdf2191
Restore constraint on map formatter (#4326)
* Restore constraint on map formatter
* Remove unnecessary double parens
2025-01-25 08:31:07 -08:00
timsong-cpp
f841ae61e2
Fix #4303: avoid instantiating formatter<const T> (#4325) 2025-01-24 10:53:10 -08:00
Vladislav Shchapov
898d438571
Fix formatting into std::ostreambuf_iterator using a compiled format (#4312)
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2025-01-18 07:16:06 -08:00
Aaron Bishop
937b7c5c10
Add args() accessor back to fmt::format_context (#4310)
Add args() accessor back to fmt::format_context
Add test that would fail to compile if you can't create a fmt::format_context from another fmt::format_context
2025-01-17 10:28:34 -08:00
Vladislav Shchapov
dad3237514 Fix a bug when copying the fill from basic_specs
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2025-01-03 09:16:21 -08:00
Vladislav Shchapov
880e1494dc Improve xchar support for std::bitset formatter
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2025-01-03 09:16:21 -08:00
Hannes Harnisch
7c50da5385
Allow getting size of dynamic format arg store (#4270) 2024-12-18 19:54:35 -08:00
Victor Zverovich
df249d8ad3 Remove an old workaround 2024-11-19 14:28:39 +01:00
Victor Zverovich
dfad80d1c5 Remove an old workaround 2024-11-19 14:22:44 +01:00
Victor Zverovich
b1a054706e Remove more MSVC 2015 workarounds and fix string_view checks 2024-11-15 08:33:30 -08:00
Victor Zverovich
a35389b3c2 Corrently handle buffer flush 2024-11-09 10:56:31 -08:00
Vladislav Shchapov
5a3576acc8
Implement fmt::join for tuple-like objects (#4230)
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2024-11-09 08:28:46 -08:00
Victor Zverovich
8523dba2dc Make constexpr precede explicit consistently 2024-11-02 11:03:03 -07:00
Vladislav Shchapov
168df9a064
Implement fmt::format_to into std::vector<char> (#4211)
* Implement fmt::format_to into std::vector<char>

Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>

* Move get_container to the trait

Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>

---------

Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2024-10-26 09:23:59 -07:00
Victor Zverovich
2b6a786e35 Use standard context in print 2024-10-20 09:08:24 -07:00
Victor Zverovich
601be1cbe7 Add support for code units > 0xFFFF in fill 2024-10-19 08:15:50 -07:00
Victor Zverovich
c68c5fa7c7 Test FMT_BUILTIN_TYPES 2024-10-04 16:08:46 -07:00
Victor Zverovich
d64b100a30 Relax constexpr 2024-09-29 10:04:57 -07:00
Victor Zverovich
1c5883bef0 Test nondeterministic conversion to format string 2024-09-28 09:16:28 -07:00
Victor Zverovich
3b70966df5 Add width and alignment support to error_code 2024-09-21 07:58:03 -07:00
Victor Zverovich
a197a994c5 Add member format_as for std 2024-09-20 08:49:49 -07:00
Khanh H
ed8f8be70d
More chrono padding (#4161)
* Add padding modifier to day of year, duration's remains unpadded
* Add padding modifier for %m, %Y
2024-09-18 09:27:45 -07:00
Victor Zverovich
0e62e5dc7c Simplify has_formatter 2024-09-16 19:53:31 -07:00
Yedidya Feldblum
07e70151d5 format std::reference_wrapper 2024-09-16 19:05:18 -07:00
Victor Zverovich
de28ef5f86 Remove make_arg 2024-09-14 09:18:47 -07:00
Victor Zverovich
0335312320 Demacrify UTF-8 check 2024-09-13 18:41:10 -07:00
Victor Zverovich
1782a6eac0 Rename pragma macros 2024-09-12 19:20:32 -07:00
Victor Zverovich
689ec7a087 Cleanup 2024-09-11 16:05:34 -07:00
Victor Zverovich
1bde49e545 Remove FMT_USE_USER_LITERALS 2024-09-11 11:27:27 -07:00