diff --git a/ChangeLog.rst b/ChangeLog.rst index 0e11e7b1..e27e3d82 100644 --- a/ChangeLog.rst +++ b/ChangeLog.rst @@ -22,8 +22,8 @@ #include std::string s = format(fmt("{:d}"), "foo"); -gives a compile-time error because ``d`` is an invalid specifier for strings -(`godbolt `_):: + gives a compile-time error because ``d`` is an invalid specifier for strings + (`godbolt `_):: ... :4:19: note: in instantiation of function template specialization 'fmt::v5::format' requested here @@ -32,6 +32,9 @@ gives a compile-time error because ``d`` is an invalid specifier for strings format.h:1337:13: note: non-constexpr function 'on_error' cannot be used in a constant expression handler.on_error("invalid type specifier"); + Compile-time checks require relaxed ``constexpr`` (C++14 feature) support. If + the latter is not available, checks will be performed at runtime. + * Separated format string parsing and formatting in the extension API to enable compile-time format string processing. For example @@ -70,9 +73,6 @@ gives a compile-time error because ``d`` is an invalid specifier for strings :12:45: error: expression '' is not a constant expression throw format_error("invalid specifier"); - Compile-time checks require relaxed ``constexpr`` (C++14 feature) support. If - the latter is not available, checks will be performed at runtime. - * Added `iterator support `_: @@ -84,6 +84,17 @@ gives a compile-time error because ``d`` is an invalid specifier for strings std::vector out; fmt::format_to(std::back_inserter(out), "{}", 42); +* Added the `format_to_n + `_ + function that restricts the output to the specified number of characters + (`#298 `_): + + .. code:: c++ + + char out[4]; + fmt::format_to_n(out, sizeof(out), "{}", 12345); + // out == "1234" (without terminating '\0') + * Added the `formatted_size `_ function for computing the output size: @@ -122,6 +133,9 @@ gives a compile-time error because ``d`` is an invalid specifier for strings vreport_error(format, fmt::make_format_args(args...)); } +* Added the ``make_printf_args`` function for capturing ``printf`` arguments. + Thanks `@Kronuz (Germán Méndez Bravo) `_. + * Added prefix ``v`` to non-variadic functions taking ``format_args`` to distinguish them from variadic ones: @@ -162,16 +176,15 @@ gives a compile-time error because ``d`` is an invalid specifier for strings * Disallowed formatting of multibyte strings into a wide character target (`#606 `_). -* Added a section describing `the use of header-only target with CMake - `_ to the docs - (`#515 `_). - Thanks `@ibell (Ian Bell) `_. - -* Added a `note about errno `_ to the - documentation ( +* Improved documentation ( + `#515 `_, `#614 `_, - `#617 `_). - Thanks `@mihaitodor (Mihai Todor) `_. + `#617 `_, + `#661 `_, + `#680 `_). + Thanks `@ibell (Ian Bell) `_, + `@mihaitodor (Mihai Todor) `_, and + `@johnthagen `_. * Implemented more efficient handling of large number of format arguments. @@ -182,6 +195,10 @@ gives a compile-time error because ``d`` is an invalid specifier for strings (`#397 `_). Thanks `@chronoxor (Ivan Shynkarenka) `_. +* Moved ``fmt/*.h`` to ``include/fmt/*.h`` to prevent irrelevant files and + directories appearing on the include search paths when fmt is used as a + subproject and moved source files to the ``src`` directory. + * Added qmake project file ``support/fmt.pro`` (`#641 `_). Thanks `@cowo78 (Giuseppe Corbelli) `_. @@ -209,14 +226,23 @@ gives a compile-time error because ``d`` is an invalid specifier for strings * Fixed various compiler warnings ( `#640 `_, - `#656 `_). - Thanks `@peterbell10 `_ and - `@LarsGullik `_. + `#656 `_, + `#679 `_, + `#681 `_, + `#705 `_). + Thanks `@peterbell10 `_, + `@LarsGullik `_, + `@foonathan (Jonathan Müller) `_, + `@eliaskosunen (Elias Kosunen) `_, and + `@christianparpart (Christian Parpart) `_. * Worked around an MSVC bug and fixed several warnings (`#653 `_). Thanks `@alabuzhev (Alex Alabuzhev) `_. +* Worked around GCC bug 67371 + (`#682 `_). + * Fixed compilation with ``-fno-exceptions`` (`#655 `_). Thanks `@chenxiaolong (Andrew Gunnerson) `_. @@ -234,10 +260,6 @@ gives a compile-time error because ``d`` is an invalid specifier for strings (`#660 `_). Thanks `@hubslave `_. -* Improved documentation - (`#661 `_). - Thanks `@johnthagen `_. - * Fixed compilation when there is a mismatch between ``-std`` options between the library and user code (`#664 `_). @@ -248,6 +270,22 @@ gives a compile-time error because ``d`` is an invalid specifier for strings * Fixed handling of numeric alignment with no width (`#675 `_). +* Fixed handling of empty strings in UTF8/16 converters + (`#676 `_). + Thanks `@vgalka-sl (Vasili Galka) `_. + +* Fixed formatting of an empty ``string_view`` + (`#689 `_). + +* Fixed detection of ``string_view`` on libc++ + (`#686 `_). + +* Fixed DLL issues (`#696 `_). + Thanks `@sebkoenig `_. + +* Fixed compile checks for mixing narrow and wide strings + (`#690 `_). + 4.1.0 - 2017-12-20 ------------------