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