diff --git a/ChangeLog.rst b/ChangeLog.rst index 303d841c..4c1edf53 100644 --- a/ChangeLog.rst +++ b/ChangeLog.rst @@ -2,31 +2,18 @@ ----------- * Reduced the library size. For example, on macOS the stripped binary - statically linked with {fmt} `shrank from ~368k to less than 100k - `_. - -* Added a simpler and more efficient `format string compilation API - `_: - - .. code:: c++ - - #include - - // Converts 42 into std::string using the most efficient method and no - // runtime format string processing. - std::string s = fmt::format(FMT_COMPILE("{}"), 42); - - The old ``fmt::compile`` API is now deprecated. + statically linked with {fmt} shrank from ~368k to less than 100k: + http://www.zverovich.net/2020/05/21/reducing-library-size.html * Optimized integer formatting: ``format_to`` with format string compilation - and a stack-allocated buffer is now `faster than to_chars on both - libc++ and libstdc++ - `_. + and a stack-allocated buffer is now faster than both libc++ and libstdc++ + ``to_chars`` + (http://www.zverovich.net/2020/06/13/fast-int-to-string-revisited.html). * Applied extern templates to improve compile times when using the core API - and ``fmt/format.h`` (`#1452`_). For example, on macOS with clang the compile - time of a test TU dropped from 2.3s to 0.3s with ``-O2`` and from 0.6s to 0.3s - with the default settings (``-O0``). + and ``fmt/format.h`` (`#1452 `_). + For example, on macOS with clang the compile time dropped from 2.3s to 0.3s + with ``-O2`` and from 0.6s to 0.3s with the default settings (``-O0``). Before (``-O2``):: @@ -84,8 +71,7 @@ mov DWORD PTR [rsp+16], 42 mov QWORD PTR [rsp+32], OFFSET FLAT:.LC0 mov DWORD PTR [rsp+40], 0 - call fmt::v6::vprint(fmt::v6::basic_string_view, - fmt::v6::format_args) + call fmt::v6::vprint(fmt::v6::basic_string_view, fmt::v6::format_args) xor eax, eax add rsp, 56 ret @@ -93,7 +79,8 @@ .L.str.1: .asciz "answer" -* Implemented compile-time checks for dynamic width and precision (`#1614`_): +* Implemented compile-time checks for dynamic width and precision + (`#1614 `_): .. code:: c++ @@ -116,7 +103,8 @@ if (id >= num_args_) on_error("argument not found"); ^ -* Added sentinel support to ``fmt::join`` (`#1689`_): +* Added sentinel support to ``fmt::join`` + (`#1689 `_)) .. code:: c++ @@ -136,14 +124,20 @@ Thanks `@BRevzin (Barry Revzin) `_. * Added support for named args, ``clear`` and ``reserve`` to - ``dynamic_format_arg_store`` (`#1655`_, `#1663`_, `#1674`_, `#1677`_). Thanks - `@vsolontsov-ll (Vladimir Solontsov) `_. + ``dynamic_format_arg_store`` + (`#1655 `_, + `#1663 `_, + `#1677 `_). + Thanks `@vsolontsov-ll (Vladimir Solontsov) + `_. * Added support for the ``'c'`` format specifier to integral types for - compatibility with ``std::format`` (`#1652`_). + compatibility with ``std::format`` + (`#1652 `_). * Implemented the ``'L'`` format specifier for locale-specific formatting of - floating-point numbers for compatibility with ``std::format`` (`#1624`_). + floating-point numbers for compatibility with ``std::format`` + (`#1624 `_). The ``'n'`` specifier is now disabled by default but can be enabled via the ``FMT_DEPRECATED_N_SPECIFIER`` macro. @@ -157,68 +151,80 @@ fmt::format("Result: {}: ({},{},{},{})", str1, str2, str3, str4, str5) - is now ~40% faster (`#1685`_). + is now ~40% faster (`#1685 `_). + +* Added the ``FMT_OS`` CMake option to control inclusion of OS-specific APIs + in the fmt target. This can be useful for embedded platforms + (`#1654 `_, + `#1656 `_). + Thanks `@kwesolowski (Krzysztof Wesolowski) + `_. * Improved compatibility between ``fmt::printf`` with the standard specs - (`#1595`_, `#1682`_, `#1683`_, `#1687`_, `#1699`_, `#1717`_). + (`#1595 `_, + `#1683 `_, + `#1687 `_, + `#1699 `_). Thanks `@rimathia `_. -* Fixed handling of ``operator<<` overloads that use ``copyfmt`` (`#1666`_). +* Fixed handling of ``operator<<` overloads that use ``copyfmt`` + (`#1666 `_). * Removed the following deprecated APIs: - * ``FMT_STRING_ALIAS`` and ``fmt`` macros - replaced by ``FMT_STRING`` + * ``fmt`` and ``FMT_STRING_ALIAS`` macros - replaced by ``FMT_STRING`` * ``fmt::basic_string_view::char_type`` - replaced by ``fmt::basic_string_view::value_type`` * ``convert_to_int`` * ``format_arg_store::types`` * ``*parse_context`` - replaced by ``*format_parse_context`` * ``FMT_DEPRECATED_INCLUDE_OS`` - * ``FMT_DEPRECATED_PERCENT`` - incompatible with ``std::format`` - * ``*writer`` - replaced by compiled format API + * ``FMT_DEPRECATED_PERCENT`` + * ``*writer`` -* Deprecated ``arg_formatter``. - -* Renamed the ``internal`` namespace to ``detail`` (`#1538`_). The former is - still provided as an alias if the ``FMT_USE_INTERNAL`` macro is defined. - -* Added the ``FMT_OS`` CMake option to control inclusion of OS-specific APIs - in the fmt target. This can be useful for embedded platforms - (`#1654`_, `#1656`_). - Thanks `@kwesolowski (Krzysztof Wesolowski) - `_. +* Renamed the ``internal`` namespace to ``detail`` + (`#1538 `_). The former is still + provided as an alias if the ``FMT_USE_INTERNAL`` macro is defined. * Replaced ``FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION`` with the ``FMT_FUZZ`` - macro to prevent interferring with fuzzing of projects using {fmt} (`#1650`_). + macro to prevent interferring with fuzzing of projects using {fmt} + (`#1650 `_). Thanks `@asraa (Asra Ali) `_. -* Fixed compatibility with emscripten (`#1736`_, `#1737`_). - Thanks `@ArthurSonzogni (Arthur Sonzogni) - `_. - -* Improved documentation (`#704`_, `#1643`_, `#1660`_, `#1681`_, `#1691`_, - `#1706`_, `#1714`_, `#1721`_, `#1739`_, `#1740`_, `#1741`_). +* Improved documentation + (`#704 `_, + `#1643 `_, + `#1660 `_, + `#1681 `_, + `#1691 `_). Thanks `@senior7515 (Alexander Gallego) `_, `@lsr0 (Lindsay Roberts) `_, `@puetzk (Kevin Puetz) `_, - `@fpelliccioni (Fernando Pelliccioni) `_, - Alexey Kuzmenko, `@jelly (jelle van der Waa) `_, - `@claremacrae (Clare Macrae) `_, - `@jiapengwen (文佳鹏) `_, - `@gsjaardema (Greg Sjaardema) `_. + `@fpelliccioni (Fernando Pelliccioni ) `_, + Alexey Kuzmenko. * Implemented various build configuration fixes and improvements - (`#1603`_, `#1657`_, `#1702`_, `#1728`_). - Thanks `@scramsby (Scott Ramsby) `_, - `@jtojnar (Jan Tojnar) `_, - `@orivej (Orivej Desh) `_, - `@flagarde `_. + (`#1657 `_, + `#1702 `_). + Thanks `@jtojnar (Jan Tojnar) `_, + `@orivej (Orivej Desh) `_. -* Fixed various warnings and compilation issues (`#1616`_, `#1620`_, - `#1622`_, `#1625`_, `#1627`_, `#1628`_, `#1629`_, `#1631`_, `#1633`_, - `#1649`_, `#1658`_, `#1661`_, `#1667`_, `#1668`_, `#1669`_, `#1692`_, - `#1696`_, `#1697`_, `#1707`_, `#1712`_, `#1716`_, `#1722`_, `#1724`_, - `#1729`_, `#1738`_, `#1742`_, `#1743`_, `#1744`_, `#1747`_, `#1750`_). +* Fixed various warnings and compilation issues + (`#1616 `_, + `#1622 `_, + `#1627 `_, + `#1628 `_, + `#1629 `_, + `#1631 `_, + `#1633 `_, + `#1649 `_, + `#1658 `_, + `#1661 `_, + `#1667 `_, + `#1669 `_, + `#1692 `_, + `#1696 `_, + `#1697 `_). Thanks `@gsjaardema (Greg Sjaardema) `_, `@gabime (Gabi Melman) `_, `@johnor (Johan) `_, @@ -227,20 +233,17 @@ `@peterbell10 `_, `@daixtrose (Markus Werle) `_, `@petrutlucian94 (Lucian Petrut) `_, - `@Neargye (Daniil Goncharov) `_, - `@ambitslix (Attila M. Szilagyi) `_, - `@gabime (Gabi Melman) `_, - `@erthink (Leonid Yuriev) `_, - `@tohammer (Tobias Hammer ) `_, - `@0x8000-0000 (Florin Iucha) `_. + `@Neargye (Daniil Goncharov) `_. 6.2.1 - 2020-05-09 ------------------ -* Fixed ostream support in ``sprintf`` (`#1631`_). +* Fixed ostream support in ``sprintf`` + (`#1631 `_). * Fixed type detection when using implicit conversion to ``string_view`` and - ostream ``operator<<`` inconsistently (`#1662`_). + ostream ``operator<<`` inconsistently + (`#1662 `_). 6.2.0 - 2020-04-05 ------------------ @@ -270,7 +273,9 @@ * Reduced the library size by ~10%. -* Always print decimal point if ``#`` is specified (`#1476`_, `#1498`_): +* Always print decimal point if ``#`` is specified + (`#1476 `_, + `#1498 `_): .. code:: c++ @@ -294,7 +299,8 @@ * Used ``type_identity`` to block unnecessary template argument deduction. Thanks Tim Song. -* Improved UTF-8 handling (`#1109`_): +* Improved UTF-8 handling + (`#1109 `_): .. code:: c++ @@ -310,7 +316,9 @@ on systems that support Unicode. -* Added experimental dynamic argument storage (`#1170`_, `#1584`_): +* Added experimental dynamic argument storage + (`#1170 `_, + `#1584 `_): .. code:: c++ @@ -326,56 +334,113 @@ Thanks `@vsolontsov-ll (Vladimir Solontsov) `_. -* Made ``fmt::join`` accept ``initializer_list`` (`#1591`_). +* Made ``fmt::join`` accept ``initializer_list`` + (`#1591 `_). Thanks `@Rapotkinnik (Nikolay Rapotkin) `_. -* Fixed handling of empty tuples (`#1588`_). +* Fixed handling of empty tuples + (`#1588 `_). -* Fixed handling of output iterators in ``format_to_n`` (`#1506`_). +* Fixed handling of output iterators in ``format_to_n`` + (`#1506 `_). -* Fixed formatting of ``std::chrono::duration`` types to wide output (`#1533`_). +* Fixed formatting of ``std::chrono::duration`` types to wide output + (`#1533 `_). Thanks `@zeffy (pilao) `_. -* Added const ``begin`` and ``end`` overload to buffers (`#1553`_). +* Added const ``begin`` and ``end`` overload to buffers + (`#1553 `_). Thanks `@dominicpoeschko `_. * Added the ability to disable floating-point formatting via ``FMT_USE_FLOAT``, ``FMT_USE_DOUBLE`` and ``FMT_USE_LONG_DOUBLE`` macros for extremely - memory-constrained embedded system (`#1590`_). + memory-constrained embedded system + (`#1590 `_). Thanks `@albaguirre (Alberto Aguirre) `_. -* Made ``FMT_STRING`` work with ``constexpr`` ``string_view`` (`#1589`_). +* Made ``FMT_STRING`` work with ``constexpr`` ``string_view`` + (`#1589 `_). Thanks `@scramsby (Scott Ramsby) `_. -* Implemented a minor optimization in the format string parser (`#1560`_). +* Implemented a minor optimization in the format string parser + (`#1560 `_). Thanks `@IkarusDeveloper `_. -* Improved attribute detection (`#1469`_, `#1475`_, `#1576`_). +* Improved attribute detection + (`#1469 `_, + `#1475 `_, + `#1576 `_). Thanks `@federico-busato (Federico) `_, `@chronoxor (Ivan Shynkarenka) `_, `@refnum `_. -* Improved documentation (`#1481`_, `#1523`_). +* Improved documentation + (`#1481 `_, + `#1523 `_). Thanks `@JackBoosY (Jack·Boos·Yu) `_, `@imba-tjd (谭九鼎) `_. * Fixed symbol visibility on Linux when compiling with ``-fvisibility=hidden`` - (`#1535`_). Thanks `@milianw (Milian Wolff) `_. + (`#1535 `_). + Thanks `@milianw (Milian Wolff) `_. * Implemented various build configuration fixes and improvements - (`#1264`_, `#1460`_, `#1534`_, `#1536`_, `#1545`_, `#1546`_, `#1566`_, - `#1582`_, `#1597`_, `#1598`_). + (`#1264 `_, + `#1460 `_, + `#1534 `_, + `#1536 `_, + `#1545 `_, + `#1546 `_, + `#1566 `_, + `#1582 `_, + `#1597 `_, + `#1598 `_). Thanks `@ambitslix (Attila M. Szilagyi) `_, `@jwillikers (Jordan Williams) `_, `@stac47 (Laurent Stacul) `_. * Fixed various warnings and compilation issues - (`#1433`_, `#1461`_, `#1470`_, `#1480`_, `#1485`_, `#1492`_, `#1493`_, - `#1504`_, `#1505`_, `#1512`_, `#1515`_, `#1516`_, `#1518`_, `#1519`_, - `#1520`_, `#1521`_, `#1522`_, `#1524`_, `#1530`_, `#1531`_, `#1532`_, - `#1539`_, `#1547`_, `#1548`_, `#1554`_, `#1567`_, `#1568`_, `#1569`_, - `#1571`_, `#1573`_, `#1575`_, `#1581`_, `#1583`_, `#1586`_, `#1587`_, - `#1594`_, `#1596`_, `#1604`_, `#1606`_, `#1607`_, `#1609`_). + (`#1433 `_, + `#1461 `_, + `#1470 `_, + `#1480 `_, + `#1485 `_, + `#1492 `_, + `#1493 `_, + `#1504 `_, + `#1505 `_, + `#1512 `_, + `#1515 `_, + `#1516 `_, + `#1518 `_, + `#1519 `_, + `#1520 `_, + `#1521 `_, + `#1522 `_, + `#1524 `_, + `#1530 `_, + `#1531 `_, + `#1532 `_, + `#1539 `_, + `#1547 `_, + `#1548 `_, + `#1554 `_, + `#1567 `_, + `#1568 `_, + `#1569 `_, + `#1571 `_, + `#1573 `_, + `#1575 `_, + `#1581 `_, + `#1583 `_, + `#1586 `_, + `#1587 `_, + `#1594 `_, + `#1596 `_, + `#1604 `_, + `#1606 `_, + `#1607 `_, + `#1609 `_). Thanks `@marti4d (Chris Martin) `_, `@iPherian `_, `@parkertomatoes `_, @@ -396,21 +461,28 @@ 6.1.2 - 2019-12-11 ------------------ -* Fixed ABI compatibility with ``libfmt.so.6.0.0`` (`#1471`_). +* Fixed ABI compatibility with ``libfmt.so.6.0.0`` + (`#1471 `_). -* Fixed handling types convertible to ``std::string_view`` (`#1451`_). +* Fixed handling types convertible to ``std::string_view`` + (`#1451 `_). Thanks `@denizevrenci (Deniz Evrenci) `_. * Made CUDA test an opt-in enabled via the ``FMT_CUDA_TEST`` CMake option. -* Fixed sign conversion warnings (`#1440`_). +* Fixed sign conversion warnings + (`#1440 `_). Thanks `@0x8000-0000 (Florin Iucha) `_. 6.1.1 - 2019-12-04 ------------------ -* Fixed shared library build on Windows (`#1443`_, `#1445`_, `#1446`_, - `#1450`_). Thanks `@egorpugin (Egor Pugin) `_, +* Fixed shared library build on Windows + (`#1443 `_, + `#1445 `_, + `#1446 `_, + `#1450 `_). + Thanks `@egorpugin (Egor Pugin) `_, `@bbolli (Beat Bolli) `_. * Added a missing decimal point in exponent notation with trailing zeros. @@ -456,7 +528,10 @@ * {fmt} no longer converts ``float`` arguments to ``double``. In particular this improves the default (shortest) representation of floats and makes ``fmt::format`` consistent with ``std::format`` specs - (`#1336`_, `#1353`_, `#1360`_, `#1361`_): + (`#1336 `_, + `#1353 `_, + `#1360 `_, + `#1361 `_): .. code:: c++ @@ -467,9 +542,11 @@ Thanks `@orivej (Orivej Desh) `_. * Made floating-point formatting output consistent with ``printf``/iostreams - (`#1376`_, `#1417`_). + (`#1376 `_, + `#1417 `_). -* Added support for 128-bit integers (`#1287`_): +* Added support for 128-bit integers + (`#1287 `_): .. code:: c++ @@ -480,7 +557,8 @@ Thanks `@denizevrenci (Deniz Evrenci) `_. * The overload of ``print`` that takes ``text_style`` is now atomic, i.e. the - output from different threads doesn't interleave (`#1351`_). + output from different threads doesn't interleave + (`#1351 `_). Thanks `@tankiJong (Tanki Zhang) `_. * Made compile time in the header-only mode ~20% faster by reducing the number @@ -488,7 +566,8 @@ ``fmt/core.h`` to ``fmt/format.h``. * Added an overload of ``fmt::join`` that works with tuples - (`#1322`_, `#1330`_): + (`#1322 `_, + `#1330 `_): .. code:: c++ @@ -512,7 +591,8 @@ prints ``0``. -* The locale is now passed to ostream insertion (``<<``) operators (`#1406`_): +* The locale is now passed to ostream insertion (``<<``) operators + (`#1406 `_): .. code:: c++ @@ -534,11 +614,13 @@ Thanks `@dlaugt (Daniel Laügt) `_. -* Locale-specific number formatting now uses grouping (`#1393`_, `#1394`_). +* Locale-specific number formatting now uses grouping + (`#1393 `_ + `#1394 `_). Thanks `@skrdaniel `_. * Fixed handling of types with deleted implicit rvalue conversion to - ``const char**`` (`#1421`_): + ``const char**`` (`#1421 `_): .. code:: c++ @@ -552,51 +634,97 @@ fmt::print("{}", str); // now compiles * Enums are now mapped to correct underlying types instead of ``int`` - (`#1286`_). Thanks `@agmt (Egor Seredin) `_. + (`#1286 `_). + Thanks `@agmt (Egor Seredin) `_. -* Enum classes are no longer implicitly converted to ``int`` (`#1424`_). +* Enum classes are no longer implicitly converted to ``int`` + (`#1424 `_). * Added ``basic_format_parse_context`` for consistency with C++20 ``std::format`` and deprecated ``basic_parse_context``. -* Fixed handling of UTF-8 in precision (`#1389`_, `#1390`_). +* Fixed handling of UTF-8 in precision + (`#1389 `_, + `#1390 `_). Thanks `@tajtiattila (Attila Tajti) `_. * {fmt} can now be installed on Linux, macOS and Windows with `Conda `__ using its `conda-forge `__ - `package `__ (`#1410`_):: + `package `__ + (`#1410 `_):: conda install -c conda-forge fmt Thanks `@tdegeus (Tom de Geus) `_. -* Added a CUDA test (`#1285`_, `#1317`_). +* Added a CUDA test (`#1285 `_, + `#1317 `_). Thanks `@luncliff (Park DongHa) `_ and `@risa2000 `_. -* Improved documentation (`#1276`_, `#1291`_, `#1296`_, `#1315`_, `#1332`_, - `#1337`_, `#1395`_ `#1418`_). Thanks +* Improved documentation (`#1276 `_, + `#1291 `_, + `#1296 `_, + `#1315 `_, + `#1332 `_, + `#1337 `_, + `#1395 `_ + `#1418 `_). + Thanks `@waywardmonkeys (Bruce Mitchener) `_, `@pauldreik (Paul Dreik) `_, `@jackoalan (Jack Andersen) `_. -* Various code improvements (`#1358`_, `#1407`_). +* Various code improvements + (`#1358 `_, + `#1407 `_). Thanks `@orivej (Orivej Desh) `_, `@dpacbach (David P. Sicilia) `_, -* Fixed compile-time format string checks for user-defined types (`#1292`_). +* Fixed compile-time format string checks for user-defined types + (`#1292 `_). * Worked around a false positive in ``unsigned-integer-overflow`` sanitizer - (`#1377`_). + (`#1377 `_). * Fixed various warnings and compilation issues - (`#1273`_, `#1278`_, `#1280`_, `#1281`_, `#1288`_, `#1290`_, `#1301`_, - `#1305`_, `#1306`_, `#1309`_, `#1312`_, `#1313`_, `#1316`_, `#1319`_, - `#1320`_, `#1326`_, `#1328`_, `#1344`_, `#1345`_, `#1347`_, `#1349`_, - `#1354`_, `#1362`_, `#1366`_, `#1364`_, `#1370`_, `#1371`_, `#1385`_, - `#1388`_, `#1397`_, `#1414`_, `#1416`_, `#1422`_ `#1427`_, `#1431`_, - `#1433`_). + (`#1273 `_, + `#1278 `_, + `#1280 `_, + `#1281 `_, + `#1288 `_, + `#1290 `_, + `#1301 `_, + `#1305 `_, + `#1306 `_, + `#1309 `_, + `#1312 `_, + `#1313 `_, + `#1316 `_, + `#1319 `_, + `#1320 `_, + `#1326 `_, + `#1328 `_, + `#1344 `_, + `#1345 `_, + `#1347 `_, + `#1349 `_, + `#1354 `_, + `#1362 `_, + `#1366 `_, + `#1364 `_, + `#1370 `_, + `#1371 `_, + `#1385 `_, + `#1388 `_, + `#1397 `_, + `#1414 `_, + `#1416 `_, + `#1422 `_ + `#1427 `_, + `#1431 `_, + `#1433 `_). Thanks `@hhb `_, `@gsjaardema (Greg Sjaardema) `_, `@gabime (Gabi Melman) `_, @@ -666,11 +794,12 @@ `C++20 std::format `_, removing the undocumented ``basic_format_context::parse_context()`` function. -* Added `oss-fuzz `_ support (`#1199`_). +* Added `oss-fuzz `_ support + (`#1199 `_). Thanks `@pauldreik (Paul Dreik) `_. * ``formatter`` specializations now always take precedence over ``operator<<`` - (`#952`_): + (`#952 `_): .. code:: c++ @@ -696,15 +825,17 @@ } * Introduced the experimental ``fmt::compile`` function that does format string - compilation (`#618`_, `#1169`_, `#1171`_): + compilation (`#618 `_, + `#1169 `_, + `#1171 `_): .. code:: c++ #include auto f = fmt::compile("{}"); - std::string s = fmt::format(f, 42); // can be called multiple times to - // format different values + std::string s = fmt::format(f, 42); // can be called multiple times to format + // different values // s == "42" It moves the cost of parsing a format string outside of the format function @@ -712,7 +843,9 @@ types. Thanks `@stryku (Mateusz Janek) `_. * Added experimental ``%`` format specifier that formats floating-point values - as percentages (`#1060`_, `#1069`_, `#1071`_): + as percentages (`#1060 `_, + `#1069 `_, + `#1071 `_): .. code:: c++ @@ -720,7 +853,9 @@ Thanks `@gawain-bolton (Gawain Bolton) `_. -* Implemented precision for floating-point durations (`#1004`_, `#1012`_): +* Implemented precision for floating-point durations + (`#1004 `_, + `#1012 `_): .. code:: c++ @@ -730,7 +865,7 @@ Thanks `@DanielaE (Daniela Engert) `_. * Implemented ``chrono`` format specifiers ``%Q`` and ``%q`` that give the value - and the unit respectively (`#1019`_): + and the unit respectively (`#1019 `_): .. code:: c++ @@ -752,7 +887,8 @@ * Removed deprecated ``fmt/time.h``. Use ``fmt/chrono.h`` instead. * Added ``fmt::format`` and ``fmt::vformat`` overloads that take ``text_style`` - (`#993`_, `#994`_): + (`#993 `_, + `#994 `_): .. code:: c++ @@ -767,7 +903,7 @@ ``print`` overloads that take ``text_style`` instead. * Made ``std::unique_ptr`` and ``std::shared_ptr`` formattable as pointers via - ``fmt::ptr`` (`#1121`_): + ``fmt::ptr`` (`#1121 `_): .. code:: c++ @@ -776,11 +912,14 @@ Thanks `@sighingnow (Tao He) `_. -* Made ``print`` and ``vprint`` report I/O errors (`#1098`_, `#1099`_). +* Made ``print`` and ``vprint`` report I/O errors + (`#1098 `_, + `#1099 `_). Thanks `@BillyDonahue (Billy Donahue) `_. * Marked deprecated APIs with the ``[[deprecated]]`` attribute and removed - internal uses of deprecated APIs (`#1022`_). + internal uses of deprecated APIs + (`#1022 `_). Thanks `@eliaskosunen (Elias Kosunen) `_. * Modernized the codebase using more C++11 features and removing workarounds. @@ -805,35 +944,55 @@ * Moved SFINAE to template parameters to reduce symbol sizes. * Switched to ``fputws`` for writing wide strings so that it's no longer - required to call ``_setmode`` on Windows (`#1229`_, `#1243`_). + required to call ``_setmode`` on Windows + (`#1229 `_, + `#1243 `_). Thanks `@jackoalan (Jack Andersen) `_. -* Improved literal-based API (`#1254`_). +* Improved literal-based API + (`#1254 `_). Thanks `@sylveon (Charles Milette) `_. * Added support for exotic platforms without ``uintptr_t`` such as IBM i - (AS/400) which has 128-bit pointers and only 64-bit integers (`#1059`_). + (AS/400) which has 128-bit pointers and only 64-bit integers + (`#1059 `_). * Added `Sublime Text syntax highlighting config `_ - (`#1037`_). + (`#1037 `_). Thanks `@Kronuz (Germán Méndez Bravo) `_. * Added the ``FMT_ENFORCE_COMPILE_STRING`` macro to enforce the use of - compile-time format strings (`#1231`_). + compile-time format strings + (`#1231 `_). Thanks `@jackoalan (Jack Andersen) `_. -* Stopped setting ``CMAKE_BUILD_TYPE`` if {fmt} is a subproject (`#1081`_). +* Stopped setting ``CMAKE_BUILD_TYPE`` if {fmt} is a subproject + (`#1081 `_). -* Various build improvements (`#1039`_, `#1078`_, `#1091`_, `#1103`_, `#1177`_). +* Various build improvements + (`#1039 `_, + `#1078 `_, + `#1091 `_, + `#1103 `_, + `#1177 `_). Thanks `@luncliff (Park DongHa) `_, `@jasonszang (Jason Shuo Zang) `_, `@olafhering (Olaf Hering) `_, `@Lecetem `_, `@pauldreik (Paul Dreik) `_. -* Improved documentation (`#1049`_, `#1051`_, `#1083`_, `#1113`_, `#1114`_, - `#1146`_, `#1180`_, `#1250`_, `#1252`_, `#1265`_). +* Improved documentation + (`#1049 `_, + `#1051 `_, + `#1083 `_, + `#1113 `_, + `#1114 `_, + `#1146 `_, + `#1180 `_, + `#1250 `_, + `#1252 `_, + `#1265 `_). Thanks `@mikelui (Michael Lui) `_, `@foonathan (Jonathan Müller) `_, `@BillyDonahue (Billy Donahue) `_, @@ -841,50 +1000,123 @@ `@kaisbe (Kais Ben Salah) `_, `@sdebionne (Samuel Debionne) `_. -* Fixed ambiguous formatter specialization in ``fmt/ranges.h`` (`#1123`_). +* Fixed ambiguous formatter specialization in ``fmt/ranges.h`` + (`#1123 `_). * Fixed formatting of a non-empty ``std::filesystem::path`` which is an - infinitely deep range of its components (`#1268`_). + infinitely deep range of its components + (`#1268 `_). * Fixed handling of general output iterators when formatting characters - (`#1056`_, `#1058`_). + (`#1056 `_, + `#1058 `_). Thanks `@abolz (Alexander Bolz) `_. * Fixed handling of output iterators in ``formatter`` specialization for - ranges (`#1064`_). + ranges (`#1064 `_). -* Fixed handling of exotic character types (`#1188`_). +* Fixed handling of exotic character types + (`#1188 `_). -* Made chrono formatting work with exceptions disabled (`#1062`_). +* Made chrono formatting work with exceptions disabled + (`#1062 `_). -* Fixed DLL visibility issues (`#1134`_, `#1147`_). +* Fixed DLL visibility issues + (`#1134 `_, + `#1147 `_). Thanks `@denchat `_. -* Disabled the use of UDL template extension on GCC 9 (`#1148`_). +* Disabled the use of UDL template extension on GCC 9 + (`#1148 `_). -* Removed misplaced ``format`` compile-time checks from ``printf`` (`#1173`_). +* Removed misplaced ``format`` compile-time checks from ``printf`` + (`#1173 `_). * Fixed issues in the experimental floating-point formatter - (`#1072`_, `#1129`_, `#1153`_, `#1155`_, `#1210`_, `#1222`_). + (`#1072 `_, + `#1129 `_, + `#1153 `_, + `#1155 `_, + `#1210 `_, + `#1222 `_). Thanks `@alabuzhev (Alex Alabuzhev) `_. * Fixed bugs discovered by fuzzing or during fuzzing integration - (`#1124`_, `#1127`_, `#1132`_, `#1135`_, `#1136`_, `#1141`_, `#1142`_, - `#1178`_, `#1179`_, `#1194`_). + (`#1124 `_, + `#1127 `_, + `#1132 `_, + `#1135 `_, + `#1136 `_, + `#1141 `_, + `#1142 `_, + `#1178 `_, + `#1179 `_, + `#1194 `_). Thanks `@pauldreik (Paul Dreik) `_. -* Fixed building tests on FreeBSD and Hurd (`#1043`_). +* Fixed building tests on FreeBSD and Hurd + (`#1043 `_). Thanks `@jackyf (Eugene V. Lyubimkin) `_. -* Fixed various warnings and compilation issues (`#998`_, `#1006`_, `#1008`_, - `#1011`_, `#1025`_, `#1027`_, `#1028`_, `#1029`_, `#1030`_, `#1031`_, - `#1054`_, `#1063`_, `#1068`_, `#1074`_, `#1075`_, `#1079`_, `#1086`_, - `#1088`_, `#1089`_, `#1094`_, `#1101`_, `#1102`_, `#1105`_, `#1107`_, - `#1115`_, `#1117`_, `#1118`_, `#1120`_, `#1123`_, `#1139`_, `#1140`_, - `#1143`_, `#1144`_, `#1150`_, `#1151`_, `#1152`_, `#1154`_, `#1156`_, - `#1159`_, `#1175`_, `#1181`_, `#1186`_, `#1187`_, `#1191`_, `#1197`_, - `#1200`_, `#1203`_, `#1205`_, `#1206`_, `#1213`_, `#1214`_, `#1217`_, - `#1228`_, `#1230`_, `#1232`_, `#1235`_, `#1236`_, `#1240`_). +* Fixed various warnings and compilation issues + (`#998 `_, + `#1006 `_, + `#1008 `_, + `#1011 `_, + `#1025 `_, + `#1027 `_, + `#1028 `_, + `#1029 `_, + `#1030 `_, + `#1031 `_, + `#1054 `_, + `#1063 `_, + `#1068 `_, + `#1074 `_, + `#1075 `_, + `#1079 `_, + `#1086 `_, + `#1088 `_, + `#1089 `_, + `#1094 `_, + `#1101 `_, + `#1102 `_, + `#1105 `_, + `#1107 `_, + `#1115 `_, + `#1117 `_, + `#1118 `_, + `#1120 `_, + `#1123 `_, + `#1139 `_, + `#1140 `_, + `#1143 `_, + `#1144 `_, + `#1150 `_, + `#1151 `_, + `#1152 `_, + `#1154 `_, + `#1156 `_, + `#1159 `_, + `#1175 `_, + `#1181 `_, + `#1186 `_, + `#1187 `_, + `#1191 `_, + `#1197 `_, + `#1200 `_, + `#1203 `_, + `#1205 `_, + `#1206 `_, + `#1213 `_, + `#1214 `_, + `#1217 `_, + `#1228 `_, + `#1230 `_, + `#1232 `_, + `#1235 `_, + `#1236 `_, + `#1240 `_). Thanks `@DanielaE (Daniela Engert) `_, `@mwinterb `_, `@eliaskosunen (Elias Kosunen) `_, @@ -927,7 +1159,10 @@ * Added experimental support for emphasis (bold, italic, underline, strikethrough), colored output to a file stream, and improved colored - formatting API (`#961`_, `#967`_, `#973`_): + formatting API + (`#961 `_, + `#967 `_, + `#973 `_): .. code:: c++ @@ -949,7 +1184,9 @@ Thanks `@Rakete1111 (Nicolas) `_. -* Added support for 4-bit terminal colors (`#968`_, `#974`_) +* Added support for 4-bit terminal colors + (`#968 `_, + `#974 `_) .. code:: c++ @@ -967,7 +1204,12 @@ Thanks `@Rakete1111 (Nicolas) `_. * Parameterized formatting functions on the type of the format string - (`#880`_, `#881`_, `#883`_, `#885`_, `#897`_, `#920`_). + (`#880 `_, + `#881 `_, + `#883 `_, + `#885 `_, + `#897 `_, + `#920 `_). Any object of type ``S`` that has an overloaded ``to_string_view(const S&)`` returning ``fmt::string_view`` can be used as a format string: @@ -983,7 +1225,8 @@ Thanks `@DanielaE (Daniela Engert) `_. -* Made ``std::string_view`` work as a format string (`#898`_): +* Made ``std::string_view`` work as a format string + (`#898 `_): .. code:: c++ @@ -991,7 +1234,8 @@ Thanks `@DanielaE (Daniela Engert) `_. -* Added wide string support to compile-time format string checks (`#924`_): +* Added wide string support to compile-time format string checks + (`#924 `_): .. code:: c++ @@ -999,7 +1243,8 @@ Thanks `@XZiar `_. -* Made colored print functions work with wide strings (`#867`_): +* Made colored print functions work with wide strings + (`#867 `_): .. code:: c++ @@ -1011,7 +1256,9 @@ Thanks `@DanielaE (Daniela Engert) `_. -* Introduced experimental Unicode support (`#628`_, `#891`_): +* Introduced experimental Unicode support + (`#628 `_, + `#891 `_): .. code:: c++ @@ -1033,10 +1280,12 @@ auto s = fmt::format(std::locale(loc, new numpunct()), "{:n}", 1234567); // s == "1~234~567" -* Constrained formatting functions on proper iterator types (`#921`_). +* Constrained formatting functions on proper iterator types + (`#921 `_). Thanks `@DanielaE (Daniela Engert) `_. -* Added ``make_printf_args`` and ``make_wprintf_args`` functions (`#934`_). +* Added ``make_printf_args`` and ``make_wprintf_args`` functions + (`#934 `_). Thanks `@tnovotny `_. * Deprecated ``fmt::visit``, ``parse_context``, and ``wparse_context``. @@ -1044,7 +1293,9 @@ ``wformat_parse_context`` instead. * Removed undocumented ``basic_fixed_buffer`` which has been superseded by the - iterator-based API (`#873`_, `#902`_). + iterator-based API + (`#873 `_, + `#902 `_). Thanks `@superfunc (hollywood programmer) `_. * Disallowed repeated leading zeros in an argument ID: @@ -1055,38 +1306,65 @@ * Reintroduced support for gcc 4.4. -* Fixed compilation on platforms with exotic ``double`` (`#878`_). +* Fixed compilation on platforms with exotic ``double`` + (`#878 `_). -* Improved documentation (`#164`_, `#877`_, `#901`_, `#906`_, `#979`_). +* Improved documentation + (`#164 `_, + `#877 `_, + `#901 `_, + `#906 `_, + `#979 `_). Thanks `@kookjr (Mathew Cucuzella) `_, `@DarkDimius (Dmitry Petrashko) `_, `@HecticSerenity `_. * Added pkgconfig support which makes it easier to consume the library from - meson and other build systems (`#916`_). + meson and other build systems + (`#916 `_). Thanks `@colemickens (Cole Mickens) `_. -* Various build improvements (`#909`_, `#926`_, `#937`_, `#953`_, `#959`_). +* Various build improvements + (`#909 `_, + `#926 `_, + `#937 `_, + `#953 `_, + `#959 `_). Thanks `@tchaikov (Kefu Chai) `_, `@luncliff (Park DongHa) `_, `@AndreasSchoenle (Andreas Schönle) `_, `@hotwatermorning `_, `@Zefz (JohanJansen) `_. -* Improved ``string_view`` construction performance (`#914`_). +* Improved ``string_view`` construction performance + (`#914 `_). Thanks `@gabime (Gabi Melman) `_. -* Fixed non-matching char types (`#895`_). +* Fixed non-matching char types + (`#895 `_). Thanks `@DanielaE (Daniela Engert) `_. -* Fixed ``format_to_n`` with ``std::back_insert_iterator`` (`#913`_). +* Fixed ``format_to_n`` with ``std::back_insert_iterator`` + (`#913 `_). Thanks `@DanielaE (Daniela Engert) `_. -* Fixed locale-dependent formatting (`#905`_). +* Fixed locale-dependent formatting + (`#905 `_). -* Fixed various compiler warnings and errors (`#882`_, `#886`_, `#933`_, - `#941`_, `#931`_, `#943`_, `#954`_, `#956`_, `#962`_, `#965`_, `#977`_, - `#983`_, `#989`_). +* Fixed various compiler warnings and errors + (`#882 `_, + `#886 `_, + `#933 `_, + `#941 `_, + `#931 `_, + `#943 `_, + `#954 `_, + `#956 `_, + `#962 `_, + `#965 `_, + `#977 `_, + `#983 `_, + `#989 `_). Thanks `@Luthaf (Guillaume Fraux) `_, `@stevenhoving (Steven Hoving) `_, `@christinaa (Kristina Brooks) `_, @@ -1098,22 +1376,27 @@ 5.2.1 - 2018-09-21 ------------------ -* Fixed ``visit`` lookup issues on gcc 7 & 8 (`#870`_). +* Fixed ``visit`` lookup issues on gcc 7 & 8 + (`#870 `_). Thanks `@medithe `_. * Fixed linkage errors on older gcc. * Prevented ``fmt/range.h`` from specializing ``fmt::basic_string_view`` - (`#865`_, `#868`_). + (`#865 `_, + `#868 `_). Thanks `@hhggit (dual) `_. -* Improved error message when formatting unknown types (`#872`_). +* Improved error message when formatting unknown types + (`#872 `_). Thanks `@foonathan (Jonathan Müller) `_, -* Disabled templated user-defined literals when compiled under nvcc (`#875`_). +* Disabled templated user-defined literals when compiled under nvcc + (`#875 `_). Thanks `@CandyGumdrop (Candy Gumdrop) `_, -* Fixed ``format_to`` formatting to ``wmemory_buffer`` (`#874`_). +* Fixed ``format_to`` formatting to ``wmemory_buffer`` + (`#874 `_). 5.2.0 - 2018-09-13 ------------------ @@ -1146,7 +1429,7 @@ std::string answer = format(fmt("{}"), 42); * Added compile-time format string checks to ``format_to`` overload that takes - ``fmt::memory_buffer`` (`#783`_): + ``fmt::memory_buffer`` (`#783 `_): .. code:: c++ @@ -1175,33 +1458,51 @@ function overloads with a single function template parameterized on the string type. -* Added support for dynamic argument lists (`#814`_, `#819`_). +* Added support for dynamic argument lists + (`#814 `_, + `#819 `_). Thanks `@MikePopoloski (Michael Popoloski) `_. * Reduced executable size overhead for embedded targets using newlib nano by - making locale dependency optional (`#839`_). + making locale dependency optional + (`#839 `_). Thanks `@teajay-fr (Thomas Benard) `_. -* Keep ``noexcept`` specifier when exceptions are disabled (`#801`_, `#810`_). +* Keep ``noexcept`` specifier when exceptions are disabled + (`#801 `_, + `#810 `_). Thanks `@qis (Alexej Harm) `_. * Fixed formatting of user-defined types providing ``operator<<`` with - ``format_to_n`` (`#806`_). + ``format_to_n`` + (`#806 `_). Thanks `@mkurdej (Marek Kurdej) `_. -* Fixed dynamic linkage of new symbols (`#808`_). +* Fixed dynamic linkage of new symbols + (`#808 `_). -* Fixed global initialization issue (`#807`_): +* Fixed global initialization issue + (`#807 `_): .. code:: c++ // This works on compilers with constexpr support. static const std::string answer = fmt::format("{}", 42); -* Fixed various compiler warnings and errors (`#804`_, `#809`_, `#811`_, - `#822`_, `#827`_, `#830`_, `#838`_, `#843`_, `#844`_, `#851`_, `#852`_, - `#854`_). +* Fixed various compiler warnings and errors + (`#804 `_, + `#809 `_, + `#811 `_, + `#822 `_, + `#827 `_, + `#830 `_, + `#838 `_, + `#843 `_, + `#844 `_, + `#851 `_, + `#852 `_, + `#854 `_). Thanks `@henryiii (Henry Schreiner) `_, `@medithe `_, and `@eliasdaler (Elias Daler) `_. @@ -1221,45 +1522,68 @@ fmt::print(fmt::color::steel_blue, "Some beautiful text"); The old API (the ``print_colored`` and ``vprint_colored`` functions and the - ``color`` enum) is now deprecated. (`#762`_ `#767`_). + ``color`` enum) is now deprecated. + (`#762 `_ + `#767 `_). thanks `@Remotion (Remo) `_. -* Added quotes to strings in ranges and tuples (`#766`_). +* Added quotes to strings in ranges and tuples + (`#766 `_). Thanks `@Remotion (Remo) `_. -* Made ``format_to`` work with ``basic_memory_buffer`` (`#776`_). +* Made ``format_to`` work with ``basic_memory_buffer`` + (`#776 `_). * Added ``vformat_to_n`` and ``wchar_t`` overload of ``format_to_n`` - (`#764`_, `#769`_). + (`#764 `_, + `#769 `_). * Made ``is_range`` and ``is_tuple_like`` part of public (experimental) API - to allow specialization for user-defined types (`#751`_, `#759`_). + to allow specialization for user-defined types + (`#751 `_, + `#759 `_). Thanks `@drrlvn (Dror Levin) `_. * Added more compilers to continuous integration and increased ``FMT_PEDANTIC`` - warning levels (`#736`_). + warning levels + (`#736 `_). Thanks `@eliaskosunen (Elias Kosunen) `_. * Fixed compilation with MSVC 2013. -* Fixed handling of user-defined types in ``format_to`` (`#793`_). +* Fixed handling of user-defined types in ``format_to`` + (`#793 `_). -* Forced linking of inline ``vformat`` functions into the library (`#795`_). +* Forced linking of inline ``vformat`` functions into the library + (`#795 `_). -* Fixed incorrect call to on_align in ``'{:}='`` (`#750`_). +* Fixed incorrect call to on_align in ``'{:}='`` + (`#750 `_). * Fixed floating-point formatting to a non-back_insert_iterator with sign & - numeric alignment specified (`#756`_). + numeric alignment specified + (`#756 `_). -* Fixed formatting to an array with ``format_to_n`` (`#778`_). +* Fixed formatting to an array with ``format_to_n`` + (`#778 `_). -* Fixed formatting of more than 15 named arguments (`#754`_). +* Fixed formatting of more than 15 named arguments + (`#754 `_). * Fixed handling of compile-time strings when including ``fmt/ostream.h``. - (`#768`_). + (`#768 `_). -* Fixed various compiler warnings and errors (`#742`_, `#748`_, `#752`_, - `#770`_, `#775`_, `#779`_, `#780`_, `#790`_, `#792`_, `#800`_). +* Fixed various compiler warnings and errors + (`#742 `_, + `#748 `_, + `#752 `_, + `#770 `_, + `#775 `_, + `#779 `_, + `#780 `_, + `#790 `_, + `#792 `_, + `#800 `_). Thanks `@Remotion (Remo) `_, `@gabime (Gabi Melman) `_, `@foonathan (Jonathan Müller) `_, @@ -1356,7 +1680,7 @@ * Added the `format_to_n `_ function that restricts the output to the specified number of characters - (`#298`_): + (`#298 `_): .. code:: c++ @@ -1403,7 +1727,8 @@ } * Added the ``make_printf_args`` function for capturing ``printf`` arguments - (`#687`_, `#694`_). + (`#687 `_, + `#694 `_). Thanks `@Kronuz (Germán Méndez Bravo) `_. * Added prefix ``v`` to non-variadic functions taking ``format_args`` to @@ -1417,7 +1742,7 @@ std::string format(string_view format_str, const Args & ... args); * Added experimental support for formatting ranges, containers and tuple-like - types in ``fmt/ranges.h`` (`#735`_): + types in ``fmt/ranges.h`` (`#735 `_): .. code:: c++ @@ -1428,7 +1753,8 @@ Thanks `@Remotion (Remo) `_. -* Implemented ``wchar_t`` date and time formatting (`#712`_): +* Implemented ``wchar_t`` date and time formatting + (`#712 `_): .. code:: c++ @@ -1439,14 +1765,16 @@ Thanks `@DanielaE (Daniela Engert) `_. -* Provided more wide string overloads (`#724`_). +* Provided more wide string overloads + (`#724 `_). Thanks `@DanielaE (Daniela Engert) `_. * Switched from a custom null-terminated string view class to ``string_view`` in the format API and provided ``fmt::string_view`` which implements a subset of ``std::string_view`` API for pre-C++17 systems. -* Added support for ``std::experimental::string_view`` (`#607`_): +* Added support for ``std::experimental::string_view`` + (`#607 `_): .. code:: c++ @@ -1469,9 +1797,14 @@ format strings. * Disallowed formatting of multibyte strings into a wide character target - (`#606`_). + (`#606 `_). -* Improved documentation (`#515`_, `#614`_, `#617`_, `#661`_, `#680`_). +* Improved documentation + (`#515 `_, + `#614 `_, + `#617 `_, + `#661 `_, + `#680 `_). Thanks `@ibell (Ian Bell) `_, `@mihaitodor (Mihai Todor) `_, and `@johnthagen `_. @@ -1480,129 +1813,182 @@ * Introduced an inline namespace for symbol versioning. -* Added debug postfix ``d`` to the ``fmt`` library name (`#636`_). +* Added debug postfix ``d`` to the ``fmt`` library name + (`#636 `_). -* Removed unnecessary ``fmt/`` prefix in includes (`#397`_). +* Removed unnecessary ``fmt/`` prefix in includes + (`#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`_). +* Added qmake project file ``support/fmt.pro`` + (`#641 `_). Thanks `@cowo78 (Giuseppe Corbelli) `_. -* Added Gradle build file ``support/build.gradle`` (`#649`_). +* Added Gradle build file ``support/build.gradle`` + (`#649 `_). Thanks `@luncliff (Park DongHa) `_. * Removed ``FMT_CPPFORMAT`` CMake option. -* Fixed a name conflict with the macro ``CHAR_WIDTH`` in glibc (`#616`_). +* Fixed a name conflict with the macro ``CHAR_WIDTH`` in glibc + (`#616 `_). Thanks `@aroig (Abdó Roig-Maranges) `_. -* Fixed handling of nested braces in ``fmt::join`` (`#638`_). +* Fixed handling of nested braces in ``fmt::join`` + (`#638 `_). -* Added ``SOURCELINK_SUFFIX`` for compatibility with Sphinx 1.5 (`#497`_). +* Added ``SOURCELINK_SUFFIX`` for compatibility with Sphinx 1.5 + (`#497 `_). Thanks `@ginggs (Graham Inggs) `_. -* Added a missing ``inline`` in the header-only mode (`#626`_). +* Added a missing ``inline`` in the header-only mode + (`#626 `_). Thanks `@aroig (Abdó Roig-Maranges) `_. -* Fixed various compiler warnings (`#640`_, `#656`_, `#679`_, `#681`_, `#705`__, - `#715`_, `#717`_, `#720`_, `#723`_, `#726`_, `#730`_, `#739`_). +* Fixed various compiler warnings + (`#640 `_, + `#656 `_, + `#679 `_, + `#681 `_, + `#705 `__, + `#715 `_, + `#717 `_, + `#720 `_, + `#723 `_, + `#726 `_, + `#730 `_, + `#739 `_). Thanks `@peterbell10 `_, `@LarsGullik `_, `@foonathan (Jonathan Müller) `_, `@eliaskosunen (Elias Kosunen) `_, - `@christianparpart (Christian Parpart) - `_, + `@christianparpart (Christian Parpart) `_, `@DanielaE (Daniela Engert) `_, and `@mwinterb `_. -* Worked around an MSVC bug and fixed several warnings (`#653`_). +* Worked around an MSVC bug and fixed several warnings + (`#653 `_). Thanks `@alabuzhev (Alex Alabuzhev) `_. -* Worked around GCC bug 67371 (`#682`_). +* Worked around GCC bug 67371 + (`#682 `_). -* Fixed compilation with ``-fno-exceptions`` (`#655`_). +* Fixed compilation with ``-fno-exceptions`` + (`#655 `_). Thanks `@chenxiaolong (Andrew Gunnerson) `_. -* Made ``constexpr remove_prefix`` gcc version check tighter (`#648`_). +* Made ``constexpr remove_prefix`` gcc version check tighter + (`#648 `_). * Renamed internal type enum constants to prevent collision with poorly written - C libraries (`#644`_). + C libraries (`#644 `_). -* Added detection of ``wostream operator<<`` (`#650`_). +* Added detection of ``wostream operator<<`` + (`#650 `_). -* Fixed compilation on OpenBSD (`#660`_). +* Fixed compilation on OpenBSD + (`#660 `_). Thanks `@hubslave `_. -* Fixed compilation on FreeBSD 12 (`#732`_). +* Fixed compilation on FreeBSD 12 + (`#732 `_). Thanks `@dankm `_. * Fixed compilation when there is a mismatch between ``-std`` options between - the library and user code (`#664`_). + the library and user code + (`#664 `_). -* Fixed compilation with GCC 7 and ``-std=c++11`` (`#734`_). +* Fixed compilation with GCC 7 and ``-std=c++11`` + (`#734 `_). -* Improved generated binary code on GCC 7 and older (`#668`_). +* Improved generated binary code on GCC 7 and older + (`#668 `_). -* Fixed handling of numeric alignment with no width (`#675`_). +* Fixed handling of numeric alignment with no width + (`#675 `_). -* Fixed handling of empty strings in UTF8/16 converters (`#676`_). +* Fixed handling of empty strings in UTF8/16 converters + (`#676 `_). Thanks `@vgalka-sl (Vasili Galka) `_. -* Fixed formatting of an empty ``string_view`` (`#689`_). +* Fixed formatting of an empty ``string_view`` + (`#689 `_). -* Fixed detection of ``string_view`` on libc++ (`#686`_). +* Fixed detection of ``string_view`` on libc++ + (`#686 `_). -* Fixed DLL issues (`#696`_). +* Fixed DLL issues (`#696 `_). Thanks `@sebkoenig `_. -* Fixed compile checks for mixing narrow and wide strings (`#690`_). +* Fixed compile checks for mixing narrow and wide strings + (`#690 `_). -* Disabled unsafe implicit conversion to ``std::string`` (`#729`_). +* Disabled unsafe implicit conversion to ``std::string`` + (`#729 `_). * Fixed handling of reused format specs (as in ``fmt::join``) for pointers - (`#725`_). Thanks `@mwinterb `_. + (`#725 `_). + Thanks `@mwinterb `_. -* Fixed installation of ``fmt/ranges.h`` (`#738`_). +* Fixed installation of ``fmt/ranges.h`` + (`#738 `_). Thanks `@sv1990 `_. 4.1.0 - 2017-12-20 ------------------ -* Added ``fmt::to_wstring()`` in addition to ``fmt::to_string()`` (`#559`_). +* Added ``fmt::to_wstring()`` in addition to ``fmt::to_string()`` + (`#559 `_). Thanks `@alabuzhev (Alex Alabuzhev) `_. -* Added support for C++17 ``std::string_view`` (`#571`_ and `#578`_). +* Added support for C++17 ``std::string_view`` + (`#571 `_ and + `#578 `_). Thanks `@thelostt (Mário Feroldi) `_ and `@mwinterb `_. -* Enabled stream exceptions to catch errors (`#581`_). +* Enabled stream exceptions to catch errors + (`#581 `_). Thanks `@crusader-mike `_. -* Allowed formatting of class hierarchies with ``fmt::format_arg()`` (`#547`_). +* Allowed formatting of class hierarchies with ``fmt::format_arg()`` + (`#547 `_). Thanks `@rollbear (Björn Fahller) `_. -* Removed limitations on character types (`#563`_). +* Removed limitations on character types + (`#563 `_). Thanks `@Yelnats321 (Elnar Dakeshov) `_. -* Conditionally enabled use of ``std::allocator_traits`` (`#583`_). +* Conditionally enabled use of ``std::allocator_traits`` + (`#583 `_). Thanks `@mwinterb `_. * Added support for ``const`` variadic member function emulation with - ``FMT_VARIADIC_CONST`` (`#591`_). + ``FMT_VARIADIC_CONST`` (`#591 `_). Thanks `@ludekvodicka (Ludek Vodicka) `_. * Various bugfixes: bad overflow check, unsupported implicit type conversion - when determining formatting function, test segfaults (`#551`_), ill-formed - macros (`#542`_) and ambiguous overloads (`#580`_). + when determining formatting function, test segfaults + (`#551 `_), ill-formed macros + (`#542 `_) and ambiguous overloads + (`#580 `_). Thanks `@xylosper (Byoung-young Lee) `_. -* Prevented warnings on MSVC (`#605`_, `#602`_, and `#545`_), clang (`#582`_), - GCC (`#573`_), various conversion warnings (`#609`_, `#567`_, `#553`_ and - `#553`_), and added ``override`` and ``[[noreturn]]`` (`#549`_ and `#555`_). +* Prevented warnings on MSVC (`#605 `_, + `#602 `_, and + `#545 `_), + clang (`#582 `_), + GCC (`#573 `_), + various conversion warnings (`#609 `_, + `#567 `_, + `#553 `_ and + `#553 `_), and added ``override`` and + ``[[noreturn]]`` (`#549 `_ and + `#555 `_). Thanks `@alabuzhev (Alex Alabuzhev) `_, `@virgiliofornazin (Virgilio Alexandre Fornazin) `_, @@ -1614,7 +2000,9 @@ `@Manu343726 (Manu Sánchez) `_. * Improved CMake: Used ``GNUInstallDirs`` to set installation location - (`#610`_) and fixed warnings (`#536`_ and `#556`_). + (`#610 `_) and fixed warnings + (`#536 `_ and + `#556 `_). Thanks `@mikecrowe (Mike Crowe) `_, `@evgen231 `_ and `@henryiii (Henry Schreiner) `_. @@ -1623,12 +2011,13 @@ ------------------ * Removed old compatibility headers ``cppformat/*.h`` and CMake options - (`#527`_). + (`#527 `_). Thanks `@maddinat0r (Alex Martin) `_. * Added ``string.h`` containing ``fmt::to_string()`` as alternative to ``std::to_string()`` as well as other string writer functionality - (`#326`_ and `#441`_): + (`#326 `_ and + `#441 `_): .. code:: c++ @@ -1640,9 +2029,13 @@ `_. * Moved ``fmt::printf()`` to new ``printf.h`` header and allowed ``%s`` as - generic specifier (`#453`_), made ``%.f`` more conformant to regular - ``printf()`` (`#490`_), added custom writer support (`#476`_) and implemented - missing custom argument formatting (`#339`_ and `#340`_): + generic specifier (`#453 `_), + made ``%.f`` more conformant to regular ``printf()`` + (`#490 `_), added custom writer + support (`#476 `_) and implemented + missing custom argument formatting + (`#339 `_ and + `#340 `_): .. code:: c++ @@ -1654,14 +2047,18 @@ Thanks `@mojoBrendan `_, `@manylegged (Arthur Danskin) `_ and `@spacemoose (Glen Stark) `_. - See also `#360`_, `#335`_ and `#331`_. + See also `#360 `_, + `#335 `_ and + `#331 `_. * Added ``container.h`` containing a ``BasicContainerWriter`` - to write to containers like ``std::vector`` (`#450`_). + to write to containers like ``std::vector`` + (`#450 `_). Thanks `@polyvertex (Jean-Charles Lefebvre) `_. * Added ``fmt::join()`` function that takes a range and formats - its elements separated by a given string (`#466`_): + its elements separated by a given string + (`#466 `_): .. code:: c++ @@ -1674,110 +2071,160 @@ Thanks `@olivier80 `_. * Added support for custom formatting specifications to simplify customization - of built-in formatting (`#444`_). + of built-in formatting (`#444 `_). Thanks `@polyvertex (Jean-Charles Lefebvre) `_. - See also `#439`_. + See also `#439 `_. * Added ``fmt::format_system_error()`` for error code formatting - (`#323`_ and `#526`_). + (`#323 `_ and + `#526 `_). Thanks `@maddinat0r (Alex Martin) `_. * Added thread-safe ``fmt::localtime()`` and ``fmt::gmtime()`` - as replacement for the standard version to ``time.h`` (`#396`_). + as replacement for the standard version to ``time.h`` + (`#396 `_). Thanks `@codicodi `_. -* Internal improvements to ``NamedArg`` and ``ArgLists`` (`#389`_ and `#390`_). +* Internal improvements to ``NamedArg`` and ``ArgLists`` + (`#389 `_ and + `#390 `_). Thanks `@chronoxor `_. -* Fixed crash due to bug in ``FormatBuf`` (`#493`_). - Thanks `@effzeh `_. See also `#480`_ and `#491`_. +* Fixed crash due to bug in ``FormatBuf`` + (`#493 `_). + Thanks `@effzeh `_. See also + `#480 `_ and + `#491 `_. * Fixed handling of wide strings in ``fmt::StringWriter``. -* Improved compiler error messages (`#357`_). +* Improved compiler error messages + (`#357 `_). * Fixed various warnings and issues with various compilers - (`#494`_, `#499`_, `#483`_, `#485`_, `#482`_, `#475`_, `#473`_ and `#414`_). + (`#494 `_, + `#499 `_, + `#483 `_, + `#485 `_, + `#482 `_, + `#475 `_, + `#473 `_ and + `#414 `_). Thanks `@chronoxor `_, `@zhaohuaxishi `_, `@pkestene (Pierre Kestener) `_, `@dschmidt (Dominik Schmidt) `_ and `@0x414c (Alexey Gorishny) `_ . -* Improved CMake: targets are now namespaced (`#511`_ and `#513`_), added - support for header-only ``printf.h`` (`#354`_), fixed issue with minimal - supported library subset (`#418`_, `#419`_ and `#420`_). +* Improved CMake: targets are now namespaced + (`#511 `_ and + `#513 `_), supported header-only + ``printf.h`` (`#354 `_), fixed issue + with minimal supported library subset + (`#418 `_, + `#419 `_ and + `#420 `_). Thanks `@bjoernthiel (Bjoern Thiel) `_, `@niosHD (Mario Werner) `_, `@LogicalKnight (Sean LK) `_ and `@alabuzhev (Alex Alabuzhev) `_. * Improved documentation. Thanks to - `@pwm1234 (Phil) `_ for `#393`_. + `@pwm1234 (Phil) `_ for + `#393 `_. 3.0.2 - 2017-06-14 ------------------ -* Added ``FMT_VERSION`` macro (`#411`_). +* Added ``FMT_VERSION`` macro + (`#411 `_). -* Used ``FMT_NULL`` instead of literal ``0`` (`#409`_). +* Used ``FMT_NULL`` instead of literal ``0`` + (`#409 `_). Thanks `@alabuzhev (Alex Alabuzhev) `_. -* Added extern templates for ``format_float`` (`#413`_). +* Added extern templates for ``format_float`` + (`#413 `_). -* Fixed implicit conversion issue (`#507`_). +* Fixed implicit conversion issue + (`#507 `_). -* Fixed signbit detection (`#423`_). +* Fixed signbit detection (`#423 `_). -* Fixed naming collision (`#425`_). +* Fixed naming collision (`#425 `_). -* Fixed missing intrinsic for C++/CLI (`#457`_). +* Fixed missing intrinsic for C++/CLI + (`#457 `_). Thanks `@calumr (Calum Robinson) `_ -* Fixed Android detection (`#458`_). +* Fixed Android detection (`#458 `_). Thanks `@Gachapen (Magnus Bjerke Vik) `_. -* Use lean ``windows.h`` if not in header-only mode (`#503`_). +* Use lean ``windows.h`` if not in header-only mode + (`#503 `_). Thanks `@Quentin01 (Quentin Buathier) `_. -* Fixed issue with CMake exporting C++11 flag (`#445`_). +* Fixed issue with CMake exporting C++11 flag + (`#445 `_). Thanks `@EricWF (Eric) `_. -* Fixed issue with nvcc and MSVC compiler bug and MinGW (`#505`_). +* Fixed issue with nvcc and MSVC compiler bug and MinGW + (`#505 `_). -* Fixed DLL issues (`#469`_ and `#502`_). +* Fixed DLL issues (`#469 `_ and + `#502 `_). Thanks `@richardeakin (Richard Eakin) `_ and `@AndreasSchoenle (Andreas Schönle) `_. -* Fixed test compilation under FreeBSD (`#433`_). +* Fixed test compilation under FreeBSD + (`#433 `_). -* Fixed various warnings (`#403`_, `#410`_ and `#510`_). +* Fixed various warnings (`#403 `_, + `#410 `_ and + `#510 `_). Thanks `@Lecetem `_, `@chenhayat (Chen Hayat) `_ and `@trozen `_. -* Worked around a broken ``__builtin_clz`` in clang with MS codegen (`#519`_). +* Worked around a broken ``__builtin_clz`` in clang with MS codegen + (`#519 `_). -* Removed redundant include (`#479`_). +* Removed redundant include + (`#479 `_). * Fixed documentation issues. 3.0.1 - 2016-11-01 ------------------ -* Fixed handling of thousands separator (`#353`_). +* Fixed handling of thousands separator + (`#353 `_). -* Fixed handling of ``unsigned char`` strings (`#373`_). +* Fixed handling of ``unsigned char`` strings + (`#373 `_). -* Corrected buffer growth when formatting time (`#367`_). +* Corrected buffer growth when formatting time + (`#367 `_). -* Removed warnings under MSVC and clang (`#318`_, `#250`_, also merged - `#385`_ and `#361`_). +* Removed warnings under MSVC and clang + (`#318 `_, + `#250 `_, also merged + `#385 `_ and + `#361 `_). Thanks `@jcelerier (Jean-Michaël Celerier) `_ and `@nmoehrle (Nils Moehrle) `_. -* Fixed compilation issues under Android (`#327`_, `#345`_ and `#381`_), - FreeBSD (`#358`_), Cygwin (`#388`_), MinGW (`#355`_) as well as other - issues (`#350`_, `#366`_, `#348`_, `#402`_, `#405`_). +* Fixed compilation issues under Android + (`#327 `_, + `#345 `_ and + `#381 `_), + FreeBSD (`#358 `_), + Cygwin (`#388 `_), + MinGW (`#355 `_) as well as other + issues (`#350 `_, + `#366 `_, + `#348 `_, + `#402 `_, + `#405 `_). Thanks to `@dpantele (Dmitry) `_, `@hghwng (Hugh Wang) `_, `@arvedarved (Tilman Keskinöz) `_, @@ -1785,7 +2232,10 @@ `@JanHellwig (Jan Hellwig) `_. * Fixed some documentation issues and extended specification - (`#320`_, `#333`_, `#347`_, `#362`_). + (`#320 `_, + `#333 `_, + `#347 `_, + `#362 `_). Thanks to `@smellman (Taro Matsuzawa aka. btm) `_. @@ -1793,7 +2243,8 @@ ------------------ * The project has been renamed from C++ Format (cppformat) to fmt for - consistency with the used namespace and macro prefix (`#307`_). + consistency with the used namespace and macro prefix + (`#307 `_). Library headers are now located in the ``fmt`` directory: .. code:: c++ @@ -1805,11 +2256,9 @@ The documentation is now available at https://fmt.dev. -* Added support for `strftime - `_-like - `date and time formatting - `_ - (`#283`_): +* Added support for `strftime `_-like + `date and time formatting `_ + (`#283 `_): .. code:: c++ @@ -1819,8 +2268,8 @@ // Prints "The date is 2016-04-29." (with the current date) fmt::print("The date is {:%Y-%m-%d}.", *std::localtime(&t)); -* ``std::ostream`` support including formatting of user-defined types that - provide overloaded ``operator<<`` has been moved to ``fmt/ostream.h``: +* ``std::ostream`` support including formatting of user-defined types that provide + overloaded ``operator<<`` has been moved to ``fmt/ostream.h``: .. code:: c++ @@ -1829,8 +2278,7 @@ class Date { int year_, month_, day_; public: - Date(int year, int month, int day) - : year_(year), month_(month), day_(day) {} + Date(int year, int month, int day) : year_(year), month_(month), day_(day) {} friend std::ostream &operator<<(std::ostream &os, const Date &d) { return os << d.year_ << '-' << d.month_ << '-' << d.day_; @@ -1841,10 +2289,11 @@ // s == "The date is 2012-12-9" * Added support for `custom argument formatters - `_ (`#235`_). + `_ + (`#235 `_). * Added support for locale-specific integer formatting with the ``n`` specifier - (`#305`_): + (`#305 `_): .. code:: c++ @@ -1852,7 +2301,7 @@ fmt::print("cppformat: {:n}\n", 1234567); // prints 1,234,567 * Sign is now preserved when formatting an integer with an incorrect ``printf`` - format specifier (`#265`_): + format specifier (`#265 `_): .. code:: c++ @@ -1861,7 +2310,8 @@ Note that it would be an undefined behavior in ``std::printf``. * Length modifiers such as ``ll`` are now optional in printf formatting - functions and the correct type is determined automatically (`#255`_): + functions and the correct type is determined automatically + (`#255 `_): .. code:: c++ @@ -1869,14 +2319,19 @@ Note that it would be an undefined behavior in ``std::printf``. -* Added initial support for custom formatters (`#231`_). +* Added initial support for custom formatters + (`#231 `_). * Fixed detection of user-defined literal support on Intel C++ compiler - (`#311`_, `#312`_). + (`#311 `_, + `#312 `_). Thanks to `@dean0x7d (Dean Moldovan) `_ and `@speth (Ray Speth) `_. -* Reduced compile time (`#243`_, `#249`_, `#317`_): +* Reduced compile time + (`#243 `_, + `#249 `_, + `#317 `_): .. image:: https://cloud.githubusercontent.com/assets/4831417/11614060/ b9e826d2-9c36-11e5-8666-d4131bf503ef.png @@ -1886,48 +2341,68 @@ Thanks to `@dean0x7d (Dean Moldovan) `_. -* Compile test fixes (`#313`_). +* Compile test fixes (`#313 `_). Thanks to `@dean0x7d (Dean Moldovan) `_. -* Documentation fixes - (`#239`_, `#248`_, `#252`_, `#258`_, `#260`_, `#301`_, `#309`_). +* Documentation fixes (`#239 `_, + `#248 `_, + `#252 `_, + `#258 `_, + `#260 `_, + `#301 `_, + `#309 `_). Thanks to `@ReadmeCritic `_ `@Gachapen (Magnus Bjerke Vik) `_ and `@jwilk (Jakub Wilk) `_. -* Fixed compiler and sanitizer warnings (`#244`_, `#256`_, `#259`_, `#263`_, - `#274`_, `#277`_, `#286`_, `#291`_, `#296`_, `#308`_) +* Fixed compiler and sanitizer warnings + (`#244 `_, + `#256 `_, + `#259 `_, + `#263 `_, + `#274 `_, + `#277 `_, + `#286 `_, + `#291 `_, + `#296 `_, + `#308 `_) Thanks to `@mwinterb `_, `@pweiskircher (Patrik Weiskircher) `_, `@Naios `_. -* Improved compatibility with Windows Store apps (`#280`_, `#285`_). +* Improved compatibility with Windows Store apps + (`#280 `_, + `#285 `_) Thanks to `@mwinterb `_. -* Added tests of compatibility with older C++ standards (`#273`_). +* Added tests of compatibility with older C++ standards + (`#273 `_). Thanks to `@niosHD `_. -* Fixed Android build (`#271`_). +* Fixed Android build (`#271 `_). Thanks to `@newnon `_. * Changed ``ArgMap`` to be backed by a vector instead of a map. - (`#261`_, `#262`_). + (`#261 `_, + `#262 `_). Thanks to `@mwinterb `_. -* Added ``fprintf`` overload that writes to a ``std::ostream`` (`#251`_). - Thanks to `nickhutchinson (Nicholas Hutchinson) - `_. +* Added ``fprintf`` overload that writes to a ``std::ostream`` + (`#251 `_). + Thanks to `nickhutchinson (Nicholas Hutchinson) `_. -* Export symbols when building a Windows DLL (`#245`_). +* Export symbols when building a Windows DLL + (`#245 `_). Thanks to `macdems (Maciek Dems) `_. -* Fixed compilation on Cygwin (`#304`_). +* Fixed compilation on Cygwin (`#304 `_). * Implemented a workaround for a bug in Apple LLVM version 4.2 of clang - (`#276`_). + (`#276 `_). * Implemented a workaround for Google Test bug - `#705 `_ on gcc 6 (`#268`_). + `#705 `_ on gcc 6 + (`#268 `_). Thanks to `octoploid `_. * Removed Biicode support because the latter has been discontinued. @@ -1936,15 +2411,17 @@ ------------------ * The install location for generated CMake files is now configurable via - the ``FMT_CMAKE_DIR`` CMake variable (`#299`_). + the ``FMT_CMAKE_DIR`` CMake variable + (`#299 `_). Thanks to `@niosHD `_. -* Documentation fixes (`#252`_). +* Documentation fixes (`#252 `_). 2.1.0 - 2016-03-21 ------------------ -* Project layout and build system improvements (`#267`_): +* Project layout and build system improvements + (`#267 `_): * The code have been moved to the ``cppformat`` directory. Including ``format.h`` from the top-level directory is deprecated @@ -1965,13 +2442,17 @@ 2.0.1 - 2016-03-13 ------------------ -* Improved CMake find and package support (`#264`_). +* Improved CMake find and package support + (`#264 `_). Thanks to `@niosHD `_. -* Fix compile error with Android NDK and mingw32 (`#241`_). +* Fix compile error with Android NDK and mingw32 + (`#241 `_). Thanks to `@Gachapen (Magnus Bjerke Vik) `_. -* Documentation fixes (`#248`_, `#260`_). +* Documentation fixes + (`#248 `_, + `#260 `_). 2.0.0 - 2015-12-01 ------------------ @@ -1979,7 +2460,10 @@ General ~~~~~~~ -* [Breaking] Named arguments (`#169`_, `#173`_, `#174`_): +* [Breaking] Named arguments + (`#169 `_, + `#173 `_, + `#174 `_): .. code:: c++ @@ -1988,7 +2472,9 @@ General Thanks to `@jamboree `_. * [Experimental] User-defined literals for format and named arguments - (`#204`_, `#206`_, `#207`_): + (`#204 `_, + `#206 `_, + `#207 `_): .. code:: c++ @@ -1998,10 +2484,12 @@ General Thanks to `@dean0x7d (Dean Moldovan) `_. * [Breaking] Formatting of more than 16 arguments is now supported when using - variadic templates (`#141`_). + variadic templates + (`#141 `_). Thanks to `@Shauren `_. -* Runtime width specification (`#168`_): +* Runtime width specification + (`#168 `_): .. code:: c++ @@ -2009,11 +2497,12 @@ General Thanks to `@jamboree `_. -* [Breaking] Enums are now formatted with an overloaded ``std::ostream`` - insertion operator (``operator<<``) if available (`#232`_). +* [Breaking] Enums are now formatted with an overloaded ``std::ostream`` insertion + operator (``operator<<``) if available + (`#232 `_). * [Breaking] Changed default ``bool`` format to textual, "true" or "false" - (`#170`_): + (`#170 `_): .. code:: c++ @@ -2025,8 +2514,9 @@ General fmt::print("{:d}", true); // prints "1" -* ``fmt::printf`` and ``fmt::sprintf`` now support formatting of ``bool`` with - the ``%s`` specifier giving textual output, "true" or "false" (`#223`_): +* ``fmt::printf`` and ``fmt::sprintf`` now support formatting of ``bool`` with the + ``%s`` specifier giving textual output, "true" or "false" + (`#223 `_): .. code:: c++ @@ -2034,11 +2524,11 @@ General Thanks to `@LarsGullik `_. -* [Breaking] ``signed char`` and ``unsigned char`` are now formatted as integers - by default (`#217`_). +* [Breaking] ``signed char`` and ``unsigned char`` are now formatted as integers by default + (`#217 `_). * [Breaking] Pointers to C strings can now be formatted with the ``p`` specifier - (`#223`_): + (`#223 `_): .. code:: c++ @@ -2046,26 +2536,30 @@ General Thanks to `@LarsGullik `_. -* [Breaking] ``fmt::printf`` and ``fmt::sprintf`` now print null pointers as - ``(nil)`` and null strings as ``(null)`` for consistency with glibc (`#226`_). +* [Breaking] ``fmt::printf`` and ``fmt::sprintf`` now print null pointers as ``(nil)`` + and null strings as ``(null)`` for consistency with glibc + (`#226 `_). Thanks to `@LarsGullik `_. -* [Breaking] ``fmt::(s)printf`` now supports formatting of objects of - user-defined types that provide an overloaded ``std::ostream`` insertion - operator (``operator<<``) (`#201`_): +* [Breaking] ``fmt::(s)printf`` now supports formatting of objects of user-defined types + that provide an overloaded ``std::ostream`` insertion operator (``operator<<``) + (`#201 `_): .. code:: c++ fmt::printf("The date is %s", Date(2012, 12, 9)); -* [Breaking] The ``Buffer`` template is now part of the public API and can be - used to implement custom memory buffers (`#140`_). Thanks to - `@polyvertex (Jean-Charles Lefebvre) `_. +* [Breaking] The ``Buffer`` template is now part of the public API and can be used + to implement custom memory buffers + (`#140 `_). + Thanks to `@polyvertex (Jean-Charles Lefebvre) `_. * [Breaking] Improved compatibility between ``BasicStringRef`` and `std::experimental::basic_string_view `_ - (`#100`_, `#159`_, `#183`_): + (`#100 `_, + `#159 `_, + `#183 `_): - Comparison operators now compare string content, not pointers - ``BasicStringRef::c_str`` replaced by ``BasicStringRef::data`` @@ -2074,31 +2568,41 @@ General References to null-terminated strings are now represented by a new class, ``BasicCStringRef``. -* Dependency on pthreads introduced by Google Test is now optional (`#185`_). +* Dependency on pthreads introduced by Google Test is now optional + (`#185 `_). * New CMake options ``FMT_DOC``, ``FMT_INSTALL`` and ``FMT_TEST`` to control - generation of ``doc``, ``install`` and ``test`` targets respectively, on by - default (`#197`_, `#198`_, `#200`_). + generation of ``doc``, ``install`` and ``test`` targets respectively, on by default + (`#197 `_, + `#198 `_, + `#200 `_). Thanks to `@maddinat0r (Alex Martin) `_. -* ``noexcept`` is now used when compiling with MSVC2015 (`#215`_). +* ``noexcept`` is now used when compiling with MSVC2015 + (`#215 `_). Thanks to `@dmkrepo (Dmitriy) `_. * Added an option to disable use of ``windows.h`` when ``FMT_USE_WINDOWS_H`` - is defined as 0 before including ``format.h`` (`#171`_). + is defined as 0 before including ``format.h`` + (`#171 `_). Thanks to `@alfps (Alf P. Steinbach) `_. * [Breaking] ``windows.h`` is now included with ``NOMINMAX`` unless ``FMT_WIN_MINMAX`` is defined. This is done to prevent breaking code using ``std::min`` and ``std::max`` and only affects the header-only configuration - (`#152`_, `#153`_, `#154`_). + (`#152 `_, + `#153 `_, + `#154 `_). Thanks to `@DevO2012 `_. -* Improved support for custom character types (`#171`_). +* Improved support for custom character types + (`#171 `_). Thanks to `@alfps (Alf P. Steinbach) `_. * Added an option to disable use of IOStreams when ``FMT_USE_IOSTREAMS`` - is defined as 0 before including ``format.h`` (`#205`_, `#208`_). + is defined as 0 before including ``format.h`` + (`#205 `_, + `#208 `_). Thanks to `@JodiTheTigger `_. * Improved detection of ``isnan``, ``isinf`` and ``signbit``. @@ -2106,28 +2610,32 @@ General Optimization ~~~~~~~~~~~~ -* Made formatting of user-defined types more efficient with a custom stream - buffer (`#92`_, `#230`_). +* Made formatting of user-defined types more efficient with a custom stream buffer + (`#92 `_, + `#230 `_). Thanks to `@NotImplemented `_. * Further improved performance of ``fmt::Writer`` on integer formatting and fixed a minor regression. Now it is ~7% faster than ``karma::generate`` - on Karma's benchmark (`#186`_). + on Karma's benchmark + (`#186 `_). * [Breaking] Reduced `compiled code size `_ - (`#143`_, `#149`_). + (`#143 `_, + `#149 `_). Distribution ~~~~~~~~~~~~ * [Breaking] Headers are now installed in - ``${CMAKE_INSTALL_PREFIX}/include/cppformat`` (`#178`_). + ``${CMAKE_INSTALL_PREFIX}/include/cppformat`` + (`#178 `_). Thanks to `@jackyf (Eugene V. Lyubimkin) `_. * [Breaking] Changed the library name from ``format`` to ``cppformat`` for consistency with the project name and to avoid potential conflicts - (`#178`_). + (`#178 `_). Thanks to `@jackyf (Eugene V. Lyubimkin) `_. * C++ Format is now available in `Debian `_ GNU/Linux @@ -2135,18 +2643,17 @@ Distribution `sid `_) and derived distributions such as `Ubuntu `_ 15.10 and later - (`#155`_):: + (`#155 `_):: $ sudo apt-get install libcppformat1-dev Thanks to `@jackyf (Eugene V. Lyubimkin) `_. -* `Packages for Fedora and RHEL - `_ are now - available. Thanks to Dave Johansen. +* `Packages for Fedora and RHEL `_ + are now available. Thanks to Dave Johansen. * C++ Format can now be installed via `Homebrew `_ on OS X - (`#157`_):: + (`#157 `_):: $ brew install cppformat @@ -2156,7 +2663,8 @@ Documentation ~~~~~~~~~~~~~ * Migrated from ReadTheDocs to GitHub Pages for better responsiveness - and reliability (`#128`_). + and reliability + (`#128 `_). New documentation address is http://cppformat.github.io/. @@ -2164,27 +2672,39 @@ Documentation `_ section to the documentation. -* Documentation build script is now compatible with Python 3 and newer pip - versions (`#189`_, `#209`_). +* Documentation build script is now compatible with Python 3 and newer pip versions. + (`#189 `_, + `#209 `_). Thanks to `@JodiTheTigger `_ and `@xentec `_. * Documentation fixes and improvements - (`#36`_, `#75`_, `#125`_, `#160`_, `#161`_, `#162`_, `#165`_, `#210`_). + (`#36 `_, + `#75 `_, + `#125 `_, + `#160 `_, + `#161 `_, + `#162 `_, + `#165 `_, + `#210 `_). Thanks to `@syohex (Syohei YOSHIDA) `_ and bug reporters. -* Fixed out-of-tree documentation build (`#177`_). +* Fixed out-of-tree documentation build + (`#177 `_). Thanks to `@jackyf (Eugene V. Lyubimkin) `_. Fixes ~~~~~ -* Fixed ``initializer_list`` detection (`#136`_). +* Fixed ``initializer_list`` detection + (`#136 `_). Thanks to `@Gachapen (Magnus Bjerke Vik) `_. * [Breaking] Fixed formatting of enums with numeric format specifiers in - ``fmt::(s)printf`` (`#131`_, `#139`_): + ``fmt::(s)printf`` + (`#131 `_, + `#139 `_): .. code:: c++ @@ -2194,27 +2714,54 @@ Fixes Thanks to `@Naios `_. * Improved compatibility with old versions of MinGW - (`#129`_, `#130`_, `#132`_). + (`#129 `_, + `#130 `_, + `#132 `_). Thanks to `@cstamford (Christopher Stamford) `_. -* Fixed a compile error on MSVC with disabled exceptions (`#144`_). +* Fixed a compile error on MSVC with disabled exceptions + (`#144 `_). * Added a workaround for broken implementation of variadic templates in MSVC2012 - (`#148`_). + (`#148 `_). * Placed the anonymous namespace within ``fmt`` namespace for the header-only - configuration (`#171`_). + configuration + (`#171 `_). Thanks to `@alfps (Alf P. Steinbach) `_. -* Fixed issues reported by Coverity Scan (`#187`_, `#192`_). +* Fixed issues reported by Coverity Scan + (`#187 `_, + `#192 `_). -* Implemented a workaround for a name lookup bug in MSVC2010 (`#188`_). +* Implemented a workaround for a name lookup bug in MSVC2010 + (`#188 `_). -* Fixed compiler warnings (`#95`_, `#96`_, `#114`_, `#135`_, `#142`_, `#145`_, - `#146`_, `#158`_, `#163`_, `#175`_, `#190`_, `#191`_, `#194`_, `#196`_, - `#216`_, `#218`_, `#220`_, `#229`_, `#233`_, `#234`_, `#236`_, `#281`_, - `#289`_). Thanks to - `@seanmiddleditch (Sean Middleditch) `_, +* Fixed compiler warnings + (`#95 `_, + `#96 `_, + `#114 `_, + `#135 `_, + `#142 `_, + `#145 `_, + `#146 `_, + `#158 `_, + `#163 `_, + `#175 `_, + `#190 `_, + `#191 `_, + `#194 `_, + `#196 `_, + `#216 `_, + `#218 `_, + `#220 `_, + `#229 `_, + `#233 `_, + `#234 `_, + `#236 `_, + `#281 `_, + `#289 `_). + Thanks to `@seanmiddleditch (Sean Middleditch) `_, `@dixlorenz (Dix Lorenz) `_, `@CarterLi (李通洲) `_, `@Naios `_, @@ -2228,30 +2775,38 @@ Fixes `@inguin (Ingo van Lil) `_ and `@Jopie64 (Johan) `_. -* Fixed portability issues (mostly causing test failures) on ARM, ppc64, - ppc64le, s390x and SunOS 5.11 i386 (`#138`_, `#179`_, `#180`_, `#202`_, - `#225`_, `Red Hat Bugzilla Bug 1260297 - `_). +* Fixed portability issues (mostly causing test failures) on ARM, ppc64, ppc64le, + s390x and SunOS 5.11 i386 + (`#138 `_, + `#179 `_, + `#180 `_, + `#202 `_, + `#225 `_, + `Red Hat Bugzilla Bug 1260297 `_). Thanks to `@Naios `_, - `@jackyf (Eugene V. Lyubimkin) `_ and - Dave Johansen. + `@jackyf (Eugene V. Lyubimkin) `_ and Dave Johansen. -* Fixed a name conflict with macro ``free`` defined in ``crtdbg.h`` when - ``_CRTDBG_MAP_ALLOC`` is set (`#211`_). +* Fixed a name conflict with macro ``free`` defined in + ``crtdbg.h`` when ``_CRTDBG_MAP_ALLOC`` is set + (`#211 `_). -* Fixed shared library build on OS X (`#212`_). +* Fixed shared library build on OS X + (`#212 `_). Thanks to `@dean0x7d (Dean Moldovan) `_. * Fixed an overload conflict on MSVC when ``/Zc:wchar_t-`` option is specified - (`#214`_). + (`#214 `_). Thanks to `@slavanap (Vyacheslav Napadovsky) `_. -* Improved compatibility with MSVC 2008 (`#236`_). +* Improved compatibility with MSVC 2008 + (`#236 `_). Thanks to `@Jopie64 (Johan) `_. -* Improved compatibility with bcc32 (`#227`_). +* Improved compatibility with bcc32 + (`#227 `_). -* Fixed ``static_assert`` detection on Clang (`#228`_). +* Fixed ``static_assert`` detection on Clang + (`#228 `_). Thanks to `@dean0x7d (Dean Moldovan) `_. 1.1.0 - 2015-03-06 @@ -2259,7 +2814,8 @@ Fixes * Added ``BasicArrayWriter``, a class template that provides operations for formatting and writing data into a fixed-size array - (`#105`_ and `#122`_): + (`#105 `_ and + `#122 `_): .. code:: c++ @@ -2271,23 +2827,28 @@ Fixes `_ to the list of notable projects using C++ Format. * C++ Format now uses MSVC intrinsics for better formatting performance - (`#115`_, `#116`_, `#118`_ and `#121`_). + (`#115 `_, + `#116 `_, + `#118 `_ and + `#121 `_). Previously these optimizations where only used on GCC and Clang. Thanks to `@CarterLi `_ and `@objectx `_. -* CMake install target (`#119`_). +* CMake install target (`#119 `_). Thanks to `@TrentHouliston `_. You can now install C++ Format with ``make install`` command. * Improved `Biicode `_ support - (`#98`_ and `#104`_). Thanks to + (`#98 `_ and + `#104 `_). Thanks to `@MariadeAnton `_ and `@franramirez688 `_. * Improved support for building with `Android NDK - `_ (`#107`_). + `_ + (`#107 `_). Thanks to `@newnon `_. The `android-ndk-example `_ @@ -2296,23 +2857,28 @@ Fixes .. image:: https://raw.githubusercontent.com/fmtlib/android-ndk-example/ master/screenshot.png -* Improved documentation of ``SystemError`` and ``WindowsError`` (`#54`_). +* Improved documentation of ``SystemError`` and ``WindowsError`` + (`#54 `_). -* Various code improvements (`#110`_, `#111`_ `#112`_). +* Various code improvements + (`#110 `_, + `#111 `_ + `#112 `_). Thanks to `@CarterLi `_. * Improved compile-time errors when formatting wide into narrow strings - (`#117`_). + (`#117 `_). * Fixed ``BasicWriter::write`` without formatting arguments when C++11 support - is disabled (`#109`_). + is disabled (`#109 `_). -* Fixed header-only build on OS X with GCC 4.9 (`#124`_). +* Fixed header-only build on OS X with GCC 4.9 + (`#124 `_). -* Fixed packaging issues (`#94`_). +* Fixed packaging issues (`#94 `_). * Added `changelog `_ - (`#103`_). + (`#103 `_). 1.0.0 - 2015-02-05 ------------------ @@ -2327,26 +2893,29 @@ Fixes * Compute string length in the constructor of ``BasicStringRef`` instead of the ``size`` method - (`#79`_). + (`#79 `_). This eliminates size computation for string literals on reasonable optimizing compilers. * Fix formatting of types with overloaded ``operator <<`` for ``std::wostream`` - (`#86`_): + (`#86 `_): .. code:: c++ fmt::format(L"The date is {0}", Date(2012, 12, 9)); -* Fix linkage of tests on Arch Linux (`#89`_). +* Fix linkage of tests on Arch Linux + (`#89 `_). -* Allow precision specifier for non-float arguments (`#90`_): +* Allow precision specifier for non-float arguments + (`#90 `_): .. code:: c++ fmt::print("{:.3}\n", "Carpet"); // prints "Car" -* Fix build on Android NDK (`#93`_) +* Fix build on Android NDK + (`#93 `_) * Improvements to documentation build procedure. @@ -2386,10 +2955,11 @@ Fixes This doesn't affect the formatting API. -* Support for custom memory allocators (`#69`_) +* Support for custom memory allocators + (`#69 `_) * Formatting functions now accept `signed char` and `unsigned char` strings as - arguments (`#73`_): + arguments (`#73 `_): .. code:: c++ @@ -2425,7 +2995,8 @@ Fixes fmt::printf("Elapsed time: %.2f seconds", 1.23); fmt::printf("%1$s, %3$d %2$s", weekday, month, day); -* Arguments of ``char`` type can now be formatted as integers (`#55`_): +* Arguments of ``char`` type can now be formatted as integers + (Issue `#55 `_): .. code:: c++ @@ -2494,7 +3065,7 @@ Fixes Now all public functions are lowercase following the standard library conventions. Previously it was a combination of lowercase and CapitalizedWords. - Issue `#50`_. + Issue `#50 `_. * Old functions are marked as deprecated and will be removed in the next release. @@ -2567,4 +3138,4 @@ Fixes 0.8.0 - 2014-04-14 ------------------ -* Initial release \ No newline at end of file +* Initial release