git repos / blockattack-game

blame: source/misc/embedded_libs/fmt-8.1.1/ChangeLog.rst

normal view · raw

f8deb5b9 Poul Sander 2022-01-15 13:55 1
8.1.1 - 2022-01-06
f8deb5b9 Poul Sander 2022-01-15 13:55 2
------------------
f8deb5b9 Poul Sander 2022-01-15 13:55 3
f8deb5b9 Poul Sander 2022-01-15 13:55 4
* Restored ABI compatibility with version 8.0.x
f8deb5b9 Poul Sander 2022-01-15 13:55 5
  (`#2695 <https://github.com/fmtlib/fmt/issues/2695>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 6
  `#2696 <https://github.com/fmtlib/fmt/pull/2696>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 7
  Thanks `@saraedum (Julian Rüth) <https://github.com/saraedum>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 8
f8deb5b9 Poul Sander 2022-01-15 13:55 9
* Fixed chorno formatting on big endian systems
f8deb5b9 Poul Sander 2022-01-15 13:55 10
  (`#2698 <https://github.com/fmtlib/fmt/issues/2698>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 11
  `#2699 <https://github.com/fmtlib/fmt/pull/2699>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 12
  Thanks `@phprus (Vladislav Shchapov) <https://github.com/phprus>`_ and
f8deb5b9 Poul Sander 2022-01-15 13:55 13
  `@xvitaly (Vitaly Zaitsev) <https://github.com/xvitaly>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 14
f8deb5b9 Poul Sander 2022-01-15 13:55 15
* Fixed a linkage error with mingw
f8deb5b9 Poul Sander 2022-01-15 13:55 16
  (`#2691 <https://github.com/fmtlib/fmt/issues/2691>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 17
  `#2692 <https://github.com/fmtlib/fmt/pull/2692>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 18
  Thanks `@rbberger (Richard Berger) <https://github.com/rbberger>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 19
f8deb5b9 Poul Sander 2022-01-15 13:55 20
8.1.0 - 2022-01-02
f8deb5b9 Poul Sander 2022-01-15 13:55 21
------------------
f8deb5b9 Poul Sander 2022-01-15 13:55 22
f8deb5b9 Poul Sander 2022-01-15 13:55 23
* Optimized chrono formatting
f8deb5b9 Poul Sander 2022-01-15 13:55 24
  (`#2500 <https://github.com/fmtlib/fmt/pull/2500>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 25
  `#2537 <https://github.com/fmtlib/fmt/pull/2537>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 26
  `#2541 <https://github.com/fmtlib/fmt/issues/2541>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 27
  `#2544 <https://github.com/fmtlib/fmt/pull/2544>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 28
  `#2550 <https://github.com/fmtlib/fmt/pull/2550>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 29
  `#2551 <https://github.com/fmtlib/fmt/pull/2551>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 30
  `#2576 <https://github.com/fmtlib/fmt/pull/2576>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 31
  `#2577 <https://github.com/fmtlib/fmt/issues/2577>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 32
  `#2586 <https://github.com/fmtlib/fmt/pull/2586>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 33
  `#2591 <https://github.com/fmtlib/fmt/pull/2591>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 34
  `#2594 <https://github.com/fmtlib/fmt/pull/2594>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 35
  `#2602 <https://github.com/fmtlib/fmt/pull/2602>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 36
  `#2617 <https://github.com/fmtlib/fmt/pull/2617>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 37
  `#2628 <https://github.com/fmtlib/fmt/issues/2628>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 38
  `#2633 <https://github.com/fmtlib/fmt/pull/2633>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 39
  `#2670 <https://github.com/fmtlib/fmt/issues/2670>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 40
  `#2671 <https://github.com/fmtlib/fmt/pull/2671>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 41
f8deb5b9 Poul Sander 2022-01-15 13:55 42
  Processing of some specifiers such as ``%z`` and ``%Y`` is now up to 10-20
f8deb5b9 Poul Sander 2022-01-15 13:55 43
  times faster, for example on GCC 11 with libstdc++::
f8deb5b9 Poul Sander 2022-01-15 13:55 44
f8deb5b9 Poul Sander 2022-01-15 13:55 45
    ----------------------------------------------------------------------------
f8deb5b9 Poul Sander 2022-01-15 13:55 46
    Benchmark                                  Before             After
f8deb5b9 Poul Sander 2022-01-15 13:55 47
    ----------------------------------------------------------------------------
f8deb5b9 Poul Sander 2022-01-15 13:55 48
    FMTFormatter_z                             261 ns             26.3 ns
f8deb5b9 Poul Sander 2022-01-15 13:55 49
    FMTFormatterCompile_z                      246 ns             11.6 ns
f8deb5b9 Poul Sander 2022-01-15 13:55 50
    FMTFormatter_Y                             263 ns             26.1 ns
f8deb5b9 Poul Sander 2022-01-15 13:55 51
    FMTFormatterCompile_Y                      244 ns             10.5 ns
f8deb5b9 Poul Sander 2022-01-15 13:55 52
    ----------------------------------------------------------------------------
f8deb5b9 Poul Sander 2022-01-15 13:55 53
f8deb5b9 Poul Sander 2022-01-15 13:55 54
  Thanks `@phprus (Vladislav Shchapov) <https://github.com/phprus>`_ and
f8deb5b9 Poul Sander 2022-01-15 13:55 55
  `@toughengineer (Pavel Novikov) <https://github.com/toughengineer>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 56
f8deb5b9 Poul Sander 2022-01-15 13:55 57
* Implemented subsecond formatting for chrono durations
f8deb5b9 Poul Sander 2022-01-15 13:55 58
  (`#2623 <https://github.com/fmtlib/fmt/pull/2623>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 59
  For example (`godbolt <https://godbolt.org/z/es7vWTETe>`__):
f8deb5b9 Poul Sander 2022-01-15 13:55 60
f8deb5b9 Poul Sander 2022-01-15 13:55 61
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 62
f8deb5b9 Poul Sander 2022-01-15 13:55 63
     #include <fmt/chrono.h>
f8deb5b9 Poul Sander 2022-01-15 13:55 64
f8deb5b9 Poul Sander 2022-01-15 13:55 65
     int main() {
f8deb5b9 Poul Sander 2022-01-15 13:55 66
       fmt::print("{:%S}", std::chrono::milliseconds(1234));
f8deb5b9 Poul Sander 2022-01-15 13:55 67
     }
f8deb5b9 Poul Sander 2022-01-15 13:55 68
f8deb5b9 Poul Sander 2022-01-15 13:55 69
  prints "01.234".
f8deb5b9 Poul Sander 2022-01-15 13:55 70
f8deb5b9 Poul Sander 2022-01-15 13:55 71
  Thanks `@matrackif <https://github.com/matrackif>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 72
f8deb5b9 Poul Sander 2022-01-15 13:55 73
* Fixed handling of precision 0 when formatting chrono durations
f8deb5b9 Poul Sander 2022-01-15 13:55 74
  (`#2587 <https://github.com/fmtlib/fmt/issues/2587>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 75
  `#2588 <https://github.com/fmtlib/fmt/pull/2588>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 76
  Thanks `@lukester1975 <https://github.com/lukester1975>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 77
f8deb5b9 Poul Sander 2022-01-15 13:55 78
* Fixed an overflow on invalid inputs in the ``tm`` formatter
f8deb5b9 Poul Sander 2022-01-15 13:55 79
  (`#2564 <https://github.com/fmtlib/fmt/pull/2564>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 80
  Thanks `@phprus (Vladislav Shchapov) <https://github.com/phprus>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 81
f8deb5b9 Poul Sander 2022-01-15 13:55 82
* Added ``fmt::group_digits`` that formats integers with a non-localized digit
f8deb5b9 Poul Sander 2022-01-15 13:55 83
  separator (comma) for groups of three digits.
f8deb5b9 Poul Sander 2022-01-15 13:55 84
  For example (`godbolt <https://godbolt.org/z/TxGxG9Poq>`__):
f8deb5b9 Poul Sander 2022-01-15 13:55 85
f8deb5b9 Poul Sander 2022-01-15 13:55 86
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 87
f8deb5b9 Poul Sander 2022-01-15 13:55 88
     #include <fmt/format.h>
f8deb5b9 Poul Sander 2022-01-15 13:55 89
f8deb5b9 Poul Sander 2022-01-15 13:55 90
     int main() {
f8deb5b9 Poul Sander 2022-01-15 13:55 91
       fmt::print("{} dollars", fmt::group_digits(1000000));
f8deb5b9 Poul Sander 2022-01-15 13:55 92
     }
f8deb5b9 Poul Sander 2022-01-15 13:55 93
f8deb5b9 Poul Sander 2022-01-15 13:55 94
  prints "1,000,000 dollars".
f8deb5b9 Poul Sander 2022-01-15 13:55 95
f8deb5b9 Poul Sander 2022-01-15 13:55 96
* Added support for faint, conceal, reverse and blink text styles
f8deb5b9 Poul Sander 2022-01-15 13:55 97
  (`#2394 <https://github.com/fmtlib/fmt/pull/2394>`_):
f8deb5b9 Poul Sander 2022-01-15 13:55 98
f8deb5b9 Poul Sander 2022-01-15 13:55 99
  https://user-images.githubusercontent.com/576385/147710227-c68f5317-f8fa-42c3-9123-7c4ba3c398cb.mp4
f8deb5b9 Poul Sander 2022-01-15 13:55 100
f8deb5b9 Poul Sander 2022-01-15 13:55 101
  Thanks `@benit8 (Benoît Lormeau) <https://github.com/benit8>`_ and
f8deb5b9 Poul Sander 2022-01-15 13:55 102
  `@data-man (Dmitry Atamanov) <https://github.com/data-man>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 103
f8deb5b9 Poul Sander 2022-01-15 13:55 104
* Added experimental support for compile-time floating point formatting
f8deb5b9 Poul Sander 2022-01-15 13:55 105
  (`#2426 <https://github.com/fmtlib/fmt/pull/2426>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 106
  `#2470 <https://github.com/fmtlib/fmt/pull/2470>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 107
  It is currently limited to the header-only mode.
f8deb5b9 Poul Sander 2022-01-15 13:55 108
  Thanks `@alexezeder (Alexey Ochapov) <https://github.com/alexezeder>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 109
f8deb5b9 Poul Sander 2022-01-15 13:55 110
* Added UDL-based named argument support to compile-time format string checks
f8deb5b9 Poul Sander 2022-01-15 13:55 111
  (`#2640 <https://github.com/fmtlib/fmt/issues/2640>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 112
  `#2649 <https://github.com/fmtlib/fmt/pull/2649>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 113
  For example (`godbolt <https://godbolt.org/z/ohGbbvonv>`__):
f8deb5b9 Poul Sander 2022-01-15 13:55 114
f8deb5b9 Poul Sander 2022-01-15 13:55 115
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 116
f8deb5b9 Poul Sander 2022-01-15 13:55 117
     #include <fmt/format.h>
f8deb5b9 Poul Sander 2022-01-15 13:55 118
f8deb5b9 Poul Sander 2022-01-15 13:55 119
     int main() {
f8deb5b9 Poul Sander 2022-01-15 13:55 120
       using namespace fmt::literals;
f8deb5b9 Poul Sander 2022-01-15 13:55 121
       fmt::print("{answer:s}", "answer"_a=42);
f8deb5b9 Poul Sander 2022-01-15 13:55 122
     }
f8deb5b9 Poul Sander 2022-01-15 13:55 123
f8deb5b9 Poul Sander 2022-01-15 13:55 124
  gives a compile-time error on compilers with C++20 ``consteval`` and non-type
f8deb5b9 Poul Sander 2022-01-15 13:55 125
  template parameter support (gcc 10+) because ``s`` is not a valid format
f8deb5b9 Poul Sander 2022-01-15 13:55 126
  specifier for an integer.
f8deb5b9 Poul Sander 2022-01-15 13:55 127
f8deb5b9 Poul Sander 2022-01-15 13:55 128
  Thanks `@alexezeder (Alexey Ochapov) <https://github.com/alexezeder>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 129
f8deb5b9 Poul Sander 2022-01-15 13:55 130
* Implemented escaping of string range elements.
f8deb5b9 Poul Sander 2022-01-15 13:55 131
  For example (`godbolt <https://godbolt.org/z/rKvM1vKf3>`__):
f8deb5b9 Poul Sander 2022-01-15 13:55 132
f8deb5b9 Poul Sander 2022-01-15 13:55 133
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 134
f8deb5b9 Poul Sander 2022-01-15 13:55 135
     #include <fmt/ranges.h>
f8deb5b9 Poul Sander 2022-01-15 13:55 136
     #include <vector>
f8deb5b9 Poul Sander 2022-01-15 13:55 137
f8deb5b9 Poul Sander 2022-01-15 13:55 138
     int main() {
f8deb5b9 Poul Sander 2022-01-15 13:55 139
       fmt::print("{}", std::vector<std::string>{"\naan"});
f8deb5b9 Poul Sander 2022-01-15 13:55 140
     }
f8deb5b9 Poul Sander 2022-01-15 13:55 141
f8deb5b9 Poul Sander 2022-01-15 13:55 142
  is now printed as::
f8deb5b9 Poul Sander 2022-01-15 13:55 143
f8deb5b9 Poul Sander 2022-01-15 13:55 144
    ["\naan"]
f8deb5b9 Poul Sander 2022-01-15 13:55 145
f8deb5b9 Poul Sander 2022-01-15 13:55 146
  instead of::
f8deb5b9 Poul Sander 2022-01-15 13:55 147
  
f8deb5b9 Poul Sander 2022-01-15 13:55 148
    ["
f8deb5b9 Poul Sander 2022-01-15 13:55 149
    aan"]
f8deb5b9 Poul Sander 2022-01-15 13:55 150
f8deb5b9 Poul Sander 2022-01-15 13:55 151
* Switched to JSON-like representation of maps and sets for consistency with
f8deb5b9 Poul Sander 2022-01-15 13:55 152
  Python's ``str.format``.
f8deb5b9 Poul Sander 2022-01-15 13:55 153
  For example (`godbolt <https://godbolt.org/z/seKjoY9W5>`__):
f8deb5b9 Poul Sander 2022-01-15 13:55 154
f8deb5b9 Poul Sander 2022-01-15 13:55 155
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 156
f8deb5b9 Poul Sander 2022-01-15 13:55 157
     #include <fmt/ranges.h>
f8deb5b9 Poul Sander 2022-01-15 13:55 158
     #include <map>
f8deb5b9 Poul Sander 2022-01-15 13:55 159
f8deb5b9 Poul Sander 2022-01-15 13:55 160
     int main() {
f8deb5b9 Poul Sander 2022-01-15 13:55 161
       fmt::print("{}", std::map<std::string, int>{{"answer", 42}});
f8deb5b9 Poul Sander 2022-01-15 13:55 162
     }
f8deb5b9 Poul Sander 2022-01-15 13:55 163
f8deb5b9 Poul Sander 2022-01-15 13:55 164
  is now printed as::
f8deb5b9 Poul Sander 2022-01-15 13:55 165
f8deb5b9 Poul Sander 2022-01-15 13:55 166
    {"answer": 42}
f8deb5b9 Poul Sander 2022-01-15 13:55 167
f8deb5b9 Poul Sander 2022-01-15 13:55 168
* Extended ``fmt::join`` to support C++20-only ranges
f8deb5b9 Poul Sander 2022-01-15 13:55 169
  (`#2549 <https://github.com/fmtlib/fmt/pull/2549>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 170
  Thanks `@BRevzin (Barry Revzin) <https://github.com/BRevzin>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 171
f8deb5b9 Poul Sander 2022-01-15 13:55 172
* Optimized handling of non-const-iterable ranges and implemented initial
f8deb5b9 Poul Sander 2022-01-15 13:55 173
  support for non-const-formattable types.
f8deb5b9 Poul Sander 2022-01-15 13:55 174
f8deb5b9 Poul Sander 2022-01-15 13:55 175
* Disabled implicit conversions of scoped enums to integers that was
f8deb5b9 Poul Sander 2022-01-15 13:55 176
  accidentally introduced in earlier versions
f8deb5b9 Poul Sander 2022-01-15 13:55 177
  (`#1841 <https://github.com/fmtlib/fmt/pull/1841>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 178
f8deb5b9 Poul Sander 2022-01-15 13:55 179
* Deprecated implicit conversion of ``[const] signed char*`` and 
f8deb5b9 Poul Sander 2022-01-15 13:55 180
  ``[const] unsigned char*`` to C strings.
f8deb5b9 Poul Sander 2022-01-15 13:55 181
f8deb5b9 Poul Sander 2022-01-15 13:55 182
* Deprecated ``_format``, a legacy UDL-based format API
f8deb5b9 Poul Sander 2022-01-15 13:55 183
  (`#2646 <https://github.com/fmtlib/fmt/pull/2646>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 184
  Thanks `@alexezeder (Alexey Ochapov) <https://github.com/alexezeder>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 185
f8deb5b9 Poul Sander 2022-01-15 13:55 186
* Marked ``format``, ``formatted_size`` and ``to_string`` as ``[[nodiscard]]``
f8deb5b9 Poul Sander 2022-01-15 13:55 187
  (`#2612 <https://github.com/fmtlib/fmt/pull/2612>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 188
  `@0x8000-0000 (Florin Iucha) <https://github.com/0x8000-0000>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 189
f8deb5b9 Poul Sander 2022-01-15 13:55 190
* Added missing diagnostic when trying to format function and member pointers
f8deb5b9 Poul Sander 2022-01-15 13:55 191
  as well as objects convertible to pointers which is explicitly disallowed
f8deb5b9 Poul Sander 2022-01-15 13:55 192
  (`#2598 <https://github.com/fmtlib/fmt/issues/2598>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 193
  `#2609 <https://github.com/fmtlib/fmt/pull/2609>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 194
  `#2610 <https://github.com/fmtlib/fmt/pull/2610>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 195
  Thanks `@AlexGuteniev (Alex Guteniev) <https://github.com/AlexGuteniev>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 196
f8deb5b9 Poul Sander 2022-01-15 13:55 197
* Optimized writing to a contiguous buffer with ``format_to_n``
f8deb5b9 Poul Sander 2022-01-15 13:55 198
  (`#2489 <https://github.com/fmtlib/fmt/pull/2489>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 199
  Thanks `@Roman-Koshelev <https://github.com/Roman-Koshelev>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 200
f8deb5b9 Poul Sander 2022-01-15 13:55 201
* Optimized writing to non-``char`` buffers
f8deb5b9 Poul Sander 2022-01-15 13:55 202
  (`#2477 <https://github.com/fmtlib/fmt/pull/2477>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 203
  Thanks `@Roman-Koshelev <https://github.com/Roman-Koshelev>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 204
f8deb5b9 Poul Sander 2022-01-15 13:55 205
* Decimal point is now localized when using the ``L`` specifier.
f8deb5b9 Poul Sander 2022-01-15 13:55 206
f8deb5b9 Poul Sander 2022-01-15 13:55 207
* Improved floating point formatter implementation
f8deb5b9 Poul Sander 2022-01-15 13:55 208
  (`#2498 <https://github.com/fmtlib/fmt/pull/2498>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 209
  `#2499 <https://github.com/fmtlib/fmt/pull/2499>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 210
  Thanks `@Roman-Koshelev <https://github.com/Roman-Koshelev>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 211
f8deb5b9 Poul Sander 2022-01-15 13:55 212
* Fixed handling of very large precision in fixed format
f8deb5b9 Poul Sander 2022-01-15 13:55 213
  (`#2616 <https://github.com/fmtlib/fmt/pull/2616>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 214
f8deb5b9 Poul Sander 2022-01-15 13:55 215
* Made a table of cached powers used in FP formatting static
f8deb5b9 Poul Sander 2022-01-15 13:55 216
  (`#2509 <https://github.com/fmtlib/fmt/pull/2509>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 217
  Thanks `@jk-jeon (Junekey Jeon) <https://github.com/jk-jeon>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 218
f8deb5b9 Poul Sander 2022-01-15 13:55 219
* Resolved a lookup ambiguity with C++20 format-related functions due to ADL
f8deb5b9 Poul Sander 2022-01-15 13:55 220
  (`#2639 <https://github.com/fmtlib/fmt/issues/2639>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 221
  `#2641 <https://github.com/fmtlib/fmt/pull/2641>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 222
  Thanks `@mkurdej (Marek Kurdej) <https://github.com/mkurdej>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 223
f8deb5b9 Poul Sander 2022-01-15 13:55 224
* Removed unnecessary inline namespace qualification
f8deb5b9 Poul Sander 2022-01-15 13:55 225
  (`#2642 <https://github.com/fmtlib/fmt/issues/2642>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 226
  `#2643 <https://github.com/fmtlib/fmt/pull/2643>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 227
  Thanks `@mkurdej (Marek Kurdej) <https://github.com/mkurdej>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 228
f8deb5b9 Poul Sander 2022-01-15 13:55 229
* Implemented argument forwarding in ``format_to_n``
f8deb5b9 Poul Sander 2022-01-15 13:55 230
  (`#2462 <https://github.com/fmtlib/fmt/issues/2462>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 231
  `#2463 <https://github.com/fmtlib/fmt/pull/2463>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 232
  Thanks `@owent (WenTao Ou) <https://github.com/owent>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 233
f8deb5b9 Poul Sander 2022-01-15 13:55 234
* Fixed handling of implicit conversions in ``fmt::to_string`` and format string
f8deb5b9 Poul Sander 2022-01-15 13:55 235
  compilation (`#2565 <https://github.com/fmtlib/fmt/issues/2565>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 236
f8deb5b9 Poul Sander 2022-01-15 13:55 237
* Changed the default access mode of files created by ``fmt::output_file`` to
f8deb5b9 Poul Sander 2022-01-15 13:55 238
  ``-rw-r--r--`` for consistency with ``fopen``
f8deb5b9 Poul Sander 2022-01-15 13:55 239
  (`#2530 <https://github.com/fmtlib/fmt/issues/2530>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 240
f8deb5b9 Poul Sander 2022-01-15 13:55 241
* Make ``fmt::ostream::flush`` public
f8deb5b9 Poul Sander 2022-01-15 13:55 242
  (`#2435 <https://github.com/fmtlib/fmt/issues/2435>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 243
f8deb5b9 Poul Sander 2022-01-15 13:55 244
* Improved C++14/17 attribute detection
f8deb5b9 Poul Sander 2022-01-15 13:55 245
  (`#2615 <https://github.com/fmtlib/fmt/pull/2615>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 246
  Thanks `@AlexGuteniev (Alex Guteniev) <https://github.com/AlexGuteniev>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 247
f8deb5b9 Poul Sander 2022-01-15 13:55 248
* Improved ``consteval`` detection for MSVC
f8deb5b9 Poul Sander 2022-01-15 13:55 249
  (`#2559 <https://github.com/fmtlib/fmt/pull/2559>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 250
  Thanks `@DanielaE (Daniela Engert) <https://github.com/DanielaE>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 251
f8deb5b9 Poul Sander 2022-01-15 13:55 252
* Improved documentation
f8deb5b9 Poul Sander 2022-01-15 13:55 253
  (`#2406 <https://github.com/fmtlib/fmt/issues/2406>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 254
  `#2446 <https://github.com/fmtlib/fmt/pull/2446>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 255
  `#2493 <https://github.com/fmtlib/fmt/issues/2493>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 256
  `#2513 <https://github.com/fmtlib/fmt/issues/2513>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 257
  `#2515 <https://github.com/fmtlib/fmt/pull/2515>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 258
  `#2522 <https://github.com/fmtlib/fmt/issues/2522>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 259
  `#2562 <https://github.com/fmtlib/fmt/pull/2562>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 260
  `#2575 <https://github.com/fmtlib/fmt/pull/2575>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 261
  `#2606 <https://github.com/fmtlib/fmt/pull/2606>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 262
  `#2620 <https://github.com/fmtlib/fmt/pull/2620>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 263
  `#2676 <https://github.com/fmtlib/fmt/issues/2676>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 264
  Thanks `@sobolevn (Nikita Sobolev) <https://github.com/sobolevn>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 265
  `@UnePierre (Max FERGER) <https://github.com/UnePierre>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 266
  `@zhsj <https://github.com/zhsj>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 267
  `@phprus (Vladislav Shchapov) <https://github.com/phprus>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 268
  `@ericcurtin (Eric Curtin) <https://github.com/ericcurtin>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 269
  `@Lounarok <https://github.com/Lounarok>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 270
f8deb5b9 Poul Sander 2022-01-15 13:55 271
* Improved fuzzers and added a fuzzer for chrono timepoint formatting
f8deb5b9 Poul Sander 2022-01-15 13:55 272
  (`#2461 <https://github.com/fmtlib/fmt/pull/2461>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 273
  `#2469 <https://github.com/fmtlib/fmt/pull/2469>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 274
  `@pauldreik (Paul Dreik) <https://github.com/pauldreik>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 275
f8deb5b9 Poul Sander 2022-01-15 13:55 276
* Added the ``FMT_SYSTEM_HEADERS`` CMake option setting which marks {fmt}'s
f8deb5b9 Poul Sander 2022-01-15 13:55 277
  headers as system. It can be used to suppress warnings
f8deb5b9 Poul Sander 2022-01-15 13:55 278
  (`#2644 <https://github.com/fmtlib/fmt/issues/2644>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 279
  `#2651 <https://github.com/fmtlib/fmt/pull/2651>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 280
  Thanks `@alexezeder (Alexey Ochapov) <https://github.com/alexezeder>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 281
f8deb5b9 Poul Sander 2022-01-15 13:55 282
* Added the Bazel build system support
f8deb5b9 Poul Sander 2022-01-15 13:55 283
  (`#2505 <https://github.com/fmtlib/fmt/pull/2505>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 284
  `#2516 <https://github.com/fmtlib/fmt/pull/2516>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 285
  Thanks `@Vertexwahn <https://github.com/Vertexwahn>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 286
f8deb5b9 Poul Sander 2022-01-15 13:55 287
* Improved build configuration and tests
f8deb5b9 Poul Sander 2022-01-15 13:55 288
  (`#2437 <https://github.com/fmtlib/fmt/issues/2437>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 289
  `#2558 <https://github.com/fmtlib/fmt/pull/2558>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 290
  `#2648 <https://github.com/fmtlib/fmt/pull/2648>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 291
  `#2650 <https://github.com/fmtlib/fmt/pull/2650>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 292
  `#2663 <https://github.com/fmtlib/fmt/pull/2663>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 293
  `#2677 <https://github.com/fmtlib/fmt/pull/2677>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 294
  Thanks `@DanielaE (Daniela Engert) <https://github.com/DanielaE>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 295
  `@alexezeder (Alexey Ochapov) <https://github.com/alexezeder>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 296
  `@phprus (Vladislav Shchapov) <https://github.com/phprus>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 297
f8deb5b9 Poul Sander 2022-01-15 13:55 298
* Fixed various warnings and compilation issues
f8deb5b9 Poul Sander 2022-01-15 13:55 299
  (`#2353 <https://github.com/fmtlib/fmt/pull/2353>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 300
  `#2356 <https://github.com/fmtlib/fmt/pull/2356>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 301
  `#2399 <https://github.com/fmtlib/fmt/pull/2399>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 302
  `#2408 <https://github.com/fmtlib/fmt/issues/2408>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 303
  `#2414 <https://github.com/fmtlib/fmt/pull/2414>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 304
  `#2427 <https://github.com/fmtlib/fmt/pull/2427>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 305
  `#2432 <https://github.com/fmtlib/fmt/pull/2432>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 306
  `#2442 <https://github.com/fmtlib/fmt/pull/2442>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 307
  `#2434 <https://github.com/fmtlib/fmt/pull/2434>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 308
  `#2439 <https://github.com/fmtlib/fmt/issues/2439>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 309
  `#2447 <https://github.com/fmtlib/fmt/pull/2447>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 310
  `#2450 <https://github.com/fmtlib/fmt/pull/2450>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 311
  `#2455 <https://github.com/fmtlib/fmt/issues/2455>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 312
  `#2465 <https://github.com/fmtlib/fmt/issues/2465>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 313
  `#2472 <https://github.com/fmtlib/fmt/issues/2472>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 314
  `#2474 <https://github.com/fmtlib/fmt/issues/2474>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 315
  `#2476 <https://github.com/fmtlib/fmt/pull/2476>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 316
  `#2478 <https://github.com/fmtlib/fmt/issues/2478>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 317
  `#2479 <https://github.com/fmtlib/fmt/issues/2479>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 318
  `#2481 <https://github.com/fmtlib/fmt/issues/2481>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 319
  `#2482 <https://github.com/fmtlib/fmt/pull/2482>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 320
  `#2483 <https://github.com/fmtlib/fmt/pull/2483>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 321
  `#2490 <https://github.com/fmtlib/fmt/issues/2490>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 322
  `#2491 <https://github.com/fmtlib/fmt/pull/2491>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 323
  `#2510 <https://github.com/fmtlib/fmt/pull/2510>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 324
  `#2518 <https://github.com/fmtlib/fmt/pull/2518>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 325
  `#2528 <https://github.com/fmtlib/fmt/issues/2528>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 326
  `#2529 <https://github.com/fmtlib/fmt/pull/2529>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 327
  `#2539 <https://github.com/fmtlib/fmt/pull/2539>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 328
  `#2540 <https://github.com/fmtlib/fmt/issues/2540>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 329
  `#2545 <https://github.com/fmtlib/fmt/pull/2545>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 330
  `#2555 <https://github.com/fmtlib/fmt/pull/2555>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 331
  `#2557 <https://github.com/fmtlib/fmt/issues/2557>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 332
  `#2570 <https://github.com/fmtlib/fmt/issues/2570>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 333
  `#2573 <https://github.com/fmtlib/fmt/pull/2573>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 334
  `#2582 <https://github.com/fmtlib/fmt/pull/2582>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 335
  `#2605 <https://github.com/fmtlib/fmt/issues/2605>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 336
  `#2611 <https://github.com/fmtlib/fmt/pull/2611>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 337
  `#2647 <https://github.com/fmtlib/fmt/pull/2647>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 338
  `#2627 <https://github.com/fmtlib/fmt/issues/2627>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 339
  `#2630 <https://github.com/fmtlib/fmt/pull/2630>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 340
  `#2635 <https://github.com/fmtlib/fmt/issues/2635>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 341
  `#2638 <https://github.com/fmtlib/fmt/issues/2638>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 342
  `#2653 <https://github.com/fmtlib/fmt/issues/2653>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 343
  `#2654 <https://github.com/fmtlib/fmt/issues/2654>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 344
  `#2661 <https://github.com/fmtlib/fmt/issues/2661>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 345
  `#2664 <https://github.com/fmtlib/fmt/pull/2664>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 346
  `#2684 <https://github.com/fmtlib/fmt/pull/2684>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 347
  Thanks `@DanielaE (Daniela Engert) <https://github.com/DanielaE>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 348
  `@mwinterb <https://github.com/mwinterb>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 349
  `@cdacamar (Cameron DaCamara) <https://github.com/cdacamar>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 350
  `@TrebledJ (Johnathan) <https://github.com/TrebledJ>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 351
  `@bodomartin (brm) <https://github.com/bodomartin>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 352
  `@cquammen (Cory Quammen) <https://github.com/cquammen>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 353
  `@white238 (Chris White) <https://github.com/white238>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 354
  `@mmarkeloff (Max) <https://github.com/mmarkeloff>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 355
  `@palacaze (Pierre-Antoine Lacaze) <https://github.com/palacaze>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 356
  `@jcelerier (Jean-Michaël Celerier) <https://github.com/jcelerier>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 357
  `@mborn-adi (Mathias Born) <https://github.com/mborn-adi>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 358
  `@BrukerJWD (Jonathan W) <https://github.com/BrukerJWD>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 359
  `@spyridon97 (Spiros Tsalikis) <https://github.com/spyridon97>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 360
  `@phprus (Vladislav Shchapov) <https://github.com/phprus>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 361
  `@oliverlee (Oliver Lee) <https://github.com/oliverlee>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 362
  `@joshessman-llnl (Josh Essman) <https://github.com/joshessman-llnl>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 363
  `@akohlmey (Axel Kohlmeyer) <https://github.com/akohlmey>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 364
  `@timkalu <https://github.com/timkalu>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 365
  `@olupton (Olli Lupton) <https://github.com/olupton>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 366
  `@Acretock <https://github.com/Acretock>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 367
  `@alexezeder (Alexey Ochapov) <https://github.com/alexezeder>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 368
  `@andrewcorrigan (Andrew Corrigan) <https://github.com/andrewcorrigan>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 369
  `@lucpelletier <https://github.com/lucpelletier>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 370
  `@HazardyKnusperkeks (Björn Schäpers) <https://github.com/HazardyKnusperkeks>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 371
f8deb5b9 Poul Sander 2022-01-15 13:55 372
8.0.1 - 2021-07-02
f8deb5b9 Poul Sander 2022-01-15 13:55 373
------------------
f8deb5b9 Poul Sander 2022-01-15 13:55 374
f8deb5b9 Poul Sander 2022-01-15 13:55 375
* Fixed the version number in the inline namespace
f8deb5b9 Poul Sander 2022-01-15 13:55 376
  (`#2374 <https://github.com/fmtlib/fmt/issues/2374>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 377
f8deb5b9 Poul Sander 2022-01-15 13:55 378
* Added a missing presentation type check for ``std::string``
f8deb5b9 Poul Sander 2022-01-15 13:55 379
  (`#2402 <https://github.com/fmtlib/fmt/issues/2402>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 380
f8deb5b9 Poul Sander 2022-01-15 13:55 381
* Fixed a linkage error when mixing code built with clang and gcc
f8deb5b9 Poul Sander 2022-01-15 13:55 382
  (`#2377 <https://github.com/fmtlib/fmt/issues/2377>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 383
f8deb5b9 Poul Sander 2022-01-15 13:55 384
* Fixed documentation issues
f8deb5b9 Poul Sander 2022-01-15 13:55 385
  (`#2396 <https://github.com/fmtlib/fmt/pull/2396>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 386
  `#2403 <https://github.com/fmtlib/fmt/issues/2403>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 387
  `#2406 <https://github.com/fmtlib/fmt/issues/2406>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 388
  Thanks `@mkurdej (Marek Kurdej) <https://github.com/mkurdej>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 389
f8deb5b9 Poul Sander 2022-01-15 13:55 390
* Removed dead code in FP formatter (
f8deb5b9 Poul Sander 2022-01-15 13:55 391
  `#2398 <https://github.com/fmtlib/fmt/pull/2398>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 392
  Thanks `@javierhonduco (Javier Honduvilla Coto)
f8deb5b9 Poul Sander 2022-01-15 13:55 393
  <https://github.com/javierhonduco>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 394
f8deb5b9 Poul Sander 2022-01-15 13:55 395
* Fixed various warnings and compilation issues
f8deb5b9 Poul Sander 2022-01-15 13:55 396
  (`#2351 <https://github.com/fmtlib/fmt/issues/2351>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 397
  `#2359 <https://github.com/fmtlib/fmt/issues/2359>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 398
  `#2365 <https://github.com/fmtlib/fmt/pull/2365>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 399
  `#2368 <https://github.com/fmtlib/fmt/issues/2368>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 400
  `#2370 <https://github.com/fmtlib/fmt/pull/2370>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 401
  `#2376 <https://github.com/fmtlib/fmt/pull/2376>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 402
  `#2381 <https://github.com/fmtlib/fmt/pull/2381>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 403
  `#2382 <https://github.com/fmtlib/fmt/pull/2382>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 404
  `#2386 <https://github.com/fmtlib/fmt/issues/2386>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 405
  `#2389 <https://github.com/fmtlib/fmt/pull/2389>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 406
  `#2395 <https://github.com/fmtlib/fmt/pull/2395>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 407
  `#2397 <https://github.com/fmtlib/fmt/pull/2397>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 408
  `#2400 <https://github.com/fmtlib/fmt/issues/2400>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 409
  `#2401 <https://github.com/fmtlib/fmt/issues/2401>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 410
  `#2407 <https://github.com/fmtlib/fmt/pull/2407>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 411
  Thanks `@zx2c4 (Jason A. Donenfeld) <https://github.com/zx2c4>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 412
  `@AidanSun05 (Aidan Sun) <https://github.com/AidanSun05>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 413
  `@mattiasljungstrom (Mattias Ljungström)
f8deb5b9 Poul Sander 2022-01-15 13:55 414
  <https://github.com/mattiasljungstrom>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 415
  `@joemmett (Jonathan Emmett) <https://github.com/joemmett>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 416
  `@erengy (Eren Okka) <https://github.com/erengy>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 417
  `@patlkli (Patrick Geltinger) <https://github.com/patlkli>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 418
  `@gsjaardema (Greg Sjaardema) <https://github.com/gsjaardema>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 419
  `@phprus (Vladislav Shchapov) <https://github.com/phprus>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 420
f8deb5b9 Poul Sander 2022-01-15 13:55 421
8.0.0 - 2021-06-21
f8deb5b9 Poul Sander 2022-01-15 13:55 422
------------------
f8deb5b9 Poul Sander 2022-01-15 13:55 423
f8deb5b9 Poul Sander 2022-01-15 13:55 424
* Enabled compile-time format string checks by default.
f8deb5b9 Poul Sander 2022-01-15 13:55 425
  For example (`godbolt <https://godbolt.org/z/sMxcohGjz>`__):
f8deb5b9 Poul Sander 2022-01-15 13:55 426
f8deb5b9 Poul Sander 2022-01-15 13:55 427
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 428
f8deb5b9 Poul Sander 2022-01-15 13:55 429
     #include <fmt/core.h>
f8deb5b9 Poul Sander 2022-01-15 13:55 430
f8deb5b9 Poul Sander 2022-01-15 13:55 431
     int main() {
f8deb5b9 Poul Sander 2022-01-15 13:55 432
       fmt::print("{:d}", "I am not a number");
f8deb5b9 Poul Sander 2022-01-15 13:55 433
     }
f8deb5b9 Poul Sander 2022-01-15 13:55 434
f8deb5b9 Poul Sander 2022-01-15 13:55 435
  gives a compile-time error on compilers with C++20 ``consteval`` support
f8deb5b9 Poul Sander 2022-01-15 13:55 436
  (gcc 10+, clang 11+) because ``d`` is not a valid format specifier for a
f8deb5b9 Poul Sander 2022-01-15 13:55 437
  string.
f8deb5b9 Poul Sander 2022-01-15 13:55 438
f8deb5b9 Poul Sander 2022-01-15 13:55 439
  To pass a runtime string wrap it in ``fmt::runtime``:
f8deb5b9 Poul Sander 2022-01-15 13:55 440
f8deb5b9 Poul Sander 2022-01-15 13:55 441
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 442
f8deb5b9 Poul Sander 2022-01-15 13:55 443
     fmt::print(fmt::runtime("{:d}"), "I am not a number");
f8deb5b9 Poul Sander 2022-01-15 13:55 444
f8deb5b9 Poul Sander 2022-01-15 13:55 445
* Added compile-time formatting
f8deb5b9 Poul Sander 2022-01-15 13:55 446
  (`#2019 <https://github.com/fmtlib/fmt/pull/2019>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 447
  `#2044 <https://github.com/fmtlib/fmt/pull/2044>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 448
  `#2056 <https://github.com/fmtlib/fmt/pull/2056>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 449
  `#2072 <https://github.com/fmtlib/fmt/pull/2072>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 450
  `#2075 <https://github.com/fmtlib/fmt/pull/2075>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 451
  `#2078 <https://github.com/fmtlib/fmt/issues/2078>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 452
  `#2129 <https://github.com/fmtlib/fmt/pull/2129>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 453
  `#2326 <https://github.com/fmtlib/fmt/pull/2326>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 454
  For example (`godbolt <https://godbolt.org/z/Mxx9d89jM>`__):
f8deb5b9 Poul Sander 2022-01-15 13:55 455
f8deb5b9 Poul Sander 2022-01-15 13:55 456
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 457
f8deb5b9 Poul Sander 2022-01-15 13:55 458
     #include <fmt/compile.h>
f8deb5b9 Poul Sander 2022-01-15 13:55 459
f8deb5b9 Poul Sander 2022-01-15 13:55 460
     consteval auto compile_time_itoa(int value) -> std::array<char, 10> {
f8deb5b9 Poul Sander 2022-01-15 13:55 461
       auto result = std::array<char, 10>();
f8deb5b9 Poul Sander 2022-01-15 13:55 462
       fmt::format_to(result.data(), FMT_COMPILE("{}"), value);
f8deb5b9 Poul Sander 2022-01-15 13:55 463
       return result;
f8deb5b9 Poul Sander 2022-01-15 13:55 464
     }
f8deb5b9 Poul Sander 2022-01-15 13:55 465
f8deb5b9 Poul Sander 2022-01-15 13:55 466
     constexpr auto answer = compile_time_itoa(42);
f8deb5b9 Poul Sander 2022-01-15 13:55 467
f8deb5b9 Poul Sander 2022-01-15 13:55 468
  Most of the formatting functionality is available at compile time with a
f8deb5b9 Poul Sander 2022-01-15 13:55 469
  notable exception of floating-point numbers and pointers.
f8deb5b9 Poul Sander 2022-01-15 13:55 470
  Thanks `@alexezeder (Alexey Ochapov) <https://github.com/alexezeder>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 471
f8deb5b9 Poul Sander 2022-01-15 13:55 472
* Optimized handling of format specifiers during format string compilation.
f8deb5b9 Poul Sander 2022-01-15 13:55 473
  For example, hexadecimal formatting (``"{:x}"``) is now 3-7x faster than
f8deb5b9 Poul Sander 2022-01-15 13:55 474
  before when using ``format_to`` with format string compilation and a
f8deb5b9 Poul Sander 2022-01-15 13:55 475
  stack-allocated buffer (`#1944 <https://github.com/fmtlib/fmt/issues/1944>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 476
f8deb5b9 Poul Sander 2022-01-15 13:55 477
  Before (7.1.3)::
f8deb5b9 Poul Sander 2022-01-15 13:55 478
f8deb5b9 Poul Sander 2022-01-15 13:55 479
    ----------------------------------------------------------------------------
f8deb5b9 Poul Sander 2022-01-15 13:55 480
    Benchmark                                  Time             CPU   Iterations
f8deb5b9 Poul Sander 2022-01-15 13:55 481
    ----------------------------------------------------------------------------
f8deb5b9 Poul Sander 2022-01-15 13:55 482
    FMTCompileOld/0                         15.5 ns         15.5 ns     43302898
f8deb5b9 Poul Sander 2022-01-15 13:55 483
    FMTCompileOld/42                        16.6 ns         16.6 ns     43278267
f8deb5b9 Poul Sander 2022-01-15 13:55 484
    FMTCompileOld/273123                    18.7 ns         18.6 ns     37035861
f8deb5b9 Poul Sander 2022-01-15 13:55 485
    FMTCompileOld/9223372036854775807       19.4 ns         19.4 ns     35243000
f8deb5b9 Poul Sander 2022-01-15 13:55 486
    ----------------------------------------------------------------------------
f8deb5b9 Poul Sander 2022-01-15 13:55 487
f8deb5b9 Poul Sander 2022-01-15 13:55 488
  After (8.x)::
f8deb5b9 Poul Sander 2022-01-15 13:55 489
f8deb5b9 Poul Sander 2022-01-15 13:55 490
    ----------------------------------------------------------------------------
f8deb5b9 Poul Sander 2022-01-15 13:55 491
    Benchmark                                  Time             CPU   Iterations
f8deb5b9 Poul Sander 2022-01-15 13:55 492
    ----------------------------------------------------------------------------
f8deb5b9 Poul Sander 2022-01-15 13:55 493
    FMTCompileNew/0                         1.99 ns         1.99 ns    360523686
f8deb5b9 Poul Sander 2022-01-15 13:55 494
    FMTCompileNew/42                        2.33 ns         2.33 ns    279865664
f8deb5b9 Poul Sander 2022-01-15 13:55 495
    FMTCompileNew/273123                    3.72 ns         3.71 ns    190230315
f8deb5b9 Poul Sander 2022-01-15 13:55 496
    FMTCompileNew/9223372036854775807       5.28 ns         5.26 ns    130711631
f8deb5b9 Poul Sander 2022-01-15 13:55 497
    ----------------------------------------------------------------------------
f8deb5b9 Poul Sander 2022-01-15 13:55 498
f8deb5b9 Poul Sander 2022-01-15 13:55 499
  It is even faster than ``std::to_chars`` from libc++ compiled with clang on
f8deb5b9 Poul Sander 2022-01-15 13:55 500
  macOS::
f8deb5b9 Poul Sander 2022-01-15 13:55 501
f8deb5b9 Poul Sander 2022-01-15 13:55 502
    ----------------------------------------------------------------------------
f8deb5b9 Poul Sander 2022-01-15 13:55 503
    Benchmark                                  Time             CPU   Iterations
f8deb5b9 Poul Sander 2022-01-15 13:55 504
    ----------------------------------------------------------------------------
f8deb5b9 Poul Sander 2022-01-15 13:55 505
    ToChars/0                               4.42 ns         4.41 ns    160196630
f8deb5b9 Poul Sander 2022-01-15 13:55 506
    ToChars/42                              5.00 ns         4.98 ns    140735201
f8deb5b9 Poul Sander 2022-01-15 13:55 507
    ToChars/273123                          7.26 ns         7.24 ns     95784130
f8deb5b9 Poul Sander 2022-01-15 13:55 508
    ToChars/9223372036854775807             8.77 ns         8.75 ns     75872534
f8deb5b9 Poul Sander 2022-01-15 13:55 509
    ----------------------------------------------------------------------------
f8deb5b9 Poul Sander 2022-01-15 13:55 510
f8deb5b9 Poul Sander 2022-01-15 13:55 511
  In other cases, especially involving ``std::string`` construction, the
f8deb5b9 Poul Sander 2022-01-15 13:55 512
  speed up is usually lower because handling format specifiers takes a smaller
f8deb5b9 Poul Sander 2022-01-15 13:55 513
  fraction of the total time.
f8deb5b9 Poul Sander 2022-01-15 13:55 514
f8deb5b9 Poul Sander 2022-01-15 13:55 515
* Added the ``_cf`` user-defined literal to represent a compiled format string.
f8deb5b9 Poul Sander 2022-01-15 13:55 516
  It can be used instead of the ``FMT_COMPILE`` macro
f8deb5b9 Poul Sander 2022-01-15 13:55 517
  (`#2043 <https://github.com/fmtlib/fmt/pull/2043>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 518
  `#2242 <https://github.com/fmtlib/fmt/pull/2242>`_):
f8deb5b9 Poul Sander 2022-01-15 13:55 519
f8deb5b9 Poul Sander 2022-01-15 13:55 520
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 521
f8deb5b9 Poul Sander 2022-01-15 13:55 522
     #include <fmt/compile.h>
f8deb5b9 Poul Sander 2022-01-15 13:55 523
f8deb5b9 Poul Sander 2022-01-15 13:55 524
     using namespace fmt::literals;
f8deb5b9 Poul Sander 2022-01-15 13:55 525
     auto s = fmt::format(FMT_COMPILE("{}"), 42); // 🙁 not modern
f8deb5b9 Poul Sander 2022-01-15 13:55 526
     auto s = fmt::format("{}"_cf, 42);           // 🙂 modern as hell
f8deb5b9 Poul Sander 2022-01-15 13:55 527
f8deb5b9 Poul Sander 2022-01-15 13:55 528
  It requires compiler support for class types in non-type template parameters
f8deb5b9 Poul Sander 2022-01-15 13:55 529
  (a C++20 feature) which is available in GCC 9.3+.
f8deb5b9 Poul Sander 2022-01-15 13:55 530
  Thanks `@alexezeder (Alexey Ochapov) <https://github.com/alexezeder>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 531
f8deb5b9 Poul Sander 2022-01-15 13:55 532
* Format string compilation now requires ``format`` functions of ``formatter``
f8deb5b9 Poul Sander 2022-01-15 13:55 533
  specializations for user-defined types to be ``const``:
f8deb5b9 Poul Sander 2022-01-15 13:55 534
f8deb5b9 Poul Sander 2022-01-15 13:55 535
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 536
f8deb5b9 Poul Sander 2022-01-15 13:55 537
     template <> struct fmt::formatter<my_type>: formatter<string_view> {
f8deb5b9 Poul Sander 2022-01-15 13:55 538
       template <typename FormatContext>
f8deb5b9 Poul Sander 2022-01-15 13:55 539
       auto format(my_type obj, FormatContext& ctx) const {  // Note const here.
f8deb5b9 Poul Sander 2022-01-15 13:55 540
         // ...
f8deb5b9 Poul Sander 2022-01-15 13:55 541
       }
f8deb5b9 Poul Sander 2022-01-15 13:55 542
     };
f8deb5b9 Poul Sander 2022-01-15 13:55 543
f8deb5b9 Poul Sander 2022-01-15 13:55 544
* Added UDL-based named argument support to format string compilation
f8deb5b9 Poul Sander 2022-01-15 13:55 545
  (`#2243 <https://github.com/fmtlib/fmt/pull/2243>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 546
  `#2281 <https://github.com/fmtlib/fmt/pull/2281>`_). For example:
f8deb5b9 Poul Sander 2022-01-15 13:55 547
f8deb5b9 Poul Sander 2022-01-15 13:55 548
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 549
f8deb5b9 Poul Sander 2022-01-15 13:55 550
     #include <fmt/compile.h>
f8deb5b9 Poul Sander 2022-01-15 13:55 551
f8deb5b9 Poul Sander 2022-01-15 13:55 552
     using namespace fmt::literals;
f8deb5b9 Poul Sander 2022-01-15 13:55 553
     auto s = fmt::format(FMT_COMPILE("{answer}"), "answer"_a = 42);
f8deb5b9 Poul Sander 2022-01-15 13:55 554
f8deb5b9 Poul Sander 2022-01-15 13:55 555
  Here the argument named "answer" is resolved at compile time with no
f8deb5b9 Poul Sander 2022-01-15 13:55 556
  runtime overhead.
f8deb5b9 Poul Sander 2022-01-15 13:55 557
  Thanks `@alexezeder (Alexey Ochapov) <https://github.com/alexezeder>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 558
f8deb5b9 Poul Sander 2022-01-15 13:55 559
* Added format string compilation support to ``fmt::print``
f8deb5b9 Poul Sander 2022-01-15 13:55 560
  (`#2280 <https://github.com/fmtlib/fmt/issues/2280>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 561
  `#2304 <https://github.com/fmtlib/fmt/pull/2304>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 562
  Thanks `@alexezeder (Alexey Ochapov) <https://github.com/alexezeder>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 563
f8deb5b9 Poul Sander 2022-01-15 13:55 564
* Added initial support for compiling {fmt} as a C++20 module
f8deb5b9 Poul Sander 2022-01-15 13:55 565
  (`#2235 <https://github.com/fmtlib/fmt/pull/2235>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 566
  `#2240 <https://github.com/fmtlib/fmt/pull/2240>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 567
  `#2260 <https://github.com/fmtlib/fmt/pull/2260>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 568
  `#2282 <https://github.com/fmtlib/fmt/pull/2282>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 569
  `#2283 <https://github.com/fmtlib/fmt/pull/2283>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 570
  `#2288 <https://github.com/fmtlib/fmt/pull/2288>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 571
  `#2298 <https://github.com/fmtlib/fmt/pull/2298>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 572
  `#2306 <https://github.com/fmtlib/fmt/pull/2306>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 573
  `#2307 <https://github.com/fmtlib/fmt/pull/2307>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 574
  `#2309 <https://github.com/fmtlib/fmt/pull/2309>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 575
  `#2318 <https://github.com/fmtlib/fmt/pull/2318>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 576
  `#2324 <https://github.com/fmtlib/fmt/pull/2324>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 577
  `#2332 <https://github.com/fmtlib/fmt/pull/2332>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 578
  `#2340 <https://github.com/fmtlib/fmt/pull/2340>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 579
  Thanks `@DanielaE (Daniela Engert) <https://github.com/DanielaE>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 580
f8deb5b9 Poul Sander 2022-01-15 13:55 581
* Made symbols private by default reducing shared library size
f8deb5b9 Poul Sander 2022-01-15 13:55 582
  (`#2301 <https://github.com/fmtlib/fmt/pull/2301>`_). For example there was
f8deb5b9 Poul Sander 2022-01-15 13:55 583
  a ~15% reported reduction on one platform.
f8deb5b9 Poul Sander 2022-01-15 13:55 584
  Thanks `@sergiud (Sergiu Deitsch) <https://github.com/sergiud>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 585
f8deb5b9 Poul Sander 2022-01-15 13:55 586
* Optimized includes making the result of preprocessing ``fmt/format.h``
f8deb5b9 Poul Sander 2022-01-15 13:55 587
  ~20% smaller with libstdc++/C++20 and slightly improving build times
f8deb5b9 Poul Sander 2022-01-15 13:55 588
  (`#1998 <https://github.com/fmtlib/fmt/issues/1998>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 589
f8deb5b9 Poul Sander 2022-01-15 13:55 590
* Added support of ranges with non-const ``begin`` / ``end``
f8deb5b9 Poul Sander 2022-01-15 13:55 591
  (`#1953 <https://github.com/fmtlib/fmt/pull/1953>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 592
  Thanks `@kitegi (sarah) <https://github.com/kitegi>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 593
f8deb5b9 Poul Sander 2022-01-15 13:55 594
* Added support of ``std::byte`` and other formattable types to ``fmt::join``
f8deb5b9 Poul Sander 2022-01-15 13:55 595
  (`#1981 <https://github.com/fmtlib/fmt/issues/1981>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 596
  `#2040 <https://github.com/fmtlib/fmt/issues/2040>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 597
  `#2050 <https://github.com/fmtlib/fmt/pull/2050>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 598
  `#2262 <https://github.com/fmtlib/fmt/issues/2262>`_). For example:
f8deb5b9 Poul Sander 2022-01-15 13:55 599
f8deb5b9 Poul Sander 2022-01-15 13:55 600
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 601
f8deb5b9 Poul Sander 2022-01-15 13:55 602
     #include <fmt/format.h>
f8deb5b9 Poul Sander 2022-01-15 13:55 603
     #include <cstddef>
f8deb5b9 Poul Sander 2022-01-15 13:55 604
     #include <vector>
f8deb5b9 Poul Sander 2022-01-15 13:55 605
f8deb5b9 Poul Sander 2022-01-15 13:55 606
     int main() {
f8deb5b9 Poul Sander 2022-01-15 13:55 607
       auto bytes = std::vector{std::byte(4), std::byte(2)};
f8deb5b9 Poul Sander 2022-01-15 13:55 608
       fmt::print("{}", fmt::join(bytes, ""));
f8deb5b9 Poul Sander 2022-01-15 13:55 609
     }
f8deb5b9 Poul Sander 2022-01-15 13:55 610
f8deb5b9 Poul Sander 2022-01-15 13:55 611
  prints "42".
f8deb5b9 Poul Sander 2022-01-15 13:55 612
f8deb5b9 Poul Sander 2022-01-15 13:55 613
  Thanks `@kamibo (Camille Bordignon) <https://github.com/kamibo>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 614
f8deb5b9 Poul Sander 2022-01-15 13:55 615
* Implemented the default format for ``std::chrono::system_clock``
f8deb5b9 Poul Sander 2022-01-15 13:55 616
  (`#2319 <https://github.com/fmtlib/fmt/issues/2319>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 617
  `#2345 <https://github.com/fmtlib/fmt/pull/2345>`_). For example:
f8deb5b9 Poul Sander 2022-01-15 13:55 618
f8deb5b9 Poul Sander 2022-01-15 13:55 619
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 620
f8deb5b9 Poul Sander 2022-01-15 13:55 621
     #include <fmt/chrono.h>
f8deb5b9 Poul Sander 2022-01-15 13:55 622
f8deb5b9 Poul Sander 2022-01-15 13:55 623
     int main() {
f8deb5b9 Poul Sander 2022-01-15 13:55 624
       fmt::print("{}", std::chrono::system_clock::now());
f8deb5b9 Poul Sander 2022-01-15 13:55 625
     }
f8deb5b9 Poul Sander 2022-01-15 13:55 626
f8deb5b9 Poul Sander 2022-01-15 13:55 627
  prints "2021-06-18 15:22:00" (the output depends on the current date and
f8deb5b9 Poul Sander 2022-01-15 13:55 628
  time). Thanks `@sunmy2019 <https://github.com/sunmy2019>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 629
f8deb5b9 Poul Sander 2022-01-15 13:55 630
* Made more chrono specifiers locale independent by default. Use the ``'L'``
f8deb5b9 Poul Sander 2022-01-15 13:55 631
  specifier to get localized formatting. For example:
f8deb5b9 Poul Sander 2022-01-15 13:55 632
f8deb5b9 Poul Sander 2022-01-15 13:55 633
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 634
f8deb5b9 Poul Sander 2022-01-15 13:55 635
     #include <fmt/chrono.h>
f8deb5b9 Poul Sander 2022-01-15 13:55 636
f8deb5b9 Poul Sander 2022-01-15 13:55 637
     int main() {
f8deb5b9 Poul Sander 2022-01-15 13:55 638
       std::locale::global(std::locale("ru_RU.UTF-8"));
f8deb5b9 Poul Sander 2022-01-15 13:55 639
       auto monday = std::chrono::weekday(1);
f8deb5b9 Poul Sander 2022-01-15 13:55 640
       fmt::print("{}\n", monday);   // prints "Mon"
f8deb5b9 Poul Sander 2022-01-15 13:55 641
       fmt::print("{:L}\n", monday); // prints "пн"
f8deb5b9 Poul Sander 2022-01-15 13:55 642
     }
f8deb5b9 Poul Sander 2022-01-15 13:55 643
f8deb5b9 Poul Sander 2022-01-15 13:55 644
* Improved locale handling in chrono formatting
f8deb5b9 Poul Sander 2022-01-15 13:55 645
  (`#2337 <https://github.com/fmtlib/fmt/issues/2337>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 646
  `#2349 <https://github.com/fmtlib/fmt/pull/2349>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 647
  `#2350 <https://github.com/fmtlib/fmt/pull/2350>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 648
  Thanks `@phprus (Vladislav Shchapov) <https://github.com/phprus>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 649
f8deb5b9 Poul Sander 2022-01-15 13:55 650
* Deprecated ``fmt/locale.h`` moving the formatting functions that take a
f8deb5b9 Poul Sander 2022-01-15 13:55 651
  locale to ``fmt/format.h`` (``char``) and ``fmt/xchar`` (other overloads).
f8deb5b9 Poul Sander 2022-01-15 13:55 652
  This doesn't introduce a dependency on ``<locale>`` so there is virtually no
f8deb5b9 Poul Sander 2022-01-15 13:55 653
  compile time effect.
f8deb5b9 Poul Sander 2022-01-15 13:55 654
f8deb5b9 Poul Sander 2022-01-15 13:55 655
* Deprecated an undocumented ``format_to`` overload that takes
f8deb5b9 Poul Sander 2022-01-15 13:55 656
  ``basic_memory_buffer``.
f8deb5b9 Poul Sander 2022-01-15 13:55 657
f8deb5b9 Poul Sander 2022-01-15 13:55 658
* Made parameter order in ``vformat_to`` consistent with ``format_to``
f8deb5b9 Poul Sander 2022-01-15 13:55 659
  (`#2327 <https://github.com/fmtlib/fmt/issues/2327>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 660
f8deb5b9 Poul Sander 2022-01-15 13:55 661
* Added support for time points with arbitrary durations
f8deb5b9 Poul Sander 2022-01-15 13:55 662
  (`#2208 <https://github.com/fmtlib/fmt/issues/2208>`_). For example:
f8deb5b9 Poul Sander 2022-01-15 13:55 663
f8deb5b9 Poul Sander 2022-01-15 13:55 664
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 665
f8deb5b9 Poul Sander 2022-01-15 13:55 666
     #include <fmt/chrono.h>
f8deb5b9 Poul Sander 2022-01-15 13:55 667
f8deb5b9 Poul Sander 2022-01-15 13:55 668
     int main() {
f8deb5b9 Poul Sander 2022-01-15 13:55 669
       using tp = std::chrono::time_point<
f8deb5b9 Poul Sander 2022-01-15 13:55 670
         std::chrono::system_clock, std::chrono::seconds>;
f8deb5b9 Poul Sander 2022-01-15 13:55 671
       fmt::print("{:%S}", tp(std::chrono::seconds(42)));
f8deb5b9 Poul Sander 2022-01-15 13:55 672
     }
f8deb5b9 Poul Sander 2022-01-15 13:55 673
f8deb5b9 Poul Sander 2022-01-15 13:55 674
  prints "42".
f8deb5b9 Poul Sander 2022-01-15 13:55 675
f8deb5b9 Poul Sander 2022-01-15 13:55 676
* Formatting floating-point numbers no longer produces trailing zeros by default
f8deb5b9 Poul Sander 2022-01-15 13:55 677
  for consistency with ``std::format``. For example:
f8deb5b9 Poul Sander 2022-01-15 13:55 678
f8deb5b9 Poul Sander 2022-01-15 13:55 679
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 680
f8deb5b9 Poul Sander 2022-01-15 13:55 681
     #include <fmt/core.h>
f8deb5b9 Poul Sander 2022-01-15 13:55 682
f8deb5b9 Poul Sander 2022-01-15 13:55 683
     int main() {
f8deb5b9 Poul Sander 2022-01-15 13:55 684
       fmt::print("{0:.3}", 1.1);
f8deb5b9 Poul Sander 2022-01-15 13:55 685
     }
f8deb5b9 Poul Sander 2022-01-15 13:55 686
f8deb5b9 Poul Sander 2022-01-15 13:55 687
  prints "1.1". Use the ``'#'`` specifier to keep trailing zeros.
f8deb5b9 Poul Sander 2022-01-15 13:55 688
f8deb5b9 Poul Sander 2022-01-15 13:55 689
* Dropped a limit on the number of elements in a range and replaced ``{}`` with
f8deb5b9 Poul Sander 2022-01-15 13:55 690
  ``[]`` as range delimiters for consistency with Python's ``str.format``.
f8deb5b9 Poul Sander 2022-01-15 13:55 691
f8deb5b9 Poul Sander 2022-01-15 13:55 692
* The ``'L'`` specifier for locale-specific numeric formatting can now be
f8deb5b9 Poul Sander 2022-01-15 13:55 693
  combined with presentation specifiers as in ``std::format``. For example:
f8deb5b9 Poul Sander 2022-01-15 13:55 694
f8deb5b9 Poul Sander 2022-01-15 13:55 695
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 696
f8deb5b9 Poul Sander 2022-01-15 13:55 697
     #include <fmt/core.h>
f8deb5b9 Poul Sander 2022-01-15 13:55 698
     #include <locale>
f8deb5b9 Poul Sander 2022-01-15 13:55 699
f8deb5b9 Poul Sander 2022-01-15 13:55 700
     int main() {
f8deb5b9 Poul Sander 2022-01-15 13:55 701
       std::locale::global(std::locale("fr_FR.UTF-8"));
f8deb5b9 Poul Sander 2022-01-15 13:55 702
       fmt::print("{0:.2Lf}", 0.42);
f8deb5b9 Poul Sander 2022-01-15 13:55 703
     }
f8deb5b9 Poul Sander 2022-01-15 13:55 704
f8deb5b9 Poul Sander 2022-01-15 13:55 705
  prints "0,42". The deprecated ``'n'`` specifier has been removed.
f8deb5b9 Poul Sander 2022-01-15 13:55 706
f8deb5b9 Poul Sander 2022-01-15 13:55 707
* Made the ``0`` specifier ignored for infinity and NaN
f8deb5b9 Poul Sander 2022-01-15 13:55 708
  (`#2305 <https://github.com/fmtlib/fmt/issues/2305>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 709
  `#2310 <https://github.com/fmtlib/fmt/pull/2310>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 710
  Thanks `@Liedtke (Matthias Liedtke) <https://github.com/Liedtke>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 711
f8deb5b9 Poul Sander 2022-01-15 13:55 712
* Made the hexfloat formatting use the right alignment by default
f8deb5b9 Poul Sander 2022-01-15 13:55 713
  (`#2308 <https://github.com/fmtlib/fmt/issues/2308>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 714
  `#2317 <https://github.com/fmtlib/fmt/pull/2317>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 715
  Thanks `@Liedtke (Matthias Liedtke) <https://github.com/Liedtke>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 716
f8deb5b9 Poul Sander 2022-01-15 13:55 717
* Removed the deprecated numeric alignment (``'='``). Use the ``'0'`` specifier
f8deb5b9 Poul Sander 2022-01-15 13:55 718
  instead.
f8deb5b9 Poul Sander 2022-01-15 13:55 719
f8deb5b9 Poul Sander 2022-01-15 13:55 720
* Removed the deprecated ``fmt/posix.h`` header that has been replaced with
f8deb5b9 Poul Sander 2022-01-15 13:55 721
  ``fmt/os.h``.
f8deb5b9 Poul Sander 2022-01-15 13:55 722
f8deb5b9 Poul Sander 2022-01-15 13:55 723
* Removed the deprecated ``format_to_n_context``, ``format_to_n_args`` and
f8deb5b9 Poul Sander 2022-01-15 13:55 724
  ``make_format_to_n_args``. They have been replaced with ``format_context``,
f8deb5b9 Poul Sander 2022-01-15 13:55 725
  ``format_args` and ``make_format_args`` respectively.
f8deb5b9 Poul Sander 2022-01-15 13:55 726
f8deb5b9 Poul Sander 2022-01-15 13:55 727
* Moved ``wchar_t``-specific functions and types to ``fmt/xchar.h``.
f8deb5b9 Poul Sander 2022-01-15 13:55 728
  You can define ``FMT_DEPRECATED_INCLUDE_XCHAR`` to automatically include
f8deb5b9 Poul Sander 2022-01-15 13:55 729
  ``fmt/xchar.h`` from ``fmt/format.h`` but this will be disabled in the next
f8deb5b9 Poul Sander 2022-01-15 13:55 730
  major release.
f8deb5b9 Poul Sander 2022-01-15 13:55 731
f8deb5b9 Poul Sander 2022-01-15 13:55 732
* Fixed handling of the ``'+'`` specifier in localized formatting
f8deb5b9 Poul Sander 2022-01-15 13:55 733
  (`#2133 <https://github.com/fmtlib/fmt/issues/2133>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 734
f8deb5b9 Poul Sander 2022-01-15 13:55 735
* Added support for the ``'s'`` format specifier that gives textual
f8deb5b9 Poul Sander 2022-01-15 13:55 736
  representation of ``bool``
f8deb5b9 Poul Sander 2022-01-15 13:55 737
  (`#2094 <https://github.com/fmtlib/fmt/issues/2094>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 738
  `#2109 <https://github.com/fmtlib/fmt/pull/2109>`_). For example:
f8deb5b9 Poul Sander 2022-01-15 13:55 739
f8deb5b9 Poul Sander 2022-01-15 13:55 740
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 741
f8deb5b9 Poul Sander 2022-01-15 13:55 742
     #include <fmt/core.h>
f8deb5b9 Poul Sander 2022-01-15 13:55 743
f8deb5b9 Poul Sander 2022-01-15 13:55 744
     int main() {
f8deb5b9 Poul Sander 2022-01-15 13:55 745
       fmt::print("{:s}", true);
f8deb5b9 Poul Sander 2022-01-15 13:55 746
     }
f8deb5b9 Poul Sander 2022-01-15 13:55 747
f8deb5b9 Poul Sander 2022-01-15 13:55 748
  prints "true".
f8deb5b9 Poul Sander 2022-01-15 13:55 749
  Thanks `@powercoderlol (Ivan Polyakov) <https://github.com/powercoderlol>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 750
f8deb5b9 Poul Sander 2022-01-15 13:55 751
* Made ``fmt::ptr`` work with function pointers
f8deb5b9 Poul Sander 2022-01-15 13:55 752
  (`#2131 <https://github.com/fmtlib/fmt/pull/2131>`_). For example:
f8deb5b9 Poul Sander 2022-01-15 13:55 753
f8deb5b9 Poul Sander 2022-01-15 13:55 754
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 755
f8deb5b9 Poul Sander 2022-01-15 13:55 756
     #include <fmt/format.h>
f8deb5b9 Poul Sander 2022-01-15 13:55 757
f8deb5b9 Poul Sander 2022-01-15 13:55 758
     int main() {
f8deb5b9 Poul Sander 2022-01-15 13:55 759
       fmt::print("My main: {}\n", fmt::ptr(main));
f8deb5b9 Poul Sander 2022-01-15 13:55 760
     }
f8deb5b9 Poul Sander 2022-01-15 13:55 761
f8deb5b9 Poul Sander 2022-01-15 13:55 762
  Thanks `@mikecrowe (Mike Crowe) <https://github.com/mikecrowe>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 763
f8deb5b9 Poul Sander 2022-01-15 13:55 764
* The undocumented support for specializing ``formatter`` for pointer types
f8deb5b9 Poul Sander 2022-01-15 13:55 765
  has been removed.
f8deb5b9 Poul Sander 2022-01-15 13:55 766
f8deb5b9 Poul Sander 2022-01-15 13:55 767
* Fixed ``fmt::formatted_size`` with format string compilation
f8deb5b9 Poul Sander 2022-01-15 13:55 768
  (`#2141 <https://github.com/fmtlib/fmt/pull/2141>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 769
  `#2161 <https://github.com/fmtlib/fmt/pull/2161>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 770
  Thanks `@alexezeder (Alexey Ochapov) <https://github.com/alexezeder>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 771
f8deb5b9 Poul Sander 2022-01-15 13:55 772
* Fixed handling of empty format strings during format string compilation
f8deb5b9 Poul Sander 2022-01-15 13:55 773
  (`#2042 <https://github.com/fmtlib/fmt/issues/2042>`_):
f8deb5b9 Poul Sander 2022-01-15 13:55 774
f8deb5b9 Poul Sander 2022-01-15 13:55 775
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 776
f8deb5b9 Poul Sander 2022-01-15 13:55 777
     auto s = fmt::format(FMT_COMPILE(""));
f8deb5b9 Poul Sander 2022-01-15 13:55 778
f8deb5b9 Poul Sander 2022-01-15 13:55 779
  Thanks `@alexezeder (Alexey Ochapov) <https://github.com/alexezeder>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 780
f8deb5b9 Poul Sander 2022-01-15 13:55 781
* Fixed handling of enums in ``fmt::to_string``
f8deb5b9 Poul Sander 2022-01-15 13:55 782
  (`#2036 <https://github.com/fmtlib/fmt/issues/2036>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 783
f8deb5b9 Poul Sander 2022-01-15 13:55 784
* Improved width computation
f8deb5b9 Poul Sander 2022-01-15 13:55 785
  (`#2033 <https://github.com/fmtlib/fmt/issues/2033>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 786
  `#2091 <https://github.com/fmtlib/fmt/issues/2091>`_). For example:
f8deb5b9 Poul Sander 2022-01-15 13:55 787
f8deb5b9 Poul Sander 2022-01-15 13:55 788
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 789
f8deb5b9 Poul Sander 2022-01-15 13:55 790
     #include <fmt/core.h>
f8deb5b9 Poul Sander 2022-01-15 13:55 791
f8deb5b9 Poul Sander 2022-01-15 13:55 792
     int main() {
f8deb5b9 Poul Sander 2022-01-15 13:55 793
       fmt::print("{:-<10}{}\n", "你好", "世界");
f8deb5b9 Poul Sander 2022-01-15 13:55 794
       fmt::print("{:-<10}{}\n", "hello", "world");
f8deb5b9 Poul Sander 2022-01-15 13:55 795
     }
f8deb5b9 Poul Sander 2022-01-15 13:55 796
f8deb5b9 Poul Sander 2022-01-15 13:55 797
  prints
f8deb5b9 Poul Sander 2022-01-15 13:55 798
f8deb5b9 Poul Sander 2022-01-15 13:55 799
  .. image:: https://user-images.githubusercontent.com/576385/
f8deb5b9 Poul Sander 2022-01-15 13:55 800
             119840373-cea3ca80-beb9-11eb-91e0-54266c48e181.png
f8deb5b9 Poul Sander 2022-01-15 13:55 801
f8deb5b9 Poul Sander 2022-01-15 13:55 802
  on a modern terminal.
f8deb5b9 Poul Sander 2022-01-15 13:55 803
f8deb5b9 Poul Sander 2022-01-15 13:55 804
* The experimental fast output stream (``fmt::ostream``) is now truncated by
f8deb5b9 Poul Sander 2022-01-15 13:55 805
  default for consistency with ``fopen``
f8deb5b9 Poul Sander 2022-01-15 13:55 806
  (`#2018 <https://github.com/fmtlib/fmt/issues/2018>`_). For example:
f8deb5b9 Poul Sander 2022-01-15 13:55 807
f8deb5b9 Poul Sander 2022-01-15 13:55 808
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 809
f8deb5b9 Poul Sander 2022-01-15 13:55 810
     #include <fmt/os.h>
f8deb5b9 Poul Sander 2022-01-15 13:55 811
f8deb5b9 Poul Sander 2022-01-15 13:55 812
     int main() {
f8deb5b9 Poul Sander 2022-01-15 13:55 813
       fmt::ostream out1 = fmt::output_file("guide");
f8deb5b9 Poul Sander 2022-01-15 13:55 814
       out1.print("Zaphod");
f8deb5b9 Poul Sander 2022-01-15 13:55 815
       out1.close();
f8deb5b9 Poul Sander 2022-01-15 13:55 816
       fmt::ostream out2 = fmt::output_file("guide");
f8deb5b9 Poul Sander 2022-01-15 13:55 817
       out2.print("Ford");
f8deb5b9 Poul Sander 2022-01-15 13:55 818
     }
f8deb5b9 Poul Sander 2022-01-15 13:55 819
f8deb5b9 Poul Sander 2022-01-15 13:55 820
  writes "Ford" to the file "guide". To preserve the old file content if any
f8deb5b9 Poul Sander 2022-01-15 13:55 821
  pass ``fmt::file::WRONLY | fmt::file::CREATE`` flags to ``fmt::output_file``.
f8deb5b9 Poul Sander 2022-01-15 13:55 822
f8deb5b9 Poul Sander 2022-01-15 13:55 823
* Fixed moving of ``fmt::ostream`` that holds buffered data
f8deb5b9 Poul Sander 2022-01-15 13:55 824
  (`#2197 <https://github.com/fmtlib/fmt/issues/2197>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 825
  `#2198 <https://github.com/fmtlib/fmt/pull/2198>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 826
  Thanks `@vtta <https://github.com/vtta>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 827
f8deb5b9 Poul Sander 2022-01-15 13:55 828
* Replaced the ``fmt::system_error`` exception with a function of the same
f8deb5b9 Poul Sander 2022-01-15 13:55 829
  name that constructs ``std::system_error``
f8deb5b9 Poul Sander 2022-01-15 13:55 830
  (`#2266 <https://github.com/fmtlib/fmt/issues/2266>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 831
f8deb5b9 Poul Sander 2022-01-15 13:55 832
* Replaced the ``fmt::windows_error`` exception with a function of the same
f8deb5b9 Poul Sander 2022-01-15 13:55 833
  name that constructs ``std::system_error`` with the category returned by
f8deb5b9 Poul Sander 2022-01-15 13:55 834
  ``fmt::system_category()``
f8deb5b9 Poul Sander 2022-01-15 13:55 835
  (`#2274 <https://github.com/fmtlib/fmt/issues/2274>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 836
  `#2275 <https://github.com/fmtlib/fmt/pull/2275>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 837
  The latter is similar to ``std::sytem_category`` but correctly handles UTF-8.
f8deb5b9 Poul Sander 2022-01-15 13:55 838
  Thanks `@phprus (Vladislav Shchapov) <https://github.com/phprus>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 839
f8deb5b9 Poul Sander 2022-01-15 13:55 840
* Replaced ``fmt::error_code`` with ``std::error_code`` and made it formattable
f8deb5b9 Poul Sander 2022-01-15 13:55 841
  (`#2269 <https://github.com/fmtlib/fmt/issues/2269>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 842
  `#2270 <https://github.com/fmtlib/fmt/pull/2270>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 843
  `#2273 <https://github.com/fmtlib/fmt/pull/2273>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 844
  Thanks `@phprus (Vladislav Shchapov) <https://github.com/phprus>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 845
 
f8deb5b9 Poul Sander 2022-01-15 13:55 846
* Added speech synthesis support
f8deb5b9 Poul Sander 2022-01-15 13:55 847
  (`#2206 <https://github.com/fmtlib/fmt/pull/2206>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 848
f8deb5b9 Poul Sander 2022-01-15 13:55 849
* Made ``format_to`` work with a memory buffer that has a custom allocator
f8deb5b9 Poul Sander 2022-01-15 13:55 850
  (`#2300 <https://github.com/fmtlib/fmt/pull/2300>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 851
  Thanks `@voxmea <https://github.com/voxmea>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 852
f8deb5b9 Poul Sander 2022-01-15 13:55 853
* Added ``Allocator::max_size`` support to ``basic_memory_buffer``.
f8deb5b9 Poul Sander 2022-01-15 13:55 854
  (`#1960 <https://github.com/fmtlib/fmt/pull/1960>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 855
  Thanks `@phprus (Vladislav Shchapov) <https://github.com/phprus>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 856
f8deb5b9 Poul Sander 2022-01-15 13:55 857
* Added wide string support to ``fmt::join``
f8deb5b9 Poul Sander 2022-01-15 13:55 858
  (`#2236 <https://github.com/fmtlib/fmt/pull/2236>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 859
  Thanks `@crbrz <https://github.com/crbrz>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 860
f8deb5b9 Poul Sander 2022-01-15 13:55 861
* Made iterators passed to ``formatter`` specializations via a format context
f8deb5b9 Poul Sander 2022-01-15 13:55 862
  satisfy C++20 ``std::output_iterator`` requirements
f8deb5b9 Poul Sander 2022-01-15 13:55 863
  (`#2156 <https://github.com/fmtlib/fmt/issues/2156>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 864
  `#2158 <https://github.com/fmtlib/fmt/pull/2158>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 865
  `#2195 <https://github.com/fmtlib/fmt/issues/2195>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 866
  `#2204 <https://github.com/fmtlib/fmt/pull/2204>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 867
  Thanks `@randomnetcat (Jason Cobb) <https://github.com/randomnetcat>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 868
f8deb5b9 Poul Sander 2022-01-15 13:55 869
* Optimized the ``printf`` implementation
f8deb5b9 Poul Sander 2022-01-15 13:55 870
  (`#1982 <https://github.com/fmtlib/fmt/pull/1982>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 871
  `#1984 <https://github.com/fmtlib/fmt/pull/1984>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 872
  `#2016 <https://github.com/fmtlib/fmt/pull/2016>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 873
  `#2164 <https://github.com/fmtlib/fmt/pull/2164>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 874
  Thanks `@rimathia <https://github.com/rimathia>`_ and
f8deb5b9 Poul Sander 2022-01-15 13:55 875
  `@moiwi <https://github.com/moiwi>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 876
f8deb5b9 Poul Sander 2022-01-15 13:55 877
* Improved detection of ``constexpr`` ``char_traits``
f8deb5b9 Poul Sander 2022-01-15 13:55 878
  (`#2246 <https://github.com/fmtlib/fmt/pull/2246>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 879
  `#2257 <https://github.com/fmtlib/fmt/pull/2257>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 880
  Thanks `@phprus (Vladislav Shchapov) <https://github.com/phprus>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 881
f8deb5b9 Poul Sander 2022-01-15 13:55 882
* Fixed writing to ``stdout`` when it is redirected to ``NUL`` on Windows
f8deb5b9 Poul Sander 2022-01-15 13:55 883
  (`#2080 <https://github.com/fmtlib/fmt/issues/2080>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 884
f8deb5b9 Poul Sander 2022-01-15 13:55 885
* Fixed exception propagation from iterators
f8deb5b9 Poul Sander 2022-01-15 13:55 886
  (`#2097 <https://github.com/fmtlib/fmt/issues/2097>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 887
  
f8deb5b9 Poul Sander 2022-01-15 13:55 888
* Improved ``strftime`` error handling 
f8deb5b9 Poul Sander 2022-01-15 13:55 889
  (`#2238 <https://github.com/fmtlib/fmt/issues/2238>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 890
  `#2244 <https://github.com/fmtlib/fmt/pull/2244>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 891
  Thanks `@yumeyao <https://github.com/yumeyao>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 892
f8deb5b9 Poul Sander 2022-01-15 13:55 893
* Stopped using deprecated GCC UDL template extension.
f8deb5b9 Poul Sander 2022-01-15 13:55 894
f8deb5b9 Poul Sander 2022-01-15 13:55 895
* Added ``fmt/args.h`` to the install target
f8deb5b9 Poul Sander 2022-01-15 13:55 896
  (`#2096 <https://github.com/fmtlib/fmt/issues/2096>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 897
f8deb5b9 Poul Sander 2022-01-15 13:55 898
* Error messages are now passed to assert when exceptions are disabled
f8deb5b9 Poul Sander 2022-01-15 13:55 899
  (`#2145 <https://github.com/fmtlib/fmt/pull/2145>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 900
  Thanks `@NobodyXu (Jiahao XU) <https://github.com/NobodyXu>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 901
f8deb5b9 Poul Sander 2022-01-15 13:55 902
* Added the ``FMT_MASTER_PROJECT`` CMake option to control build and install
f8deb5b9 Poul Sander 2022-01-15 13:55 903
  targets when {fmt} is included via ``add_subdirectory``
f8deb5b9 Poul Sander 2022-01-15 13:55 904
  (`#2098 <https://github.com/fmtlib/fmt/issues/2098>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 905
  `#2100 <https://github.com/fmtlib/fmt/pull/2100>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 906
  Thanks `@randomizedthinking <https://github.com/randomizedthinking>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 907
f8deb5b9 Poul Sander 2022-01-15 13:55 908
* Improved build configuration
f8deb5b9 Poul Sander 2022-01-15 13:55 909
  (`#2026 <https://github.com/fmtlib/fmt/pull/2026>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 910
  `#2122 <https://github.com/fmtlib/fmt/pull/2122>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 911
  Thanks `@luncliff (Park DongHa) <https://github.com/luncliff>`_ and
f8deb5b9 Poul Sander 2022-01-15 13:55 912
  `@ibaned (Dan Ibanez) <https://github.com/ibaned>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 913
f8deb5b9 Poul Sander 2022-01-15 13:55 914
* Fixed various warnings and compilation issues
f8deb5b9 Poul Sander 2022-01-15 13:55 915
  (`#1947 <https://github.com/fmtlib/fmt/issues/1947>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 916
  `#1959 <https://github.com/fmtlib/fmt/pull/1959>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 917
  `#1963 <https://github.com/fmtlib/fmt/pull/1963>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 918
  `#1965 <https://github.com/fmtlib/fmt/pull/1965>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 919
  `#1966 <https://github.com/fmtlib/fmt/issues/1966>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 920
  `#1974 <https://github.com/fmtlib/fmt/pull/1974>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 921
  `#1975 <https://github.com/fmtlib/fmt/pull/1975>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 922
  `#1990 <https://github.com/fmtlib/fmt/pull/1990>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 923
  `#2000 <https://github.com/fmtlib/fmt/issues/2000>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 924
  `#2001 <https://github.com/fmtlib/fmt/pull/2001>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 925
  `#2002 <https://github.com/fmtlib/fmt/issues/2002>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 926
  `#2004 <https://github.com/fmtlib/fmt/issues/2004>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 927
  `#2006 <https://github.com/fmtlib/fmt/pull/2006>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 928
  `#2009 <https://github.com/fmtlib/fmt/pull/2009>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 929
  `#2010 <https://github.com/fmtlib/fmt/pull/2010>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 930
  `#2038 <https://github.com/fmtlib/fmt/issues/2038>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 931
  `#2039 <https://github.com/fmtlib/fmt/issues/2039>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 932
  `#2047 <https://github.com/fmtlib/fmt/issues/2047>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 933
  `#2053 <https://github.com/fmtlib/fmt/pull/2053>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 934
  `#2059 <https://github.com/fmtlib/fmt/issues/2059>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 935
  `#2065 <https://github.com/fmtlib/fmt/pull/2065>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 936
  `#2067 <https://github.com/fmtlib/fmt/pull/2067>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 937
  `#2068 <https://github.com/fmtlib/fmt/pull/2068>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 938
  `#2073 <https://github.com/fmtlib/fmt/pull/2073>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 939
  `#2103 <https://github.com/fmtlib/fmt/issues/2103>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 940
  `#2105 <https://github.com/fmtlib/fmt/issues/2105>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 941
  `#2106 <https://github.com/fmtlib/fmt/pull/2106>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 942
  `#2107 <https://github.com/fmtlib/fmt/pull/2107>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 943
  `#2116 <https://github.com/fmtlib/fmt/issues/2116>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 944
  `#2117 <https://github.com/fmtlib/fmt/pull/2117>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 945
  `#2118 <https://github.com/fmtlib/fmt/issues/2118>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 946
  `#2119 <https://github.com/fmtlib/fmt/pull/2119>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 947
  `#2127 <https://github.com/fmtlib/fmt/issues/2127>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 948
  `#2128 <https://github.com/fmtlib/fmt/pull/2128>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 949
  `#2140 <https://github.com/fmtlib/fmt/issues/2140>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 950
  `#2142 <https://github.com/fmtlib/fmt/issues/2142>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 951
  `#2143 <https://github.com/fmtlib/fmt/pull/2143>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 952
  `#2144 <https://github.com/fmtlib/fmt/pull/2144>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 953
  `#2147 <https://github.com/fmtlib/fmt/issues/2147>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 954
  `#2148 <https://github.com/fmtlib/fmt/issues/2148>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 955
  `#2149 <https://github.com/fmtlib/fmt/issues/2149>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 956
  `#2152 <https://github.com/fmtlib/fmt/pull/2152>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 957
  `#2160 <https://github.com/fmtlib/fmt/pull/2160>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 958
  `#2170 <https://github.com/fmtlib/fmt/issues/2170>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 959
  `#2175 <https://github.com/fmtlib/fmt/issues/2175>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 960
  `#2176 <https://github.com/fmtlib/fmt/issues/2176>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 961
  `#2177 <https://github.com/fmtlib/fmt/pull/2177>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 962
  `#2178 <https://github.com/fmtlib/fmt/issues/2178>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 963
  `#2179 <https://github.com/fmtlib/fmt/pull/2179>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 964
  `#2180 <https://github.com/fmtlib/fmt/issues/2180>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 965
  `#2181 <https://github.com/fmtlib/fmt/issues/2181>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 966
  `#2183 <https://github.com/fmtlib/fmt/pull/2183>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 967
  `#2184 <https://github.com/fmtlib/fmt/issues/2184>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 968
  `#2185 <https://github.com/fmtlib/fmt/issues/2185>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 969
  `#2186 <https://github.com/fmtlib/fmt/pull/2186>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 970
  `#2187 <https://github.com/fmtlib/fmt/pull/2187>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 971
  `#2190 <https://github.com/fmtlib/fmt/pull/2190>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 972
  `#2192 <https://github.com/fmtlib/fmt/pull/2192>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 973
  `#2194 <https://github.com/fmtlib/fmt/pull/2194>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 974
  `#2205 <https://github.com/fmtlib/fmt/pull/2205>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 975
  `#2210 <https://github.com/fmtlib/fmt/issues/2210>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 976
  `#2211 <https://github.com/fmtlib/fmt/pull/2211>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 977
  `#2215 <https://github.com/fmtlib/fmt/pull/2215>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 978
  `#2216 <https://github.com/fmtlib/fmt/pull/2216>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 979
  `#2218 <https://github.com/fmtlib/fmt/pull/2218>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 980
  `#2220 <https://github.com/fmtlib/fmt/pull/2220>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 981
  `#2228 <https://github.com/fmtlib/fmt/issues/2228>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 982
  `#2229 <https://github.com/fmtlib/fmt/pull/2229>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 983
  `#2230 <https://github.com/fmtlib/fmt/pull/2230>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 984
  `#2233 <https://github.com/fmtlib/fmt/issues/2233>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 985
  `#2239 <https://github.com/fmtlib/fmt/pull/2239>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 986
  `#2248 <https://github.com/fmtlib/fmt/issues/2248>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 987
  `#2252 <https://github.com/fmtlib/fmt/issues/2252>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 988
  `#2253 <https://github.com/fmtlib/fmt/pull/2253>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 989
  `#2255 <https://github.com/fmtlib/fmt/pull/2255>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 990
  `#2261 <https://github.com/fmtlib/fmt/issues/2261>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 991
  `#2278 <https://github.com/fmtlib/fmt/issues/2278>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 992
  `#2284 <https://github.com/fmtlib/fmt/issues/2284>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 993
  `#2287 <https://github.com/fmtlib/fmt/pull/2287>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 994
  `#2289 <https://github.com/fmtlib/fmt/pull/2289>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 995
  `#2290 <https://github.com/fmtlib/fmt/pull/2290>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 996
  `#2293 <https://github.com/fmtlib/fmt/pull/2293>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 997
  `#2295 <https://github.com/fmtlib/fmt/issues/2295>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 998
  `#2296 <https://github.com/fmtlib/fmt/pull/2296>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 999
  `#2297 <https://github.com/fmtlib/fmt/pull/2297>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1000
  `#2311 <https://github.com/fmtlib/fmt/issues/2311>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1001
  `#2313 <https://github.com/fmtlib/fmt/pull/2313>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1002
  `#2315 <https://github.com/fmtlib/fmt/pull/2315>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1003
  `#2320 <https://github.com/fmtlib/fmt/issues/2320>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1004
  `#2321 <https://github.com/fmtlib/fmt/pull/2321>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1005
  `#2323 <https://github.com/fmtlib/fmt/pull/2323>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1006
  `#2328 <https://github.com/fmtlib/fmt/issues/2328>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1007
  `#2329 <https://github.com/fmtlib/fmt/pull/2329>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1008
  `#2333 <https://github.com/fmtlib/fmt/pull/2333>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1009
  `#2338 <https://github.com/fmtlib/fmt/pull/2338>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1010
  `#2341 <https://github.com/fmtlib/fmt/pull/2341>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1011
  Thanks `@darklukee <https://github.com/darklukee>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1012
  `@fagg (Ashton Fagg) <https://github.com/fagg>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1013
  `@killerbot242 (Lieven de Cock) <https://github.com/killerbot242>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1014
  `@jgopel (Jonathan Gopel) <https://github.com/jgopel>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1015
  `@yeswalrus (Walter Gray) <https://github.com/yeswalrus>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1016
  `@Finkman <https://github.com/Finkman>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1017
  `@HazardyKnusperkeks (Björn Schäpers) <https://github.com/HazardyKnusperkeks>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1018
  `@dkavolis (Daumantas Kavolis) <https://github.com/dkavolis>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1019
  `@concatime (Issam Maghni) <https://github.com/concatime>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1020
  `@chronoxor (Ivan Shynkarenka) <https://github.com/chronoxor>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1021
  `@summivox (Yin Zhong) <https://github.com/summivox>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1022
  `@yNeo <https://github.com/yNeo>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1023
  `@Apache-HB (Elliot) <https://github.com/Apache-HB>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1024
  `@alexezeder (Alexey Ochapov) <https://github.com/alexezeder>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1025
  `@toojays (John Steele Scott) <https://github.com/toojays>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1026
  `@Brainy0207 <https://github.com/Brainy0207>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1027
  `@vadz (VZ) <https://github.com/vadz>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1028
  `@imsherlock (Ryan Sherlock) <https://github.com/imsherlock>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1029
  `@phprus (Vladislav Shchapov) <https://github.com/phprus>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1030
  `@white238 (Chris White) <https://github.com/white238>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1031
  `@yafshar (Yaser Afshar) <https://github.com/yafshar>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1032
  `@BillyDonahue (Billy Donahue) <https://github.com/BillyDonahue>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1033
  `@jstaahl <https://github.com/jstaahl>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1034
  `@denchat <https://github.com/denchat>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1035
  `@DanielaE (Daniela Engert) <https://github.com/DanielaE>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1036
  `@ilyakurdyukov (Ilya Kurdyukov) <https://github.com/ilyakurdyukov>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1037
  `@ilmai <https://github.com/ilmai>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1038
  `@JessyDL (Jessy De Lannoit) <https://github.com/JessyDL>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1039
  `@sergiud (Sergiu Deitsch) <https://github.com/sergiud>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1040
  `@mwinterb <https://github.com/mwinterb>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1041
  `@sven-herrmann <https://github.com/sven-herrmann>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1042
  `@jmelas (John Melas) <https://github.com/jmelas>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1043
  `@twoixter (Jose Miguel Pérez) <https://github.com/twoixter>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1044
  `@crbrz <https://github.com/crbrz>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1045
  `@upsj (Tobias Ribizel) <https://github.com/upsj>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 1046
f8deb5b9 Poul Sander 2022-01-15 13:55 1047
* Improved documentation
f8deb5b9 Poul Sander 2022-01-15 13:55 1048
  (`#1986 <https://github.com/fmtlib/fmt/issues/1986>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1049
  `#2051 <https://github.com/fmtlib/fmt/pull/2051>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1050
  `#2057 <https://github.com/fmtlib/fmt/issues/2057>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1051
  `#2081 <https://github.com/fmtlib/fmt/pull/2081>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1052
  `#2084 <https://github.com/fmtlib/fmt/issues/2084>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1053
  `#2312 <https://github.com/fmtlib/fmt/pull/2312>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1054
  Thanks `@imba-tjd (谭九鼎) <https://github.com/imba-tjd>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1055
  `@0x416c69 (AlιAѕѕaѕѕιN) <https://github.com/0x416c69>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1056
  `@mordante <https://github.com/mordante>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 1057
f8deb5b9 Poul Sander 2022-01-15 13:55 1058
* Continuous integration and test improvements
f8deb5b9 Poul Sander 2022-01-15 13:55 1059
  (`#1969 <https://github.com/fmtlib/fmt/issues/1969>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1060
  `#1991 <https://github.com/fmtlib/fmt/pull/1991>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1061
  `#2020 <https://github.com/fmtlib/fmt/pull/2020>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1062
  `#2110 <https://github.com/fmtlib/fmt/pull/2110>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1063
  `#2114 <https://github.com/fmtlib/fmt/pull/2114>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1064
  `#2196 <https://github.com/fmtlib/fmt/issues/2196>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1065
  `#2217 <https://github.com/fmtlib/fmt/pull/2217>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1066
  `#2247 <https://github.com/fmtlib/fmt/pull/2247>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1067
  `#2256 <https://github.com/fmtlib/fmt/pull/2256>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1068
  `#2336 <https://github.com/fmtlib/fmt/pull/2336>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1069
  `#2346 <https://github.com/fmtlib/fmt/pull/2346>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1070
  Thanks `@jgopel (Jonathan Gopel) <https://github.com/jgopel>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1071
  `@alexezeder (Alexey Ochapov) <https://github.com/alexezeder>`_ and
f8deb5b9 Poul Sander 2022-01-15 13:55 1072
  `@DanielaE (Daniela Engert) <https://github.com/DanielaE>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 1073
  
f8deb5b9 Poul Sander 2022-01-15 13:55 1074
7.1.3 - 2020-11-24
f8deb5b9 Poul Sander 2022-01-15 13:55 1075
------------------
f8deb5b9 Poul Sander 2022-01-15 13:55 1076
f8deb5b9 Poul Sander 2022-01-15 13:55 1077
* Fixed handling of buffer boundaries in ``format_to_n``
f8deb5b9 Poul Sander 2022-01-15 13:55 1078
  (`#1996 <https://github.com/fmtlib/fmt/issues/1996>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1079
  `#2029 <https://github.com/fmtlib/fmt/issues/2029>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1080
f8deb5b9 Poul Sander 2022-01-15 13:55 1081
* Fixed linkage errors when linking with a shared library
f8deb5b9 Poul Sander 2022-01-15 13:55 1082
  (`#2011 <https://github.com/fmtlib/fmt/issues/2011>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1083
f8deb5b9 Poul Sander 2022-01-15 13:55 1084
* Reintroduced ostream support to range formatters
f8deb5b9 Poul Sander 2022-01-15 13:55 1085
  (`#2014 <https://github.com/fmtlib/fmt/issues/2014>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1086
f8deb5b9 Poul Sander 2022-01-15 13:55 1087
* Worked around an issue with mixing std versions in gcc
f8deb5b9 Poul Sander 2022-01-15 13:55 1088
  (`#2017 <https://github.com/fmtlib/fmt/issues/2017>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1089
f8deb5b9 Poul Sander 2022-01-15 13:55 1090
7.1.2 - 2020-11-04
f8deb5b9 Poul Sander 2022-01-15 13:55 1091
------------------
f8deb5b9 Poul Sander 2022-01-15 13:55 1092
f8deb5b9 Poul Sander 2022-01-15 13:55 1093
* Fixed floating point formatting with large precision
f8deb5b9 Poul Sander 2022-01-15 13:55 1094
  (`#1976 <https://github.com/fmtlib/fmt/issues/1976>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1095
f8deb5b9 Poul Sander 2022-01-15 13:55 1096
7.1.1 - 2020-11-01
f8deb5b9 Poul Sander 2022-01-15 13:55 1097
------------------
f8deb5b9 Poul Sander 2022-01-15 13:55 1098
f8deb5b9 Poul Sander 2022-01-15 13:55 1099
* Fixed ABI compatibility with 7.0.x
f8deb5b9 Poul Sander 2022-01-15 13:55 1100
  (`#1961 <https://github.com/fmtlib/fmt/issues/1961>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1101
f8deb5b9 Poul Sander 2022-01-15 13:55 1102
* Added the ``FMT_ARM_ABI_COMPATIBILITY`` macro to work around ABI
f8deb5b9 Poul Sander 2022-01-15 13:55 1103
  incompatibility between GCC and Clang on ARM
f8deb5b9 Poul Sander 2022-01-15 13:55 1104
  (`#1919 <https://github.com/fmtlib/fmt/issues/1919>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1105
f8deb5b9 Poul Sander 2022-01-15 13:55 1106
* Worked around a SFINAE bug in GCC 8
f8deb5b9 Poul Sander 2022-01-15 13:55 1107
  (`#1957 <https://github.com/fmtlib/fmt/issues/1957>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1108
f8deb5b9 Poul Sander 2022-01-15 13:55 1109
* Fixed linkage errors when building with GCC's LTO
f8deb5b9 Poul Sander 2022-01-15 13:55 1110
  (`#1955 <https://github.com/fmtlib/fmt/issues/1955>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1111
f8deb5b9 Poul Sander 2022-01-15 13:55 1112
* Fixed a compilation error when building without ``__builtin_clz`` or equivalent
f8deb5b9 Poul Sander 2022-01-15 13:55 1113
  (`#1968 <https://github.com/fmtlib/fmt/pull/1968>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1114
  Thanks `@tohammer (Tobias Hammer) <https://github.com/tohammer>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 1115
f8deb5b9 Poul Sander 2022-01-15 13:55 1116
* Fixed a sign conversion warning
f8deb5b9 Poul Sander 2022-01-15 13:55 1117
  (`#1964 <https://github.com/fmtlib/fmt/pull/1964>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1118
  Thanks `@OptoCloud <https://github.com/OptoCloud>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 1119
f8deb5b9 Poul Sander 2022-01-15 13:55 1120
7.1.0 - 2020-10-25
f8deb5b9 Poul Sander 2022-01-15 13:55 1121
------------------
f8deb5b9 Poul Sander 2022-01-15 13:55 1122
f8deb5b9 Poul Sander 2022-01-15 13:55 1123
* Switched from `Grisu3
f8deb5b9 Poul Sander 2022-01-15 13:55 1124
  <https://www.cs.tufts.edu/~nr/cs257/archive/florian-loitsch/printf.pdf>`_
f8deb5b9 Poul Sander 2022-01-15 13:55 1125
  to `Dragonbox <https://github.com/jk-jeon/dragonbox>`_ for the default
f8deb5b9 Poul Sander 2022-01-15 13:55 1126
  floating-point formatting which gives the shortest decimal representation
f8deb5b9 Poul Sander 2022-01-15 13:55 1127
  with round-trip guarantee and correct rounding
f8deb5b9 Poul Sander 2022-01-15 13:55 1128
  (`#1882 <https://github.com/fmtlib/fmt/pull/1882>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1129
  `#1887 <https://github.com/fmtlib/fmt/pull/1887>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1130
  `#1894 <https://github.com/fmtlib/fmt/pull/1894>`_). This makes {fmt} up to
f8deb5b9 Poul Sander 2022-01-15 13:55 1131
  20-30x faster than common implementations of ``std::ostringstream`` and
f8deb5b9 Poul Sander 2022-01-15 13:55 1132
  ``sprintf`` on `dtoa-benchmark <https://github.com/fmtlib/dtoa-benchmark>`_
f8deb5b9 Poul Sander 2022-01-15 13:55 1133
  and faster than double-conversion and Ryū:
f8deb5b9 Poul Sander 2022-01-15 13:55 1134
f8deb5b9 Poul Sander 2022-01-15 13:55 1135
  .. image:: https://user-images.githubusercontent.com/576385/
f8deb5b9 Poul Sander 2022-01-15 13:55 1136
             95684665-11719600-0ba8-11eb-8e5b-972ff4e49428.png
f8deb5b9 Poul Sander 2022-01-15 13:55 1137
f8deb5b9 Poul Sander 2022-01-15 13:55 1138
  It is possible to get even better performance at the cost of larger binary
f8deb5b9 Poul Sander 2022-01-15 13:55 1139
  size by compiling with the ``FMT_USE_FULL_CACHE_DRAGONBOX`` macro set to 1.
f8deb5b9 Poul Sander 2022-01-15 13:55 1140
f8deb5b9 Poul Sander 2022-01-15 13:55 1141
  Thanks `@jk-jeon (Junekey Jeon) <https://github.com/jk-jeon>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 1142
f8deb5b9 Poul Sander 2022-01-15 13:55 1143
* Added an experimental unsynchronized file output API which, together with
f8deb5b9 Poul Sander 2022-01-15 13:55 1144
  `format string compilation <https://fmt.dev/latest/api.html#compile-api>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1145
  can give `5-9 times speed up compared to fprintf
f8deb5b9 Poul Sander 2022-01-15 13:55 1146
  <https://www.zverovich.net/2020/08/04/optimal-file-buffer-size.html>`_
f8deb5b9 Poul Sander 2022-01-15 13:55 1147
  on common platforms (`godbolt <https://godbolt.org/z/nsTcG8>`__):
f8deb5b9 Poul Sander 2022-01-15 13:55 1148
f8deb5b9 Poul Sander 2022-01-15 13:55 1149
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 1150
f8deb5b9 Poul Sander 2022-01-15 13:55 1151
     #include <fmt/os.h>
f8deb5b9 Poul Sander 2022-01-15 13:55 1152
f8deb5b9 Poul Sander 2022-01-15 13:55 1153
     int main() {
f8deb5b9 Poul Sander 2022-01-15 13:55 1154
       auto f = fmt::output_file("guide");
f8deb5b9 Poul Sander 2022-01-15 13:55 1155
       f.print("The answer is {}.", 42);
f8deb5b9 Poul Sander 2022-01-15 13:55 1156
     }
f8deb5b9 Poul Sander 2022-01-15 13:55 1157
f8deb5b9 Poul Sander 2022-01-15 13:55 1158
* Added a formatter for ``std::chrono::time_point<system_clock>``
f8deb5b9 Poul Sander 2022-01-15 13:55 1159
  (`#1819 <https://github.com/fmtlib/fmt/issues/1819>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1160
  `#1837 <https://github.com/fmtlib/fmt/pull/1837>`_). For example
f8deb5b9 Poul Sander 2022-01-15 13:55 1161
  (`godbolt <https://godbolt.org/z/c4M6fh>`__):
f8deb5b9 Poul Sander 2022-01-15 13:55 1162
f8deb5b9 Poul Sander 2022-01-15 13:55 1163
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 1164
f8deb5b9 Poul Sander 2022-01-15 13:55 1165
     #include <fmt/chrono.h>
f8deb5b9 Poul Sander 2022-01-15 13:55 1166
f8deb5b9 Poul Sander 2022-01-15 13:55 1167
     int main() {
f8deb5b9 Poul Sander 2022-01-15 13:55 1168
       auto now = std::chrono::system_clock::now();
f8deb5b9 Poul Sander 2022-01-15 13:55 1169
       fmt::print("The time is {:%H:%M:%S}.\n", now);
f8deb5b9 Poul Sander 2022-01-15 13:55 1170
     }
f8deb5b9 Poul Sander 2022-01-15 13:55 1171
f8deb5b9 Poul Sander 2022-01-15 13:55 1172
  Thanks `@adamburgess (Adam Burgess) <https://github.com/adamburgess>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 1173
f8deb5b9 Poul Sander 2022-01-15 13:55 1174
* Added support for ranges with non-const ``begin``/``end`` to ``fmt::join``
f8deb5b9 Poul Sander 2022-01-15 13:55 1175
  (`#1784 <https://github.com/fmtlib/fmt/issues/1784>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1176
  `#1786 <https://github.com/fmtlib/fmt/pull/1786>`_). For example
f8deb5b9 Poul Sander 2022-01-15 13:55 1177
  (`godbolt <https://godbolt.org/z/jP63Tv>`__):
f8deb5b9 Poul Sander 2022-01-15 13:55 1178
f8deb5b9 Poul Sander 2022-01-15 13:55 1179
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 1180
f8deb5b9 Poul Sander 2022-01-15 13:55 1181
     #include <fmt/ranges.h>
f8deb5b9 Poul Sander 2022-01-15 13:55 1182
     #include <range/v3/view/filter.hpp>
f8deb5b9 Poul Sander 2022-01-15 13:55 1183
f8deb5b9 Poul Sander 2022-01-15 13:55 1184
     int main() {
f8deb5b9 Poul Sander 2022-01-15 13:55 1185
       using std::literals::string_literals::operator""s;
f8deb5b9 Poul Sander 2022-01-15 13:55 1186
       auto strs = std::array{"a"s, "bb"s, "ccc"s};
f8deb5b9 Poul Sander 2022-01-15 13:55 1187
       auto range = strs | ranges::views::filter(
f8deb5b9 Poul Sander 2022-01-15 13:55 1188
         [] (const std::string &x) { return x.size() != 2; }
f8deb5b9 Poul Sander 2022-01-15 13:55 1189
       );
f8deb5b9 Poul Sander 2022-01-15 13:55 1190
       fmt::print("{}\n", fmt::join(range, ""));
f8deb5b9 Poul Sander 2022-01-15 13:55 1191
     }
f8deb5b9 Poul Sander 2022-01-15 13:55 1192
f8deb5b9 Poul Sander 2022-01-15 13:55 1193
  prints "accc".
f8deb5b9 Poul Sander 2022-01-15 13:55 1194
f8deb5b9 Poul Sander 2022-01-15 13:55 1195
  Thanks `@tonyelewis (Tony E Lewis) <https://github.com/tonyelewis>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 1196
f8deb5b9 Poul Sander 2022-01-15 13:55 1197
* Added a ``memory_buffer::append`` overload that takes a range
f8deb5b9 Poul Sander 2022-01-15 13:55 1198
  (`#1806 <https://github.com/fmtlib/fmt/pull/1806>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1199
  Thanks `@BRevzin (Barry Revzin) <https://github.com/BRevzin>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 1200
f8deb5b9 Poul Sander 2022-01-15 13:55 1201
* Improved handling of single code units in ``FMT_COMPILE``. For example:
f8deb5b9 Poul Sander 2022-01-15 13:55 1202
f8deb5b9 Poul Sander 2022-01-15 13:55 1203
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 1204
f8deb5b9 Poul Sander 2022-01-15 13:55 1205
     #include <fmt/compile.h>
f8deb5b9 Poul Sander 2022-01-15 13:55 1206
f8deb5b9 Poul Sander 2022-01-15 13:55 1207
     char* f(char* buf) {
f8deb5b9 Poul Sander 2022-01-15 13:55 1208
       return fmt::format_to(buf, FMT_COMPILE("x{}"), 42);
f8deb5b9 Poul Sander 2022-01-15 13:55 1209
     }
f8deb5b9 Poul Sander 2022-01-15 13:55 1210
f8deb5b9 Poul Sander 2022-01-15 13:55 1211
  compiles to just (`godbolt <https://godbolt.org/z/5vncz3>`__):
f8deb5b9 Poul Sander 2022-01-15 13:55 1212
f8deb5b9 Poul Sander 2022-01-15 13:55 1213
  .. code:: asm
f8deb5b9 Poul Sander 2022-01-15 13:55 1214
f8deb5b9 Poul Sander 2022-01-15 13:55 1215
     _Z1fPc:
f8deb5b9 Poul Sander 2022-01-15 13:55 1216
       movb $120, (%rdi)
f8deb5b9 Poul Sander 2022-01-15 13:55 1217
       xorl %edx, %edx
f8deb5b9 Poul Sander 2022-01-15 13:55 1218
       cmpl $42, _ZN3fmt2v76detail10basic_dataIvE23zero_or_powers_of_10_32E+8(%rip)
f8deb5b9 Poul Sander 2022-01-15 13:55 1219
       movl $3, %eax
f8deb5b9 Poul Sander 2022-01-15 13:55 1220
       seta %dl
f8deb5b9 Poul Sander 2022-01-15 13:55 1221
       subl %edx, %eax
f8deb5b9 Poul Sander 2022-01-15 13:55 1222
       movzwl _ZN3fmt2v76detail10basic_dataIvE6digitsE+84(%rip), %edx
f8deb5b9 Poul Sander 2022-01-15 13:55 1223
       cltq
f8deb5b9 Poul Sander 2022-01-15 13:55 1224
       addq %rdi, %rax
f8deb5b9 Poul Sander 2022-01-15 13:55 1225
       movw %dx, -2(%rax)
f8deb5b9 Poul Sander 2022-01-15 13:55 1226
       ret
f8deb5b9 Poul Sander 2022-01-15 13:55 1227
f8deb5b9 Poul Sander 2022-01-15 13:55 1228
  Here a single ``mov`` instruction writes ``'x'`` (``$120``) to the output
f8deb5b9 Poul Sander 2022-01-15 13:55 1229
  buffer.
f8deb5b9 Poul Sander 2022-01-15 13:55 1230
f8deb5b9 Poul Sander 2022-01-15 13:55 1231
* Added dynamic width support to format string compilation
f8deb5b9 Poul Sander 2022-01-15 13:55 1232
  (`#1809 <https://github.com/fmtlib/fmt/issues/1809>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1233
f8deb5b9 Poul Sander 2022-01-15 13:55 1234
* Improved error reporting for unformattable types: now you'll get the type name
f8deb5b9 Poul Sander 2022-01-15 13:55 1235
  directly in the error message instead of the note:
f8deb5b9 Poul Sander 2022-01-15 13:55 1236
f8deb5b9 Poul Sander 2022-01-15 13:55 1237
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 1238
f8deb5b9 Poul Sander 2022-01-15 13:55 1239
     #include <fmt/core.h>
f8deb5b9 Poul Sander 2022-01-15 13:55 1240
f8deb5b9 Poul Sander 2022-01-15 13:55 1241
     struct how_about_no {};
f8deb5b9 Poul Sander 2022-01-15 13:55 1242
f8deb5b9 Poul Sander 2022-01-15 13:55 1243
     int main() {
f8deb5b9 Poul Sander 2022-01-15 13:55 1244
       fmt::print("{}", how_about_no());
f8deb5b9 Poul Sander 2022-01-15 13:55 1245
     }
f8deb5b9 Poul Sander 2022-01-15 13:55 1246
f8deb5b9 Poul Sander 2022-01-15 13:55 1247
  Error (`godbolt <https://godbolt.org/z/GoxM4e>`__):
f8deb5b9 Poul Sander 2022-01-15 13:55 1248
f8deb5b9 Poul Sander 2022-01-15 13:55 1249
  ``fmt/core.h:1438:3: error: static_assert failed due to requirement
f8deb5b9 Poul Sander 2022-01-15 13:55 1250
  'fmt::v7::formattable<how_about_no>()' "Cannot format an argument.
f8deb5b9 Poul Sander 2022-01-15 13:55 1251
  To make type T formattable provide a formatter<T> specialization:
f8deb5b9 Poul Sander 2022-01-15 13:55 1252
  https://fmt.dev/latest/api.html#udt"
f8deb5b9 Poul Sander 2022-01-15 13:55 1253
  ...``
f8deb5b9 Poul Sander 2022-01-15 13:55 1254
f8deb5b9 Poul Sander 2022-01-15 13:55 1255
* Added the `make_args_checked <https://fmt.dev/7.1.0/api.html#argument-lists>`_
f8deb5b9 Poul Sander 2022-01-15 13:55 1256
  function template that allows you to write formatting functions with
f8deb5b9 Poul Sander 2022-01-15 13:55 1257
  compile-time format string checks and avoid binary code bloat
f8deb5b9 Poul Sander 2022-01-15 13:55 1258
  (`godbolt <https://godbolt.org/z/PEf9qr>`__):
f8deb5b9 Poul Sander 2022-01-15 13:55 1259
f8deb5b9 Poul Sander 2022-01-15 13:55 1260
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 1261
f8deb5b9 Poul Sander 2022-01-15 13:55 1262
     void vlog(const char* file, int line, fmt::string_view format,
f8deb5b9 Poul Sander 2022-01-15 13:55 1263
               fmt::format_args args) {
f8deb5b9 Poul Sander 2022-01-15 13:55 1264
       fmt::print("{}: {}: ", file, line);
f8deb5b9 Poul Sander 2022-01-15 13:55 1265
       fmt::vprint(format, args);
f8deb5b9 Poul Sander 2022-01-15 13:55 1266
     }
f8deb5b9 Poul Sander 2022-01-15 13:55 1267
f8deb5b9 Poul Sander 2022-01-15 13:55 1268
     template <typename S, typename... Args>
f8deb5b9 Poul Sander 2022-01-15 13:55 1269
     void log(const char* file, int line, const S& format, Args&&... args) {
f8deb5b9 Poul Sander 2022-01-15 13:55 1270
       vlog(file, line, format,
f8deb5b9 Poul Sander 2022-01-15 13:55 1271
           fmt::make_args_checked<Args...>(format, args...));
f8deb5b9 Poul Sander 2022-01-15 13:55 1272
     }
f8deb5b9 Poul Sander 2022-01-15 13:55 1273
f8deb5b9 Poul Sander 2022-01-15 13:55 1274
     #define MY_LOG(format, ...) \
f8deb5b9 Poul Sander 2022-01-15 13:55 1275
       log(__FILE__, __LINE__, FMT_STRING(format), __VA_ARGS__)
f8deb5b9 Poul Sander 2022-01-15 13:55 1276
f8deb5b9 Poul Sander 2022-01-15 13:55 1277
     MY_LOG("invalid squishiness: {}", 42);
f8deb5b9 Poul Sander 2022-01-15 13:55 1278
f8deb5b9 Poul Sander 2022-01-15 13:55 1279
* Replaced ``snprintf`` fallback with a faster internal IEEE 754 ``float`` and
f8deb5b9 Poul Sander 2022-01-15 13:55 1280
  ``double`` formatter for arbitrary precision. For example
f8deb5b9 Poul Sander 2022-01-15 13:55 1281
  (`godbolt <https://godbolt.org/z/dPhWvj>`__):
f8deb5b9 Poul Sander 2022-01-15 13:55 1282
f8deb5b9 Poul Sander 2022-01-15 13:55 1283
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 1284
f8deb5b9 Poul Sander 2022-01-15 13:55 1285
     #include <fmt/core.h>
f8deb5b9 Poul Sander 2022-01-15 13:55 1286
f8deb5b9 Poul Sander 2022-01-15 13:55 1287
     int main() {
f8deb5b9 Poul Sander 2022-01-15 13:55 1288
       fmt::print("{:.500}\n", 4.9406564584124654E-324);
f8deb5b9 Poul Sander 2022-01-15 13:55 1289
     }
f8deb5b9 Poul Sander 2022-01-15 13:55 1290
f8deb5b9 Poul Sander 2022-01-15 13:55 1291
  prints
f8deb5b9 Poul Sander 2022-01-15 13:55 1292
f8deb5b9 Poul Sander 2022-01-15 13:55 1293
  ``4.9406564584124654417656879286822137236505980261432476442558568250067550727020875186529983636163599237979656469544571773092665671035593979639877479601078187812630071319031140452784581716784898210368871863605699873072305000638740915356498438731247339727316961514003171538539807412623856559117102665855668676818703956031062493194527159149245532930545654440112748012970999954193198940908041656332452475714786901472678015935523861155013480352649347201937902681071074917033322268447533357208324319360923829e-324``.
f8deb5b9 Poul Sander 2022-01-15 13:55 1294
f8deb5b9 Poul Sander 2022-01-15 13:55 1295
* Made ``format_to_n`` and ``formatted_size`` part of the `core API
f8deb5b9 Poul Sander 2022-01-15 13:55 1296
  <https://fmt.dev/latest/api.html#core-api>`__
f8deb5b9 Poul Sander 2022-01-15 13:55 1297
  (`godbolt <https://godbolt.org/z/sPjY1K>`__):
f8deb5b9 Poul Sander 2022-01-15 13:55 1298
f8deb5b9 Poul Sander 2022-01-15 13:55 1299
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 1300
f8deb5b9 Poul Sander 2022-01-15 13:55 1301
     #include <fmt/core.h>
f8deb5b9 Poul Sander 2022-01-15 13:55 1302
f8deb5b9 Poul Sander 2022-01-15 13:55 1303
     int main() {
f8deb5b9 Poul Sander 2022-01-15 13:55 1304
       char buffer[10];
f8deb5b9 Poul Sander 2022-01-15 13:55 1305
       auto result = fmt::format_to_n(buffer, sizeof(buffer), "{}", 42);
f8deb5b9 Poul Sander 2022-01-15 13:55 1306
     }
f8deb5b9 Poul Sander 2022-01-15 13:55 1307
f8deb5b9 Poul Sander 2022-01-15 13:55 1308
* Added ``fmt::format_to_n`` overload with format string compilation
f8deb5b9 Poul Sander 2022-01-15 13:55 1309
  (`#1764 <https://github.com/fmtlib/fmt/issues/1764>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1310
  `#1767 <https://github.com/fmtlib/fmt/pull/1767>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1311
  `#1869 <https://github.com/fmtlib/fmt/pull/1869>`_). For example
f8deb5b9 Poul Sander 2022-01-15 13:55 1312
  (`godbolt <https://godbolt.org/z/93h86q>`__):
f8deb5b9 Poul Sander 2022-01-15 13:55 1313
f8deb5b9 Poul Sander 2022-01-15 13:55 1314
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 1315
f8deb5b9 Poul Sander 2022-01-15 13:55 1316
     #include <fmt/compile.h>
f8deb5b9 Poul Sander 2022-01-15 13:55 1317
f8deb5b9 Poul Sander 2022-01-15 13:55 1318
     int main() {
f8deb5b9 Poul Sander 2022-01-15 13:55 1319
       char buffer[8];
f8deb5b9 Poul Sander 2022-01-15 13:55 1320
       fmt::format_to_n(buffer, sizeof(buffer), FMT_COMPILE("{}"), 42);
f8deb5b9 Poul Sander 2022-01-15 13:55 1321
     }
f8deb5b9 Poul Sander 2022-01-15 13:55 1322
f8deb5b9 Poul Sander 2022-01-15 13:55 1323
  Thanks `@Kurkin (Dmitry Kurkin) <https://github.com/Kurkin>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1324
  `@alexezeder (Alexey Ochapov) <https://github.com/alexezeder>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 1325
f8deb5b9 Poul Sander 2022-01-15 13:55 1326
* Added ``fmt::format_to`` overload that take ``text_style``
f8deb5b9 Poul Sander 2022-01-15 13:55 1327
  (`#1593 <https://github.com/fmtlib/fmt/issues/1593>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1328
  `#1842 <https://github.com/fmtlib/fmt/issues/1842>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1329
  `#1843 <https://github.com/fmtlib/fmt/pull/1843>`_). For example
f8deb5b9 Poul Sander 2022-01-15 13:55 1330
  (`godbolt <https://godbolt.org/z/91153r>`__):
f8deb5b9 Poul Sander 2022-01-15 13:55 1331
f8deb5b9 Poul Sander 2022-01-15 13:55 1332
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 1333
f8deb5b9 Poul Sander 2022-01-15 13:55 1334
     #include <fmt/color.h>
f8deb5b9 Poul Sander 2022-01-15 13:55 1335
f8deb5b9 Poul Sander 2022-01-15 13:55 1336
     int main() {
f8deb5b9 Poul Sander 2022-01-15 13:55 1337
       std::string out;
f8deb5b9 Poul Sander 2022-01-15 13:55 1338
       fmt::format_to(std::back_inserter(out),
f8deb5b9 Poul Sander 2022-01-15 13:55 1339
                      fmt::emphasis::bold | fg(fmt::color::red),
f8deb5b9 Poul Sander 2022-01-15 13:55 1340
                      "The answer is {}.", 42);
f8deb5b9 Poul Sander 2022-01-15 13:55 1341
     }
f8deb5b9 Poul Sander 2022-01-15 13:55 1342
f8deb5b9 Poul Sander 2022-01-15 13:55 1343
  Thanks `@Naios (Denis Blank) <https://github.com/Naios>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 1344
f8deb5b9 Poul Sander 2022-01-15 13:55 1345
* Made the ``'#'`` specifier emit trailing zeros in addition to the decimal
f8deb5b9 Poul Sander 2022-01-15 13:55 1346
  point (`#1797 <https://github.com/fmtlib/fmt/issues/1797>`_). For example
f8deb5b9 Poul Sander 2022-01-15 13:55 1347
  (`godbolt <https://godbolt.org/z/bhdcW9>`__):
f8deb5b9 Poul Sander 2022-01-15 13:55 1348
f8deb5b9 Poul Sander 2022-01-15 13:55 1349
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 1350
f8deb5b9 Poul Sander 2022-01-15 13:55 1351
     #include <fmt/core.h>
f8deb5b9 Poul Sander 2022-01-15 13:55 1352
f8deb5b9 Poul Sander 2022-01-15 13:55 1353
     int main() {
f8deb5b9 Poul Sander 2022-01-15 13:55 1354
       fmt::print("{:#.2g}", 0.5);
f8deb5b9 Poul Sander 2022-01-15 13:55 1355
     }
f8deb5b9 Poul Sander 2022-01-15 13:55 1356
f8deb5b9 Poul Sander 2022-01-15 13:55 1357
  prints ``0.50``.
f8deb5b9 Poul Sander 2022-01-15 13:55 1358
f8deb5b9 Poul Sander 2022-01-15 13:55 1359
* Changed the default floating point format to not include ``.0`` for
f8deb5b9 Poul Sander 2022-01-15 13:55 1360
  consistency with ``std::format`` and ``std::to_chars``
f8deb5b9 Poul Sander 2022-01-15 13:55 1361
  (`#1893 <https://github.com/fmtlib/fmt/issues/1893>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1362
  `#1943 <https://github.com/fmtlib/fmt/issues/1943>`_). It is possible to get
f8deb5b9 Poul Sander 2022-01-15 13:55 1363
  the decimal point and trailing zero with the ``#`` specifier.
f8deb5b9 Poul Sander 2022-01-15 13:55 1364
f8deb5b9 Poul Sander 2022-01-15 13:55 1365
* Fixed an issue with floating-point formatting that could result in addition of
f8deb5b9 Poul Sander 2022-01-15 13:55 1366
  a non-significant trailing zero in rare cases e.g. ``1.00e-34`` instead of
f8deb5b9 Poul Sander 2022-01-15 13:55 1367
  ``1.0e-34`` (`#1873 <https://github.com/fmtlib/fmt/issues/1873>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1368
  `#1917 <https://github.com/fmtlib/fmt/issues/1917>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1369
f8deb5b9 Poul Sander 2022-01-15 13:55 1370
* Made ``fmt::to_string`` fallback on ``ostream`` insertion operator if
f8deb5b9 Poul Sander 2022-01-15 13:55 1371
  the ``formatter`` specialization is not provided
f8deb5b9 Poul Sander 2022-01-15 13:55 1372
  (`#1815 <https://github.com/fmtlib/fmt/issues/1815>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1373
  `#1829 <https://github.com/fmtlib/fmt/pull/1829>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1374
  Thanks `@alexezeder (Alexey Ochapov) <https://github.com/alexezeder>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 1375
f8deb5b9 Poul Sander 2022-01-15 13:55 1376
* Added support for the append mode to the experimental file API and
f8deb5b9 Poul Sander 2022-01-15 13:55 1377
  improved ``fcntl.h`` detection.
f8deb5b9 Poul Sander 2022-01-15 13:55 1378
  (`#1847 <https://github.com/fmtlib/fmt/pull/1847>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1379
  `#1848 <https://github.com/fmtlib/fmt/pull/1848>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1380
  Thanks `@t-wiser <https://github.com/t-wiser>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 1381
f8deb5b9 Poul Sander 2022-01-15 13:55 1382
* Fixed handling of types that have both an implicit conversion operator and
f8deb5b9 Poul Sander 2022-01-15 13:55 1383
  an overloaded ``ostream`` insertion operator
f8deb5b9 Poul Sander 2022-01-15 13:55 1384
  (`#1766 <https://github.com/fmtlib/fmt/issues/1766>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1385
f8deb5b9 Poul Sander 2022-01-15 13:55 1386
* Fixed a slicing issue in an internal iterator type
f8deb5b9 Poul Sander 2022-01-15 13:55 1387
  (`#1822 <https://github.com/fmtlib/fmt/pull/1822>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1388
  Thanks `@BRevzin (Barry Revzin) <https://github.com/BRevzin>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 1389
f8deb5b9 Poul Sander 2022-01-15 13:55 1390
* Fixed an issue in locale-specific integer formatting
f8deb5b9 Poul Sander 2022-01-15 13:55 1391
  (`#1927 <https://github.com/fmtlib/fmt/issues/1927>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1392
f8deb5b9 Poul Sander 2022-01-15 13:55 1393
* Fixed handling of exotic code unit types
f8deb5b9 Poul Sander 2022-01-15 13:55 1394
  (`#1870 <https://github.com/fmtlib/fmt/issues/1870>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1395
  `#1932 <https://github.com/fmtlib/fmt/issues/1932>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1396
f8deb5b9 Poul Sander 2022-01-15 13:55 1397
* Improved ``FMT_ALWAYS_INLINE``
f8deb5b9 Poul Sander 2022-01-15 13:55 1398
  (`#1878 <https://github.com/fmtlib/fmt/pull/1878>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1399
  Thanks `@jk-jeon (Junekey Jeon) <https://github.com/jk-jeon>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 1400
f8deb5b9 Poul Sander 2022-01-15 13:55 1401
* Removed dependency on ``windows.h``
f8deb5b9 Poul Sander 2022-01-15 13:55 1402
  (`#1900 <https://github.com/fmtlib/fmt/pull/1900>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1403
  Thanks `@bernd5 (Bernd Baumanns) <https://github.com/bernd5>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 1404
f8deb5b9 Poul Sander 2022-01-15 13:55 1405
* Optimized counting of decimal digits on MSVC
f8deb5b9 Poul Sander 2022-01-15 13:55 1406
  (`#1890 <https://github.com/fmtlib/fmt/pull/1890>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1407
  Thanks `@mwinterb <https://github.com/mwinterb>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 1408
f8deb5b9 Poul Sander 2022-01-15 13:55 1409
* Improved documentation
f8deb5b9 Poul Sander 2022-01-15 13:55 1410
  (`#1772 <https://github.com/fmtlib/fmt/issues/1772>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1411
  `#1775 <https://github.com/fmtlib/fmt/pull/1775>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1412
  `#1792 <https://github.com/fmtlib/fmt/pull/1792>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1413
  `#1838 <https://github.com/fmtlib/fmt/pull/1838>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1414
  `#1888 <https://github.com/fmtlib/fmt/pull/1888>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1415
  `#1918 <https://github.com/fmtlib/fmt/pull/1918>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1416
  `#1939 <https://github.com/fmtlib/fmt/pull/1939>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1417
  Thanks `@leolchat (Léonard Gérard) <https://github.com/leolchat>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1418
  `@pepsiman (Malcolm Parsons) <https://github.com/pepsiman>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1419
  `@Klaim (Joël Lamotte) <https://github.com/Klaim>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1420
  `@ravijanjam (Ravi J) <https://github.com/ravijanjam>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1421
  `@francesco-st <https://github.com/francesco-st>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1422
  `@udnaan (Adnan) <https://github.com/udnaan>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 1423
f8deb5b9 Poul Sander 2022-01-15 13:55 1424
* Added the ``FMT_REDUCE_INT_INSTANTIATIONS`` CMake option that reduces the
f8deb5b9 Poul Sander 2022-01-15 13:55 1425
  binary code size at the cost of some integer formatting performance. This can
f8deb5b9 Poul Sander 2022-01-15 13:55 1426
  be useful for extremely memory-constrained embedded systems
f8deb5b9 Poul Sander 2022-01-15 13:55 1427
  (`#1778 <https://github.com/fmtlib/fmt/issues/1778>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1428
  `#1781 <https://github.com/fmtlib/fmt/pull/1781>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1429
  Thanks `@kammce (Khalil Estell) <https://github.com/kammce>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 1430
f8deb5b9 Poul Sander 2022-01-15 13:55 1431
* Added the ``FMT_USE_INLINE_NAMESPACES`` macro to control usage of inline
f8deb5b9 Poul Sander 2022-01-15 13:55 1432
  namespaces (`#1945 <https://github.com/fmtlib/fmt/pull/1945>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1433
  Thanks `@darklukee <https://github.com/darklukee>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 1434
f8deb5b9 Poul Sander 2022-01-15 13:55 1435
* Improved build configuration
f8deb5b9 Poul Sander 2022-01-15 13:55 1436
  (`#1760 <https://github.com/fmtlib/fmt/pull/1760>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1437
  `#1770 <https://github.com/fmtlib/fmt/pull/1770>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1438
  `#1779 <https://github.com/fmtlib/fmt/issues/1779>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1439
  `#1783 <https://github.com/fmtlib/fmt/pull/1783>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1440
  `#1823 <https://github.com/fmtlib/fmt/pull/1823>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1441
  Thanks `@dvetutnev (Dmitriy Vetutnev) <https://github.com/dvetutnev>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1442
  `@xvitaly (Vitaly Zaitsev) <https://github.com/xvitaly>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1443
  `@tambry (Raul Tambre) <https://github.com/tambry>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1444
  `@medithe <https://github.com/medithe>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1445
  `@martinwuehrer (Martin Wührer) <https://github.com/martinwuehrer>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 1446
f8deb5b9 Poul Sander 2022-01-15 13:55 1447
* Fixed various warnings and compilation issues
f8deb5b9 Poul Sander 2022-01-15 13:55 1448
  (`#1790 <https://github.com/fmtlib/fmt/pull/1790>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1449
  `#1802 <https://github.com/fmtlib/fmt/pull/1802>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1450
  `#1808 <https://github.com/fmtlib/fmt/pull/1808>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1451
  `#1810 <https://github.com/fmtlib/fmt/issues/1810>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1452
  `#1811 <https://github.com/fmtlib/fmt/issues/1811>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1453
  `#1812 <https://github.com/fmtlib/fmt/pull/1812>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1454
  `#1814 <https://github.com/fmtlib/fmt/pull/1814>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1455
  `#1816 <https://github.com/fmtlib/fmt/pull/1816>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1456
  `#1817 <https://github.com/fmtlib/fmt/pull/1817>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1457
  `#1818 <https://github.com/fmtlib/fmt/pull/1818>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1458
  `#1825 <https://github.com/fmtlib/fmt/issues/1825>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1459
  `#1836 <https://github.com/fmtlib/fmt/pull/1836>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1460
  `#1855 <https://github.com/fmtlib/fmt/pull/1855>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1461
  `#1856 <https://github.com/fmtlib/fmt/pull/1856>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1462
  `#1860 <https://github.com/fmtlib/fmt/pull/1860>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1463
  `#1877 <https://github.com/fmtlib/fmt/pull/1877>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1464
  `#1879 <https://github.com/fmtlib/fmt/pull/1879>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1465
  `#1880 <https://github.com/fmtlib/fmt/pull/1880>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1466
  `#1896 <https://github.com/fmtlib/fmt/issues/1896>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1467
  `#1897 <https://github.com/fmtlib/fmt/pull/1897>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1468
  `#1898 <https://github.com/fmtlib/fmt/pull/1898>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1469
  `#1904 <https://github.com/fmtlib/fmt/issues/1904>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1470
  `#1908 <https://github.com/fmtlib/fmt/pull/1908>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1471
  `#1911 <https://github.com/fmtlib/fmt/issues/1911>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1472
  `#1912 <https://github.com/fmtlib/fmt/issues/1912>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1473
  `#1928 <https://github.com/fmtlib/fmt/issues/1928>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1474
  `#1929 <https://github.com/fmtlib/fmt/pull/1929>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1475
  `#1935 <https://github.com/fmtlib/fmt/issues/1935>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1476
  `#1937 <https://github.com/fmtlib/fmt/pull/1937>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1477
  `#1942 <https://github.com/fmtlib/fmt/pull/1942>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1478
  `#1949 <https://github.com/fmtlib/fmt/issues/1949>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1479
  Thanks `@TheQwertiest <https://github.com/TheQwertiest>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1480
  `@medithe <https://github.com/medithe>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1481
  `@martinwuehrer (Martin Wührer) <https://github.com/martinwuehrer>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1482
  `@n16h7hunt3r <https://github.com/n16h7hunt3r>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1483
  `@Othereum (Seokjin Lee) <https://github.com/Othereum>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1484
  `@gsjaardema (Greg Sjaardema) <https://github.com/gsjaardema>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1485
  `@AlexanderLanin (Alexander Lanin) <https://github.com/AlexanderLanin>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1486
  `@gcerretani (Giovanni Cerretani) <https://github.com/gcerretani>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1487
  `@chronoxor (Ivan Shynkarenka) <https://github.com/chronoxor>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1488
  `@noizefloor (Jan Schwers) <https://github.com/noizefloor>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1489
  `@akohlmey (Axel Kohlmeyer) <https://github.com/akohlmey>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1490
  `@jk-jeon (Junekey Jeon) <https://github.com/jk-jeon>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1491
  `@rimathia <https://github.com/rimathia>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1492
  `@rglarix (Riccardo Ghetta (larix)) <https://github.com/rglarix>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1493
  `@moiwi <https://github.com/moiwi>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1494
  `@heckad (Kazantcev Andrey) <https://github.com/heckad>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1495
  `@MarcDirven <https://github.com/MarcDirven>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 1496
  `@BartSiwek (Bart Siwek) <https://github.com/BartSiwek>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1497
  `@darklukee <https://github.com/darklukee>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 1498
f8deb5b9 Poul Sander 2022-01-15 13:55 1499
7.0.3 - 2020-08-06
f8deb5b9 Poul Sander 2022-01-15 13:55 1500
------------------
f8deb5b9 Poul Sander 2022-01-15 13:55 1501
f8deb5b9 Poul Sander 2022-01-15 13:55 1502
* Worked around broken ``numeric_limits`` for 128-bit integers
f8deb5b9 Poul Sander 2022-01-15 13:55 1503
  (`#1787 <https://github.com/fmtlib/fmt/issues/1787>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1504
f8deb5b9 Poul Sander 2022-01-15 13:55 1505
* Added error reporting on missing named arguments
f8deb5b9 Poul Sander 2022-01-15 13:55 1506
  (`#1796 <https://github.com/fmtlib/fmt/issues/1796>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1507
f8deb5b9 Poul Sander 2022-01-15 13:55 1508
* Stopped using 128-bit integers with clang-cl
f8deb5b9 Poul Sander 2022-01-15 13:55 1509
  (`#1800 <https://github.com/fmtlib/fmt/pull/1800>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1510
  Thanks `@Kingcom <https://github.com/Kingcom>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 1511
f8deb5b9 Poul Sander 2022-01-15 13:55 1512
* Fixed issues in locale-specific integer formatting
f8deb5b9 Poul Sander 2022-01-15 13:55 1513
  (`#1782 <https://github.com/fmtlib/fmt/issues/1782>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1514
  `#1801 <https://github.com/fmtlib/fmt/issues/1801>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1515
f8deb5b9 Poul Sander 2022-01-15 13:55 1516
7.0.2 - 2020-07-29
f8deb5b9 Poul Sander 2022-01-15 13:55 1517
------------------
f8deb5b9 Poul Sander 2022-01-15 13:55 1518
f8deb5b9 Poul Sander 2022-01-15 13:55 1519
* Worked around broken ``numeric_limits`` for 128-bit integers
f8deb5b9 Poul Sander 2022-01-15 13:55 1520
  (`#1725 <https://github.com/fmtlib/fmt/issues/1725>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1521
f8deb5b9 Poul Sander 2022-01-15 13:55 1522
* Fixed compatibility with CMake 3.4
f8deb5b9 Poul Sander 2022-01-15 13:55 1523
  (`#1779 <https://github.com/fmtlib/fmt/issues/1779>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1524
f8deb5b9 Poul Sander 2022-01-15 13:55 1525
* Fixed handling of digit separators in locale-specific formatting
f8deb5b9 Poul Sander 2022-01-15 13:55 1526
  (`#1782 <https://github.com/fmtlib/fmt/issues/1782>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1527
f8deb5b9 Poul Sander 2022-01-15 13:55 1528
7.0.1 - 2020-07-07
f8deb5b9 Poul Sander 2022-01-15 13:55 1529
------------------
f8deb5b9 Poul Sander 2022-01-15 13:55 1530
f8deb5b9 Poul Sander 2022-01-15 13:55 1531
* Updated the inline version namespace name.
f8deb5b9 Poul Sander 2022-01-15 13:55 1532
f8deb5b9 Poul Sander 2022-01-15 13:55 1533
* Worked around a gcc bug in mangling of alias templates
f8deb5b9 Poul Sander 2022-01-15 13:55 1534
  (`#1753 <https://github.com/fmtlib/fmt/issues/1753>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1535
f8deb5b9 Poul Sander 2022-01-15 13:55 1536
* Fixed a linkage error on Windows
f8deb5b9 Poul Sander 2022-01-15 13:55 1537
  (`#1757 <https://github.com/fmtlib/fmt/issues/1757>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1538
  Thanks `@Kurkin (Dmitry Kurkin) <https://github.com/Kurkin>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 1539
f8deb5b9 Poul Sander 2022-01-15 13:55 1540
* Fixed minor issues with the documentation.
f8deb5b9 Poul Sander 2022-01-15 13:55 1541
f8deb5b9 Poul Sander 2022-01-15 13:55 1542
7.0.0 - 2020-07-05
f8deb5b9 Poul Sander 2022-01-15 13:55 1543
------------------
f8deb5b9 Poul Sander 2022-01-15 13:55 1544
f8deb5b9 Poul Sander 2022-01-15 13:55 1545
* Reduced the library size. For example, on macOS a stripped test binary
f8deb5b9 Poul Sander 2022-01-15 13:55 1546
  statically linked with {fmt} `shrank from ~368k to less than 100k
f8deb5b9 Poul Sander 2022-01-15 13:55 1547
  <http://www.zverovich.net/2020/05/21/reducing-library-size.html>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 1548
f8deb5b9 Poul Sander 2022-01-15 13:55 1549
* Added a simpler and more efficient `format string compilation API
f8deb5b9 Poul Sander 2022-01-15 13:55 1550
  <https://fmt.dev/7.0.0/api.html#compile-api>`_:
f8deb5b9 Poul Sander 2022-01-15 13:55 1551
f8deb5b9 Poul Sander 2022-01-15 13:55 1552
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 1553
f8deb5b9 Poul Sander 2022-01-15 13:55 1554
     #include <fmt/compile.h>
f8deb5b9 Poul Sander 2022-01-15 13:55 1555
f8deb5b9 Poul Sander 2022-01-15 13:55 1556
     // Converts 42 into std::string using the most efficient method and no
f8deb5b9 Poul Sander 2022-01-15 13:55 1557
     // runtime format string processing.
f8deb5b9 Poul Sander 2022-01-15 13:55 1558
     std::string s = fmt::format(FMT_COMPILE("{}"), 42);
f8deb5b9 Poul Sander 2022-01-15 13:55 1559
f8deb5b9 Poul Sander 2022-01-15 13:55 1560
  The old ``fmt::compile`` API is now deprecated.
f8deb5b9 Poul Sander 2022-01-15 13:55 1561
f8deb5b9 Poul Sander 2022-01-15 13:55 1562
* Optimized integer formatting: ``format_to`` with format string compilation
f8deb5b9 Poul Sander 2022-01-15 13:55 1563
  and a stack-allocated buffer is now `faster than to_chars on both
f8deb5b9 Poul Sander 2022-01-15 13:55 1564
  libc++ and libstdc++
f8deb5b9 Poul Sander 2022-01-15 13:55 1565
  <http://www.zverovich.net/2020/06/13/fast-int-to-string-revisited.html>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 1566
f8deb5b9 Poul Sander 2022-01-15 13:55 1567
* Optimized handling of small format strings. For example,
f8deb5b9 Poul Sander 2022-01-15 13:55 1568
f8deb5b9 Poul Sander 2022-01-15 13:55 1569
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 1570
f8deb5b9 Poul Sander 2022-01-15 13:55 1571
      fmt::format("Result: {}: ({},{},{},{})", str1, str2, str3, str4, str5)
f8deb5b9 Poul Sander 2022-01-15 13:55 1572
f8deb5b9 Poul Sander 2022-01-15 13:55 1573
  is now ~40% faster (`#1685 <https://github.com/fmtlib/fmt/issues/1685>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1574
f8deb5b9 Poul Sander 2022-01-15 13:55 1575
* Applied extern templates to improve compile times when using the core API
f8deb5b9 Poul Sander 2022-01-15 13:55 1576
  and ``fmt/format.h`` (`#1452 <https://github.com/fmtlib/fmt/issues/1452>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1577
  For example, on macOS with clang the compile time of a test translation unit
f8deb5b9 Poul Sander 2022-01-15 13:55 1578
  dropped from 2.3s to 0.3s with ``-O2`` and from 0.6s to 0.3s with the default
f8deb5b9 Poul Sander 2022-01-15 13:55 1579
  settings (``-O0``).
f8deb5b9 Poul Sander 2022-01-15 13:55 1580
f8deb5b9 Poul Sander 2022-01-15 13:55 1581
  Before (``-O2``)::
f8deb5b9 Poul Sander 2022-01-15 13:55 1582
f8deb5b9 Poul Sander 2022-01-15 13:55 1583
    % time c++ -c test.cc -I include -std=c++17 -O2
f8deb5b9 Poul Sander 2022-01-15 13:55 1584
    c++ -c test.cc -I include -std=c++17 -O2  2.22s user 0.08s system 99% cpu 2.311 total
f8deb5b9 Poul Sander 2022-01-15 13:55 1585
f8deb5b9 Poul Sander 2022-01-15 13:55 1586
  After (``-O2``)::
f8deb5b9 Poul Sander 2022-01-15 13:55 1587
f8deb5b9 Poul Sander 2022-01-15 13:55 1588
    % time c++ -c test.cc -I include -std=c++17 -O2
f8deb5b9 Poul Sander 2022-01-15 13:55 1589
    c++ -c test.cc -I include -std=c++17 -O2  0.26s user 0.04s system 98% cpu 0.303 total
f8deb5b9 Poul Sander 2022-01-15 13:55 1590
f8deb5b9 Poul Sander 2022-01-15 13:55 1591
  Before (default)::
f8deb5b9 Poul Sander 2022-01-15 13:55 1592
f8deb5b9 Poul Sander 2022-01-15 13:55 1593
    % time c++ -c test.cc -I include -std=c++17
f8deb5b9 Poul Sander 2022-01-15 13:55 1594
    c++ -c test.cc -I include -std=c++17  0.53s user 0.06s system 98% cpu 0.601 total
f8deb5b9 Poul Sander 2022-01-15 13:55 1595
f8deb5b9 Poul Sander 2022-01-15 13:55 1596
  After (default)::
f8deb5b9 Poul Sander 2022-01-15 13:55 1597
f8deb5b9 Poul Sander 2022-01-15 13:55 1598
    % time c++ -c test.cc -I include -std=c++17
f8deb5b9 Poul Sander 2022-01-15 13:55 1599
    c++ -c test.cc -I include -std=c++17  0.24s user 0.06s system 98% cpu 0.301 total
f8deb5b9 Poul Sander 2022-01-15 13:55 1600
f8deb5b9 Poul Sander 2022-01-15 13:55 1601
  It is still recommended to use ``fmt/core.h`` instead of ``fmt/format.h`` but
f8deb5b9 Poul Sander 2022-01-15 13:55 1602
  the compile time difference is now smaller. Thanks
f8deb5b9 Poul Sander 2022-01-15 13:55 1603
  `@alex3d <https://github.com/alex3d>`_ for the suggestion.
f8deb5b9 Poul Sander 2022-01-15 13:55 1604
f8deb5b9 Poul Sander 2022-01-15 13:55 1605
* Named arguments are now stored on stack (no dynamic memory allocations) and
f8deb5b9 Poul Sander 2022-01-15 13:55 1606
  the compiled code is more compact and efficient. For example
f8deb5b9 Poul Sander 2022-01-15 13:55 1607
f8deb5b9 Poul Sander 2022-01-15 13:55 1608
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 1609
f8deb5b9 Poul Sander 2022-01-15 13:55 1610
     #include <fmt/core.h>
f8deb5b9 Poul Sander 2022-01-15 13:55 1611
f8deb5b9 Poul Sander 2022-01-15 13:55 1612
     int main() {
f8deb5b9 Poul Sander 2022-01-15 13:55 1613
       fmt::print("The answer is {answer}\n", fmt::arg("answer", 42));
f8deb5b9 Poul Sander 2022-01-15 13:55 1614
     }
f8deb5b9 Poul Sander 2022-01-15 13:55 1615
f8deb5b9 Poul Sander 2022-01-15 13:55 1616
  compiles to just (`godbolt <https://godbolt.org/z/NcfEp_>`__)
f8deb5b9 Poul Sander 2022-01-15 13:55 1617
f8deb5b9 Poul Sander 2022-01-15 13:55 1618
  .. code:: asm
f8deb5b9 Poul Sander 2022-01-15 13:55 1619
f8deb5b9 Poul Sander 2022-01-15 13:55 1620
      .LC0:
f8deb5b9 Poul Sander 2022-01-15 13:55 1621
              .string "answer"
f8deb5b9 Poul Sander 2022-01-15 13:55 1622
      .LC1:
f8deb5b9 Poul Sander 2022-01-15 13:55 1623
              .string "The answer is {answer}\n"
f8deb5b9 Poul Sander 2022-01-15 13:55 1624
      main:
f8deb5b9 Poul Sander 2022-01-15 13:55 1625
              sub     rsp, 56
f8deb5b9 Poul Sander 2022-01-15 13:55 1626
              mov     edi, OFFSET FLAT:.LC1
f8deb5b9 Poul Sander 2022-01-15 13:55 1627
              mov     esi, 23
f8deb5b9 Poul Sander 2022-01-15 13:55 1628
              movabs  rdx, 4611686018427387905
f8deb5b9 Poul Sander 2022-01-15 13:55 1629
              lea     rax, [rsp+32]
f8deb5b9 Poul Sander 2022-01-15 13:55 1630
              lea     rcx, [rsp+16]
f8deb5b9 Poul Sander 2022-01-15 13:55 1631
              mov     QWORD PTR [rsp+8], 1
f8deb5b9 Poul Sander 2022-01-15 13:55 1632
              mov     QWORD PTR [rsp], rax
f8deb5b9 Poul Sander 2022-01-15 13:55 1633
              mov     DWORD PTR [rsp+16], 42
f8deb5b9 Poul Sander 2022-01-15 13:55 1634
              mov     QWORD PTR [rsp+32], OFFSET FLAT:.LC0
f8deb5b9 Poul Sander 2022-01-15 13:55 1635
              mov     DWORD PTR [rsp+40], 0
f8deb5b9 Poul Sander 2022-01-15 13:55 1636
              call    fmt::v6::vprint(fmt::v6::basic_string_view<char>,
f8deb5b9 Poul Sander 2022-01-15 13:55 1637
                                      fmt::v6::format_args)
f8deb5b9 Poul Sander 2022-01-15 13:55 1638
              xor     eax, eax
f8deb5b9 Poul Sander 2022-01-15 13:55 1639
              add     rsp, 56
f8deb5b9 Poul Sander 2022-01-15 13:55 1640
              ret
f8deb5b9 Poul Sander 2022-01-15 13:55 1641
f8deb5b9 Poul Sander 2022-01-15 13:55 1642
          .L.str.1:
f8deb5b9 Poul Sander 2022-01-15 13:55 1643
                  .asciz  "answer"
f8deb5b9 Poul Sander 2022-01-15 13:55 1644
f8deb5b9 Poul Sander 2022-01-15 13:55 1645
* Implemented compile-time checks for dynamic width and precision
f8deb5b9 Poul Sander 2022-01-15 13:55 1646
  (`#1614 <https://github.com/fmtlib/fmt/issues/1614>`_):
f8deb5b9 Poul Sander 2022-01-15 13:55 1647
f8deb5b9 Poul Sander 2022-01-15 13:55 1648
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 1649
f8deb5b9 Poul Sander 2022-01-15 13:55 1650
     #include <fmt/format.h>
f8deb5b9 Poul Sander 2022-01-15 13:55 1651
f8deb5b9 Poul Sander 2022-01-15 13:55 1652
     int main() {
f8deb5b9 Poul Sander 2022-01-15 13:55 1653
       fmt::print(FMT_STRING("{0:{1}}"), 42);
f8deb5b9 Poul Sander 2022-01-15 13:55 1654
     }
f8deb5b9 Poul Sander 2022-01-15 13:55 1655
f8deb5b9 Poul Sander 2022-01-15 13:55 1656
  now gives a compilation error because argument 1 doesn't exist::
f8deb5b9 Poul Sander 2022-01-15 13:55 1657
f8deb5b9 Poul Sander 2022-01-15 13:55 1658
    In file included from test.cc:1:
f8deb5b9 Poul Sander 2022-01-15 13:55 1659
    include/fmt/format.h:2726:27: error: constexpr variable 'invalid_format' must be
f8deb5b9 Poul Sander 2022-01-15 13:55 1660
    initialized by a constant expression
f8deb5b9 Poul Sander 2022-01-15 13:55 1661
      FMT_CONSTEXPR_DECL bool invalid_format =
f8deb5b9 Poul Sander 2022-01-15 13:55 1662
                              ^
f8deb5b9 Poul Sander 2022-01-15 13:55 1663
    ...
f8deb5b9 Poul Sander 2022-01-15 13:55 1664
    include/fmt/core.h:569:26: note: in call to
f8deb5b9 Poul Sander 2022-01-15 13:55 1665
    '&checker(s, {}).context_->on_error(&"argument not found"[0])'
f8deb5b9 Poul Sander 2022-01-15 13:55 1666
        if (id >= num_args_) on_error("argument not found");
f8deb5b9 Poul Sander 2022-01-15 13:55 1667
                            ^
f8deb5b9 Poul Sander 2022-01-15 13:55 1668
f8deb5b9 Poul Sander 2022-01-15 13:55 1669
* Added sentinel support to ``fmt::join``
f8deb5b9 Poul Sander 2022-01-15 13:55 1670
  (`#1689 <https://github.com/fmtlib/fmt/pull/1689>`_)
f8deb5b9 Poul Sander 2022-01-15 13:55 1671
f8deb5b9 Poul Sander 2022-01-15 13:55 1672
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 1673
f8deb5b9 Poul Sander 2022-01-15 13:55 1674
    struct zstring_sentinel {};
f8deb5b9 Poul Sander 2022-01-15 13:55 1675
    bool operator==(const char* p, zstring_sentinel) { return *p == '\0'; }
f8deb5b9 Poul Sander 2022-01-15 13:55 1676
    bool operator!=(const char* p, zstring_sentinel) { return *p != '\0'; }
f8deb5b9 Poul Sander 2022-01-15 13:55 1677
f8deb5b9 Poul Sander 2022-01-15 13:55 1678
    struct zstring {
f8deb5b9 Poul Sander 2022-01-15 13:55 1679
      const char* p;
f8deb5b9 Poul Sander 2022-01-15 13:55 1680
      const char* begin() const { return p; }
f8deb5b9 Poul Sander 2022-01-15 13:55 1681
      zstring_sentinel end() const { return {}; }
f8deb5b9 Poul Sander 2022-01-15 13:55 1682
    };
f8deb5b9 Poul Sander 2022-01-15 13:55 1683
f8deb5b9 Poul Sander 2022-01-15 13:55 1684
    auto s = fmt::format("{}", fmt::join(zstring{"hello"}, "_"));
f8deb5b9 Poul Sander 2022-01-15 13:55 1685
    // s == "h_e_l_l_o"
f8deb5b9 Poul Sander 2022-01-15 13:55 1686
f8deb5b9 Poul Sander 2022-01-15 13:55 1687
  Thanks `@BRevzin (Barry Revzin) <https://github.com/BRevzin>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 1688
f8deb5b9 Poul Sander 2022-01-15 13:55 1689
* Added support for named arguments, ``clear`` and ``reserve`` to
f8deb5b9 Poul Sander 2022-01-15 13:55 1690
  ``dynamic_format_arg_store``
f8deb5b9 Poul Sander 2022-01-15 13:55 1691
  (`#1655 <https://github.com/fmtlib/fmt/issues/1655>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1692
  `#1663 <https://github.com/fmtlib/fmt/pull/1663>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1693
  `#1674 <https://github.com/fmtlib/fmt/pull/1674>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1694
  `#1677 <https://github.com/fmtlib/fmt/pull/1677>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1695
  Thanks `@vsolontsov-ll (Vladimir Solontsov)
f8deb5b9 Poul Sander 2022-01-15 13:55 1696
  <https://github.com/vsolontsov-ll>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 1697
f8deb5b9 Poul Sander 2022-01-15 13:55 1698
* Added support for the ``'c'`` format specifier to integral types for
f8deb5b9 Poul Sander 2022-01-15 13:55 1699
  compatibility with ``std::format``
f8deb5b9 Poul Sander 2022-01-15 13:55 1700
  (`#1652 <https://github.com/fmtlib/fmt/issues/1652>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1701
f8deb5b9 Poul Sander 2022-01-15 13:55 1702
* Replaced the ``'n'`` format specifier with ``'L'`` for compatibility with
f8deb5b9 Poul Sander 2022-01-15 13:55 1703
  ``std::format`` (`#1624 <https://github.com/fmtlib/fmt/issues/1624>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1704
  The ``'n'`` specifier can be enabled via the ``FMT_DEPRECATED_N_SPECIFIER``
f8deb5b9 Poul Sander 2022-01-15 13:55 1705
  macro.
f8deb5b9 Poul Sander 2022-01-15 13:55 1706
f8deb5b9 Poul Sander 2022-01-15 13:55 1707
* The ``'='`` format specifier is now disabled by default for compatibility with
f8deb5b9 Poul Sander 2022-01-15 13:55 1708
  ``std::format``. It can be enabled via the ``FMT_DEPRECATED_NUMERIC_ALIGN``
f8deb5b9 Poul Sander 2022-01-15 13:55 1709
  macro.
f8deb5b9 Poul Sander 2022-01-15 13:55 1710
f8deb5b9 Poul Sander 2022-01-15 13:55 1711
* Removed the following deprecated APIs:
f8deb5b9 Poul Sander 2022-01-15 13:55 1712
f8deb5b9 Poul Sander 2022-01-15 13:55 1713
  * ``FMT_STRING_ALIAS`` and ``fmt`` macros - replaced by ``FMT_STRING``
f8deb5b9 Poul Sander 2022-01-15 13:55 1714
  * ``fmt::basic_string_view::char_type`` - replaced by
f8deb5b9 Poul Sander 2022-01-15 13:55 1715
    ``fmt::basic_string_view::value_type``
f8deb5b9 Poul Sander 2022-01-15 13:55 1716
  * ``convert_to_int``
f8deb5b9 Poul Sander 2022-01-15 13:55 1717
  * ``format_arg_store::types``
f8deb5b9 Poul Sander 2022-01-15 13:55 1718
  * ``*parse_context`` - replaced by ``*format_parse_context``
f8deb5b9 Poul Sander 2022-01-15 13:55 1719
  * ``FMT_DEPRECATED_INCLUDE_OS``
f8deb5b9 Poul Sander 2022-01-15 13:55 1720
  * ``FMT_DEPRECATED_PERCENT`` - incompatible with ``std::format``
f8deb5b9 Poul Sander 2022-01-15 13:55 1721
  * ``*writer`` - replaced by compiled format API
f8deb5b9 Poul Sander 2022-01-15 13:55 1722
f8deb5b9 Poul Sander 2022-01-15 13:55 1723
* Renamed the ``internal`` namespace to ``detail``
f8deb5b9 Poul Sander 2022-01-15 13:55 1724
  (`#1538 <https://github.com/fmtlib/fmt/issues/1538>`_). The former is still
f8deb5b9 Poul Sander 2022-01-15 13:55 1725
  provided as an alias if the ``FMT_USE_INTERNAL`` macro is defined.
f8deb5b9 Poul Sander 2022-01-15 13:55 1726
f8deb5b9 Poul Sander 2022-01-15 13:55 1727
* Improved compatibility between ``fmt::printf`` with the standard specs
f8deb5b9 Poul Sander 2022-01-15 13:55 1728
  (`#1595 <https://github.com/fmtlib/fmt/issues/1595>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1729
  `#1682 <https://github.com/fmtlib/fmt/pull/1682>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1730
  `#1683 <https://github.com/fmtlib/fmt/pull/1683>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1731
  `#1687 <https://github.com/fmtlib/fmt/pull/1687>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1732
  `#1699 <https://github.com/fmtlib/fmt/pull/1699>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1733
  Thanks `@rimathia <https://github.com/rimathia>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 1734
f8deb5b9 Poul Sander 2022-01-15 13:55 1735
* Fixed handling of ``operator<<`` overloads that use ``copyfmt``
f8deb5b9 Poul Sander 2022-01-15 13:55 1736
  (`#1666 <https://github.com/fmtlib/fmt/issues/1666>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1737
f8deb5b9 Poul Sander 2022-01-15 13:55 1738
* Added the ``FMT_OS`` CMake option to control inclusion of OS-specific APIs
f8deb5b9 Poul Sander 2022-01-15 13:55 1739
  in the fmt target. This can be useful for embedded platforms
f8deb5b9 Poul Sander 2022-01-15 13:55 1740
  (`#1654 <https://github.com/fmtlib/fmt/issues/1654>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1741
  `#1656 <https://github.com/fmtlib/fmt/pull/1656>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1742
  Thanks `@kwesolowski (Krzysztof Wesolowski)
f8deb5b9 Poul Sander 2022-01-15 13:55 1743
  <https://github.com/kwesolowski>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 1744
f8deb5b9 Poul Sander 2022-01-15 13:55 1745
* Replaced ``FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION`` with the ``FMT_FUZZ``
f8deb5b9 Poul Sander 2022-01-15 13:55 1746
  macro to prevent interferring with fuzzing of projects using {fmt}
f8deb5b9 Poul Sander 2022-01-15 13:55 1747
  (`#1650 <https://github.com/fmtlib/fmt/pull/1650>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1748
  Thanks `@asraa (Asra Ali) <https://github.com/asraa>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 1749
f8deb5b9 Poul Sander 2022-01-15 13:55 1750
* Fixed compatibility with emscripten
f8deb5b9 Poul Sander 2022-01-15 13:55 1751
  (`#1636 <https://github.com/fmtlib/fmt/issues/1636>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1752
  `#1637 <https://github.com/fmtlib/fmt/pull/1637>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1753
  Thanks `@ArthurSonzogni (Arthur Sonzogni)
f8deb5b9 Poul Sander 2022-01-15 13:55 1754
  <https://github.com/ArthurSonzogni>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 1755
f8deb5b9 Poul Sander 2022-01-15 13:55 1756
* Improved documentation
f8deb5b9 Poul Sander 2022-01-15 13:55 1757
  (`#704 <https://github.com/fmtlib/fmt/issues/704>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1758
  `#1643 <https://github.com/fmtlib/fmt/pull/1643>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1759
  `#1660 <https://github.com/fmtlib/fmt/pull/1660>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1760
  `#1681 <https://github.com/fmtlib/fmt/pull/1681>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1761
  `#1691 <https://github.com/fmtlib/fmt/pull/1691>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1762
  `#1706 <https://github.com/fmtlib/fmt/pull/1706>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1763
  `#1714 <https://github.com/fmtlib/fmt/pull/1714>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1764
  `#1721 <https://github.com/fmtlib/fmt/pull/1721>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1765
  `#1739 <https://github.com/fmtlib/fmt/pull/1739>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1766
  `#1740 <https://github.com/fmtlib/fmt/pull/1740>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1767
  `#1741 <https://github.com/fmtlib/fmt/pull/1741>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1768
  `#1751 <https://github.com/fmtlib/fmt/pull/1751>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1769
  Thanks `@senior7515 (Alexander Gallego) <https://github.com/senior7515>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1770
  `@lsr0 (Lindsay Roberts) <https://github.com/lsr0>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1771
  `@puetzk (Kevin Puetz) <https://github.com/puetzk>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1772
  `@fpelliccioni (Fernando Pelliccioni) <https://github.com/fpelliccioni>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1773
  Alexey Kuzmenko, `@jelly (jelle van der Waa) <https://github.com/jelly>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1774
  `@claremacrae (Clare Macrae) <https://github.com/claremacrae>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1775
  `@jiapengwen (文佳鹏) <https://github.com/jiapengwen>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1776
  `@gsjaardema (Greg Sjaardema) <https://github.com/gsjaardema>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1777
  `@alexey-milovidov <https://github.com/alexey-milovidov>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 1778
f8deb5b9 Poul Sander 2022-01-15 13:55 1779
* Implemented various build configuration fixes and improvements
f8deb5b9 Poul Sander 2022-01-15 13:55 1780
  (`#1603 <https://github.com/fmtlib/fmt/pull/1603>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1781
  `#1657 <https://github.com/fmtlib/fmt/pull/1657>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1782
  `#1702 <https://github.com/fmtlib/fmt/pull/1702>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1783
  `#1728 <https://github.com/fmtlib/fmt/pull/1728>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1784
  Thanks `@scramsby (Scott Ramsby) <https://github.com/scramsby>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1785
  `@jtojnar (Jan Tojnar) <https://github.com/jtojnar>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1786
  `@orivej (Orivej Desh) <https://github.com/orivej>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1787
  `@flagarde <https://github.com/flagarde>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 1788
f8deb5b9 Poul Sander 2022-01-15 13:55 1789
* Fixed various warnings and compilation issues
f8deb5b9 Poul Sander 2022-01-15 13:55 1790
  (`#1616 <https://github.com/fmtlib/fmt/pull/1616>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1791
  `#1620 <https://github.com/fmtlib/fmt/issues/1620>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1792
  `#1622 <https://github.com/fmtlib/fmt/issues/1622>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1793
  `#1625 <https://github.com/fmtlib/fmt/issues/1625>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1794
  `#1627 <https://github.com/fmtlib/fmt/pull/1627>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1795
  `#1628 <https://github.com/fmtlib/fmt/issues/1628>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1796
  `#1629 <https://github.com/fmtlib/fmt/pull/1629>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1797
  `#1631 <https://github.com/fmtlib/fmt/issues/1631>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1798
  `#1633 <https://github.com/fmtlib/fmt/pull/1633>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1799
  `#1649 <https://github.com/fmtlib/fmt/pull/1649>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1800
  `#1658 <https://github.com/fmtlib/fmt/issues/1658>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1801
  `#1661 <https://github.com/fmtlib/fmt/pull/1661>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1802
  `#1667 <https://github.com/fmtlib/fmt/pull/1667>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1803
  `#1668 <https://github.com/fmtlib/fmt/issues/1668>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1804
  `#1669 <https://github.com/fmtlib/fmt/pull/1669>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1805
  `#1692 <https://github.com/fmtlib/fmt/issues/1692>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1806
  `#1696 <https://github.com/fmtlib/fmt/pull/1696>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1807
  `#1697 <https://github.com/fmtlib/fmt/pull/1697>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1808
  `#1707 <https://github.com/fmtlib/fmt/issues/1707>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1809
  `#1712 <https://github.com/fmtlib/fmt/pull/1712>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1810
  `#1716 <https://github.com/fmtlib/fmt/pull/1716>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1811
  `#1722 <https://github.com/fmtlib/fmt/pull/1722>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1812
  `#1724 <https://github.com/fmtlib/fmt/issues/1724>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1813
  `#1729 <https://github.com/fmtlib/fmt/pull/1729>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1814
  `#1738 <https://github.com/fmtlib/fmt/pull/1738>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1815
  `#1742 <https://github.com/fmtlib/fmt/issues/1742>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1816
  `#1743 <https://github.com/fmtlib/fmt/issues/1743>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1817
  `#1744 <https://github.com/fmtlib/fmt/pull/1744>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1818
  `#1747 <https://github.com/fmtlib/fmt/issues/1747>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1819
  `#1750 <https://github.com/fmtlib/fmt/pull/1750>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1820
  Thanks `@gsjaardema (Greg Sjaardema) <https://github.com/gsjaardema>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1821
  `@gabime (Gabi Melman) <https://github.com/gabime>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1822
  `@johnor (Johan) <https://github.com/johnor>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1823
  `@Kurkin (Dmitry Kurkin) <https://github.com/Kurkin>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1824
  `@invexed (James Beach) <https://github.com/invexed>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1825
  `@peterbell10 <https://github.com/peterbell10>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1826
  `@daixtrose (Markus Werle) <https://github.com/daixtrose>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1827
  `@petrutlucian94 (Lucian Petrut) <https://github.com/petrutlucian94>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1828
  `@Neargye (Daniil Goncharov) <https://github.com/Neargye>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1829
  `@ambitslix (Attila M. Szilagyi) <https://github.com/ambitslix>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1830
  `@gabime (Gabi Melman) <https://github.com/gabime>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1831
  `@erthink (Leonid Yuriev) <https://github.com/erthink>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1832
  `@tohammer (Tobias Hammer) <https://github.com/tohammer>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1833
  `@0x8000-0000 (Florin Iucha) <https://github.com/0x8000-0000>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 1834
f8deb5b9 Poul Sander 2022-01-15 13:55 1835
6.2.1 - 2020-05-09
f8deb5b9 Poul Sander 2022-01-15 13:55 1836
------------------
f8deb5b9 Poul Sander 2022-01-15 13:55 1837
f8deb5b9 Poul Sander 2022-01-15 13:55 1838
* Fixed ostream support in ``sprintf``
f8deb5b9 Poul Sander 2022-01-15 13:55 1839
  (`#1631 <https://github.com/fmtlib/fmt/issues/1631>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1840
f8deb5b9 Poul Sander 2022-01-15 13:55 1841
* Fixed type detection when using implicit conversion to ``string_view`` and
f8deb5b9 Poul Sander 2022-01-15 13:55 1842
  ostream ``operator<<`` inconsistently
f8deb5b9 Poul Sander 2022-01-15 13:55 1843
  (`#1662 <https://github.com/fmtlib/fmt/issues/1662>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1844
f8deb5b9 Poul Sander 2022-01-15 13:55 1845
6.2.0 - 2020-04-05
f8deb5b9 Poul Sander 2022-01-15 13:55 1846
------------------
f8deb5b9 Poul Sander 2022-01-15 13:55 1847
f8deb5b9 Poul Sander 2022-01-15 13:55 1848
* Improved error reporting when trying to format an object of a non-formattable
f8deb5b9 Poul Sander 2022-01-15 13:55 1849
  type:
f8deb5b9 Poul Sander 2022-01-15 13:55 1850
f8deb5b9 Poul Sander 2022-01-15 13:55 1851
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 1852
f8deb5b9 Poul Sander 2022-01-15 13:55 1853
     fmt::format("{}", S());
f8deb5b9 Poul Sander 2022-01-15 13:55 1854
f8deb5b9 Poul Sander 2022-01-15 13:55 1855
  now gives::
f8deb5b9 Poul Sander 2022-01-15 13:55 1856
f8deb5b9 Poul Sander 2022-01-15 13:55 1857
    include/fmt/core.h:1015:5: error: static_assert failed due to requirement
f8deb5b9 Poul Sander 2022-01-15 13:55 1858
    'formattable' "Cannot format argument. To make type T formattable provide a
f8deb5b9 Poul Sander 2022-01-15 13:55 1859
    formatter<T> specialization:
f8deb5b9 Poul Sander 2022-01-15 13:55 1860
    https://fmt.dev/latest/api.html#formatting-user-defined-types"
f8deb5b9 Poul Sander 2022-01-15 13:55 1861
        static_assert(
f8deb5b9 Poul Sander 2022-01-15 13:55 1862
        ^
f8deb5b9 Poul Sander 2022-01-15 13:55 1863
    ...
f8deb5b9 Poul Sander 2022-01-15 13:55 1864
    note: in instantiation of function template specialization
f8deb5b9 Poul Sander 2022-01-15 13:55 1865
    'fmt::v6::format<char [3], S, char>' requested here
f8deb5b9 Poul Sander 2022-01-15 13:55 1866
      fmt::format("{}", S());
f8deb5b9 Poul Sander 2022-01-15 13:55 1867
           ^
f8deb5b9 Poul Sander 2022-01-15 13:55 1868
f8deb5b9 Poul Sander 2022-01-15 13:55 1869
  if ``S`` is not formattable.
f8deb5b9 Poul Sander 2022-01-15 13:55 1870
f8deb5b9 Poul Sander 2022-01-15 13:55 1871
* Reduced the library size by ~10%.
f8deb5b9 Poul Sander 2022-01-15 13:55 1872
f8deb5b9 Poul Sander 2022-01-15 13:55 1873
* Always print decimal point if ``#`` is specified
f8deb5b9 Poul Sander 2022-01-15 13:55 1874
  (`#1476 <https://github.com/fmtlib/fmt/issues/1476>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1875
  `#1498 <https://github.com/fmtlib/fmt/issues/1498>`_):
f8deb5b9 Poul Sander 2022-01-15 13:55 1876
f8deb5b9 Poul Sander 2022-01-15 13:55 1877
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 1878
f8deb5b9 Poul Sander 2022-01-15 13:55 1879
     fmt::print("{:#.0f}", 42.0);
f8deb5b9 Poul Sander 2022-01-15 13:55 1880
f8deb5b9 Poul Sander 2022-01-15 13:55 1881
  now prints ``42.``
f8deb5b9 Poul Sander 2022-01-15 13:55 1882
f8deb5b9 Poul Sander 2022-01-15 13:55 1883
* Implemented the ``'L'`` specifier for locale-specific numeric formatting to
f8deb5b9 Poul Sander 2022-01-15 13:55 1884
  improve compatibility with ``std::format``. The ``'n'`` specifier is now
f8deb5b9 Poul Sander 2022-01-15 13:55 1885
  deprecated and will be removed in the next major release.
f8deb5b9 Poul Sander 2022-01-15 13:55 1886
f8deb5b9 Poul Sander 2022-01-15 13:55 1887
* Moved OS-specific APIs such as ``windows_error`` from ``fmt/format.h`` to
f8deb5b9 Poul Sander 2022-01-15 13:55 1888
  ``fmt/os.h``. You can define ``FMT_DEPRECATED_INCLUDE_OS`` to automatically
f8deb5b9 Poul Sander 2022-01-15 13:55 1889
  include ``fmt/os.h`` from ``fmt/format.h`` for compatibility but this will be
f8deb5b9 Poul Sander 2022-01-15 13:55 1890
  disabled in the next major release.
f8deb5b9 Poul Sander 2022-01-15 13:55 1891
f8deb5b9 Poul Sander 2022-01-15 13:55 1892
* Added precision overflow detection in floating-point formatting.
f8deb5b9 Poul Sander 2022-01-15 13:55 1893
f8deb5b9 Poul Sander 2022-01-15 13:55 1894
* Implemented detection of invalid use of ``fmt::arg``.
f8deb5b9 Poul Sander 2022-01-15 13:55 1895
f8deb5b9 Poul Sander 2022-01-15 13:55 1896
* Used ``type_identity`` to block unnecessary template argument deduction.
f8deb5b9 Poul Sander 2022-01-15 13:55 1897
  Thanks Tim Song.
f8deb5b9 Poul Sander 2022-01-15 13:55 1898
f8deb5b9 Poul Sander 2022-01-15 13:55 1899
* Improved UTF-8 handling
f8deb5b9 Poul Sander 2022-01-15 13:55 1900
  (`#1109 <https://github.com/fmtlib/fmt/issues/1109>`_):
f8deb5b9 Poul Sander 2022-01-15 13:55 1901
f8deb5b9 Poul Sander 2022-01-15 13:55 1902
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 1903
f8deb5b9 Poul Sander 2022-01-15 13:55 1904
     fmt::print("┌{0:─^{2}}┐\n"
f8deb5b9 Poul Sander 2022-01-15 13:55 1905
                "│{1: ^{2}}│\n"
f8deb5b9 Poul Sander 2022-01-15 13:55 1906
                "└{0:─^{2}}┘\n", "", "Привет, мир!", 20);
f8deb5b9 Poul Sander 2022-01-15 13:55 1907
f8deb5b9 Poul Sander 2022-01-15 13:55 1908
  now prints::
f8deb5b9 Poul Sander 2022-01-15 13:55 1909
f8deb5b9 Poul Sander 2022-01-15 13:55 1910
     ┌────────────────────┐
f8deb5b9 Poul Sander 2022-01-15 13:55 1911
     │    Привет, мир!    │
f8deb5b9 Poul Sander 2022-01-15 13:55 1912
     └────────────────────┘
f8deb5b9 Poul Sander 2022-01-15 13:55 1913
f8deb5b9 Poul Sander 2022-01-15 13:55 1914
  on systems that support Unicode.
f8deb5b9 Poul Sander 2022-01-15 13:55 1915
f8deb5b9 Poul Sander 2022-01-15 13:55 1916
* Added experimental dynamic argument storage
f8deb5b9 Poul Sander 2022-01-15 13:55 1917
  (`#1170 <https://github.com/fmtlib/fmt/issues/1170>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1918
  `#1584 <https://github.com/fmtlib/fmt/pull/1584>`_):
f8deb5b9 Poul Sander 2022-01-15 13:55 1919
f8deb5b9 Poul Sander 2022-01-15 13:55 1920
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 1921
f8deb5b9 Poul Sander 2022-01-15 13:55 1922
     fmt::dynamic_format_arg_store<fmt::format_context> store;
f8deb5b9 Poul Sander 2022-01-15 13:55 1923
     store.push_back("answer");
f8deb5b9 Poul Sander 2022-01-15 13:55 1924
     store.push_back(42);
f8deb5b9 Poul Sander 2022-01-15 13:55 1925
     fmt::vprint("The {} is {}.\n", store);
f8deb5b9 Poul Sander 2022-01-15 13:55 1926
  
f8deb5b9 Poul Sander 2022-01-15 13:55 1927
  prints::
f8deb5b9 Poul Sander 2022-01-15 13:55 1928
f8deb5b9 Poul Sander 2022-01-15 13:55 1929
     The answer is 42.
f8deb5b9 Poul Sander 2022-01-15 13:55 1930
f8deb5b9 Poul Sander 2022-01-15 13:55 1931
  Thanks `@vsolontsov-ll (Vladimir Solontsov)
f8deb5b9 Poul Sander 2022-01-15 13:55 1932
  <https://github.com/vsolontsov-ll>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 1933
f8deb5b9 Poul Sander 2022-01-15 13:55 1934
* Made ``fmt::join`` accept ``initializer_list``
f8deb5b9 Poul Sander 2022-01-15 13:55 1935
  (`#1591 <https://github.com/fmtlib/fmt/pull/1591>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1936
  Thanks `@Rapotkinnik (Nikolay Rapotkin) <https://github.com/Rapotkinnik>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 1937
f8deb5b9 Poul Sander 2022-01-15 13:55 1938
* Fixed handling of empty tuples
f8deb5b9 Poul Sander 2022-01-15 13:55 1939
  (`#1588 <https://github.com/fmtlib/fmt/issues/1588>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1940
f8deb5b9 Poul Sander 2022-01-15 13:55 1941
* Fixed handling of output iterators in ``format_to_n``
f8deb5b9 Poul Sander 2022-01-15 13:55 1942
  (`#1506 <https://github.com/fmtlib/fmt/issues/1506>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1943
f8deb5b9 Poul Sander 2022-01-15 13:55 1944
* Fixed formatting of ``std::chrono::duration`` types to wide output
f8deb5b9 Poul Sander 2022-01-15 13:55 1945
  (`#1533 <https://github.com/fmtlib/fmt/pull/1533>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1946
  Thanks `@zeffy (pilao) <https://github.com/zeffy>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 1947
f8deb5b9 Poul Sander 2022-01-15 13:55 1948
* Added const ``begin`` and ``end`` overload to buffers
f8deb5b9 Poul Sander 2022-01-15 13:55 1949
  (`#1553 <https://github.com/fmtlib/fmt/pull/1553>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1950
  Thanks `@dominicpoeschko <https://github.com/dominicpoeschko>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 1951
f8deb5b9 Poul Sander 2022-01-15 13:55 1952
* Added the ability to disable floating-point formatting via ``FMT_USE_FLOAT``,
f8deb5b9 Poul Sander 2022-01-15 13:55 1953
  ``FMT_USE_DOUBLE`` and ``FMT_USE_LONG_DOUBLE`` macros for extremely
f8deb5b9 Poul Sander 2022-01-15 13:55 1954
  memory-constrained embedded system
f8deb5b9 Poul Sander 2022-01-15 13:55 1955
  (`#1590 <https://github.com/fmtlib/fmt/pull/1590>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1956
  Thanks `@albaguirre (Alberto Aguirre) <https://github.com/albaguirre>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 1957
f8deb5b9 Poul Sander 2022-01-15 13:55 1958
* Made ``FMT_STRING`` work with ``constexpr`` ``string_view``
f8deb5b9 Poul Sander 2022-01-15 13:55 1959
  (`#1589 <https://github.com/fmtlib/fmt/pull/1589>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1960
  Thanks `@scramsby (Scott Ramsby) <https://github.com/scramsby>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 1961
f8deb5b9 Poul Sander 2022-01-15 13:55 1962
* Implemented a minor optimization in the format string parser
f8deb5b9 Poul Sander 2022-01-15 13:55 1963
  (`#1560 <https://github.com/fmtlib/fmt/pull/1560>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1964
  Thanks `@IkarusDeveloper <https://github.com/IkarusDeveloper>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 1965
f8deb5b9 Poul Sander 2022-01-15 13:55 1966
* Improved attribute detection
f8deb5b9 Poul Sander 2022-01-15 13:55 1967
  (`#1469 <https://github.com/fmtlib/fmt/pull/1469>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1968
  `#1475 <https://github.com/fmtlib/fmt/pull/1475>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1969
  `#1576 <https://github.com/fmtlib/fmt/pull/1576>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1970
  Thanks `@federico-busato (Federico) <https://github.com/federico-busato>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1971
  `@chronoxor (Ivan Shynkarenka) <https://github.com/chronoxor>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1972
  `@refnum <https://github.com/refnum>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 1973
f8deb5b9 Poul Sander 2022-01-15 13:55 1974
* Improved documentation
f8deb5b9 Poul Sander 2022-01-15 13:55 1975
  (`#1481 <https://github.com/fmtlib/fmt/pull/1481>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1976
  `#1523 <https://github.com/fmtlib/fmt/pull/1523>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1977
  Thanks `@JackBoosY (Jack·Boos·Yu) <https://github.com/JackBoosY>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1978
  `@imba-tjd (谭九鼎) <https://github.com/imba-tjd>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 1979
f8deb5b9 Poul Sander 2022-01-15 13:55 1980
* Fixed symbol visibility on Linux when compiling with ``-fvisibility=hidden``
f8deb5b9 Poul Sander 2022-01-15 13:55 1981
  (`#1535 <https://github.com/fmtlib/fmt/pull/1535>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1982
  Thanks `@milianw (Milian Wolff) <https://github.com/milianw>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 1983
f8deb5b9 Poul Sander 2022-01-15 13:55 1984
* Implemented various build configuration fixes and improvements
f8deb5b9 Poul Sander 2022-01-15 13:55 1985
  (`#1264 <https://github.com/fmtlib/fmt/issues/1264>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1986
  `#1460 <https://github.com/fmtlib/fmt/issues/1460>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1987
  `#1534 <https://github.com/fmtlib/fmt/pull/1534>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1988
  `#1536 <https://github.com/fmtlib/fmt/issues/1536>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1989
  `#1545 <https://github.com/fmtlib/fmt/issues/1545>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1990
  `#1546 <https://github.com/fmtlib/fmt/pull/1546>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1991
  `#1566 <https://github.com/fmtlib/fmt/issues/1566>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1992
  `#1582 <https://github.com/fmtlib/fmt/pull/1582>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1993
  `#1597 <https://github.com/fmtlib/fmt/issues/1597>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1994
  `#1598 <https://github.com/fmtlib/fmt/pull/1598>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 1995
  Thanks `@ambitslix (Attila M. Szilagyi) <https://github.com/ambitslix>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1996
  `@jwillikers (Jordan Williams) <https://github.com/jwillikers>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 1997
  `@stac47 (Laurent Stacul) <https://github.com/stac47>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 1998
f8deb5b9 Poul Sander 2022-01-15 13:55 1999
* Fixed various warnings and compilation issues
f8deb5b9 Poul Sander 2022-01-15 13:55 2000
  (`#1433 <https://github.com/fmtlib/fmt/pull/1433>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2001
  `#1461 <https://github.com/fmtlib/fmt/issues/1461>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2002
  `#1470 <https://github.com/fmtlib/fmt/pull/1470>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2003
  `#1480 <https://github.com/fmtlib/fmt/pull/1480>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2004
  `#1485 <https://github.com/fmtlib/fmt/pull/1485>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2005
  `#1492 <https://github.com/fmtlib/fmt/pull/1492>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2006
  `#1493 <https://github.com/fmtlib/fmt/issues/1493>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2007
  `#1504 <https://github.com/fmtlib/fmt/issues/1504>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2008
  `#1505 <https://github.com/fmtlib/fmt/pull/1505>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2009
  `#1512 <https://github.com/fmtlib/fmt/pull/1512>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2010
  `#1515 <https://github.com/fmtlib/fmt/issues/1515>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2011
  `#1516 <https://github.com/fmtlib/fmt/pull/1516>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2012
  `#1518 <https://github.com/fmtlib/fmt/pull/1518>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2013
  `#1519 <https://github.com/fmtlib/fmt/pull/1519>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2014
  `#1520 <https://github.com/fmtlib/fmt/pull/1520>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2015
  `#1521 <https://github.com/fmtlib/fmt/pull/1521>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2016
  `#1522 <https://github.com/fmtlib/fmt/pull/1522>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2017
  `#1524 <https://github.com/fmtlib/fmt/issues/1524>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2018
  `#1530 <https://github.com/fmtlib/fmt/pull/1530>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2019
  `#1531 <https://github.com/fmtlib/fmt/issues/1531>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2020
  `#1532 <https://github.com/fmtlib/fmt/pull/1532>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2021
  `#1539 <https://github.com/fmtlib/fmt/issues/1539>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2022
  `#1547 <https://github.com/fmtlib/fmt/issues/1547>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2023
  `#1548 <https://github.com/fmtlib/fmt/issues/1548>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2024
  `#1554 <https://github.com/fmtlib/fmt/pull/1554>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2025
  `#1567 <https://github.com/fmtlib/fmt/issues/1567>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2026
  `#1568 <https://github.com/fmtlib/fmt/pull/1568>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2027
  `#1569 <https://github.com/fmtlib/fmt/pull/1569>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2028
  `#1571 <https://github.com/fmtlib/fmt/pull/1571>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2029
  `#1573 <https://github.com/fmtlib/fmt/pull/1573>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2030
  `#1575 <https://github.com/fmtlib/fmt/pull/1575>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2031
  `#1581 <https://github.com/fmtlib/fmt/pull/1581>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2032
  `#1583 <https://github.com/fmtlib/fmt/issues/1583>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2033
  `#1586 <https://github.com/fmtlib/fmt/issues/1586>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2034
  `#1587 <https://github.com/fmtlib/fmt/issues/1587>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2035
  `#1594 <https://github.com/fmtlib/fmt/issues/1594>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2036
  `#1596 <https://github.com/fmtlib/fmt/pull/1596>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2037
  `#1604 <https://github.com/fmtlib/fmt/issues/1604>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2038
  `#1606 <https://github.com/fmtlib/fmt/pull/1606>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2039
  `#1607 <https://github.com/fmtlib/fmt/issues/1607>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2040
  `#1609 <https://github.com/fmtlib/fmt/issues/1609>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 2041
  Thanks `@marti4d (Chris Martin) <https://github.com/marti4d>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2042
  `@iPherian <https://github.com/iPherian>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2043
  `@parkertomatoes <https://github.com/parkertomatoes>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2044
  `@gsjaardema (Greg Sjaardema) <https://github.com/gsjaardema>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2045
  `@chronoxor (Ivan Shynkarenka) <https://github.com/chronoxor>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2046
  `@DanielaE (Daniela Engert) <https://github.com/DanielaE>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2047
  `@torsten48 <https://github.com/torsten48>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2048
  `@tohammer (Tobias Hammer) <https://github.com/tohammer>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2049
  `@lefticus (Jason Turner) <https://github.com/lefticus>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2050
  `@ryusakki (Haise) <https://github.com/ryusakki>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2051
  `@adnsv (Alex Denisov) <https://github.com/adnsv>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2052
  `@fghzxm <https://github.com/fghzxm>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2053
  `@refnum <https://github.com/refnum>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2054
  `@pramodk (Pramod Kumbhar) <https://github.com/pramodk>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2055
  `@Spirrwell <https://github.com/Spirrwell>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2056
  `@scramsby (Scott Ramsby) <https://github.com/scramsby>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 2057
f8deb5b9 Poul Sander 2022-01-15 13:55 2058
6.1.2 - 2019-12-11
f8deb5b9 Poul Sander 2022-01-15 13:55 2059
------------------
f8deb5b9 Poul Sander 2022-01-15 13:55 2060
f8deb5b9 Poul Sander 2022-01-15 13:55 2061
* Fixed ABI compatibility with ``libfmt.so.6.0.0``
f8deb5b9 Poul Sander 2022-01-15 13:55 2062
  (`#1471 <https://github.com/fmtlib/fmt/issues/1471>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 2063
f8deb5b9 Poul Sander 2022-01-15 13:55 2064
* Fixed handling types convertible to ``std::string_view``
f8deb5b9 Poul Sander 2022-01-15 13:55 2065
  (`#1451 <https://github.com/fmtlib/fmt/pull/1451>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 2066
  Thanks `@denizevrenci (Deniz Evrenci) <https://github.com/denizevrenci>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 2067
f8deb5b9 Poul Sander 2022-01-15 13:55 2068
* Made CUDA test an opt-in enabled via the ``FMT_CUDA_TEST`` CMake option.
f8deb5b9 Poul Sander 2022-01-15 13:55 2069
f8deb5b9 Poul Sander 2022-01-15 13:55 2070
* Fixed sign conversion warnings
f8deb5b9 Poul Sander 2022-01-15 13:55 2071
  (`#1440 <https://github.com/fmtlib/fmt/pull/1440>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 2072
  Thanks `@0x8000-0000 (Florin Iucha) <https://github.com/0x8000-0000>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 2073
f8deb5b9 Poul Sander 2022-01-15 13:55 2074
6.1.1 - 2019-12-04
f8deb5b9 Poul Sander 2022-01-15 13:55 2075
------------------
f8deb5b9 Poul Sander 2022-01-15 13:55 2076
f8deb5b9 Poul Sander 2022-01-15 13:55 2077
* Fixed shared library build on Windows
f8deb5b9 Poul Sander 2022-01-15 13:55 2078
  (`#1443 <https://github.com/fmtlib/fmt/pull/1443>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2079
  `#1445 <https://github.com/fmtlib/fmt/issues/1445>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2080
  `#1446 <https://github.com/fmtlib/fmt/pull/1446>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2081
  `#1450 <https://github.com/fmtlib/fmt/issues/1450>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 2082
  Thanks `@egorpugin (Egor Pugin) <https://github.com/egorpugin>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2083
  `@bbolli (Beat Bolli) <https://github.com/bbolli>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 2084
f8deb5b9 Poul Sander 2022-01-15 13:55 2085
* Added a missing decimal point in exponent notation with trailing zeros.
f8deb5b9 Poul Sander 2022-01-15 13:55 2086
f8deb5b9 Poul Sander 2022-01-15 13:55 2087
* Removed deprecated ``format_arg_store::TYPES``.
f8deb5b9 Poul Sander 2022-01-15 13:55 2088
f8deb5b9 Poul Sander 2022-01-15 13:55 2089
6.1.0 - 2019-12-01
f8deb5b9 Poul Sander 2022-01-15 13:55 2090
------------------
f8deb5b9 Poul Sander 2022-01-15 13:55 2091
f8deb5b9 Poul Sander 2022-01-15 13:55 2092
* {fmt} now formats IEEE 754 ``float`` and ``double`` using the shortest decimal
f8deb5b9 Poul Sander 2022-01-15 13:55 2093
  representation with correct rounding by default:
f8deb5b9 Poul Sander 2022-01-15 13:55 2094
f8deb5b9 Poul Sander 2022-01-15 13:55 2095
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 2096
f8deb5b9 Poul Sander 2022-01-15 13:55 2097
     #include <cmath>
f8deb5b9 Poul Sander 2022-01-15 13:55 2098
     #include <fmt/core.h>
f8deb5b9 Poul Sander 2022-01-15 13:55 2099
f8deb5b9 Poul Sander 2022-01-15 13:55 2100
     int main() {
f8deb5b9 Poul Sander 2022-01-15 13:55 2101
       fmt::print("{}", M_PI);
f8deb5b9 Poul Sander 2022-01-15 13:55 2102
     }
f8deb5b9 Poul Sander 2022-01-15 13:55 2103
f8deb5b9 Poul Sander 2022-01-15 13:55 2104
  prints ``3.141592653589793``.
f8deb5b9 Poul Sander 2022-01-15 13:55 2105
f8deb5b9 Poul Sander 2022-01-15 13:55 2106
* Made the fast binary to decimal floating-point formatter the default,
f8deb5b9 Poul Sander 2022-01-15 13:55 2107
  simplified it and improved performance. {fmt} is now 15 times faster than
f8deb5b9 Poul Sander 2022-01-15 13:55 2108
  libc++'s ``std::ostringstream``, 11 times faster than ``printf`` and 10%
f8deb5b9 Poul Sander 2022-01-15 13:55 2109
  faster than double-conversion on `dtoa-benchmark
f8deb5b9 Poul Sander 2022-01-15 13:55 2110
  <https://github.com/fmtlib/dtoa-benchmark>`_:
f8deb5b9 Poul Sander 2022-01-15 13:55 2111
f8deb5b9 Poul Sander 2022-01-15 13:55 2112
  ==================  =========  =======
f8deb5b9 Poul Sander 2022-01-15 13:55 2113
  Function            Time (ns)  Speedup
f8deb5b9 Poul Sander 2022-01-15 13:55 2114
  ==================  =========  =======
f8deb5b9 Poul Sander 2022-01-15 13:55 2115
  ostringstream        1,346.30    1.00x
f8deb5b9 Poul Sander 2022-01-15 13:55 2116
  ostrstream           1,195.74    1.13x
f8deb5b9 Poul Sander 2022-01-15 13:55 2117
  sprintf                995.08    1.35x
f8deb5b9 Poul Sander 2022-01-15 13:55 2118
  doubleconv              99.10   13.59x
f8deb5b9 Poul Sander 2022-01-15 13:55 2119
  fmt                     88.34   15.24x
f8deb5b9 Poul Sander 2022-01-15 13:55 2120
  ==================  =========  =======
f8deb5b9 Poul Sander 2022-01-15 13:55 2121
f8deb5b9 Poul Sander 2022-01-15 13:55 2122
  .. image:: https://user-images.githubusercontent.com/576385/
f8deb5b9 Poul Sander 2022-01-15 13:55 2123
             69767160-cdaca400-112f-11ea-9fc5-347c9f83caad.png
f8deb5b9 Poul Sander 2022-01-15 13:55 2124
f8deb5b9 Poul Sander 2022-01-15 13:55 2125
* {fmt} no longer converts ``float`` arguments to ``double``. In particular this
f8deb5b9 Poul Sander 2022-01-15 13:55 2126
  improves the default (shortest) representation of floats and makes
f8deb5b9 Poul Sander 2022-01-15 13:55 2127
  ``fmt::format`` consistent with ``std::format`` specs
f8deb5b9 Poul Sander 2022-01-15 13:55 2128
  (`#1336 <https://github.com/fmtlib/fmt/issues/1336>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2129
  `#1353 <https://github.com/fmtlib/fmt/issues/1353>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2130
  `#1360 <https://github.com/fmtlib/fmt/pull/1360>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2131
  `#1361 <https://github.com/fmtlib/fmt/pull/1361>`_):
f8deb5b9 Poul Sander 2022-01-15 13:55 2132
f8deb5b9 Poul Sander 2022-01-15 13:55 2133
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 2134
f8deb5b9 Poul Sander 2022-01-15 13:55 2135
     fmt::print("{}", 0.1f);
f8deb5b9 Poul Sander 2022-01-15 13:55 2136
f8deb5b9 Poul Sander 2022-01-15 13:55 2137
  prints ``0.1`` instead of ``0.10000000149011612``.
f8deb5b9 Poul Sander 2022-01-15 13:55 2138
f8deb5b9 Poul Sander 2022-01-15 13:55 2139
  Thanks `@orivej (Orivej Desh) <https://github.com/orivej>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 2140
f8deb5b9 Poul Sander 2022-01-15 13:55 2141
* Made floating-point formatting output consistent with ``printf``/iostreams
f8deb5b9 Poul Sander 2022-01-15 13:55 2142
  (`#1376 <https://github.com/fmtlib/fmt/issues/1376>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2143
  `#1417 <https://github.com/fmtlib/fmt/issues/1417>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 2144
f8deb5b9 Poul Sander 2022-01-15 13:55 2145
* Added support for 128-bit integers
f8deb5b9 Poul Sander 2022-01-15 13:55 2146
  (`#1287 <https://github.com/fmtlib/fmt/pull/1287>`_):
f8deb5b9 Poul Sander 2022-01-15 13:55 2147
f8deb5b9 Poul Sander 2022-01-15 13:55 2148
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 2149
f8deb5b9 Poul Sander 2022-01-15 13:55 2150
     fmt::print("{}", std::numeric_limits<__int128_t>::max());
f8deb5b9 Poul Sander 2022-01-15 13:55 2151
f8deb5b9 Poul Sander 2022-01-15 13:55 2152
  prints ``170141183460469231731687303715884105727``.
f8deb5b9 Poul Sander 2022-01-15 13:55 2153
f8deb5b9 Poul Sander 2022-01-15 13:55 2154
  Thanks `@denizevrenci (Deniz Evrenci) <https://github.com/denizevrenci>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 2155
f8deb5b9 Poul Sander 2022-01-15 13:55 2156
* The overload of ``print`` that takes ``text_style`` is now atomic, i.e. the
f8deb5b9 Poul Sander 2022-01-15 13:55 2157
  output from different threads doesn't interleave
f8deb5b9 Poul Sander 2022-01-15 13:55 2158
  (`#1351 <https://github.com/fmtlib/fmt/pull/1351>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 2159
  Thanks `@tankiJong (Tanki Zhang) <https://github.com/tankiJong>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 2160
f8deb5b9 Poul Sander 2022-01-15 13:55 2161
* Made compile time in the header-only mode ~20% faster by reducing the number
f8deb5b9 Poul Sander 2022-01-15 13:55 2162
  of template instantiations. ``wchar_t`` overload of ``vprint`` was moved from
f8deb5b9 Poul Sander 2022-01-15 13:55 2163
  ``fmt/core.h`` to ``fmt/format.h``.
f8deb5b9 Poul Sander 2022-01-15 13:55 2164
f8deb5b9 Poul Sander 2022-01-15 13:55 2165
* Added an overload of ``fmt::join`` that works with tuples
f8deb5b9 Poul Sander 2022-01-15 13:55 2166
  (`#1322 <https://github.com/fmtlib/fmt/issues/1322>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2167
  `#1330 <https://github.com/fmtlib/fmt/pull/1330>`_):
f8deb5b9 Poul Sander 2022-01-15 13:55 2168
f8deb5b9 Poul Sander 2022-01-15 13:55 2169
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 2170
f8deb5b9 Poul Sander 2022-01-15 13:55 2171
     #include <tuple>
f8deb5b9 Poul Sander 2022-01-15 13:55 2172
     #include <fmt/ranges.h>
f8deb5b9 Poul Sander 2022-01-15 13:55 2173
f8deb5b9 Poul Sander 2022-01-15 13:55 2174
     int main() {
f8deb5b9 Poul Sander 2022-01-15 13:55 2175
       std::tuple<char, int, float> t{'a', 1, 2.0f};
f8deb5b9 Poul Sander 2022-01-15 13:55 2176
       fmt::print("{}", t);
f8deb5b9 Poul Sander 2022-01-15 13:55 2177
     }
f8deb5b9 Poul Sander 2022-01-15 13:55 2178
f8deb5b9 Poul Sander 2022-01-15 13:55 2179
  prints ``('a', 1, 2.0)``.
f8deb5b9 Poul Sander 2022-01-15 13:55 2180
f8deb5b9 Poul Sander 2022-01-15 13:55 2181
  Thanks `@jeremyong (Jeremy Ong) <https://github.com/jeremyong>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 2182
f8deb5b9 Poul Sander 2022-01-15 13:55 2183
* Changed formatting of octal zero with prefix from "00" to "0":
f8deb5b9 Poul Sander 2022-01-15 13:55 2184
f8deb5b9 Poul Sander 2022-01-15 13:55 2185
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 2186
f8deb5b9 Poul Sander 2022-01-15 13:55 2187
     fmt::print("{:#o}", 0);
f8deb5b9 Poul Sander 2022-01-15 13:55 2188
f8deb5b9 Poul Sander 2022-01-15 13:55 2189
  prints ``0``.
f8deb5b9 Poul Sander 2022-01-15 13:55 2190
f8deb5b9 Poul Sander 2022-01-15 13:55 2191
* The locale is now passed to ostream insertion (``<<``) operators
f8deb5b9 Poul Sander 2022-01-15 13:55 2192
  (`#1406 <https://github.com/fmtlib/fmt/pull/1406>`_):
f8deb5b9 Poul Sander 2022-01-15 13:55 2193
f8deb5b9 Poul Sander 2022-01-15 13:55 2194
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 2195
f8deb5b9 Poul Sander 2022-01-15 13:55 2196
     #include <fmt/locale.h>
f8deb5b9 Poul Sander 2022-01-15 13:55 2197
     #include <fmt/ostream.h>
f8deb5b9 Poul Sander 2022-01-15 13:55 2198
f8deb5b9 Poul Sander 2022-01-15 13:55 2199
     struct S {
f8deb5b9 Poul Sander 2022-01-15 13:55 2200
       double value;
f8deb5b9 Poul Sander 2022-01-15 13:55 2201
     };
f8deb5b9 Poul Sander 2022-01-15 13:55 2202
f8deb5b9 Poul Sander 2022-01-15 13:55 2203
     std::ostream& operator<<(std::ostream& os, S s) {
f8deb5b9 Poul Sander 2022-01-15 13:55 2204
       return os << s.value;
f8deb5b9 Poul Sander 2022-01-15 13:55 2205
     }
f8deb5b9 Poul Sander 2022-01-15 13:55 2206
f8deb5b9 Poul Sander 2022-01-15 13:55 2207
     int main() {
f8deb5b9 Poul Sander 2022-01-15 13:55 2208
       auto s = fmt::format(std::locale("fr_FR.UTF-8"), "{}", S{0.42});
f8deb5b9 Poul Sander 2022-01-15 13:55 2209
       // s == "0,42"
f8deb5b9 Poul Sander 2022-01-15 13:55 2210
     }
f8deb5b9 Poul Sander 2022-01-15 13:55 2211
f8deb5b9 Poul Sander 2022-01-15 13:55 2212
  Thanks `@dlaugt (Daniel Laügt) <https://github.com/dlaugt>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 2213
f8deb5b9 Poul Sander 2022-01-15 13:55 2214
* Locale-specific number formatting now uses grouping
f8deb5b9 Poul Sander 2022-01-15 13:55 2215
  (`#1393 <https://github.com/fmtlib/fmt/issues/1393>`_
f8deb5b9 Poul Sander 2022-01-15 13:55 2216
  `#1394 <https://github.com/fmtlib/fmt/pull/1394>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 2217
  Thanks `@skrdaniel <https://github.com/skrdaniel>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 2218
f8deb5b9 Poul Sander 2022-01-15 13:55 2219
* Fixed handling of types with deleted implicit rvalue conversion to
f8deb5b9 Poul Sander 2022-01-15 13:55 2220
  ``const char**`` (`#1421 <https://github.com/fmtlib/fmt/issues/1421>`_):
f8deb5b9 Poul Sander 2022-01-15 13:55 2221
f8deb5b9 Poul Sander 2022-01-15 13:55 2222
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 2223
f8deb5b9 Poul Sander 2022-01-15 13:55 2224
     struct mystring {
f8deb5b9 Poul Sander 2022-01-15 13:55 2225
       operator const char*() const&;
f8deb5b9 Poul Sander 2022-01-15 13:55 2226
       operator const char*() &;
f8deb5b9 Poul Sander 2022-01-15 13:55 2227
       operator const char*() const&& = delete;
f8deb5b9 Poul Sander 2022-01-15 13:55 2228
       operator const char*() && = delete;
f8deb5b9 Poul Sander 2022-01-15 13:55 2229
     };
f8deb5b9 Poul Sander 2022-01-15 13:55 2230
     mystring str;
f8deb5b9 Poul Sander 2022-01-15 13:55 2231
     fmt::print("{}", str); // now compiles
f8deb5b9 Poul Sander 2022-01-15 13:55 2232
f8deb5b9 Poul Sander 2022-01-15 13:55 2233
* Enums are now mapped to correct underlying types instead of ``int``
f8deb5b9 Poul Sander 2022-01-15 13:55 2234
  (`#1286 <https://github.com/fmtlib/fmt/pull/1286>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 2235
  Thanks `@agmt (Egor Seredin) <https://github.com/agmt>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 2236
f8deb5b9 Poul Sander 2022-01-15 13:55 2237
* Enum classes are no longer implicitly converted to ``int``
f8deb5b9 Poul Sander 2022-01-15 13:55 2238
  (`#1424 <https://github.com/fmtlib/fmt/issues/1424>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 2239
f8deb5b9 Poul Sander 2022-01-15 13:55 2240
* Added ``basic_format_parse_context`` for consistency with C++20
f8deb5b9 Poul Sander 2022-01-15 13:55 2241
  ``std::format`` and deprecated ``basic_parse_context``.
f8deb5b9 Poul Sander 2022-01-15 13:55 2242
f8deb5b9 Poul Sander 2022-01-15 13:55 2243
* Fixed handling of UTF-8 in precision
f8deb5b9 Poul Sander 2022-01-15 13:55 2244
  (`#1389 <https://github.com/fmtlib/fmt/issues/1389>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2245
  `#1390 <https://github.com/fmtlib/fmt/pull/1390>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 2246
  Thanks `@tajtiattila (Attila Tajti) <https://github.com/tajtiattila>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 2247
f8deb5b9 Poul Sander 2022-01-15 13:55 2248
* {fmt} can now be installed on Linux, macOS and Windows with
f8deb5b9 Poul Sander 2022-01-15 13:55 2249
  `Conda <https://docs.conda.io/en/latest/>`__ using its
f8deb5b9 Poul Sander 2022-01-15 13:55 2250
  `conda-forge <https://conda-forge.org>`__
f8deb5b9 Poul Sander 2022-01-15 13:55 2251
  `package <https://github.com/conda-forge/fmt-feedstock>`__
f8deb5b9 Poul Sander 2022-01-15 13:55 2252
  (`#1410 <https://github.com/fmtlib/fmt/pull/1410>`_)::
f8deb5b9 Poul Sander 2022-01-15 13:55 2253
f8deb5b9 Poul Sander 2022-01-15 13:55 2254
    conda install -c conda-forge fmt
f8deb5b9 Poul Sander 2022-01-15 13:55 2255
f8deb5b9 Poul Sander 2022-01-15 13:55 2256
  Thanks `@tdegeus (Tom de Geus) <https://github.com/tdegeus>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 2257
f8deb5b9 Poul Sander 2022-01-15 13:55 2258
* Added a CUDA test (`#1285 <https://github.com/fmtlib/fmt/pull/1285>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2259
  `#1317 <https://github.com/fmtlib/fmt/pull/1317>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 2260
  Thanks `@luncliff (Park DongHa) <https://github.com/luncliff>`_ and
f8deb5b9 Poul Sander 2022-01-15 13:55 2261
  `@risa2000 <https://github.com/risa2000>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 2262
f8deb5b9 Poul Sander 2022-01-15 13:55 2263
* Improved documentation (`#1276 <https://github.com/fmtlib/fmt/pull/1276>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2264
  `#1291 <https://github.com/fmtlib/fmt/issues/1291>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2265
  `#1296 <https://github.com/fmtlib/fmt/issues/1296>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2266
  `#1315 <https://github.com/fmtlib/fmt/pull/1315>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2267
  `#1332 <https://github.com/fmtlib/fmt/pull/1332>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2268
  `#1337 <https://github.com/fmtlib/fmt/pull/1337>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2269
  `#1395 <https://github.com/fmtlib/fmt/issues/1395>`_
f8deb5b9 Poul Sander 2022-01-15 13:55 2270
  `#1418 <https://github.com/fmtlib/fmt/pull/1418>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 2271
  Thanks
f8deb5b9 Poul Sander 2022-01-15 13:55 2272
  `@waywardmonkeys (Bruce Mitchener) <https://github.com/waywardmonkeys>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2273
  `@pauldreik (Paul Dreik) <https://github.com/pauldreik>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2274
  `@jackoalan (Jack Andersen) <https://github.com/jackoalan>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 2275
f8deb5b9 Poul Sander 2022-01-15 13:55 2276
* Various code improvements
f8deb5b9 Poul Sander 2022-01-15 13:55 2277
  (`#1358 <https://github.com/fmtlib/fmt/pull/1358>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2278
  `#1407 <https://github.com/fmtlib/fmt/pull/1407>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 2279
  Thanks `@orivej (Orivej Desh) <https://github.com/orivej>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2280
  `@dpacbach (David P. Sicilia) <https://github.com/dpacbach>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2281
f8deb5b9 Poul Sander 2022-01-15 13:55 2282
* Fixed compile-time format string checks for user-defined types
f8deb5b9 Poul Sander 2022-01-15 13:55 2283
  (`#1292 <https://github.com/fmtlib/fmt/issues/1292>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 2284
f8deb5b9 Poul Sander 2022-01-15 13:55 2285
* Worked around a false positive in ``unsigned-integer-overflow`` sanitizer
f8deb5b9 Poul Sander 2022-01-15 13:55 2286
  (`#1377 <https://github.com/fmtlib/fmt/issues/1377>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 2287
f8deb5b9 Poul Sander 2022-01-15 13:55 2288
* Fixed various warnings and compilation issues
f8deb5b9 Poul Sander 2022-01-15 13:55 2289
  (`#1273 <https://github.com/fmtlib/fmt/issues/1273>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2290
  `#1278 <https://github.com/fmtlib/fmt/pull/1278>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2291
  `#1280 <https://github.com/fmtlib/fmt/pull/1280>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2292
  `#1281 <https://github.com/fmtlib/fmt/issues/1281>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2293
  `#1288 <https://github.com/fmtlib/fmt/issues/1288>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2294
  `#1290 <https://github.com/fmtlib/fmt/pull/1290>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2295
  `#1301 <https://github.com/fmtlib/fmt/pull/1301>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2296
  `#1305 <https://github.com/fmtlib/fmt/issues/1305>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2297
  `#1306 <https://github.com/fmtlib/fmt/issues/1306>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2298
  `#1309 <https://github.com/fmtlib/fmt/issues/1309>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2299
  `#1312 <https://github.com/fmtlib/fmt/pull/1312>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2300
  `#1313 <https://github.com/fmtlib/fmt/issues/1313>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2301
  `#1316 <https://github.com/fmtlib/fmt/issues/1316>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2302
  `#1319 <https://github.com/fmtlib/fmt/issues/1319>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2303
  `#1320 <https://github.com/fmtlib/fmt/pull/1320>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2304
  `#1326 <https://github.com/fmtlib/fmt/pull/1326>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2305
  `#1328 <https://github.com/fmtlib/fmt/pull/1328>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2306
  `#1344 <https://github.com/fmtlib/fmt/issues/1344>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2307
  `#1345 <https://github.com/fmtlib/fmt/pull/1345>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2308
  `#1347 <https://github.com/fmtlib/fmt/pull/1347>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2309
  `#1349 <https://github.com/fmtlib/fmt/pull/1349>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2310
  `#1354 <https://github.com/fmtlib/fmt/issues/1354>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2311
  `#1362 <https://github.com/fmtlib/fmt/issues/1362>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2312
  `#1366 <https://github.com/fmtlib/fmt/issues/1366>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2313
  `#1364 <https://github.com/fmtlib/fmt/pull/1364>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2314
  `#1370 <https://github.com/fmtlib/fmt/pull/1370>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2315
  `#1371 <https://github.com/fmtlib/fmt/pull/1371>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2316
  `#1385 <https://github.com/fmtlib/fmt/issues/1385>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2317
  `#1388 <https://github.com/fmtlib/fmt/issues/1388>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2318
  `#1397 <https://github.com/fmtlib/fmt/pull/1397>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2319
  `#1414 <https://github.com/fmtlib/fmt/pull/1414>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2320
  `#1416 <https://github.com/fmtlib/fmt/pull/1416>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2321
  `#1422 <https://github.com/fmtlib/fmt/issues/1422>`_
f8deb5b9 Poul Sander 2022-01-15 13:55 2322
  `#1427 <https://github.com/fmtlib/fmt/pull/1427>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2323
  `#1431 <https://github.com/fmtlib/fmt/issues/1431>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2324
  `#1433 <https://github.com/fmtlib/fmt/pull/1433>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 2325
  Thanks `@hhb <https://github.com/hhb>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2326
  `@gsjaardema (Greg Sjaardema) <https://github.com/gsjaardema>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2327
  `@gabime (Gabi Melman) <https://github.com/gabime>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2328
  `@neheb (Rosen Penev) <https://github.com/neheb>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2329
  `@vedranmiletic (Vedran Miletić) <https://github.com/vedranmiletic>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2330
  `@dkavolis (Daumantas Kavolis) <https://github.com/dkavolis>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2331
  `@mwinterb <https://github.com/mwinterb>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2332
  `@orivej (Orivej Desh) <https://github.com/orivej>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2333
  `@denizevrenci (Deniz Evrenci) <https://github.com/denizevrenci>`_
f8deb5b9 Poul Sander 2022-01-15 13:55 2334
  `@leonklingele <https://github.com/leonklingele>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2335
  `@chronoxor (Ivan Shynkarenka) <https://github.com/chronoxor>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2336
  `@kent-tri <https://github.com/kent-tri>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2337
  `@0x8000-0000 (Florin Iucha) <https://github.com/0x8000-0000>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2338
  `@marti4d (Chris Martin) <https://github.com/marti4d>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 2339
f8deb5b9 Poul Sander 2022-01-15 13:55 2340
6.0.0 - 2019-08-26
f8deb5b9 Poul Sander 2022-01-15 13:55 2341
------------------
f8deb5b9 Poul Sander 2022-01-15 13:55 2342
f8deb5b9 Poul Sander 2022-01-15 13:55 2343
* Switched to the `MIT license
f8deb5b9 Poul Sander 2022-01-15 13:55 2344
  <https://github.com/fmtlib/fmt/blob/5a4b24613ba16cc689977c3b5bd8274a3ba1dd1f/LICENSE.rst>`_
f8deb5b9 Poul Sander 2022-01-15 13:55 2345
  with an optional exception that allows distributing binary code without
f8deb5b9 Poul Sander 2022-01-15 13:55 2346
  attribution.
f8deb5b9 Poul Sander 2022-01-15 13:55 2347
f8deb5b9 Poul Sander 2022-01-15 13:55 2348
* Floating-point formatting is now locale-independent by default:
f8deb5b9 Poul Sander 2022-01-15 13:55 2349
f8deb5b9 Poul Sander 2022-01-15 13:55 2350
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 2351
f8deb5b9 Poul Sander 2022-01-15 13:55 2352
     #include <locale>
f8deb5b9 Poul Sander 2022-01-15 13:55 2353
     #include <fmt/core.h>
f8deb5b9 Poul Sander 2022-01-15 13:55 2354
f8deb5b9 Poul Sander 2022-01-15 13:55 2355
     int main() {
f8deb5b9 Poul Sander 2022-01-15 13:55 2356
       std::locale::global(std::locale("ru_RU.UTF-8"));
f8deb5b9 Poul Sander 2022-01-15 13:55 2357
       fmt::print("value = {}", 4.2);
f8deb5b9 Poul Sander 2022-01-15 13:55 2358
     }
f8deb5b9 Poul Sander 2022-01-15 13:55 2359
f8deb5b9 Poul Sander 2022-01-15 13:55 2360
  prints "value = 4.2" regardless of the locale.
f8deb5b9 Poul Sander 2022-01-15 13:55 2361
f8deb5b9 Poul Sander 2022-01-15 13:55 2362
  For locale-specific formatting use the ``n`` specifier:
f8deb5b9 Poul Sander 2022-01-15 13:55 2363
f8deb5b9 Poul Sander 2022-01-15 13:55 2364
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 2365
f8deb5b9 Poul Sander 2022-01-15 13:55 2366
     std::locale::global(std::locale("ru_RU.UTF-8"));
f8deb5b9 Poul Sander 2022-01-15 13:55 2367
     fmt::print("value = {:n}", 4.2);
f8deb5b9 Poul Sander 2022-01-15 13:55 2368
f8deb5b9 Poul Sander 2022-01-15 13:55 2369
  prints "value = 4,2".
f8deb5b9 Poul Sander 2022-01-15 13:55 2370
f8deb5b9 Poul Sander 2022-01-15 13:55 2371
* Added an experimental Grisu floating-point formatting algorithm
f8deb5b9 Poul Sander 2022-01-15 13:55 2372
  implementation (disabled by default). To enable it compile with the
f8deb5b9 Poul Sander 2022-01-15 13:55 2373
  ``FMT_USE_GRISU`` macro defined to 1:
f8deb5b9 Poul Sander 2022-01-15 13:55 2374
f8deb5b9 Poul Sander 2022-01-15 13:55 2375
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 2376
f8deb5b9 Poul Sander 2022-01-15 13:55 2377
     #define FMT_USE_GRISU 1
f8deb5b9 Poul Sander 2022-01-15 13:55 2378
     #include <fmt/format.h>
f8deb5b9 Poul Sander 2022-01-15 13:55 2379
f8deb5b9 Poul Sander 2022-01-15 13:55 2380
     auto s = fmt::format("{}", 4.2); // formats 4.2 using Grisu
f8deb5b9 Poul Sander 2022-01-15 13:55 2381
f8deb5b9 Poul Sander 2022-01-15 13:55 2382
  With Grisu enabled, {fmt} is 13x faster than ``std::ostringstream`` (libc++)
f8deb5b9 Poul Sander 2022-01-15 13:55 2383
  and 10x faster than ``sprintf`` on `dtoa-benchmark
f8deb5b9 Poul Sander 2022-01-15 13:55 2384
  <https://github.com/fmtlib/dtoa-benchmark>`_ (`full results
f8deb5b9 Poul Sander 2022-01-15 13:55 2385
  <https://fmt.dev/unknown_mac64_clang10.0.html>`_):
f8deb5b9 Poul Sander 2022-01-15 13:55 2386
f8deb5b9 Poul Sander 2022-01-15 13:55 2387
  .. image:: https://user-images.githubusercontent.com/576385/
f8deb5b9 Poul Sander 2022-01-15 13:55 2388
             54883977-9fe8c000-4e28-11e9-8bde-272d122e7c52.jpg
f8deb5b9 Poul Sander 2022-01-15 13:55 2389
f8deb5b9 Poul Sander 2022-01-15 13:55 2390
* Separated formatting and parsing contexts for consistency with
f8deb5b9 Poul Sander 2022-01-15 13:55 2391
  `C++20 std::format <http://eel.is/c++draft/format>`_, removing the
f8deb5b9 Poul Sander 2022-01-15 13:55 2392
  undocumented ``basic_format_context::parse_context()`` function.
f8deb5b9 Poul Sander 2022-01-15 13:55 2393
f8deb5b9 Poul Sander 2022-01-15 13:55 2394
* Added `oss-fuzz <https://github.com/google/oss-fuzz>`_ support
f8deb5b9 Poul Sander 2022-01-15 13:55 2395
  (`#1199 <https://github.com/fmtlib/fmt/pull/1199>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 2396
  Thanks `@pauldreik (Paul Dreik) <https://github.com/pauldreik>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 2397
f8deb5b9 Poul Sander 2022-01-15 13:55 2398
* ``formatter`` specializations now always take precedence over ``operator<<``
f8deb5b9 Poul Sander 2022-01-15 13:55 2399
  (`#952 <https://github.com/fmtlib/fmt/issues/952>`_):
f8deb5b9 Poul Sander 2022-01-15 13:55 2400
f8deb5b9 Poul Sander 2022-01-15 13:55 2401
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 2402
f8deb5b9 Poul Sander 2022-01-15 13:55 2403
     #include <iostream>
f8deb5b9 Poul Sander 2022-01-15 13:55 2404
     #include <fmt/ostream.h>
f8deb5b9 Poul Sander 2022-01-15 13:55 2405
f8deb5b9 Poul Sander 2022-01-15 13:55 2406
     struct S {};
f8deb5b9 Poul Sander 2022-01-15 13:55 2407
f8deb5b9 Poul Sander 2022-01-15 13:55 2408
     std::ostream& operator<<(std::ostream& os, S) {
f8deb5b9 Poul Sander 2022-01-15 13:55 2409
       return os << 1;
f8deb5b9 Poul Sander 2022-01-15 13:55 2410
     }
f8deb5b9 Poul Sander 2022-01-15 13:55 2411
f8deb5b9 Poul Sander 2022-01-15 13:55 2412
     template <>
f8deb5b9 Poul Sander 2022-01-15 13:55 2413
     struct fmt::formatter<S> : fmt::formatter<int> {
f8deb5b9 Poul Sander 2022-01-15 13:55 2414
       auto format(S, format_context& ctx) {
f8deb5b9 Poul Sander 2022-01-15 13:55 2415
         return formatter<int>::format(2, ctx);
f8deb5b9 Poul Sander 2022-01-15 13:55 2416
       }
f8deb5b9 Poul Sander 2022-01-15 13:55 2417
     };
f8deb5b9 Poul Sander 2022-01-15 13:55 2418
f8deb5b9 Poul Sander 2022-01-15 13:55 2419
     int main() {
f8deb5b9 Poul Sander 2022-01-15 13:55 2420
       std::cout << S() << "\n"; // prints 1 using operator<<
f8deb5b9 Poul Sander 2022-01-15 13:55 2421
       fmt::print("{}\n", S());  // prints 2 using formatter
f8deb5b9 Poul Sander 2022-01-15 13:55 2422
     }
f8deb5b9 Poul Sander 2022-01-15 13:55 2423
f8deb5b9 Poul Sander 2022-01-15 13:55 2424
* Introduced the experimental ``fmt::compile`` function that does format string
f8deb5b9 Poul Sander 2022-01-15 13:55 2425
  compilation (`#618 <https://github.com/fmtlib/fmt/issues/618>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2426
  `#1169 <https://github.com/fmtlib/fmt/issues/1169>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2427
  `#1171 <https://github.com/fmtlib/fmt/pull/1171>`_):
f8deb5b9 Poul Sander 2022-01-15 13:55 2428
f8deb5b9 Poul Sander 2022-01-15 13:55 2429
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 2430
f8deb5b9 Poul Sander 2022-01-15 13:55 2431
     #include <fmt/compile.h>
f8deb5b9 Poul Sander 2022-01-15 13:55 2432
f8deb5b9 Poul Sander 2022-01-15 13:55 2433
     auto f = fmt::compile<int>("{}");
f8deb5b9 Poul Sander 2022-01-15 13:55 2434
     std::string s = fmt::format(f, 42); // can be called multiple times to
f8deb5b9 Poul Sander 2022-01-15 13:55 2435
                                         // format different values
f8deb5b9 Poul Sander 2022-01-15 13:55 2436
     // s == "42"
f8deb5b9 Poul Sander 2022-01-15 13:55 2437
f8deb5b9 Poul Sander 2022-01-15 13:55 2438
  It moves the cost of parsing a format string outside of the format function
f8deb5b9 Poul Sander 2022-01-15 13:55 2439
  which can be beneficial when identically formatting many objects of the same
f8deb5b9 Poul Sander 2022-01-15 13:55 2440
  types. Thanks `@stryku (Mateusz Janek) <https://github.com/stryku>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 2441
f8deb5b9 Poul Sander 2022-01-15 13:55 2442
* Added experimental ``%`` format specifier that formats floating-point values
f8deb5b9 Poul Sander 2022-01-15 13:55 2443
  as percentages (`#1060 <https://github.com/fmtlib/fmt/pull/1060>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2444
  `#1069 <https://github.com/fmtlib/fmt/pull/1069>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2445
  `#1071 <https://github.com/fmtlib/fmt/pull/1071>`_):
f8deb5b9 Poul Sander 2022-01-15 13:55 2446
f8deb5b9 Poul Sander 2022-01-15 13:55 2447
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 2448
f8deb5b9 Poul Sander 2022-01-15 13:55 2449
     auto s = fmt::format("{:.1%}", 0.42); // s == "42.0%"
f8deb5b9 Poul Sander 2022-01-15 13:55 2450
f8deb5b9 Poul Sander 2022-01-15 13:55 2451
  Thanks `@gawain-bolton (Gawain Bolton) <https://github.com/gawain-bolton>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 2452
f8deb5b9 Poul Sander 2022-01-15 13:55 2453
* Implemented precision for floating-point durations
f8deb5b9 Poul Sander 2022-01-15 13:55 2454
  (`#1004 <https://github.com/fmtlib/fmt/issues/1004>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2455
  `#1012 <https://github.com/fmtlib/fmt/pull/1012>`_):
f8deb5b9 Poul Sander 2022-01-15 13:55 2456
f8deb5b9 Poul Sander 2022-01-15 13:55 2457
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 2458
f8deb5b9 Poul Sander 2022-01-15 13:55 2459
     auto s = fmt::format("{:.1}", std::chrono::duration<double>(1.234));
f8deb5b9 Poul Sander 2022-01-15 13:55 2460
     // s == 1.2s
f8deb5b9 Poul Sander 2022-01-15 13:55 2461
f8deb5b9 Poul Sander 2022-01-15 13:55 2462
  Thanks `@DanielaE (Daniela Engert) <https://github.com/DanielaE>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 2463
f8deb5b9 Poul Sander 2022-01-15 13:55 2464
* Implemented ``chrono`` format specifiers ``%Q`` and ``%q`` that give the value
f8deb5b9 Poul Sander 2022-01-15 13:55 2465
  and the unit respectively (`#1019 <https://github.com/fmtlib/fmt/pull/1019>`_):
f8deb5b9 Poul Sander 2022-01-15 13:55 2466
f8deb5b9 Poul Sander 2022-01-15 13:55 2467
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 2468
f8deb5b9 Poul Sander 2022-01-15 13:55 2469
     auto value = fmt::format("{:%Q}", 42s); // value == "42"
f8deb5b9 Poul Sander 2022-01-15 13:55 2470
     auto unit  = fmt::format("{:%q}", 42s); // unit == "s"
f8deb5b9 Poul Sander 2022-01-15 13:55 2471
f8deb5b9 Poul Sander 2022-01-15 13:55 2472
  Thanks `@DanielaE (Daniela Engert) <https://github.com/DanielaE>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 2473
f8deb5b9 Poul Sander 2022-01-15 13:55 2474
* Fixed handling of dynamic width in chrono formatter:
f8deb5b9 Poul Sander 2022-01-15 13:55 2475
f8deb5b9 Poul Sander 2022-01-15 13:55 2476
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 2477
f8deb5b9 Poul Sander 2022-01-15 13:55 2478
     auto s = fmt::format("{0:{1}%H:%M:%S}", std::chrono::seconds(12345), 12);
f8deb5b9 Poul Sander 2022-01-15 13:55 2479
     //                        ^ width argument index                     ^ width
f8deb5b9 Poul Sander 2022-01-15 13:55 2480
     // s == "03:25:45    "
f8deb5b9 Poul Sander 2022-01-15 13:55 2481
f8deb5b9 Poul Sander 2022-01-15 13:55 2482
  Thanks Howard Hinnant.
f8deb5b9 Poul Sander 2022-01-15 13:55 2483
f8deb5b9 Poul Sander 2022-01-15 13:55 2484
* Removed deprecated ``fmt/time.h``. Use ``fmt/chrono.h`` instead.
f8deb5b9 Poul Sander 2022-01-15 13:55 2485
f8deb5b9 Poul Sander 2022-01-15 13:55 2486
* Added ``fmt::format`` and ``fmt::vformat`` overloads that take ``text_style``
f8deb5b9 Poul Sander 2022-01-15 13:55 2487
  (`#993 <https://github.com/fmtlib/fmt/issues/993>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2488
  `#994 <https://github.com/fmtlib/fmt/pull/994>`_):
f8deb5b9 Poul Sander 2022-01-15 13:55 2489
f8deb5b9 Poul Sander 2022-01-15 13:55 2490
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 2491
f8deb5b9 Poul Sander 2022-01-15 13:55 2492
     #include <fmt/color.h>
f8deb5b9 Poul Sander 2022-01-15 13:55 2493
f8deb5b9 Poul Sander 2022-01-15 13:55 2494
     std::string message = fmt::format(fmt::emphasis::bold | fg(fmt::color::red),
f8deb5b9 Poul Sander 2022-01-15 13:55 2495
                                       "The answer is {}.", 42);
f8deb5b9 Poul Sander 2022-01-15 13:55 2496
f8deb5b9 Poul Sander 2022-01-15 13:55 2497
  Thanks `@Naios (Denis Blank) <https://github.com/Naios>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 2498
f8deb5b9 Poul Sander 2022-01-15 13:55 2499
* Removed the deprecated color API (``print_colored``). Use the new API, namely
f8deb5b9 Poul Sander 2022-01-15 13:55 2500
  ``print`` overloads that take ``text_style`` instead.
f8deb5b9 Poul Sander 2022-01-15 13:55 2501
f8deb5b9 Poul Sander 2022-01-15 13:55 2502
* Made ``std::unique_ptr`` and ``std::shared_ptr`` formattable as pointers via
f8deb5b9 Poul Sander 2022-01-15 13:55 2503
  ``fmt::ptr`` (`#1121 <https://github.com/fmtlib/fmt/pull/1121>`_):
f8deb5b9 Poul Sander 2022-01-15 13:55 2504
f8deb5b9 Poul Sander 2022-01-15 13:55 2505
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 2506
f8deb5b9 Poul Sander 2022-01-15 13:55 2507
     std::unique_ptr<int> p = ...;
f8deb5b9 Poul Sander 2022-01-15 13:55 2508
     fmt::print("{}", fmt::ptr(p)); // prints p as a pointer
f8deb5b9 Poul Sander 2022-01-15 13:55 2509
f8deb5b9 Poul Sander 2022-01-15 13:55 2510
  Thanks `@sighingnow (Tao He) <https://github.com/sighingnow>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 2511
f8deb5b9 Poul Sander 2022-01-15 13:55 2512
* Made ``print`` and ``vprint`` report I/O errors
f8deb5b9 Poul Sander 2022-01-15 13:55 2513
  (`#1098 <https://github.com/fmtlib/fmt/issues/1098>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2514
  `#1099 <https://github.com/fmtlib/fmt/pull/1099>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 2515
  Thanks `@BillyDonahue (Billy Donahue) <https://github.com/BillyDonahue>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 2516
f8deb5b9 Poul Sander 2022-01-15 13:55 2517
* Marked deprecated APIs with the ``[[deprecated]]`` attribute and removed
f8deb5b9 Poul Sander 2022-01-15 13:55 2518
  internal uses of deprecated APIs
f8deb5b9 Poul Sander 2022-01-15 13:55 2519
  (`#1022 <https://github.com/fmtlib/fmt/pull/1022>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 2520
  Thanks `@eliaskosunen (Elias Kosunen) <https://github.com/eliaskosunen>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 2521
f8deb5b9 Poul Sander 2022-01-15 13:55 2522
* Modernized the codebase using more C++11 features and removing workarounds.
f8deb5b9 Poul Sander 2022-01-15 13:55 2523
  Most importantly, ``buffer_context`` is now an alias template, so
f8deb5b9 Poul Sander 2022-01-15 13:55 2524
  use ``buffer_context<T>`` instead of ``buffer_context<T>::type``.
f8deb5b9 Poul Sander 2022-01-15 13:55 2525
  These features require GCC 4.8 or later.
f8deb5b9 Poul Sander 2022-01-15 13:55 2526
f8deb5b9 Poul Sander 2022-01-15 13:55 2527
* ``formatter`` specializations now always take precedence over implicit
f8deb5b9 Poul Sander 2022-01-15 13:55 2528
  conversions to ``int`` and the undocumented ``convert_to_int`` trait
f8deb5b9 Poul Sander 2022-01-15 13:55 2529
  is now deprecated.
f8deb5b9 Poul Sander 2022-01-15 13:55 2530
f8deb5b9 Poul Sander 2022-01-15 13:55 2531
* Moved the undocumented ``basic_writer``, ``writer``, and ``wwriter`` types
f8deb5b9 Poul Sander 2022-01-15 13:55 2532
  to the ``internal`` namespace.
f8deb5b9 Poul Sander 2022-01-15 13:55 2533
f8deb5b9 Poul Sander 2022-01-15 13:55 2534
* Removed deprecated ``basic_format_context::begin()``. Use ``out()`` instead.
f8deb5b9 Poul Sander 2022-01-15 13:55 2535
f8deb5b9 Poul Sander 2022-01-15 13:55 2536
* Disallowed passing the result of ``join`` as an lvalue to prevent misuse.
f8deb5b9 Poul Sander 2022-01-15 13:55 2537
f8deb5b9 Poul Sander 2022-01-15 13:55 2538
* Refactored the undocumented structs that represent parsed format specifiers
f8deb5b9 Poul Sander 2022-01-15 13:55 2539
  to simplify the API and allow multibyte fill.
f8deb5b9 Poul Sander 2022-01-15 13:55 2540
f8deb5b9 Poul Sander 2022-01-15 13:55 2541
* Moved SFINAE to template parameters to reduce symbol sizes.
f8deb5b9 Poul Sander 2022-01-15 13:55 2542
f8deb5b9 Poul Sander 2022-01-15 13:55 2543
* Switched to ``fputws`` for writing wide strings so that it's no longer
f8deb5b9 Poul Sander 2022-01-15 13:55 2544
  required to call ``_setmode`` on Windows
f8deb5b9 Poul Sander 2022-01-15 13:55 2545
  (`#1229 <https://github.com/fmtlib/fmt/issues/1229>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2546
  `#1243 <https://github.com/fmtlib/fmt/pull/1243>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 2547
  Thanks `@jackoalan (Jack Andersen) <https://github.com/jackoalan>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 2548
f8deb5b9 Poul Sander 2022-01-15 13:55 2549
* Improved literal-based API
f8deb5b9 Poul Sander 2022-01-15 13:55 2550
  (`#1254 <https://github.com/fmtlib/fmt/pull/1254>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 2551
  Thanks `@sylveon (Charles Milette) <https://github.com/sylveon>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 2552
f8deb5b9 Poul Sander 2022-01-15 13:55 2553
* Added support for exotic platforms without ``uintptr_t`` such as IBM i
f8deb5b9 Poul Sander 2022-01-15 13:55 2554
  (AS/400) which has 128-bit pointers and only 64-bit integers
f8deb5b9 Poul Sander 2022-01-15 13:55 2555
  (`#1059 <https://github.com/fmtlib/fmt/issues/1059>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 2556
f8deb5b9 Poul Sander 2022-01-15 13:55 2557
* Added `Sublime Text syntax highlighting config
f8deb5b9 Poul Sander 2022-01-15 13:55 2558
  <https://github.com/fmtlib/fmt/blob/master/support/C%2B%2B.sublime-syntax>`_
f8deb5b9 Poul Sander 2022-01-15 13:55 2559
  (`#1037 <https://github.com/fmtlib/fmt/issues/1037>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 2560
  Thanks `@Kronuz (Germán Méndez Bravo) <https://github.com/Kronuz>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 2561
f8deb5b9 Poul Sander 2022-01-15 13:55 2562
* Added the ``FMT_ENFORCE_COMPILE_STRING`` macro to enforce the use of
f8deb5b9 Poul Sander 2022-01-15 13:55 2563
  compile-time format strings
f8deb5b9 Poul Sander 2022-01-15 13:55 2564
  (`#1231 <https://github.com/fmtlib/fmt/pull/1231>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 2565
  Thanks `@jackoalan (Jack Andersen) <https://github.com/jackoalan>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 2566
f8deb5b9 Poul Sander 2022-01-15 13:55 2567
* Stopped setting ``CMAKE_BUILD_TYPE`` if {fmt} is a subproject
f8deb5b9 Poul Sander 2022-01-15 13:55 2568
  (`#1081 <https://github.com/fmtlib/fmt/issues/1081>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 2569
f8deb5b9 Poul Sander 2022-01-15 13:55 2570
* Various build improvements
f8deb5b9 Poul Sander 2022-01-15 13:55 2571
  (`#1039 <https://github.com/fmtlib/fmt/pull/1039>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2572
  `#1078 <https://github.com/fmtlib/fmt/pull/1078>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2573
  `#1091 <https://github.com/fmtlib/fmt/pull/1091>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2574
  `#1103 <https://github.com/fmtlib/fmt/pull/1103>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2575
  `#1177 <https://github.com/fmtlib/fmt/pull/1177>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 2576
  Thanks `@luncliff (Park DongHa) <https://github.com/luncliff>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2577
  `@jasonszang (Jason Shuo Zang) <https://github.com/jasonszang>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2578
  `@olafhering (Olaf Hering) <https://github.com/olafhering>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2579
  `@Lecetem <https://github.com/Lectem>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2580
  `@pauldreik (Paul Dreik) <https://github.com/pauldreik>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 2581
f8deb5b9 Poul Sander 2022-01-15 13:55 2582
* Improved documentation
f8deb5b9 Poul Sander 2022-01-15 13:55 2583
  (`#1049 <https://github.com/fmtlib/fmt/issues/1049>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2584
  `#1051 <https://github.com/fmtlib/fmt/pull/1051>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2585
  `#1083 <https://github.com/fmtlib/fmt/pull/1083>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2586
  `#1113 <https://github.com/fmtlib/fmt/pull/1113>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2587
  `#1114 <https://github.com/fmtlib/fmt/pull/1114>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2588
  `#1146 <https://github.com/fmtlib/fmt/issues/1146>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2589
  `#1180 <https://github.com/fmtlib/fmt/issues/1180>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2590
  `#1250 <https://github.com/fmtlib/fmt/pull/1250>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2591
  `#1252 <https://github.com/fmtlib/fmt/pull/1252>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2592
  `#1265 <https://github.com/fmtlib/fmt/pull/1265>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 2593
  Thanks `@mikelui (Michael Lui) <https://github.com/mikelui>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2594
  `@foonathan (Jonathan Müller) <https://github.com/foonathan>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2595
  `@BillyDonahue (Billy Donahue) <https://github.com/BillyDonahue>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2596
  `@jwakely (Jonathan Wakely) <https://github.com/jwakely>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2597
  `@kaisbe (Kais Ben Salah) <https://github.com/kaisbe>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2598
  `@sdebionne (Samuel Debionne) <https://github.com/sdebionne>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 2599
f8deb5b9 Poul Sander 2022-01-15 13:55 2600
* Fixed ambiguous formatter specialization in ``fmt/ranges.h``
f8deb5b9 Poul Sander 2022-01-15 13:55 2601
  (`#1123 <https://github.com/fmtlib/fmt/issues/1123>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 2602
f8deb5b9 Poul Sander 2022-01-15 13:55 2603
* Fixed formatting of a non-empty ``std::filesystem::path`` which is an
f8deb5b9 Poul Sander 2022-01-15 13:55 2604
  infinitely deep range of its components
f8deb5b9 Poul Sander 2022-01-15 13:55 2605
  (`#1268 <https://github.com/fmtlib/fmt/issues/1268>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 2606
f8deb5b9 Poul Sander 2022-01-15 13:55 2607
* Fixed handling of general output iterators when formatting characters
f8deb5b9 Poul Sander 2022-01-15 13:55 2608
  (`#1056 <https://github.com/fmtlib/fmt/issues/1056>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2609
  `#1058 <https://github.com/fmtlib/fmt/pull/1058>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 2610
  Thanks `@abolz (Alexander Bolz) <https://github.com/abolz>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 2611
f8deb5b9 Poul Sander 2022-01-15 13:55 2612
* Fixed handling of output iterators in ``formatter`` specialization for
f8deb5b9 Poul Sander 2022-01-15 13:55 2613
  ranges (`#1064 <https://github.com/fmtlib/fmt/issues/1064>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 2614
f8deb5b9 Poul Sander 2022-01-15 13:55 2615
* Fixed handling of exotic character types
f8deb5b9 Poul Sander 2022-01-15 13:55 2616
  (`#1188 <https://github.com/fmtlib/fmt/issues/1188>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 2617
f8deb5b9 Poul Sander 2022-01-15 13:55 2618
* Made chrono formatting work with exceptions disabled
f8deb5b9 Poul Sander 2022-01-15 13:55 2619
  (`#1062 <https://github.com/fmtlib/fmt/issues/1062>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 2620
f8deb5b9 Poul Sander 2022-01-15 13:55 2621
* Fixed DLL visibility issues
f8deb5b9 Poul Sander 2022-01-15 13:55 2622
  (`#1134 <https://github.com/fmtlib/fmt/pull/1134>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2623
  `#1147 <https://github.com/fmtlib/fmt/pull/1147>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 2624
  Thanks `@denchat <https://github.com/denchat>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 2625
f8deb5b9 Poul Sander 2022-01-15 13:55 2626
* Disabled the use of UDL template extension on GCC 9
f8deb5b9 Poul Sander 2022-01-15 13:55 2627
  (`#1148 <https://github.com/fmtlib/fmt/issues/1148>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 2628
f8deb5b9 Poul Sander 2022-01-15 13:55 2629
* Removed misplaced ``format`` compile-time checks from ``printf``
f8deb5b9 Poul Sander 2022-01-15 13:55 2630
  (`#1173 <https://github.com/fmtlib/fmt/issues/1173>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 2631
f8deb5b9 Poul Sander 2022-01-15 13:55 2632
* Fixed issues in the experimental floating-point formatter
f8deb5b9 Poul Sander 2022-01-15 13:55 2633
  (`#1072 <https://github.com/fmtlib/fmt/issues/1072>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2634
  `#1129 <https://github.com/fmtlib/fmt/issues/1129>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2635
  `#1153 <https://github.com/fmtlib/fmt/issues/1153>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2636
  `#1155 <https://github.com/fmtlib/fmt/pull/1155>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2637
  `#1210 <https://github.com/fmtlib/fmt/issues/1210>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2638
  `#1222 <https://github.com/fmtlib/fmt/issues/1222>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 2639
  Thanks `@alabuzhev (Alex Alabuzhev) <https://github.com/alabuzhev>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 2640
f8deb5b9 Poul Sander 2022-01-15 13:55 2641
* Fixed bugs discovered by fuzzing or during fuzzing integration
f8deb5b9 Poul Sander 2022-01-15 13:55 2642
  (`#1124 <https://github.com/fmtlib/fmt/issues/1124>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2643
  `#1127 <https://github.com/fmtlib/fmt/issues/1127>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2644
  `#1132 <https://github.com/fmtlib/fmt/issues/1132>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2645
  `#1135 <https://github.com/fmtlib/fmt/pull/1135>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2646
  `#1136 <https://github.com/fmtlib/fmt/issues/1136>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2647
  `#1141 <https://github.com/fmtlib/fmt/issues/1141>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2648
  `#1142 <https://github.com/fmtlib/fmt/issues/1142>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2649
  `#1178 <https://github.com/fmtlib/fmt/issues/1178>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2650
  `#1179 <https://github.com/fmtlib/fmt/issues/1179>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2651
  `#1194 <https://github.com/fmtlib/fmt/issues/1194>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 2652
  Thanks `@pauldreik (Paul Dreik) <https://github.com/pauldreik>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 2653
f8deb5b9 Poul Sander 2022-01-15 13:55 2654
* Fixed building tests on FreeBSD and Hurd
f8deb5b9 Poul Sander 2022-01-15 13:55 2655
  (`#1043 <https://github.com/fmtlib/fmt/issues/1043>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 2656
  Thanks `@jackyf (Eugene V. Lyubimkin) <https://github.com/jackyf>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 2657
f8deb5b9 Poul Sander 2022-01-15 13:55 2658
* Fixed various warnings and compilation issues
f8deb5b9 Poul Sander 2022-01-15 13:55 2659
  (`#998 <https://github.com/fmtlib/fmt/pull/998>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2660
  `#1006 <https://github.com/fmtlib/fmt/pull/1006>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2661
  `#1008 <https://github.com/fmtlib/fmt/issues/1008>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2662
  `#1011 <https://github.com/fmtlib/fmt/issues/1011>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2663
  `#1025 <https://github.com/fmtlib/fmt/issues/1025>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2664
  `#1027 <https://github.com/fmtlib/fmt/pull/1027>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2665
  `#1028 <https://github.com/fmtlib/fmt/pull/1028>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2666
  `#1029 <https://github.com/fmtlib/fmt/pull/1029>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2667
  `#1030 <https://github.com/fmtlib/fmt/pull/1030>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2668
  `#1031 <https://github.com/fmtlib/fmt/pull/1031>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2669
  `#1054 <https://github.com/fmtlib/fmt/pull/1054>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2670
  `#1063 <https://github.com/fmtlib/fmt/issues/1063>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2671
  `#1068 <https://github.com/fmtlib/fmt/pull/1068>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2672
  `#1074 <https://github.com/fmtlib/fmt/pull/1074>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2673
  `#1075 <https://github.com/fmtlib/fmt/pull/1075>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2674
  `#1079 <https://github.com/fmtlib/fmt/pull/1079>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2675
  `#1086 <https://github.com/fmtlib/fmt/pull/1086>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2676
  `#1088 <https://github.com/fmtlib/fmt/issues/1088>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2677
  `#1089 <https://github.com/fmtlib/fmt/pull/1089>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2678
  `#1094 <https://github.com/fmtlib/fmt/pull/1094>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2679
  `#1101 <https://github.com/fmtlib/fmt/issues/1101>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2680
  `#1102 <https://github.com/fmtlib/fmt/pull/1102>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2681
  `#1105 <https://github.com/fmtlib/fmt/issues/1105>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2682
  `#1107 <https://github.com/fmtlib/fmt/pull/1107>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2683
  `#1115 <https://github.com/fmtlib/fmt/issues/1115>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2684
  `#1117 <https://github.com/fmtlib/fmt/issues/1117>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2685
  `#1118 <https://github.com/fmtlib/fmt/issues/1118>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2686
  `#1120 <https://github.com/fmtlib/fmt/issues/1120>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2687
  `#1123 <https://github.com/fmtlib/fmt/issues/1123>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2688
  `#1139 <https://github.com/fmtlib/fmt/pull/1139>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2689
  `#1140 <https://github.com/fmtlib/fmt/issues/1140>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2690
  `#1143 <https://github.com/fmtlib/fmt/issues/1143>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2691
  `#1144 <https://github.com/fmtlib/fmt/pull/1144>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2692
  `#1150 <https://github.com/fmtlib/fmt/pull/1150>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2693
  `#1151 <https://github.com/fmtlib/fmt/pull/1151>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2694
  `#1152 <https://github.com/fmtlib/fmt/issues/1152>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2695
  `#1154 <https://github.com/fmtlib/fmt/issues/1154>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2696
  `#1156 <https://github.com/fmtlib/fmt/issues/1156>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2697
  `#1159 <https://github.com/fmtlib/fmt/pull/1159>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2698
  `#1175 <https://github.com/fmtlib/fmt/issues/1175>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2699
  `#1181 <https://github.com/fmtlib/fmt/issues/1181>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2700
  `#1186 <https://github.com/fmtlib/fmt/issues/1186>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2701
  `#1187 <https://github.com/fmtlib/fmt/pull/1187>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2702
  `#1191 <https://github.com/fmtlib/fmt/pull/1191>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2703
  `#1197 <https://github.com/fmtlib/fmt/issues/1197>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2704
  `#1200 <https://github.com/fmtlib/fmt/issues/1200>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2705
  `#1203 <https://github.com/fmtlib/fmt/issues/1203>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2706
  `#1205 <https://github.com/fmtlib/fmt/issues/1205>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2707
  `#1206 <https://github.com/fmtlib/fmt/pull/1206>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2708
  `#1213 <https://github.com/fmtlib/fmt/issues/1213>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2709
  `#1214 <https://github.com/fmtlib/fmt/issues/1214>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2710
  `#1217 <https://github.com/fmtlib/fmt/pull/1217>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2711
  `#1228 <https://github.com/fmtlib/fmt/issues/1228>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2712
  `#1230 <https://github.com/fmtlib/fmt/pull/1230>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2713
  `#1232 <https://github.com/fmtlib/fmt/issues/1232>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2714
  `#1235 <https://github.com/fmtlib/fmt/pull/1235>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2715
  `#1236 <https://github.com/fmtlib/fmt/pull/1236>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2716
  `#1240 <https://github.com/fmtlib/fmt/issues/1240>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 2717
  Thanks `@DanielaE (Daniela Engert) <https://github.com/DanielaE>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2718
  `@mwinterb <https://github.com/mwinterb>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2719
  `@eliaskosunen (Elias Kosunen) <https://github.com/eliaskosunen>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2720
  `@morinmorin <https://github.com/morinmorin>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2721
  `@ricco19 (Brian Ricciardelli) <https://github.com/ricco19>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2722
  `@waywardmonkeys (Bruce Mitchener) <https://github.com/waywardmonkeys>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2723
  `@chronoxor (Ivan Shynkarenka) <https://github.com/chronoxor>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2724
  `@remyabel <https://github.com/remyabel>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2725
  `@pauldreik (Paul Dreik) <https://github.com/pauldreik>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2726
  `@gsjaardema (Greg Sjaardema) <https://github.com/gsjaardema>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2727
  `@rcane (Ronny Krüger) <https://github.com/rcane>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2728
  `@mocabe <https://github.com/mocabe>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2729
  `@denchat <https://github.com/denchat>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2730
  `@cjdb (Christopher Di Bella) <https://github.com/cjdb>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2731
  `@HazardyKnusperkeks (Björn Schäpers) <https://github.com/HazardyKnusperkeks>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2732
  `@vedranmiletic (Vedran Miletić) <https://github.com/vedranmiletic>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2733
  `@jackoalan (Jack Andersen) <https://github.com/jackoalan>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2734
  `@DaanDeMeyer (Daan De Meyer) <https://github.com/DaanDeMeyer>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2735
  `@starkmapper (Mark Stapper) <https://github.com/starkmapper>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 2736
f8deb5b9 Poul Sander 2022-01-15 13:55 2737
5.3.0 - 2018-12-28
f8deb5b9 Poul Sander 2022-01-15 13:55 2738
------------------
f8deb5b9 Poul Sander 2022-01-15 13:55 2739
f8deb5b9 Poul Sander 2022-01-15 13:55 2740
* Introduced experimental chrono formatting support:
f8deb5b9 Poul Sander 2022-01-15 13:55 2741
f8deb5b9 Poul Sander 2022-01-15 13:55 2742
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 2743
f8deb5b9 Poul Sander 2022-01-15 13:55 2744
     #include <fmt/chrono.h>
f8deb5b9 Poul Sander 2022-01-15 13:55 2745
f8deb5b9 Poul Sander 2022-01-15 13:55 2746
     int main() {
f8deb5b9 Poul Sander 2022-01-15 13:55 2747
       using namespace std::literals::chrono_literals;
f8deb5b9 Poul Sander 2022-01-15 13:55 2748
       fmt::print("Default format: {} {}\n", 42s, 100ms);
f8deb5b9 Poul Sander 2022-01-15 13:55 2749
       fmt::print("strftime-like format: {:%H:%M:%S}\n", 3h + 15min + 30s);
f8deb5b9 Poul Sander 2022-01-15 13:55 2750
     }
f8deb5b9 Poul Sander 2022-01-15 13:55 2751
f8deb5b9 Poul Sander 2022-01-15 13:55 2752
  prints::
f8deb5b9 Poul Sander 2022-01-15 13:55 2753
f8deb5b9 Poul Sander 2022-01-15 13:55 2754
     Default format: 42s 100ms
f8deb5b9 Poul Sander 2022-01-15 13:55 2755
     strftime-like format: 03:15:30
f8deb5b9 Poul Sander 2022-01-15 13:55 2756
f8deb5b9 Poul Sander 2022-01-15 13:55 2757
* Added experimental support for emphasis (bold, italic, underline,
f8deb5b9 Poul Sander 2022-01-15 13:55 2758
  strikethrough), colored output to a file stream, and improved colored
f8deb5b9 Poul Sander 2022-01-15 13:55 2759
  formatting API
f8deb5b9 Poul Sander 2022-01-15 13:55 2760
  (`#961 <https://github.com/fmtlib/fmt/pull/961>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2761
  `#967 <https://github.com/fmtlib/fmt/pull/967>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2762
  `#973 <https://github.com/fmtlib/fmt/pull/973>`_):
f8deb5b9 Poul Sander 2022-01-15 13:55 2763
f8deb5b9 Poul Sander 2022-01-15 13:55 2764
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 2765
f8deb5b9 Poul Sander 2022-01-15 13:55 2766
     #include <fmt/color.h>
f8deb5b9 Poul Sander 2022-01-15 13:55 2767
f8deb5b9 Poul Sander 2022-01-15 13:55 2768
     int main() {
f8deb5b9 Poul Sander 2022-01-15 13:55 2769
       print(fg(fmt::color::crimson) | fmt::emphasis::bold,
f8deb5b9 Poul Sander 2022-01-15 13:55 2770
             "Hello, {}!\n", "world");
f8deb5b9 Poul Sander 2022-01-15 13:55 2771
       print(fg(fmt::color::floral_white) | bg(fmt::color::slate_gray) |
f8deb5b9 Poul Sander 2022-01-15 13:55 2772
             fmt::emphasis::underline, "Hello, {}!\n", "мир");
f8deb5b9 Poul Sander 2022-01-15 13:55 2773
       print(fg(fmt::color::steel_blue) | fmt::emphasis::italic,
f8deb5b9 Poul Sander 2022-01-15 13:55 2774
             "Hello, {}!\n", "世界");
f8deb5b9 Poul Sander 2022-01-15 13:55 2775
     }
f8deb5b9 Poul Sander 2022-01-15 13:55 2776
f8deb5b9 Poul Sander 2022-01-15 13:55 2777
  prints the following on modern terminals with RGB color support:
f8deb5b9 Poul Sander 2022-01-15 13:55 2778
f8deb5b9 Poul Sander 2022-01-15 13:55 2779
  .. image:: https://user-images.githubusercontent.com/576385/
f8deb5b9 Poul Sander 2022-01-15 13:55 2780
             50405788-b66e7500-076e-11e9-9592-7324d1f951d8.png
f8deb5b9 Poul Sander 2022-01-15 13:55 2781
f8deb5b9 Poul Sander 2022-01-15 13:55 2782
  Thanks `@Rakete1111 (Nicolas) <https://github.com/Rakete1111>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 2783
f8deb5b9 Poul Sander 2022-01-15 13:55 2784
* Added support for 4-bit terminal colors
f8deb5b9 Poul Sander 2022-01-15 13:55 2785
  (`#968 <https://github.com/fmtlib/fmt/issues/968>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2786
  `#974 <https://github.com/fmtlib/fmt/pull/974>`_)
f8deb5b9 Poul Sander 2022-01-15 13:55 2787
f8deb5b9 Poul Sander 2022-01-15 13:55 2788
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 2789
f8deb5b9 Poul Sander 2022-01-15 13:55 2790
     #include <fmt/color.h>
f8deb5b9 Poul Sander 2022-01-15 13:55 2791
f8deb5b9 Poul Sander 2022-01-15 13:55 2792
     int main() {
f8deb5b9 Poul Sander 2022-01-15 13:55 2793
       print(fg(fmt::terminal_color::red), "stop\n");
f8deb5b9 Poul Sander 2022-01-15 13:55 2794
     }
f8deb5b9 Poul Sander 2022-01-15 13:55 2795
f8deb5b9 Poul Sander 2022-01-15 13:55 2796
  Note that these colors vary by terminal:
f8deb5b9 Poul Sander 2022-01-15 13:55 2797
f8deb5b9 Poul Sander 2022-01-15 13:55 2798
  .. image:: https://user-images.githubusercontent.com/576385/
f8deb5b9 Poul Sander 2022-01-15 13:55 2799
             50405925-dbfc7e00-0770-11e9-9b85-333fab0af9ac.png
f8deb5b9 Poul Sander 2022-01-15 13:55 2800
f8deb5b9 Poul Sander 2022-01-15 13:55 2801
  Thanks `@Rakete1111 (Nicolas) <https://github.com/Rakete1111>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 2802
f8deb5b9 Poul Sander 2022-01-15 13:55 2803
* Parameterized formatting functions on the type of the format string
f8deb5b9 Poul Sander 2022-01-15 13:55 2804
  (`#880 <https://github.com/fmtlib/fmt/issues/880>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2805
  `#881 <https://github.com/fmtlib/fmt/pull/881>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2806
  `#883 <https://github.com/fmtlib/fmt/pull/883>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2807
  `#885 <https://github.com/fmtlib/fmt/pull/885>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2808
  `#897 <https://github.com/fmtlib/fmt/pull/897>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2809
  `#920 <https://github.com/fmtlib/fmt/issues/920>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 2810
  Any object of type ``S`` that has an overloaded ``to_string_view(const S&)``
f8deb5b9 Poul Sander 2022-01-15 13:55 2811
  returning ``fmt::string_view`` can be used as a format string:
f8deb5b9 Poul Sander 2022-01-15 13:55 2812
f8deb5b9 Poul Sander 2022-01-15 13:55 2813
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 2814
f8deb5b9 Poul Sander 2022-01-15 13:55 2815
     namespace my_ns {
f8deb5b9 Poul Sander 2022-01-15 13:55 2816
     inline string_view to_string_view(const my_string& s) {
f8deb5b9 Poul Sander 2022-01-15 13:55 2817
       return {s.data(), s.length()};
f8deb5b9 Poul Sander 2022-01-15 13:55 2818
     }
f8deb5b9 Poul Sander 2022-01-15 13:55 2819
     }
f8deb5b9 Poul Sander 2022-01-15 13:55 2820
f8deb5b9 Poul Sander 2022-01-15 13:55 2821
     std::string message = fmt::format(my_string("The answer is {}."), 42);
f8deb5b9 Poul Sander 2022-01-15 13:55 2822
f8deb5b9 Poul Sander 2022-01-15 13:55 2823
  Thanks `@DanielaE (Daniela Engert) <https://github.com/DanielaE>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 2824
f8deb5b9 Poul Sander 2022-01-15 13:55 2825
* Made ``std::string_view`` work as a format string
f8deb5b9 Poul Sander 2022-01-15 13:55 2826
  (`#898 <https://github.com/fmtlib/fmt/pull/898>`_):
f8deb5b9 Poul Sander 2022-01-15 13:55 2827
f8deb5b9 Poul Sander 2022-01-15 13:55 2828
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 2829
f8deb5b9 Poul Sander 2022-01-15 13:55 2830
     auto message = fmt::format(std::string_view("The answer is {}."), 42);
f8deb5b9 Poul Sander 2022-01-15 13:55 2831
f8deb5b9 Poul Sander 2022-01-15 13:55 2832
  Thanks `@DanielaE (Daniela Engert) <https://github.com/DanielaE>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 2833
f8deb5b9 Poul Sander 2022-01-15 13:55 2834
* Added wide string support to compile-time format string checks
f8deb5b9 Poul Sander 2022-01-15 13:55 2835
  (`#924 <https://github.com/fmtlib/fmt/pull/924>`_):
f8deb5b9 Poul Sander 2022-01-15 13:55 2836
f8deb5b9 Poul Sander 2022-01-15 13:55 2837
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 2838
f8deb5b9 Poul Sander 2022-01-15 13:55 2839
     print(fmt(L"{:f}"), 42); // compile-time error: invalid type specifier
f8deb5b9 Poul Sander 2022-01-15 13:55 2840
f8deb5b9 Poul Sander 2022-01-15 13:55 2841
  Thanks `@XZiar <https://github.com/XZiar>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 2842
f8deb5b9 Poul Sander 2022-01-15 13:55 2843
* Made colored print functions work with wide strings
f8deb5b9 Poul Sander 2022-01-15 13:55 2844
  (`#867 <https://github.com/fmtlib/fmt/pull/867>`_):
f8deb5b9 Poul Sander 2022-01-15 13:55 2845
f8deb5b9 Poul Sander 2022-01-15 13:55 2846
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 2847
f8deb5b9 Poul Sander 2022-01-15 13:55 2848
     #include <fmt/color.h>
f8deb5b9 Poul Sander 2022-01-15 13:55 2849
f8deb5b9 Poul Sander 2022-01-15 13:55 2850
     int main() {
f8deb5b9 Poul Sander 2022-01-15 13:55 2851
       print(fg(fmt::color::red), L"{}\n", 42);
f8deb5b9 Poul Sander 2022-01-15 13:55 2852
     }
f8deb5b9 Poul Sander 2022-01-15 13:55 2853
f8deb5b9 Poul Sander 2022-01-15 13:55 2854
  Thanks `@DanielaE (Daniela Engert) <https://github.com/DanielaE>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 2855
f8deb5b9 Poul Sander 2022-01-15 13:55 2856
* Introduced experimental Unicode support
f8deb5b9 Poul Sander 2022-01-15 13:55 2857
  (`#628 <https://github.com/fmtlib/fmt/issues/628>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2858
  `#891 <https://github.com/fmtlib/fmt/pull/891>`_):
f8deb5b9 Poul Sander 2022-01-15 13:55 2859
f8deb5b9 Poul Sander 2022-01-15 13:55 2860
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 2861
f8deb5b9 Poul Sander 2022-01-15 13:55 2862
     using namespace fmt::literals;
f8deb5b9 Poul Sander 2022-01-15 13:55 2863
     auto s = fmt::format("{:*^5}"_u, "🤡"_u); // s == "**🤡**"_u
f8deb5b9 Poul Sander 2022-01-15 13:55 2864
f8deb5b9 Poul Sander 2022-01-15 13:55 2865
* Improved locale support:
f8deb5b9 Poul Sander 2022-01-15 13:55 2866
f8deb5b9 Poul Sander 2022-01-15 13:55 2867
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 2868
f8deb5b9 Poul Sander 2022-01-15 13:55 2869
     #include <fmt/locale.h>
f8deb5b9 Poul Sander 2022-01-15 13:55 2870
f8deb5b9 Poul Sander 2022-01-15 13:55 2871
     struct numpunct : std::numpunct<char> {
f8deb5b9 Poul Sander 2022-01-15 13:55 2872
      protected:
f8deb5b9 Poul Sander 2022-01-15 13:55 2873
       char do_thousands_sep() const override { return '~'; }
f8deb5b9 Poul Sander 2022-01-15 13:55 2874
     };
f8deb5b9 Poul Sander 2022-01-15 13:55 2875
f8deb5b9 Poul Sander 2022-01-15 13:55 2876
     std::locale loc;
f8deb5b9 Poul Sander 2022-01-15 13:55 2877
     auto s = fmt::format(std::locale(loc, new numpunct()), "{:n}", 1234567);
f8deb5b9 Poul Sander 2022-01-15 13:55 2878
     // s == "1~234~567"
f8deb5b9 Poul Sander 2022-01-15 13:55 2879
f8deb5b9 Poul Sander 2022-01-15 13:55 2880
* Constrained formatting functions on proper iterator types
f8deb5b9 Poul Sander 2022-01-15 13:55 2881
  (`#921 <https://github.com/fmtlib/fmt/pull/921>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 2882
  Thanks `@DanielaE (Daniela Engert) <https://github.com/DanielaE>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 2883
f8deb5b9 Poul Sander 2022-01-15 13:55 2884
* Added ``make_printf_args`` and ``make_wprintf_args`` functions
f8deb5b9 Poul Sander 2022-01-15 13:55 2885
  (`#934 <https://github.com/fmtlib/fmt/pull/934>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 2886
  Thanks `@tnovotny <https://github.com/tnovotny>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 2887
f8deb5b9 Poul Sander 2022-01-15 13:55 2888
* Deprecated ``fmt::visit``, ``parse_context``, and ``wparse_context``.
f8deb5b9 Poul Sander 2022-01-15 13:55 2889
  Use ``fmt::visit_format_arg``, ``format_parse_context``, and
f8deb5b9 Poul Sander 2022-01-15 13:55 2890
  ``wformat_parse_context`` instead.
f8deb5b9 Poul Sander 2022-01-15 13:55 2891
f8deb5b9 Poul Sander 2022-01-15 13:55 2892
* Removed undocumented ``basic_fixed_buffer`` which has been superseded by the
f8deb5b9 Poul Sander 2022-01-15 13:55 2893
  iterator-based API
f8deb5b9 Poul Sander 2022-01-15 13:55 2894
  (`#873 <https://github.com/fmtlib/fmt/issues/873>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2895
  `#902 <https://github.com/fmtlib/fmt/pull/902>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 2896
  Thanks `@superfunc (hollywood programmer) <https://github.com/superfunc>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 2897
f8deb5b9 Poul Sander 2022-01-15 13:55 2898
* Disallowed repeated leading zeros in an argument ID:
f8deb5b9 Poul Sander 2022-01-15 13:55 2899
f8deb5b9 Poul Sander 2022-01-15 13:55 2900
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 2901
f8deb5b9 Poul Sander 2022-01-15 13:55 2902
     fmt::print("{000}", 42); // error
f8deb5b9 Poul Sander 2022-01-15 13:55 2903
f8deb5b9 Poul Sander 2022-01-15 13:55 2904
* Reintroduced support for gcc 4.4.
f8deb5b9 Poul Sander 2022-01-15 13:55 2905
f8deb5b9 Poul Sander 2022-01-15 13:55 2906
* Fixed compilation on platforms with exotic ``double``
f8deb5b9 Poul Sander 2022-01-15 13:55 2907
  (`#878 <https://github.com/fmtlib/fmt/issues/878>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 2908
f8deb5b9 Poul Sander 2022-01-15 13:55 2909
* Improved documentation
f8deb5b9 Poul Sander 2022-01-15 13:55 2910
  (`#164 <https://github.com/fmtlib/fmt/issues/164>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2911
  `#877 <https://github.com/fmtlib/fmt/issues/877>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2912
  `#901 <https://github.com/fmtlib/fmt/pull/901>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2913
  `#906 <https://github.com/fmtlib/fmt/pull/906>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2914
  `#979 <https://github.com/fmtlib/fmt/pull/979>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 2915
  Thanks `@kookjr (Mathew Cucuzella) <https://github.com/kookjr>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2916
  `@DarkDimius (Dmitry Petrashko) <https://github.com/DarkDimius>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2917
  `@HecticSerenity <https://github.com/HecticSerenity>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 2918
f8deb5b9 Poul Sander 2022-01-15 13:55 2919
* Added pkgconfig support which makes it easier to consume the library from
f8deb5b9 Poul Sander 2022-01-15 13:55 2920
  meson and other build systems
f8deb5b9 Poul Sander 2022-01-15 13:55 2921
  (`#916 <https://github.com/fmtlib/fmt/pull/916>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 2922
  Thanks `@colemickens (Cole Mickens) <https://github.com/colemickens>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 2923
f8deb5b9 Poul Sander 2022-01-15 13:55 2924
* Various build improvements
f8deb5b9 Poul Sander 2022-01-15 13:55 2925
  (`#909 <https://github.com/fmtlib/fmt/pull/909>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2926
  `#926 <https://github.com/fmtlib/fmt/pull/926>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2927
  `#937 <https://github.com/fmtlib/fmt/pull/937>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2928
  `#953 <https://github.com/fmtlib/fmt/pull/953>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2929
  `#959 <https://github.com/fmtlib/fmt/pull/959>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 2930
  Thanks `@tchaikov (Kefu Chai) <https://github.com/tchaikov>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2931
  `@luncliff (Park DongHa) <https://github.com/luncliff>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2932
  `@AndreasSchoenle (Andreas Schönle) <https://github.com/AndreasSchoenle>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2933
  `@hotwatermorning <https://github.com/hotwatermorning>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2934
  `@Zefz (JohanJansen) <https://github.com/Zefz>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 2935
f8deb5b9 Poul Sander 2022-01-15 13:55 2936
* Improved ``string_view`` construction performance
f8deb5b9 Poul Sander 2022-01-15 13:55 2937
  (`#914 <https://github.com/fmtlib/fmt/pull/914>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 2938
  Thanks `@gabime (Gabi Melman) <https://github.com/gabime>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 2939
f8deb5b9 Poul Sander 2022-01-15 13:55 2940
* Fixed non-matching char types
f8deb5b9 Poul Sander 2022-01-15 13:55 2941
  (`#895 <https://github.com/fmtlib/fmt/pull/895>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 2942
  Thanks `@DanielaE (Daniela Engert) <https://github.com/DanielaE>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 2943
f8deb5b9 Poul Sander 2022-01-15 13:55 2944
* Fixed ``format_to_n`` with ``std::back_insert_iterator``
f8deb5b9 Poul Sander 2022-01-15 13:55 2945
  (`#913 <https://github.com/fmtlib/fmt/pull/913>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 2946
  Thanks `@DanielaE (Daniela Engert) <https://github.com/DanielaE>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 2947
f8deb5b9 Poul Sander 2022-01-15 13:55 2948
* Fixed locale-dependent formatting
f8deb5b9 Poul Sander 2022-01-15 13:55 2949
  (`#905 <https://github.com/fmtlib/fmt/issues/905>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 2950
f8deb5b9 Poul Sander 2022-01-15 13:55 2951
* Fixed various compiler warnings and errors
f8deb5b9 Poul Sander 2022-01-15 13:55 2952
  (`#882 <https://github.com/fmtlib/fmt/pull/882>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2953
  `#886 <https://github.com/fmtlib/fmt/pull/886>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2954
  `#933 <https://github.com/fmtlib/fmt/pull/933>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2955
  `#941 <https://github.com/fmtlib/fmt/pull/941>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2956
  `#931 <https://github.com/fmtlib/fmt/issues/931>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2957
  `#943 <https://github.com/fmtlib/fmt/pull/943>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2958
  `#954 <https://github.com/fmtlib/fmt/pull/954>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2959
  `#956 <https://github.com/fmtlib/fmt/pull/956>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2960
  `#962 <https://github.com/fmtlib/fmt/pull/962>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2961
  `#965 <https://github.com/fmtlib/fmt/issues/965>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2962
  `#977 <https://github.com/fmtlib/fmt/issues/977>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2963
  `#983 <https://github.com/fmtlib/fmt/pull/983>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2964
  `#989 <https://github.com/fmtlib/fmt/pull/989>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 2965
  Thanks `@Luthaf (Guillaume Fraux) <https://github.com/Luthaf>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2966
  `@stevenhoving (Steven Hoving) <https://github.com/stevenhoving>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2967
  `@christinaa (Kristina Brooks) <https://github.com/christinaa>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2968
  `@lgritz (Larry Gritz) <https://github.com/lgritz>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2969
  `@DanielaE (Daniela Engert) <https://github.com/DanielaE>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2970
  `@0x8000-0000 (Sign Bit) <https://github.com/0x8000-0000>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2971
  `@liuping1997 <https://github.com/liuping1997>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 2972
f8deb5b9 Poul Sander 2022-01-15 13:55 2973
5.2.1 - 2018-09-21
f8deb5b9 Poul Sander 2022-01-15 13:55 2974
------------------
f8deb5b9 Poul Sander 2022-01-15 13:55 2975
f8deb5b9 Poul Sander 2022-01-15 13:55 2976
* Fixed ``visit`` lookup issues on gcc 7 & 8
f8deb5b9 Poul Sander 2022-01-15 13:55 2977
  (`#870 <https://github.com/fmtlib/fmt/pull/870>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 2978
  Thanks `@medithe <https://github.com/medithe>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 2979
f8deb5b9 Poul Sander 2022-01-15 13:55 2980
* Fixed linkage errors on older gcc.
f8deb5b9 Poul Sander 2022-01-15 13:55 2981
f8deb5b9 Poul Sander 2022-01-15 13:55 2982
* Prevented ``fmt/range.h`` from specializing ``fmt::basic_string_view``
f8deb5b9 Poul Sander 2022-01-15 13:55 2983
  (`#865 <https://github.com/fmtlib/fmt/issues/865>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2984
  `#868 <https://github.com/fmtlib/fmt/pull/868>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 2985
  Thanks `@hhggit (dual) <https://github.com/hhggit>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 2986
f8deb5b9 Poul Sander 2022-01-15 13:55 2987
* Improved error message when formatting unknown types
f8deb5b9 Poul Sander 2022-01-15 13:55 2988
  (`#872 <https://github.com/fmtlib/fmt/pull/872>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 2989
  Thanks `@foonathan (Jonathan Müller) <https://github.com/foonathan>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2990
f8deb5b9 Poul Sander 2022-01-15 13:55 2991
* Disabled templated user-defined literals when compiled under nvcc
f8deb5b9 Poul Sander 2022-01-15 13:55 2992
  (`#875 <https://github.com/fmtlib/fmt/pull/875>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 2993
  Thanks `@CandyGumdrop (Candy Gumdrop) <https://github.com/CandyGumdrop>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 2994
f8deb5b9 Poul Sander 2022-01-15 13:55 2995
* Fixed ``format_to`` formatting to ``wmemory_buffer``
f8deb5b9 Poul Sander 2022-01-15 13:55 2996
  (`#874 <https://github.com/fmtlib/fmt/issues/874>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 2997
f8deb5b9 Poul Sander 2022-01-15 13:55 2998
5.2.0 - 2018-09-13
f8deb5b9 Poul Sander 2022-01-15 13:55 2999
------------------
f8deb5b9 Poul Sander 2022-01-15 13:55 3000
f8deb5b9 Poul Sander 2022-01-15 13:55 3001
* Optimized format string parsing and argument processing which resulted in up
f8deb5b9 Poul Sander 2022-01-15 13:55 3002
  to 5x speed up on long format strings and significant performance boost on
f8deb5b9 Poul Sander 2022-01-15 13:55 3003
  various benchmarks. For example, version 5.2 is 2.22x faster than 5.1 on
f8deb5b9 Poul Sander 2022-01-15 13:55 3004
  decimal integer formatting with ``format_to`` (macOS, clang-902.0.39.2):
f8deb5b9 Poul Sander 2022-01-15 13:55 3005
f8deb5b9 Poul Sander 2022-01-15 13:55 3006
  ==================  =======  =======
f8deb5b9 Poul Sander 2022-01-15 13:55 3007
  Method              Time, s  Speedup
f8deb5b9 Poul Sander 2022-01-15 13:55 3008
  ==================  =======  =======
f8deb5b9 Poul Sander 2022-01-15 13:55 3009
  fmt::format 5.1      0.58
f8deb5b9 Poul Sander 2022-01-15 13:55 3010
  fmt::format 5.2      0.35     1.66x
f8deb5b9 Poul Sander 2022-01-15 13:55 3011
  fmt::format_to 5.1   0.51
f8deb5b9 Poul Sander 2022-01-15 13:55 3012
  fmt::format_to 5.2   0.23     2.22x
f8deb5b9 Poul Sander 2022-01-15 13:55 3013
  sprintf              0.71
f8deb5b9 Poul Sander 2022-01-15 13:55 3014
  std::to_string       1.01
f8deb5b9 Poul Sander 2022-01-15 13:55 3015
  std::stringstream    1.73
f8deb5b9 Poul Sander 2022-01-15 13:55 3016
  ==================  =======  =======
f8deb5b9 Poul Sander 2022-01-15 13:55 3017
f8deb5b9 Poul Sander 2022-01-15 13:55 3018
* Changed the ``fmt`` macro from opt-out to opt-in to prevent name collisions.
f8deb5b9 Poul Sander 2022-01-15 13:55 3019
  To enable it define the ``FMT_STRING_ALIAS`` macro to 1 before including
f8deb5b9 Poul Sander 2022-01-15 13:55 3020
  ``fmt/format.h``:
f8deb5b9 Poul Sander 2022-01-15 13:55 3021
f8deb5b9 Poul Sander 2022-01-15 13:55 3022
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 3023
f8deb5b9 Poul Sander 2022-01-15 13:55 3024
     #define FMT_STRING_ALIAS 1
f8deb5b9 Poul Sander 2022-01-15 13:55 3025
     #include <fmt/format.h>
f8deb5b9 Poul Sander 2022-01-15 13:55 3026
     std::string answer = format(fmt("{}"), 42);
f8deb5b9 Poul Sander 2022-01-15 13:55 3027
f8deb5b9 Poul Sander 2022-01-15 13:55 3028
* Added compile-time format string checks to ``format_to`` overload that takes
f8deb5b9 Poul Sander 2022-01-15 13:55 3029
  ``fmt::memory_buffer`` (`#783 <https://github.com/fmtlib/fmt/issues/783>`_):
f8deb5b9 Poul Sander 2022-01-15 13:55 3030
f8deb5b9 Poul Sander 2022-01-15 13:55 3031
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 3032
f8deb5b9 Poul Sander 2022-01-15 13:55 3033
     fmt::memory_buffer buf;
f8deb5b9 Poul Sander 2022-01-15 13:55 3034
     // Compile-time error: invalid type specifier.
f8deb5b9 Poul Sander 2022-01-15 13:55 3035
     fmt::format_to(buf, fmt("{:d}"), "foo");
f8deb5b9 Poul Sander 2022-01-15 13:55 3036
f8deb5b9 Poul Sander 2022-01-15 13:55 3037
* Moved experimental color support to ``fmt/color.h`` and enabled the
f8deb5b9 Poul Sander 2022-01-15 13:55 3038
  new API by default. The old API can be enabled by defining the
f8deb5b9 Poul Sander 2022-01-15 13:55 3039
  ``FMT_DEPRECATED_COLORS`` macro.
f8deb5b9 Poul Sander 2022-01-15 13:55 3040
f8deb5b9 Poul Sander 2022-01-15 13:55 3041
* Added formatting support for types explicitly convertible to
f8deb5b9 Poul Sander 2022-01-15 13:55 3042
  ``fmt::string_view``:
f8deb5b9 Poul Sander 2022-01-15 13:55 3043
f8deb5b9 Poul Sander 2022-01-15 13:55 3044
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 3045
f8deb5b9 Poul Sander 2022-01-15 13:55 3046
     struct foo {
f8deb5b9 Poul Sander 2022-01-15 13:55 3047
       explicit operator fmt::string_view() const { return "foo"; }
f8deb5b9 Poul Sander 2022-01-15 13:55 3048
     };
f8deb5b9 Poul Sander 2022-01-15 13:55 3049
     auto s = format("{}", foo());
f8deb5b9 Poul Sander 2022-01-15 13:55 3050
f8deb5b9 Poul Sander 2022-01-15 13:55 3051
  In particular, this makes formatting function work with
f8deb5b9 Poul Sander 2022-01-15 13:55 3052
  ``folly::StringPiece``.
f8deb5b9 Poul Sander 2022-01-15 13:55 3053
f8deb5b9 Poul Sander 2022-01-15 13:55 3054
* Implemented preliminary support for ``char*_t`` by replacing the ``format``
f8deb5b9 Poul Sander 2022-01-15 13:55 3055
  function overloads with a single function template parameterized on the string
f8deb5b9 Poul Sander 2022-01-15 13:55 3056
  type.
f8deb5b9 Poul Sander 2022-01-15 13:55 3057
f8deb5b9 Poul Sander 2022-01-15 13:55 3058
* Added support for dynamic argument lists
f8deb5b9 Poul Sander 2022-01-15 13:55 3059
  (`#814 <https://github.com/fmtlib/fmt/issues/814>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3060
  `#819 <https://github.com/fmtlib/fmt/pull/819>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3061
  Thanks `@MikePopoloski (Michael Popoloski)
f8deb5b9 Poul Sander 2022-01-15 13:55 3062
  <https://github.com/MikePopoloski>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3063
f8deb5b9 Poul Sander 2022-01-15 13:55 3064
* Reduced executable size overhead for embedded targets using newlib nano by
f8deb5b9 Poul Sander 2022-01-15 13:55 3065
  making locale dependency optional
f8deb5b9 Poul Sander 2022-01-15 13:55 3066
  (`#839 <https://github.com/fmtlib/fmt/pull/839>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3067
  Thanks `@teajay-fr (Thomas Benard) <https://github.com/teajay-fr>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3068
f8deb5b9 Poul Sander 2022-01-15 13:55 3069
* Keep ``noexcept`` specifier when exceptions are disabled
f8deb5b9 Poul Sander 2022-01-15 13:55 3070
  (`#801 <https://github.com/fmtlib/fmt/issues/801>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3071
  `#810 <https://github.com/fmtlib/fmt/pull/810>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3072
  Thanks `@qis (Alexej Harm) <https://github.com/qis>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3073
f8deb5b9 Poul Sander 2022-01-15 13:55 3074
* Fixed formatting of user-defined types providing ``operator<<`` with
f8deb5b9 Poul Sander 2022-01-15 13:55 3075
  ``format_to_n``
f8deb5b9 Poul Sander 2022-01-15 13:55 3076
  (`#806 <https://github.com/fmtlib/fmt/pull/806>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3077
  Thanks `@mkurdej (Marek Kurdej) <https://github.com/mkurdej>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3078
f8deb5b9 Poul Sander 2022-01-15 13:55 3079
* Fixed dynamic linkage of new symbols
f8deb5b9 Poul Sander 2022-01-15 13:55 3080
  (`#808 <https://github.com/fmtlib/fmt/issues/808>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3081
f8deb5b9 Poul Sander 2022-01-15 13:55 3082
* Fixed global initialization issue
f8deb5b9 Poul Sander 2022-01-15 13:55 3083
  (`#807 <https://github.com/fmtlib/fmt/issues/807>`_):
f8deb5b9 Poul Sander 2022-01-15 13:55 3084
f8deb5b9 Poul Sander 2022-01-15 13:55 3085
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 3086
f8deb5b9 Poul Sander 2022-01-15 13:55 3087
     // This works on compilers with constexpr support.
f8deb5b9 Poul Sander 2022-01-15 13:55 3088
     static const std::string answer = fmt::format("{}", 42);
f8deb5b9 Poul Sander 2022-01-15 13:55 3089
f8deb5b9 Poul Sander 2022-01-15 13:55 3090
* Fixed various compiler warnings and errors
f8deb5b9 Poul Sander 2022-01-15 13:55 3091
  (`#804 <https://github.com/fmtlib/fmt/pull/804>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3092
  `#809 <https://github.com/fmtlib/fmt/issues/809>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3093
  `#811 <https://github.com/fmtlib/fmt/pull/811>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3094
  `#822 <https://github.com/fmtlib/fmt/issues/822>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3095
  `#827 <https://github.com/fmtlib/fmt/pull/827>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3096
  `#830 <https://github.com/fmtlib/fmt/issues/830>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3097
  `#838 <https://github.com/fmtlib/fmt/pull/838>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3098
  `#843 <https://github.com/fmtlib/fmt/issues/843>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3099
  `#844 <https://github.com/fmtlib/fmt/pull/844>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3100
  `#851 <https://github.com/fmtlib/fmt/issues/851>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3101
  `#852 <https://github.com/fmtlib/fmt/pull/852>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3102
  `#854 <https://github.com/fmtlib/fmt/pull/854>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3103
  Thanks `@henryiii (Henry Schreiner) <https://github.com/henryiii>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3104
  `@medithe <https://github.com/medithe>`_, and
f8deb5b9 Poul Sander 2022-01-15 13:55 3105
  `@eliasdaler (Elias Daler) <https://github.com/eliasdaler>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3106
f8deb5b9 Poul Sander 2022-01-15 13:55 3107
5.1.0 - 2018-07-05
f8deb5b9 Poul Sander 2022-01-15 13:55 3108
------------------
f8deb5b9 Poul Sander 2022-01-15 13:55 3109
f8deb5b9 Poul Sander 2022-01-15 13:55 3110
* Added experimental support for RGB color output enabled with
f8deb5b9 Poul Sander 2022-01-15 13:55 3111
  the ``FMT_EXTENDED_COLORS`` macro:
f8deb5b9 Poul Sander 2022-01-15 13:55 3112
f8deb5b9 Poul Sander 2022-01-15 13:55 3113
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 3114
f8deb5b9 Poul Sander 2022-01-15 13:55 3115
     #define FMT_EXTENDED_COLORS
f8deb5b9 Poul Sander 2022-01-15 13:55 3116
     #define FMT_HEADER_ONLY // or compile fmt with FMT_EXTENDED_COLORS defined
f8deb5b9 Poul Sander 2022-01-15 13:55 3117
     #include <fmt/format.h>
f8deb5b9 Poul Sander 2022-01-15 13:55 3118
f8deb5b9 Poul Sander 2022-01-15 13:55 3119
     fmt::print(fmt::color::steel_blue, "Some beautiful text");
f8deb5b9 Poul Sander 2022-01-15 13:55 3120
f8deb5b9 Poul Sander 2022-01-15 13:55 3121
  The old API (the ``print_colored`` and ``vprint_colored`` functions and the
f8deb5b9 Poul Sander 2022-01-15 13:55 3122
  ``color`` enum) is now deprecated.
f8deb5b9 Poul Sander 2022-01-15 13:55 3123
  (`#762 <https://github.com/fmtlib/fmt/issues/762>`_
f8deb5b9 Poul Sander 2022-01-15 13:55 3124
  `#767 <https://github.com/fmtlib/fmt/pull/767>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3125
  thanks `@Remotion (Remo) <https://github.com/Remotion>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3126
f8deb5b9 Poul Sander 2022-01-15 13:55 3127
* Added quotes to strings in ranges and tuples
f8deb5b9 Poul Sander 2022-01-15 13:55 3128
  (`#766 <https://github.com/fmtlib/fmt/pull/766>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3129
  Thanks `@Remotion (Remo) <https://github.com/Remotion>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3130
f8deb5b9 Poul Sander 2022-01-15 13:55 3131
* Made ``format_to`` work with ``basic_memory_buffer``
f8deb5b9 Poul Sander 2022-01-15 13:55 3132
  (`#776 <https://github.com/fmtlib/fmt/issues/776>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3133
f8deb5b9 Poul Sander 2022-01-15 13:55 3134
* Added ``vformat_to_n`` and ``wchar_t`` overload of ``format_to_n``
f8deb5b9 Poul Sander 2022-01-15 13:55 3135
  (`#764 <https://github.com/fmtlib/fmt/issues/764>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3136
  `#769 <https://github.com/fmtlib/fmt/issues/769>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3137
f8deb5b9 Poul Sander 2022-01-15 13:55 3138
* Made ``is_range`` and ``is_tuple_like`` part of public (experimental) API
f8deb5b9 Poul Sander 2022-01-15 13:55 3139
  to allow specialization for user-defined types
f8deb5b9 Poul Sander 2022-01-15 13:55 3140
  (`#751 <https://github.com/fmtlib/fmt/issues/751>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3141
  `#759 <https://github.com/fmtlib/fmt/pull/759>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3142
  Thanks `@drrlvn (Dror Levin) <https://github.com/drrlvn>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3143
f8deb5b9 Poul Sander 2022-01-15 13:55 3144
* Added more compilers to continuous integration and increased ``FMT_PEDANTIC``
f8deb5b9 Poul Sander 2022-01-15 13:55 3145
  warning levels
f8deb5b9 Poul Sander 2022-01-15 13:55 3146
  (`#736 <https://github.com/fmtlib/fmt/pull/736>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3147
  Thanks `@eliaskosunen (Elias Kosunen) <https://github.com/eliaskosunen>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3148
f8deb5b9 Poul Sander 2022-01-15 13:55 3149
* Fixed compilation with MSVC 2013.
f8deb5b9 Poul Sander 2022-01-15 13:55 3150
f8deb5b9 Poul Sander 2022-01-15 13:55 3151
* Fixed handling of user-defined types in ``format_to``
f8deb5b9 Poul Sander 2022-01-15 13:55 3152
  (`#793 <https://github.com/fmtlib/fmt/issues/793>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3153
f8deb5b9 Poul Sander 2022-01-15 13:55 3154
* Forced linking of inline ``vformat`` functions into the library
f8deb5b9 Poul Sander 2022-01-15 13:55 3155
  (`#795 <https://github.com/fmtlib/fmt/issues/795>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3156
f8deb5b9 Poul Sander 2022-01-15 13:55 3157
* Fixed incorrect call to on_align in ``'{:}='``
f8deb5b9 Poul Sander 2022-01-15 13:55 3158
  (`#750 <https://github.com/fmtlib/fmt/issues/750>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3159
f8deb5b9 Poul Sander 2022-01-15 13:55 3160
* Fixed floating-point formatting to a non-back_insert_iterator with sign &
f8deb5b9 Poul Sander 2022-01-15 13:55 3161
  numeric alignment specified
f8deb5b9 Poul Sander 2022-01-15 13:55 3162
  (`#756 <https://github.com/fmtlib/fmt/issues/756>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3163
f8deb5b9 Poul Sander 2022-01-15 13:55 3164
* Fixed formatting to an array with ``format_to_n``
f8deb5b9 Poul Sander 2022-01-15 13:55 3165
  (`#778 <https://github.com/fmtlib/fmt/issues/778>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3166
f8deb5b9 Poul Sander 2022-01-15 13:55 3167
* Fixed formatting of more than 15 named arguments
f8deb5b9 Poul Sander 2022-01-15 13:55 3168
  (`#754 <https://github.com/fmtlib/fmt/issues/754>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3169
f8deb5b9 Poul Sander 2022-01-15 13:55 3170
* Fixed handling of compile-time strings when including ``fmt/ostream.h``.
f8deb5b9 Poul Sander 2022-01-15 13:55 3171
  (`#768 <https://github.com/fmtlib/fmt/issues/768>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3172
f8deb5b9 Poul Sander 2022-01-15 13:55 3173
* Fixed various compiler warnings and errors
f8deb5b9 Poul Sander 2022-01-15 13:55 3174
  (`#742 <https://github.com/fmtlib/fmt/issues/742>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3175
  `#748 <https://github.com/fmtlib/fmt/issues/748>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3176
  `#752 <https://github.com/fmtlib/fmt/issues/752>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3177
  `#770 <https://github.com/fmtlib/fmt/issues/770>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3178
  `#775 <https://github.com/fmtlib/fmt/pull/775>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3179
  `#779 <https://github.com/fmtlib/fmt/issues/779>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3180
  `#780 <https://github.com/fmtlib/fmt/pull/780>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3181
  `#790 <https://github.com/fmtlib/fmt/pull/790>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3182
  `#792 <https://github.com/fmtlib/fmt/pull/792>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3183
  `#800 <https://github.com/fmtlib/fmt/pull/800>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3184
  Thanks `@Remotion (Remo) <https://github.com/Remotion>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3185
  `@gabime (Gabi Melman) <https://github.com/gabime>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3186
  `@foonathan (Jonathan Müller) <https://github.com/foonathan>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3187
  `@Dark-Passenger (Dhruv Paranjape) <https://github.com/Dark-Passenger>`_, and
f8deb5b9 Poul Sander 2022-01-15 13:55 3188
  `@0x8000-0000 (Sign Bit) <https://github.com/0x8000-0000>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3189
f8deb5b9 Poul Sander 2022-01-15 13:55 3190
5.0.0 - 2018-05-21
f8deb5b9 Poul Sander 2022-01-15 13:55 3191
------------------
f8deb5b9 Poul Sander 2022-01-15 13:55 3192
f8deb5b9 Poul Sander 2022-01-15 13:55 3193
* Added a requirement for partial C++11 support, most importantly variadic
f8deb5b9 Poul Sander 2022-01-15 13:55 3194
  templates and type traits, and dropped ``FMT_VARIADIC_*`` emulation macros.
f8deb5b9 Poul Sander 2022-01-15 13:55 3195
  Variadic templates are available since GCC 4.4, Clang 2.9 and MSVC 18.0 (2013).
f8deb5b9 Poul Sander 2022-01-15 13:55 3196
  For older compilers use {fmt} `version 4.x
f8deb5b9 Poul Sander 2022-01-15 13:55 3197
  <https://github.com/fmtlib/fmt/releases/tag/4.1.0>`_ which continues to be
f8deb5b9 Poul Sander 2022-01-15 13:55 3198
  maintained and works with C++98 compilers.
f8deb5b9 Poul Sander 2022-01-15 13:55 3199
f8deb5b9 Poul Sander 2022-01-15 13:55 3200
* Renamed symbols to follow standard C++ naming conventions and proposed a subset
f8deb5b9 Poul Sander 2022-01-15 13:55 3201
  of the library for standardization in `P0645R2 Text Formatting
f8deb5b9 Poul Sander 2022-01-15 13:55 3202
  <https://wg21.link/P0645>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3203
f8deb5b9 Poul Sander 2022-01-15 13:55 3204
* Implemented ``constexpr`` parsing of format strings and `compile-time format
f8deb5b9 Poul Sander 2022-01-15 13:55 3205
  string checks
f8deb5b9 Poul Sander 2022-01-15 13:55 3206
  <https://fmt.dev/latest/api.html#compile-time-format-string-checks>`_. For
f8deb5b9 Poul Sander 2022-01-15 13:55 3207
  example
f8deb5b9 Poul Sander 2022-01-15 13:55 3208
f8deb5b9 Poul Sander 2022-01-15 13:55 3209
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 3210
f8deb5b9 Poul Sander 2022-01-15 13:55 3211
     #include <fmt/format.h>
f8deb5b9 Poul Sander 2022-01-15 13:55 3212
f8deb5b9 Poul Sander 2022-01-15 13:55 3213
     std::string s = format(fmt("{:d}"), "foo");
f8deb5b9 Poul Sander 2022-01-15 13:55 3214
f8deb5b9 Poul Sander 2022-01-15 13:55 3215
  gives a compile-time error because ``d`` is an invalid specifier for strings
f8deb5b9 Poul Sander 2022-01-15 13:55 3216
  (`godbolt <https://godbolt.org/g/rnCy9Q>`__)::
f8deb5b9 Poul Sander 2022-01-15 13:55 3217
f8deb5b9 Poul Sander 2022-01-15 13:55 3218
     ...
f8deb5b9 Poul Sander 2022-01-15 13:55 3219
     <source>:4:19: note: in instantiation of function template specialization 'fmt::v5::format<S, char [4]>' requested here
f8deb5b9 Poul Sander 2022-01-15 13:55 3220
       std::string s = format(fmt("{:d}"), "foo");
f8deb5b9 Poul Sander 2022-01-15 13:55 3221
                       ^
f8deb5b9 Poul Sander 2022-01-15 13:55 3222
     format.h:1337:13: note: non-constexpr function 'on_error' cannot be used in a constant expression
f8deb5b9 Poul Sander 2022-01-15 13:55 3223
         handler.on_error("invalid type specifier");
f8deb5b9 Poul Sander 2022-01-15 13:55 3224
f8deb5b9 Poul Sander 2022-01-15 13:55 3225
  Compile-time checks require relaxed ``constexpr`` (C++14 feature) support. If
f8deb5b9 Poul Sander 2022-01-15 13:55 3226
  the latter is not available, checks will be performed at runtime.
f8deb5b9 Poul Sander 2022-01-15 13:55 3227
f8deb5b9 Poul Sander 2022-01-15 13:55 3228
* Separated format string parsing and formatting in the extension API to enable
f8deb5b9 Poul Sander 2022-01-15 13:55 3229
  compile-time format string processing. For example
f8deb5b9 Poul Sander 2022-01-15 13:55 3230
f8deb5b9 Poul Sander 2022-01-15 13:55 3231
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 3232
f8deb5b9 Poul Sander 2022-01-15 13:55 3233
     struct Answer {};
f8deb5b9 Poul Sander 2022-01-15 13:55 3234
f8deb5b9 Poul Sander 2022-01-15 13:55 3235
     namespace fmt {
f8deb5b9 Poul Sander 2022-01-15 13:55 3236
     template <>
f8deb5b9 Poul Sander 2022-01-15 13:55 3237
     struct formatter<Answer> {
f8deb5b9 Poul Sander 2022-01-15 13:55 3238
       constexpr auto parse(parse_context& ctx) {
f8deb5b9 Poul Sander 2022-01-15 13:55 3239
         auto it = ctx.begin();
f8deb5b9 Poul Sander 2022-01-15 13:55 3240
         spec = *it;
f8deb5b9 Poul Sander 2022-01-15 13:55 3241
         if (spec != 'd' && spec != 's')
f8deb5b9 Poul Sander 2022-01-15 13:55 3242
           throw format_error("invalid specifier");
f8deb5b9 Poul Sander 2022-01-15 13:55 3243
         return ++it;
f8deb5b9 Poul Sander 2022-01-15 13:55 3244
       }
f8deb5b9 Poul Sander 2022-01-15 13:55 3245
f8deb5b9 Poul Sander 2022-01-15 13:55 3246
       template <typename FormatContext>
f8deb5b9 Poul Sander 2022-01-15 13:55 3247
       auto format(Answer, FormatContext& ctx) {
f8deb5b9 Poul Sander 2022-01-15 13:55 3248
         return spec == 's' ?
f8deb5b9 Poul Sander 2022-01-15 13:55 3249
           format_to(ctx.begin(), "{}", "fourty-two") :
f8deb5b9 Poul Sander 2022-01-15 13:55 3250
           format_to(ctx.begin(), "{}", 42);
f8deb5b9 Poul Sander 2022-01-15 13:55 3251
       }
f8deb5b9 Poul Sander 2022-01-15 13:55 3252
f8deb5b9 Poul Sander 2022-01-15 13:55 3253
       char spec = 0;
f8deb5b9 Poul Sander 2022-01-15 13:55 3254
     };
f8deb5b9 Poul Sander 2022-01-15 13:55 3255
     }
f8deb5b9 Poul Sander 2022-01-15 13:55 3256
f8deb5b9 Poul Sander 2022-01-15 13:55 3257
     std::string s = format(fmt("{:x}"), Answer());
f8deb5b9 Poul Sander 2022-01-15 13:55 3258
f8deb5b9 Poul Sander 2022-01-15 13:55 3259
  gives a compile-time error due to invalid format specifier (`godbolt
f8deb5b9 Poul Sander 2022-01-15 13:55 3260
  <https://godbolt.org/g/2jQ1Dv>`__)::
f8deb5b9 Poul Sander 2022-01-15 13:55 3261
f8deb5b9 Poul Sander 2022-01-15 13:55 3262
     ...
f8deb5b9 Poul Sander 2022-01-15 13:55 3263
     <source>:12:45: error: expression '<throw-expression>' is not a constant expression
f8deb5b9 Poul Sander 2022-01-15 13:55 3264
            throw format_error("invalid specifier");
f8deb5b9 Poul Sander 2022-01-15 13:55 3265
f8deb5b9 Poul Sander 2022-01-15 13:55 3266
* Added `iterator support
f8deb5b9 Poul Sander 2022-01-15 13:55 3267
  <https://fmt.dev/latest/api.html#output-iterator-support>`_:
f8deb5b9 Poul Sander 2022-01-15 13:55 3268
f8deb5b9 Poul Sander 2022-01-15 13:55 3269
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 3270
f8deb5b9 Poul Sander 2022-01-15 13:55 3271
     #include <vector>
f8deb5b9 Poul Sander 2022-01-15 13:55 3272
     #include <fmt/format.h>
f8deb5b9 Poul Sander 2022-01-15 13:55 3273
f8deb5b9 Poul Sander 2022-01-15 13:55 3274
     std::vector<char> out;
f8deb5b9 Poul Sander 2022-01-15 13:55 3275
     fmt::format_to(std::back_inserter(out), "{}", 42);
f8deb5b9 Poul Sander 2022-01-15 13:55 3276
f8deb5b9 Poul Sander 2022-01-15 13:55 3277
* Added the `format_to_n
f8deb5b9 Poul Sander 2022-01-15 13:55 3278
  <https://fmt.dev/latest/api.html#_CPPv2N3fmt11format_to_nE8OutputItNSt6size_tE11string_viewDpRK4Args>`_
f8deb5b9 Poul Sander 2022-01-15 13:55 3279
  function that restricts the output to the specified number of characters
f8deb5b9 Poul Sander 2022-01-15 13:55 3280
  (`#298 <https://github.com/fmtlib/fmt/issues/298>`_):
f8deb5b9 Poul Sander 2022-01-15 13:55 3281
f8deb5b9 Poul Sander 2022-01-15 13:55 3282
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 3283
f8deb5b9 Poul Sander 2022-01-15 13:55 3284
     char out[4];
f8deb5b9 Poul Sander 2022-01-15 13:55 3285
     fmt::format_to_n(out, sizeof(out), "{}", 12345);
f8deb5b9 Poul Sander 2022-01-15 13:55 3286
     // out == "1234" (without terminating '\0')
f8deb5b9 Poul Sander 2022-01-15 13:55 3287
f8deb5b9 Poul Sander 2022-01-15 13:55 3288
* Added the `formatted_size
f8deb5b9 Poul Sander 2022-01-15 13:55 3289
  <https://fmt.dev/latest/api.html#_CPPv2N3fmt14formatted_sizeE11string_viewDpRK4Args>`_
f8deb5b9 Poul Sander 2022-01-15 13:55 3290
  function for computing the output size:
f8deb5b9 Poul Sander 2022-01-15 13:55 3291
f8deb5b9 Poul Sander 2022-01-15 13:55 3292
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 3293
f8deb5b9 Poul Sander 2022-01-15 13:55 3294
     #include <fmt/format.h>
f8deb5b9 Poul Sander 2022-01-15 13:55 3295
f8deb5b9 Poul Sander 2022-01-15 13:55 3296
     auto size = fmt::formatted_size("{}", 12345); // size == 5
f8deb5b9 Poul Sander 2022-01-15 13:55 3297
f8deb5b9 Poul Sander 2022-01-15 13:55 3298
* Improved compile times by reducing dependencies on standard headers and
f8deb5b9 Poul Sander 2022-01-15 13:55 3299
  providing a lightweight `core API <https://fmt.dev/latest/api.html#core-api>`_:
f8deb5b9 Poul Sander 2022-01-15 13:55 3300
f8deb5b9 Poul Sander 2022-01-15 13:55 3301
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 3302
f8deb5b9 Poul Sander 2022-01-15 13:55 3303
     #include <fmt/core.h>
f8deb5b9 Poul Sander 2022-01-15 13:55 3304
f8deb5b9 Poul Sander 2022-01-15 13:55 3305
     fmt::print("The answer is {}.", 42);
f8deb5b9 Poul Sander 2022-01-15 13:55 3306
f8deb5b9 Poul Sander 2022-01-15 13:55 3307
  See `Compile time and code bloat
f8deb5b9 Poul Sander 2022-01-15 13:55 3308
  <https://github.com/fmtlib/fmt#compile-time-and-code-bloat>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3309
f8deb5b9 Poul Sander 2022-01-15 13:55 3310
* Added the `make_format_args
f8deb5b9 Poul Sander 2022-01-15 13:55 3311
  <https://fmt.dev/latest/api.html#_CPPv2N3fmt16make_format_argsEDpRK4Args>`_
f8deb5b9 Poul Sander 2022-01-15 13:55 3312
  function for capturing formatting arguments:
f8deb5b9 Poul Sander 2022-01-15 13:55 3313
f8deb5b9 Poul Sander 2022-01-15 13:55 3314
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 3315
  
f8deb5b9 Poul Sander 2022-01-15 13:55 3316
     // Prints formatted error message.
f8deb5b9 Poul Sander 2022-01-15 13:55 3317
     void vreport_error(const char *format, fmt::format_args args) {
f8deb5b9 Poul Sander 2022-01-15 13:55 3318
       fmt::print("Error: ");
f8deb5b9 Poul Sander 2022-01-15 13:55 3319
       fmt::vprint(format, args);
f8deb5b9 Poul Sander 2022-01-15 13:55 3320
     }
f8deb5b9 Poul Sander 2022-01-15 13:55 3321
     template <typename... Args>
f8deb5b9 Poul Sander 2022-01-15 13:55 3322
     void report_error(const char *format, const Args & ... args) {
f8deb5b9 Poul Sander 2022-01-15 13:55 3323
       vreport_error(format, fmt::make_format_args(args...));
f8deb5b9 Poul Sander 2022-01-15 13:55 3324
     }
f8deb5b9 Poul Sander 2022-01-15 13:55 3325
f8deb5b9 Poul Sander 2022-01-15 13:55 3326
* Added the ``make_printf_args`` function for capturing ``printf`` arguments
f8deb5b9 Poul Sander 2022-01-15 13:55 3327
  (`#687 <https://github.com/fmtlib/fmt/issues/687>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3328
  `#694 <https://github.com/fmtlib/fmt/pull/694>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3329
  Thanks `@Kronuz (Germán Méndez Bravo) <https://github.com/Kronuz>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3330
f8deb5b9 Poul Sander 2022-01-15 13:55 3331
* Added prefix ``v`` to non-variadic functions taking ``format_args`` to
f8deb5b9 Poul Sander 2022-01-15 13:55 3332
  distinguish them from variadic ones:
f8deb5b9 Poul Sander 2022-01-15 13:55 3333
f8deb5b9 Poul Sander 2022-01-15 13:55 3334
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 3335
f8deb5b9 Poul Sander 2022-01-15 13:55 3336
     std::string vformat(string_view format_str, format_args args);
f8deb5b9 Poul Sander 2022-01-15 13:55 3337
     
f8deb5b9 Poul Sander 2022-01-15 13:55 3338
     template <typename... Args>
f8deb5b9 Poul Sander 2022-01-15 13:55 3339
     std::string format(string_view format_str, const Args & ... args);
f8deb5b9 Poul Sander 2022-01-15 13:55 3340
f8deb5b9 Poul Sander 2022-01-15 13:55 3341
* Added experimental support for formatting ranges, containers and tuple-like
f8deb5b9 Poul Sander 2022-01-15 13:55 3342
  types in ``fmt/ranges.h`` (`#735 <https://github.com/fmtlib/fmt/pull/735>`_):
f8deb5b9 Poul Sander 2022-01-15 13:55 3343
f8deb5b9 Poul Sander 2022-01-15 13:55 3344
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 3345
f8deb5b9 Poul Sander 2022-01-15 13:55 3346
     #include <fmt/ranges.h>
f8deb5b9 Poul Sander 2022-01-15 13:55 3347
f8deb5b9 Poul Sander 2022-01-15 13:55 3348
     std::vector<int> v = {1, 2, 3};
f8deb5b9 Poul Sander 2022-01-15 13:55 3349
     fmt::print("{}", v); // prints {1, 2, 3}
f8deb5b9 Poul Sander 2022-01-15 13:55 3350
f8deb5b9 Poul Sander 2022-01-15 13:55 3351
  Thanks `@Remotion (Remo) <https://github.com/Remotion>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3352
f8deb5b9 Poul Sander 2022-01-15 13:55 3353
* Implemented ``wchar_t`` date and time formatting
f8deb5b9 Poul Sander 2022-01-15 13:55 3354
  (`#712 <https://github.com/fmtlib/fmt/pull/712>`_):
f8deb5b9 Poul Sander 2022-01-15 13:55 3355
f8deb5b9 Poul Sander 2022-01-15 13:55 3356
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 3357
f8deb5b9 Poul Sander 2022-01-15 13:55 3358
     #include <fmt/time.h>
f8deb5b9 Poul Sander 2022-01-15 13:55 3359
f8deb5b9 Poul Sander 2022-01-15 13:55 3360
     std::time_t t = std::time(nullptr);
f8deb5b9 Poul Sander 2022-01-15 13:55 3361
     auto s = fmt::format(L"The date is {:%Y-%m-%d}.", *std::localtime(&t));
f8deb5b9 Poul Sander 2022-01-15 13:55 3362
f8deb5b9 Poul Sander 2022-01-15 13:55 3363
  Thanks `@DanielaE (Daniela Engert) <https://github.com/DanielaE>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3364
f8deb5b9 Poul Sander 2022-01-15 13:55 3365
* Provided more wide string overloads
f8deb5b9 Poul Sander 2022-01-15 13:55 3366
  (`#724 <https://github.com/fmtlib/fmt/pull/724>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3367
  Thanks `@DanielaE (Daniela Engert) <https://github.com/DanielaE>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3368
f8deb5b9 Poul Sander 2022-01-15 13:55 3369
* Switched from a custom null-terminated string view class to ``string_view``
f8deb5b9 Poul Sander 2022-01-15 13:55 3370
  in the format API and provided ``fmt::string_view`` which implements a subset
f8deb5b9 Poul Sander 2022-01-15 13:55 3371
  of ``std::string_view`` API for pre-C++17 systems.
f8deb5b9 Poul Sander 2022-01-15 13:55 3372
f8deb5b9 Poul Sander 2022-01-15 13:55 3373
* Added support for ``std::experimental::string_view``
f8deb5b9 Poul Sander 2022-01-15 13:55 3374
  (`#607 <https://github.com/fmtlib/fmt/pull/607>`_):
f8deb5b9 Poul Sander 2022-01-15 13:55 3375
f8deb5b9 Poul Sander 2022-01-15 13:55 3376
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 3377
f8deb5b9 Poul Sander 2022-01-15 13:55 3378
     #include <fmt/core.h>
f8deb5b9 Poul Sander 2022-01-15 13:55 3379
     #include <experimental/string_view>
f8deb5b9 Poul Sander 2022-01-15 13:55 3380
f8deb5b9 Poul Sander 2022-01-15 13:55 3381
     fmt::print("{}", std::experimental::string_view("foo"));
f8deb5b9 Poul Sander 2022-01-15 13:55 3382
f8deb5b9 Poul Sander 2022-01-15 13:55 3383
  Thanks `@virgiliofornazin (Virgilio Alexandre Fornazin)
f8deb5b9 Poul Sander 2022-01-15 13:55 3384
  <https://github.com/virgiliofornazin>`__.
f8deb5b9 Poul Sander 2022-01-15 13:55 3385
f8deb5b9 Poul Sander 2022-01-15 13:55 3386
* Allowed mixing named and automatic arguments:
f8deb5b9 Poul Sander 2022-01-15 13:55 3387
f8deb5b9 Poul Sander 2022-01-15 13:55 3388
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 3389
f8deb5b9 Poul Sander 2022-01-15 13:55 3390
     fmt::format("{} {two}", 1, fmt::arg("two", 2));
f8deb5b9 Poul Sander 2022-01-15 13:55 3391
f8deb5b9 Poul Sander 2022-01-15 13:55 3392
* Removed the write API in favor of the `format API
f8deb5b9 Poul Sander 2022-01-15 13:55 3393
  <https://fmt.dev/latest/api.html#format-api>`_ with compile-time handling of
f8deb5b9 Poul Sander 2022-01-15 13:55 3394
  format strings.
f8deb5b9 Poul Sander 2022-01-15 13:55 3395
f8deb5b9 Poul Sander 2022-01-15 13:55 3396
* Disallowed formatting of multibyte strings into a wide character target
f8deb5b9 Poul Sander 2022-01-15 13:55 3397
  (`#606 <https://github.com/fmtlib/fmt/pull/606>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3398
f8deb5b9 Poul Sander 2022-01-15 13:55 3399
* Improved documentation
f8deb5b9 Poul Sander 2022-01-15 13:55 3400
  (`#515 <https://github.com/fmtlib/fmt/pull/515>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3401
  `#614 <https://github.com/fmtlib/fmt/issues/614>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3402
  `#617 <https://github.com/fmtlib/fmt/pull/617>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3403
  `#661 <https://github.com/fmtlib/fmt/pull/661>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3404
  `#680 <https://github.com/fmtlib/fmt/pull/680>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3405
  Thanks `@ibell (Ian Bell) <https://github.com/ibell>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3406
  `@mihaitodor (Mihai Todor) <https://github.com/mihaitodor>`_, and
f8deb5b9 Poul Sander 2022-01-15 13:55 3407
  `@johnthagen <https://github.com/johnthagen>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3408
f8deb5b9 Poul Sander 2022-01-15 13:55 3409
* Implemented more efficient handling of large number of format arguments.
f8deb5b9 Poul Sander 2022-01-15 13:55 3410
f8deb5b9 Poul Sander 2022-01-15 13:55 3411
* Introduced an inline namespace for symbol versioning.
f8deb5b9 Poul Sander 2022-01-15 13:55 3412
f8deb5b9 Poul Sander 2022-01-15 13:55 3413
* Added debug postfix ``d`` to the ``fmt`` library name
f8deb5b9 Poul Sander 2022-01-15 13:55 3414
  (`#636 <https://github.com/fmtlib/fmt/issues/636>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3415
f8deb5b9 Poul Sander 2022-01-15 13:55 3416
* Removed unnecessary ``fmt/`` prefix in includes
f8deb5b9 Poul Sander 2022-01-15 13:55 3417
  (`#397 <https://github.com/fmtlib/fmt/pull/397>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3418
  Thanks `@chronoxor (Ivan Shynkarenka) <https://github.com/chronoxor>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3419
f8deb5b9 Poul Sander 2022-01-15 13:55 3420
* Moved ``fmt/*.h`` to ``include/fmt/*.h`` to prevent irrelevant files and
f8deb5b9 Poul Sander 2022-01-15 13:55 3421
  directories appearing on the include search paths when fmt is used as a
f8deb5b9 Poul Sander 2022-01-15 13:55 3422
  subproject and moved source files to the ``src`` directory.
f8deb5b9 Poul Sander 2022-01-15 13:55 3423
f8deb5b9 Poul Sander 2022-01-15 13:55 3424
* Added qmake project file ``support/fmt.pro``
f8deb5b9 Poul Sander 2022-01-15 13:55 3425
  (`#641 <https://github.com/fmtlib/fmt/pull/641>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3426
  Thanks `@cowo78 (Giuseppe Corbelli) <https://github.com/cowo78>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3427
f8deb5b9 Poul Sander 2022-01-15 13:55 3428
* Added Gradle build file ``support/build.gradle``
f8deb5b9 Poul Sander 2022-01-15 13:55 3429
  (`#649 <https://github.com/fmtlib/fmt/pull/649>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3430
  Thanks `@luncliff (Park DongHa) <https://github.com/luncliff>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3431
f8deb5b9 Poul Sander 2022-01-15 13:55 3432
* Removed ``FMT_CPPFORMAT`` CMake option.
f8deb5b9 Poul Sander 2022-01-15 13:55 3433
f8deb5b9 Poul Sander 2022-01-15 13:55 3434
* Fixed a name conflict with the macro ``CHAR_WIDTH`` in glibc
f8deb5b9 Poul Sander 2022-01-15 13:55 3435
  (`#616 <https://github.com/fmtlib/fmt/pull/616>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3436
  Thanks `@aroig (Abdó Roig-Maranges) <https://github.com/aroig>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3437
f8deb5b9 Poul Sander 2022-01-15 13:55 3438
* Fixed handling of nested braces in ``fmt::join``
f8deb5b9 Poul Sander 2022-01-15 13:55 3439
  (`#638 <https://github.com/fmtlib/fmt/issues/638>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3440
f8deb5b9 Poul Sander 2022-01-15 13:55 3441
* Added ``SOURCELINK_SUFFIX`` for compatibility with Sphinx 1.5
f8deb5b9 Poul Sander 2022-01-15 13:55 3442
  (`#497 <https://github.com/fmtlib/fmt/pull/497>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3443
  Thanks `@ginggs (Graham Inggs) <https://github.com/ginggs>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3444
f8deb5b9 Poul Sander 2022-01-15 13:55 3445
* Added a missing ``inline`` in the header-only mode
f8deb5b9 Poul Sander 2022-01-15 13:55 3446
  (`#626 <https://github.com/fmtlib/fmt/pull/626>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3447
  Thanks `@aroig (Abdó Roig-Maranges) <https://github.com/aroig>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3448
f8deb5b9 Poul Sander 2022-01-15 13:55 3449
* Fixed various compiler warnings
f8deb5b9 Poul Sander 2022-01-15 13:55 3450
  (`#640 <https://github.com/fmtlib/fmt/pull/640>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3451
  `#656 <https://github.com/fmtlib/fmt/pull/656>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3452
  `#679 <https://github.com/fmtlib/fmt/pull/679>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3453
  `#681 <https://github.com/fmtlib/fmt/pull/681>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3454
  `#705 <https://github.com/fmtlib/fmt/pull/705>`__,
f8deb5b9 Poul Sander 2022-01-15 13:55 3455
  `#715 <https://github.com/fmtlib/fmt/issues/715>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3456
  `#717 <https://github.com/fmtlib/fmt/pull/717>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3457
  `#720 <https://github.com/fmtlib/fmt/pull/720>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3458
  `#723 <https://github.com/fmtlib/fmt/pull/723>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3459
  `#726 <https://github.com/fmtlib/fmt/pull/726>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3460
  `#730 <https://github.com/fmtlib/fmt/pull/730>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3461
  `#739 <https://github.com/fmtlib/fmt/pull/739>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3462
  Thanks `@peterbell10 <https://github.com/peterbell10>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3463
  `@LarsGullik <https://github.com/LarsGullik>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3464
  `@foonathan (Jonathan Müller) <https://github.com/foonathan>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3465
  `@eliaskosunen (Elias Kosunen) <https://github.com/eliaskosunen>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3466
  `@christianparpart (Christian Parpart) <https://github.com/christianparpart>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3467
  `@DanielaE (Daniela Engert) <https://github.com/DanielaE>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3468
  and `@mwinterb <https://github.com/mwinterb>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3469
f8deb5b9 Poul Sander 2022-01-15 13:55 3470
* Worked around an MSVC bug and fixed several warnings
f8deb5b9 Poul Sander 2022-01-15 13:55 3471
  (`#653 <https://github.com/fmtlib/fmt/pull/653>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3472
  Thanks `@alabuzhev (Alex Alabuzhev) <https://github.com/alabuzhev>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3473
f8deb5b9 Poul Sander 2022-01-15 13:55 3474
* Worked around GCC bug 67371
f8deb5b9 Poul Sander 2022-01-15 13:55 3475
  (`#682 <https://github.com/fmtlib/fmt/issues/682>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3476
f8deb5b9 Poul Sander 2022-01-15 13:55 3477
* Fixed compilation with ``-fno-exceptions``
f8deb5b9 Poul Sander 2022-01-15 13:55 3478
  (`#655 <https://github.com/fmtlib/fmt/pull/655>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3479
  Thanks `@chenxiaolong (Andrew Gunnerson) <https://github.com/chenxiaolong>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3480
f8deb5b9 Poul Sander 2022-01-15 13:55 3481
* Made ``constexpr remove_prefix`` gcc version check tighter
f8deb5b9 Poul Sander 2022-01-15 13:55 3482
  (`#648 <https://github.com/fmtlib/fmt/issues/648>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3483
f8deb5b9 Poul Sander 2022-01-15 13:55 3484
* Renamed internal type enum constants to prevent collision with poorly written
f8deb5b9 Poul Sander 2022-01-15 13:55 3485
  C libraries (`#644 <https://github.com/fmtlib/fmt/issues/644>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3486
f8deb5b9 Poul Sander 2022-01-15 13:55 3487
* Added detection of ``wostream operator<<``
f8deb5b9 Poul Sander 2022-01-15 13:55 3488
  (`#650 <https://github.com/fmtlib/fmt/issues/650>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3489
f8deb5b9 Poul Sander 2022-01-15 13:55 3490
* Fixed compilation on OpenBSD
f8deb5b9 Poul Sander 2022-01-15 13:55 3491
  (`#660 <https://github.com/fmtlib/fmt/pull/660>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3492
  Thanks `@hubslave <https://github.com/hubslave>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3493
f8deb5b9 Poul Sander 2022-01-15 13:55 3494
* Fixed compilation on FreeBSD 12
f8deb5b9 Poul Sander 2022-01-15 13:55 3495
  (`#732 <https://github.com/fmtlib/fmt/pull/732>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3496
  Thanks `@dankm <https://github.com/dankm>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3497
f8deb5b9 Poul Sander 2022-01-15 13:55 3498
* Fixed compilation when there is a mismatch between ``-std`` options between
f8deb5b9 Poul Sander 2022-01-15 13:55 3499
  the library and user code
f8deb5b9 Poul Sander 2022-01-15 13:55 3500
  (`#664 <https://github.com/fmtlib/fmt/issues/664>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3501
f8deb5b9 Poul Sander 2022-01-15 13:55 3502
* Fixed compilation with GCC 7 and ``-std=c++11``
f8deb5b9 Poul Sander 2022-01-15 13:55 3503
  (`#734 <https://github.com/fmtlib/fmt/issues/734>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3504
f8deb5b9 Poul Sander 2022-01-15 13:55 3505
* Improved generated binary code on GCC 7 and older
f8deb5b9 Poul Sander 2022-01-15 13:55 3506
  (`#668 <https://github.com/fmtlib/fmt/issues/668>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3507
f8deb5b9 Poul Sander 2022-01-15 13:55 3508
* Fixed handling of numeric alignment with no width 
f8deb5b9 Poul Sander 2022-01-15 13:55 3509
  (`#675 <https://github.com/fmtlib/fmt/issues/675>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3510
f8deb5b9 Poul Sander 2022-01-15 13:55 3511
* Fixed handling of empty strings in UTF8/16 converters
f8deb5b9 Poul Sander 2022-01-15 13:55 3512
  (`#676 <https://github.com/fmtlib/fmt/pull/676>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3513
  Thanks `@vgalka-sl (Vasili Galka) <https://github.com/vgalka-sl>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3514
f8deb5b9 Poul Sander 2022-01-15 13:55 3515
* Fixed formatting of an empty ``string_view``
f8deb5b9 Poul Sander 2022-01-15 13:55 3516
  (`#689 <https://github.com/fmtlib/fmt/issues/689>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3517
f8deb5b9 Poul Sander 2022-01-15 13:55 3518
* Fixed detection of ``string_view`` on libc++ 
f8deb5b9 Poul Sander 2022-01-15 13:55 3519
  (`#686 <https://github.com/fmtlib/fmt/issues/686>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3520
f8deb5b9 Poul Sander 2022-01-15 13:55 3521
* Fixed DLL issues (`#696 <https://github.com/fmtlib/fmt/pull/696>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3522
  Thanks `@sebkoenig <https://github.com/sebkoenig>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3523
f8deb5b9 Poul Sander 2022-01-15 13:55 3524
* Fixed compile checks for mixing narrow and wide strings
f8deb5b9 Poul Sander 2022-01-15 13:55 3525
  (`#690 <https://github.com/fmtlib/fmt/issues/690>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3526
f8deb5b9 Poul Sander 2022-01-15 13:55 3527
* Disabled unsafe implicit conversion to ``std::string``
f8deb5b9 Poul Sander 2022-01-15 13:55 3528
  (`#729 <https://github.com/fmtlib/fmt/issues/729>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3529
f8deb5b9 Poul Sander 2022-01-15 13:55 3530
* Fixed handling of reused format specs (as in ``fmt::join``) for pointers
f8deb5b9 Poul Sander 2022-01-15 13:55 3531
  (`#725 <https://github.com/fmtlib/fmt/pull/725>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3532
  Thanks `@mwinterb <https://github.com/mwinterb>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3533
f8deb5b9 Poul Sander 2022-01-15 13:55 3534
* Fixed installation of ``fmt/ranges.h``
f8deb5b9 Poul Sander 2022-01-15 13:55 3535
  (`#738 <https://github.com/fmtlib/fmt/pull/738>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3536
  Thanks `@sv1990 <https://github.com/sv1990>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3537
f8deb5b9 Poul Sander 2022-01-15 13:55 3538
4.1.0 - 2017-12-20
f8deb5b9 Poul Sander 2022-01-15 13:55 3539
------------------
f8deb5b9 Poul Sander 2022-01-15 13:55 3540
f8deb5b9 Poul Sander 2022-01-15 13:55 3541
* Added ``fmt::to_wstring()`` in addition to ``fmt::to_string()``
f8deb5b9 Poul Sander 2022-01-15 13:55 3542
  (`#559 <https://github.com/fmtlib/fmt/pull/559>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3543
  Thanks `@alabuzhev (Alex Alabuzhev) <https://github.com/alabuzhev>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3544
f8deb5b9 Poul Sander 2022-01-15 13:55 3545
* Added support for C++17 ``std::string_view``
f8deb5b9 Poul Sander 2022-01-15 13:55 3546
  (`#571 <https://github.com/fmtlib/fmt/pull/571>`_ and
f8deb5b9 Poul Sander 2022-01-15 13:55 3547
  `#578 <https://github.com/fmtlib/fmt/pull/578>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3548
  Thanks `@thelostt (Mário Feroldi) <https://github.com/thelostt>`_ and
f8deb5b9 Poul Sander 2022-01-15 13:55 3549
  `@mwinterb <https://github.com/mwinterb>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3550
f8deb5b9 Poul Sander 2022-01-15 13:55 3551
* Enabled stream exceptions to catch errors
f8deb5b9 Poul Sander 2022-01-15 13:55 3552
  (`#581 <https://github.com/fmtlib/fmt/issues/581>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3553
  Thanks `@crusader-mike <https://github.com/crusader-mike>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3554
f8deb5b9 Poul Sander 2022-01-15 13:55 3555
* Allowed formatting of class hierarchies with ``fmt::format_arg()``
f8deb5b9 Poul Sander 2022-01-15 13:55 3556
  (`#547 <https://github.com/fmtlib/fmt/pull/547>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3557
  Thanks `@rollbear (Björn Fahller) <https://github.com/rollbear>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3558
f8deb5b9 Poul Sander 2022-01-15 13:55 3559
* Removed limitations on character types
f8deb5b9 Poul Sander 2022-01-15 13:55 3560
  (`#563 <https://github.com/fmtlib/fmt/pull/563>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3561
  Thanks `@Yelnats321 (Elnar Dakeshov) <https://github.com/Yelnats321>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3562
f8deb5b9 Poul Sander 2022-01-15 13:55 3563
* Conditionally enabled use of ``std::allocator_traits``
f8deb5b9 Poul Sander 2022-01-15 13:55 3564
  (`#583 <https://github.com/fmtlib/fmt/pull/583>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3565
  Thanks `@mwinterb <https://github.com/mwinterb>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3566
f8deb5b9 Poul Sander 2022-01-15 13:55 3567
* Added support for ``const`` variadic member function emulation with
f8deb5b9 Poul Sander 2022-01-15 13:55 3568
  ``FMT_VARIADIC_CONST`` (`#591 <https://github.com/fmtlib/fmt/pull/591>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3569
  Thanks `@ludekvodicka (Ludek Vodicka) <https://github.com/ludekvodicka>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3570
f8deb5b9 Poul Sander 2022-01-15 13:55 3571
* Various bugfixes: bad overflow check, unsupported implicit type conversion
f8deb5b9 Poul Sander 2022-01-15 13:55 3572
  when determining formatting function, test segfaults
f8deb5b9 Poul Sander 2022-01-15 13:55 3573
  (`#551 <https://github.com/fmtlib/fmt/issues/551>`_), ill-formed macros
f8deb5b9 Poul Sander 2022-01-15 13:55 3574
  (`#542 <https://github.com/fmtlib/fmt/pull/542>`_) and ambiguous overloads
f8deb5b9 Poul Sander 2022-01-15 13:55 3575
  (`#580 <https://github.com/fmtlib/fmt/issues/580>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3576
  Thanks `@xylosper (Byoung-young Lee) <https://github.com/xylosper>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3577
f8deb5b9 Poul Sander 2022-01-15 13:55 3578
* Prevented warnings on MSVC (`#605 <https://github.com/fmtlib/fmt/pull/605>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3579
  `#602 <https://github.com/fmtlib/fmt/pull/602>`_, and
f8deb5b9 Poul Sander 2022-01-15 13:55 3580
  `#545 <https://github.com/fmtlib/fmt/pull/545>`_),
f8deb5b9 Poul Sander 2022-01-15 13:55 3581
  clang (`#582 <https://github.com/fmtlib/fmt/pull/582>`_),
f8deb5b9 Poul Sander 2022-01-15 13:55 3582
  GCC (`#573 <https://github.com/fmtlib/fmt/issues/573>`_),
f8deb5b9 Poul Sander 2022-01-15 13:55 3583
  various conversion warnings (`#609 <https://github.com/fmtlib/fmt/pull/609>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3584
  `#567 <https://github.com/fmtlib/fmt/pull/567>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3585
  `#553 <https://github.com/fmtlib/fmt/pull/553>`_ and
f8deb5b9 Poul Sander 2022-01-15 13:55 3586
  `#553 <https://github.com/fmtlib/fmt/pull/553>`_), and added ``override`` and
f8deb5b9 Poul Sander 2022-01-15 13:55 3587
  ``[[noreturn]]`` (`#549 <https://github.com/fmtlib/fmt/pull/549>`_ and
f8deb5b9 Poul Sander 2022-01-15 13:55 3588
  `#555 <https://github.com/fmtlib/fmt/issues/555>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3589
  Thanks `@alabuzhev (Alex Alabuzhev) <https://github.com/alabuzhev>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3590
  `@virgiliofornazin (Virgilio Alexandre Fornazin)
f8deb5b9 Poul Sander 2022-01-15 13:55 3591
  <https://gihtub.com/virgiliofornazin>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3592
  `@alexanderbock (Alexander Bock) <https://github.com/alexanderbock>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3593
  `@yumetodo <https://github.com/yumetodo>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3594
  `@VaderY (Császár Mátyás) <https://github.com/VaderY>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3595
  `@jpcima (JP Cimalando) <https://github.com/jpcima>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3596
  `@thelostt (Mário Feroldi) <https://github.com/thelostt>`_, and
f8deb5b9 Poul Sander 2022-01-15 13:55 3597
  `@Manu343726 (Manu Sánchez) <https://github.com/Manu343726>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3598
f8deb5b9 Poul Sander 2022-01-15 13:55 3599
* Improved CMake: Used ``GNUInstallDirs`` to set installation location
f8deb5b9 Poul Sander 2022-01-15 13:55 3600
  (`#610 <https://github.com/fmtlib/fmt/pull/610>`_) and fixed warnings
f8deb5b9 Poul Sander 2022-01-15 13:55 3601
  (`#536 <https://github.com/fmtlib/fmt/pull/536>`_ and
f8deb5b9 Poul Sander 2022-01-15 13:55 3602
  `#556 <https://github.com/fmtlib/fmt/pull/556>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3603
  Thanks `@mikecrowe (Mike Crowe) <https://github.com/mikecrowe>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3604
  `@evgen231 <https://github.com/evgen231>`_ and
f8deb5b9 Poul Sander 2022-01-15 13:55 3605
  `@henryiii (Henry Schreiner) <https://github.com/henryiii>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3606
f8deb5b9 Poul Sander 2022-01-15 13:55 3607
4.0.0 - 2017-06-27
f8deb5b9 Poul Sander 2022-01-15 13:55 3608
------------------
f8deb5b9 Poul Sander 2022-01-15 13:55 3609
f8deb5b9 Poul Sander 2022-01-15 13:55 3610
* Removed old compatibility headers ``cppformat/*.h`` and CMake options
f8deb5b9 Poul Sander 2022-01-15 13:55 3611
  (`#527 <https://github.com/fmtlib/fmt/pull/527>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3612
  Thanks `@maddinat0r (Alex Martin) <https://github.com/maddinat0r>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3613
f8deb5b9 Poul Sander 2022-01-15 13:55 3614
* Added ``string.h`` containing ``fmt::to_string()`` as alternative to
f8deb5b9 Poul Sander 2022-01-15 13:55 3615
  ``std::to_string()`` as well as other string writer functionality
f8deb5b9 Poul Sander 2022-01-15 13:55 3616
  (`#326 <https://github.com/fmtlib/fmt/issues/326>`_ and
f8deb5b9 Poul Sander 2022-01-15 13:55 3617
  `#441 <https://github.com/fmtlib/fmt/pull/441>`_):
f8deb5b9 Poul Sander 2022-01-15 13:55 3618
f8deb5b9 Poul Sander 2022-01-15 13:55 3619
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 3620
f8deb5b9 Poul Sander 2022-01-15 13:55 3621
    #include "fmt/string.h"
f8deb5b9 Poul Sander 2022-01-15 13:55 3622
  
f8deb5b9 Poul Sander 2022-01-15 13:55 3623
    std::string answer = fmt::to_string(42);
f8deb5b9 Poul Sander 2022-01-15 13:55 3624
f8deb5b9 Poul Sander 2022-01-15 13:55 3625
  Thanks to `@glebov-andrey (Andrey Glebov)
f8deb5b9 Poul Sander 2022-01-15 13:55 3626
  <https://github.com/glebov-andrey>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3627
f8deb5b9 Poul Sander 2022-01-15 13:55 3628
* Moved ``fmt::printf()`` to new ``printf.h`` header and allowed ``%s`` as
f8deb5b9 Poul Sander 2022-01-15 13:55 3629
  generic specifier (`#453 <https://github.com/fmtlib/fmt/pull/453>`_),
f8deb5b9 Poul Sander 2022-01-15 13:55 3630
  made ``%.f`` more conformant to regular ``printf()``
f8deb5b9 Poul Sander 2022-01-15 13:55 3631
  (`#490 <https://github.com/fmtlib/fmt/pull/490>`_), added custom writer
f8deb5b9 Poul Sander 2022-01-15 13:55 3632
  support (`#476 <https://github.com/fmtlib/fmt/issues/476>`_) and implemented
f8deb5b9 Poul Sander 2022-01-15 13:55 3633
  missing custom argument formatting
f8deb5b9 Poul Sander 2022-01-15 13:55 3634
  (`#339 <https://github.com/fmtlib/fmt/pull/339>`_ and
f8deb5b9 Poul Sander 2022-01-15 13:55 3635
  `#340 <https://github.com/fmtlib/fmt/pull/340>`_):
f8deb5b9 Poul Sander 2022-01-15 13:55 3636
f8deb5b9 Poul Sander 2022-01-15 13:55 3637
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 3638
f8deb5b9 Poul Sander 2022-01-15 13:55 3639
    #include "fmt/printf.h"
f8deb5b9 Poul Sander 2022-01-15 13:55 3640
 
f8deb5b9 Poul Sander 2022-01-15 13:55 3641
    // %s format specifier can be used with any argument type.
f8deb5b9 Poul Sander 2022-01-15 13:55 3642
    fmt::printf("%s", 42);
f8deb5b9 Poul Sander 2022-01-15 13:55 3643
f8deb5b9 Poul Sander 2022-01-15 13:55 3644
  Thanks `@mojoBrendan <https://github.com/mojoBrendan>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3645
  `@manylegged (Arthur Danskin) <https://github.com/manylegged>`_ and
f8deb5b9 Poul Sander 2022-01-15 13:55 3646
  `@spacemoose (Glen Stark) <https://github.com/spacemoose>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3647
  See also `#360 <https://github.com/fmtlib/fmt/issues/360>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3648
  `#335 <https://github.com/fmtlib/fmt/issues/335>`_ and
f8deb5b9 Poul Sander 2022-01-15 13:55 3649
  `#331 <https://github.com/fmtlib/fmt/issues/331>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3650
f8deb5b9 Poul Sander 2022-01-15 13:55 3651
* Added ``container.h`` containing a ``BasicContainerWriter``
f8deb5b9 Poul Sander 2022-01-15 13:55 3652
  to write to containers like ``std::vector``
f8deb5b9 Poul Sander 2022-01-15 13:55 3653
  (`#450 <https://github.com/fmtlib/fmt/pull/450>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3654
  Thanks `@polyvertex (Jean-Charles Lefebvre) <https://github.com/polyvertex>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3655
f8deb5b9 Poul Sander 2022-01-15 13:55 3656
* Added ``fmt::join()`` function that takes a range and formats
f8deb5b9 Poul Sander 2022-01-15 13:55 3657
  its elements separated by a given string
f8deb5b9 Poul Sander 2022-01-15 13:55 3658
  (`#466 <https://github.com/fmtlib/fmt/pull/466>`_):
f8deb5b9 Poul Sander 2022-01-15 13:55 3659
f8deb5b9 Poul Sander 2022-01-15 13:55 3660
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 3661
f8deb5b9 Poul Sander 2022-01-15 13:55 3662
    #include "fmt/format.h"
f8deb5b9 Poul Sander 2022-01-15 13:55 3663
 
f8deb5b9 Poul Sander 2022-01-15 13:55 3664
    std::vector<double> v = {1.2, 3.4, 5.6};
f8deb5b9 Poul Sander 2022-01-15 13:55 3665
    // Prints "(+01.20, +03.40, +05.60)".
f8deb5b9 Poul Sander 2022-01-15 13:55 3666
    fmt::print("({:+06.2f})", fmt::join(v.begin(), v.end(), ", "));
f8deb5b9 Poul Sander 2022-01-15 13:55 3667
f8deb5b9 Poul Sander 2022-01-15 13:55 3668
  Thanks `@olivier80 <https://github.com/olivier80>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3669
f8deb5b9 Poul Sander 2022-01-15 13:55 3670
* Added support for custom formatting specifications to simplify customization
f8deb5b9 Poul Sander 2022-01-15 13:55 3671
  of built-in formatting (`#444 <https://github.com/fmtlib/fmt/pull/444>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3672
  Thanks `@polyvertex (Jean-Charles Lefebvre) <https://github.com/polyvertex>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3673
  See also `#439 <https://github.com/fmtlib/fmt/issues/439>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3674
f8deb5b9 Poul Sander 2022-01-15 13:55 3675
* Added ``fmt::format_system_error()`` for error code formatting
f8deb5b9 Poul Sander 2022-01-15 13:55 3676
  (`#323 <https://github.com/fmtlib/fmt/issues/323>`_ and
f8deb5b9 Poul Sander 2022-01-15 13:55 3677
  `#526 <https://github.com/fmtlib/fmt/pull/526>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3678
  Thanks `@maddinat0r (Alex Martin) <https://github.com/maddinat0r>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3679
f8deb5b9 Poul Sander 2022-01-15 13:55 3680
* Added thread-safe ``fmt::localtime()`` and ``fmt::gmtime()``
f8deb5b9 Poul Sander 2022-01-15 13:55 3681
  as replacement   for the standard version to ``time.h``
f8deb5b9 Poul Sander 2022-01-15 13:55 3682
  (`#396 <https://github.com/fmtlib/fmt/pull/396>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3683
  Thanks `@codicodi <https://github.com/codicodi>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3684
f8deb5b9 Poul Sander 2022-01-15 13:55 3685
* Internal improvements to ``NamedArg`` and ``ArgLists``
f8deb5b9 Poul Sander 2022-01-15 13:55 3686
  (`#389 <https://github.com/fmtlib/fmt/pull/389>`_ and
f8deb5b9 Poul Sander 2022-01-15 13:55 3687
  `#390 <https://github.com/fmtlib/fmt/pull/390>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3688
  Thanks `@chronoxor <https://github.com/chronoxor>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3689
f8deb5b9 Poul Sander 2022-01-15 13:55 3690
* Fixed crash due to bug in ``FormatBuf``
f8deb5b9 Poul Sander 2022-01-15 13:55 3691
  (`#493 <https://github.com/fmtlib/fmt/pull/493>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3692
  Thanks `@effzeh <https://github.com/effzeh>`_. See also
f8deb5b9 Poul Sander 2022-01-15 13:55 3693
  `#480 <https://github.com/fmtlib/fmt/issues/480>`_ and
f8deb5b9 Poul Sander 2022-01-15 13:55 3694
  `#491 <https://github.com/fmtlib/fmt/issues/491>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3695
f8deb5b9 Poul Sander 2022-01-15 13:55 3696
* Fixed handling of wide strings in ``fmt::StringWriter``.
f8deb5b9 Poul Sander 2022-01-15 13:55 3697
f8deb5b9 Poul Sander 2022-01-15 13:55 3698
* Improved compiler error messages
f8deb5b9 Poul Sander 2022-01-15 13:55 3699
  (`#357 <https://github.com/fmtlib/fmt/issues/357>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3700
f8deb5b9 Poul Sander 2022-01-15 13:55 3701
* Fixed various warnings and issues with various compilers
f8deb5b9 Poul Sander 2022-01-15 13:55 3702
  (`#494 <https://github.com/fmtlib/fmt/pull/494>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3703
  `#499 <https://github.com/fmtlib/fmt/pull/499>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3704
  `#483 <https://github.com/fmtlib/fmt/pull/483>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3705
  `#485 <https://github.com/fmtlib/fmt/pull/485>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3706
  `#482 <https://github.com/fmtlib/fmt/pull/482>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3707
  `#475 <https://github.com/fmtlib/fmt/pull/475>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3708
  `#473 <https://github.com/fmtlib/fmt/pull/473>`_ and
f8deb5b9 Poul Sander 2022-01-15 13:55 3709
  `#414 <https://github.com/fmtlib/fmt/pull/414>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3710
  Thanks `@chronoxor <https://github.com/chronoxor>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3711
  `@zhaohuaxishi <https://github.com/zhaohuaxishi>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3712
  `@pkestene (Pierre Kestener) <https://github.com/pkestene>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3713
  `@dschmidt (Dominik Schmidt) <https://github.com/dschmidt>`_ and
f8deb5b9 Poul Sander 2022-01-15 13:55 3714
  `@0x414c (Alexey Gorishny) <https://github.com/0x414c>`_ .
f8deb5b9 Poul Sander 2022-01-15 13:55 3715
f8deb5b9 Poul Sander 2022-01-15 13:55 3716
* Improved CMake: targets are now namespaced
f8deb5b9 Poul Sander 2022-01-15 13:55 3717
  (`#511 <https://github.com/fmtlib/fmt/pull/511>`_ and
f8deb5b9 Poul Sander 2022-01-15 13:55 3718
  `#513 <https://github.com/fmtlib/fmt/pull/513>`_), supported header-only
f8deb5b9 Poul Sander 2022-01-15 13:55 3719
  ``printf.h`` (`#354 <https://github.com/fmtlib/fmt/pull/354>`_), fixed issue
f8deb5b9 Poul Sander 2022-01-15 13:55 3720
  with minimal supported library subset
f8deb5b9 Poul Sander 2022-01-15 13:55 3721
  (`#418 <https://github.com/fmtlib/fmt/issues/418>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3722
  `#419 <https://github.com/fmtlib/fmt/pull/419>`_ and
f8deb5b9 Poul Sander 2022-01-15 13:55 3723
  `#420 <https://github.com/fmtlib/fmt/pull/420>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3724
  Thanks `@bjoernthiel (Bjoern Thiel) <https://github.com/bjoernthiel>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3725
  `@niosHD (Mario Werner) <https://github.com/niosHD>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3726
  `@LogicalKnight (Sean LK) <https://github.com/LogicalKnight>`_ and
f8deb5b9 Poul Sander 2022-01-15 13:55 3727
  `@alabuzhev (Alex Alabuzhev) <https://github.com/alabuzhev>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3728
f8deb5b9 Poul Sander 2022-01-15 13:55 3729
* Improved documentation. Thanks to
f8deb5b9 Poul Sander 2022-01-15 13:55 3730
  `@pwm1234 (Phil) <https://github.com/pwm1234>`_ for
f8deb5b9 Poul Sander 2022-01-15 13:55 3731
  `#393 <https://github.com/fmtlib/fmt/pull/393>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3732
f8deb5b9 Poul Sander 2022-01-15 13:55 3733
3.0.2 - 2017-06-14
f8deb5b9 Poul Sander 2022-01-15 13:55 3734
------------------
f8deb5b9 Poul Sander 2022-01-15 13:55 3735
f8deb5b9 Poul Sander 2022-01-15 13:55 3736
* Added ``FMT_VERSION`` macro
f8deb5b9 Poul Sander 2022-01-15 13:55 3737
  (`#411 <https://github.com/fmtlib/fmt/issues/411>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3738
f8deb5b9 Poul Sander 2022-01-15 13:55 3739
* Used ``FMT_NULL`` instead of literal ``0``
f8deb5b9 Poul Sander 2022-01-15 13:55 3740
  (`#409 <https://github.com/fmtlib/fmt/pull/409>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3741
  Thanks `@alabuzhev (Alex Alabuzhev) <https://github.com/alabuzhev>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3742
f8deb5b9 Poul Sander 2022-01-15 13:55 3743
* Added extern templates for ``format_float``
f8deb5b9 Poul Sander 2022-01-15 13:55 3744
  (`#413 <https://github.com/fmtlib/fmt/issues/413>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3745
f8deb5b9 Poul Sander 2022-01-15 13:55 3746
* Fixed implicit conversion issue
f8deb5b9 Poul Sander 2022-01-15 13:55 3747
  (`#507 <https://github.com/fmtlib/fmt/issues/507>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3748
f8deb5b9 Poul Sander 2022-01-15 13:55 3749
* Fixed signbit detection (`#423 <https://github.com/fmtlib/fmt/issues/423>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3750
f8deb5b9 Poul Sander 2022-01-15 13:55 3751
* Fixed naming collision (`#425 <https://github.com/fmtlib/fmt/issues/425>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3752
f8deb5b9 Poul Sander 2022-01-15 13:55 3753
* Fixed missing intrinsic for C++/CLI
f8deb5b9 Poul Sander 2022-01-15 13:55 3754
  (`#457 <https://github.com/fmtlib/fmt/pull/457>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3755
  Thanks `@calumr (Calum Robinson) <https://github.com/calumr>`_
f8deb5b9 Poul Sander 2022-01-15 13:55 3756
f8deb5b9 Poul Sander 2022-01-15 13:55 3757
* Fixed Android detection (`#458 <https://github.com/fmtlib/fmt/pull/458>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3758
  Thanks `@Gachapen (Magnus Bjerke Vik) <https://github.com/Gachapen>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3759
f8deb5b9 Poul Sander 2022-01-15 13:55 3760
* Use lean ``windows.h`` if not in header-only mode
f8deb5b9 Poul Sander 2022-01-15 13:55 3761
  (`#503 <https://github.com/fmtlib/fmt/pull/503>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3762
  Thanks `@Quentin01 (Quentin Buathier) <https://github.com/Quentin01>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3763
f8deb5b9 Poul Sander 2022-01-15 13:55 3764
* Fixed issue with CMake exporting C++11 flag
f8deb5b9 Poul Sander 2022-01-15 13:55 3765
  (`#445 <https://github.com/fmtlib/fmt/pull/455>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3766
  Thanks `@EricWF (Eric) <https://github.com/EricWF>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3767
f8deb5b9 Poul Sander 2022-01-15 13:55 3768
* Fixed issue with nvcc and MSVC compiler bug and MinGW
f8deb5b9 Poul Sander 2022-01-15 13:55 3769
  (`#505 <https://github.com/fmtlib/fmt/issues/505>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3770
f8deb5b9 Poul Sander 2022-01-15 13:55 3771
* Fixed DLL issues (`#469 <https://github.com/fmtlib/fmt/pull/469>`_ and
f8deb5b9 Poul Sander 2022-01-15 13:55 3772
  `#502 <https://github.com/fmtlib/fmt/pull/502>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3773
  Thanks `@richardeakin (Richard Eakin) <https://github.com/richardeakin>`_ and
f8deb5b9 Poul Sander 2022-01-15 13:55 3774
  `@AndreasSchoenle (Andreas Schönle) <https://github.com/AndreasSchoenle>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3775
f8deb5b9 Poul Sander 2022-01-15 13:55 3776
* Fixed test compilation under FreeBSD
f8deb5b9 Poul Sander 2022-01-15 13:55 3777
  (`#433 <https://github.com/fmtlib/fmt/issues/433>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3778
f8deb5b9 Poul Sander 2022-01-15 13:55 3779
* Fixed various warnings (`#403 <https://github.com/fmtlib/fmt/pull/403>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3780
  `#410 <https://github.com/fmtlib/fmt/pull/410>`_ and
f8deb5b9 Poul Sander 2022-01-15 13:55 3781
  `#510 <https://github.com/fmtlib/fmt/pull/510>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3782
  Thanks `@Lecetem <https://github.com/Lectem>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3783
  `@chenhayat (Chen Hayat) <https://github.com/chenhayat>`_ and
f8deb5b9 Poul Sander 2022-01-15 13:55 3784
  `@trozen <https://github.com/trozen>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3785
f8deb5b9 Poul Sander 2022-01-15 13:55 3786
* Worked around a broken ``__builtin_clz`` in clang with MS codegen
f8deb5b9 Poul Sander 2022-01-15 13:55 3787
  (`#519 <https://github.com/fmtlib/fmt/issues/519>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3788
f8deb5b9 Poul Sander 2022-01-15 13:55 3789
* Removed redundant include
f8deb5b9 Poul Sander 2022-01-15 13:55 3790
  (`#479 <https://github.com/fmtlib/fmt/issues/479>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3791
f8deb5b9 Poul Sander 2022-01-15 13:55 3792
* Fixed documentation issues.
f8deb5b9 Poul Sander 2022-01-15 13:55 3793
f8deb5b9 Poul Sander 2022-01-15 13:55 3794
3.0.1 - 2016-11-01
f8deb5b9 Poul Sander 2022-01-15 13:55 3795
------------------
f8deb5b9 Poul Sander 2022-01-15 13:55 3796
* Fixed handling of thousands separator
f8deb5b9 Poul Sander 2022-01-15 13:55 3797
  (`#353 <https://github.com/fmtlib/fmt/issues/353>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3798
f8deb5b9 Poul Sander 2022-01-15 13:55 3799
* Fixed handling of ``unsigned char`` strings
f8deb5b9 Poul Sander 2022-01-15 13:55 3800
  (`#373 <https://github.com/fmtlib/fmt/issues/373>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3801
f8deb5b9 Poul Sander 2022-01-15 13:55 3802
* Corrected buffer growth when formatting time
f8deb5b9 Poul Sander 2022-01-15 13:55 3803
  (`#367 <https://github.com/fmtlib/fmt/issues/367>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3804
f8deb5b9 Poul Sander 2022-01-15 13:55 3805
* Removed warnings under MSVC and clang
f8deb5b9 Poul Sander 2022-01-15 13:55 3806
  (`#318 <https://github.com/fmtlib/fmt/issues/318>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3807
  `#250 <https://github.com/fmtlib/fmt/issues/250>`_, also merged
f8deb5b9 Poul Sander 2022-01-15 13:55 3808
  `#385 <https://github.com/fmtlib/fmt/pull/385>`_ and
f8deb5b9 Poul Sander 2022-01-15 13:55 3809
  `#361 <https://github.com/fmtlib/fmt/pull/361>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3810
  Thanks `@jcelerier (Jean-Michaël Celerier) <https://github.com/jcelerier>`_
f8deb5b9 Poul Sander 2022-01-15 13:55 3811
  and `@nmoehrle (Nils Moehrle) <https://github.com/nmoehrle>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3812
f8deb5b9 Poul Sander 2022-01-15 13:55 3813
* Fixed compilation issues under Android
f8deb5b9 Poul Sander 2022-01-15 13:55 3814
  (`#327 <https://github.com/fmtlib/fmt/pull/327>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3815
  `#345 <https://github.com/fmtlib/fmt/issues/345>`_ and
f8deb5b9 Poul Sander 2022-01-15 13:55 3816
  `#381 <https://github.com/fmtlib/fmt/pull/381>`_),
f8deb5b9 Poul Sander 2022-01-15 13:55 3817
  FreeBSD (`#358 <https://github.com/fmtlib/fmt/pull/358>`_),
f8deb5b9 Poul Sander 2022-01-15 13:55 3818
  Cygwin (`#388 <https://github.com/fmtlib/fmt/issues/388>`_),
f8deb5b9 Poul Sander 2022-01-15 13:55 3819
  MinGW (`#355 <https://github.com/fmtlib/fmt/issues/355>`_) as well as other
f8deb5b9 Poul Sander 2022-01-15 13:55 3820
  issues (`#350 <https://github.com/fmtlib/fmt/issues/350>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3821
  `#366 <https://github.com/fmtlib/fmt/issues/355>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3822
  `#348 <https://github.com/fmtlib/fmt/pull/348>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3823
  `#402 <https://github.com/fmtlib/fmt/pull/402>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3824
  `#405 <https://github.com/fmtlib/fmt/pull/405>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3825
  Thanks to `@dpantele (Dmitry) <https://github.com/dpantele>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3826
  `@hghwng (Hugh Wang) <https://github.com/hghwng>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3827
  `@arvedarved (Tilman Keskinöz) <https://github.com/arvedarved>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3828
  `@LogicalKnight (Sean) <https://github.com/LogicalKnight>`_ and
f8deb5b9 Poul Sander 2022-01-15 13:55 3829
  `@JanHellwig (Jan Hellwig) <https://github.com/janhellwig>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3830
f8deb5b9 Poul Sander 2022-01-15 13:55 3831
* Fixed some documentation issues and extended specification
f8deb5b9 Poul Sander 2022-01-15 13:55 3832
  (`#320 <https://github.com/fmtlib/fmt/issues/320>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3833
  `#333 <https://github.com/fmtlib/fmt/pull/333>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3834
  `#347 <https://github.com/fmtlib/fmt/issues/347>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3835
  `#362 <https://github.com/fmtlib/fmt/pull/362>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3836
  Thanks to `@smellman (Taro Matsuzawa aka. btm)
f8deb5b9 Poul Sander 2022-01-15 13:55 3837
  <https://github.com/smellman>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3838
f8deb5b9 Poul Sander 2022-01-15 13:55 3839
3.0.0 - 2016-05-07
f8deb5b9 Poul Sander 2022-01-15 13:55 3840
------------------
f8deb5b9 Poul Sander 2022-01-15 13:55 3841
f8deb5b9 Poul Sander 2022-01-15 13:55 3842
* The project has been renamed from C++ Format (cppformat) to fmt for
f8deb5b9 Poul Sander 2022-01-15 13:55 3843
  consistency with the used namespace and macro prefix
f8deb5b9 Poul Sander 2022-01-15 13:55 3844
  (`#307 <https://github.com/fmtlib/fmt/issues/307>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3845
  Library headers are now located in the ``fmt`` directory:
f8deb5b9 Poul Sander 2022-01-15 13:55 3846
f8deb5b9 Poul Sander 2022-01-15 13:55 3847
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 3848
f8deb5b9 Poul Sander 2022-01-15 13:55 3849
    #include "fmt/format.h"
f8deb5b9 Poul Sander 2022-01-15 13:55 3850
f8deb5b9 Poul Sander 2022-01-15 13:55 3851
  Including ``format.h`` from the ``cppformat`` directory is deprecated
f8deb5b9 Poul Sander 2022-01-15 13:55 3852
  but works via a proxy header which will be removed in the next major version.
f8deb5b9 Poul Sander 2022-01-15 13:55 3853
  
f8deb5b9 Poul Sander 2022-01-15 13:55 3854
  The documentation is now available at https://fmt.dev.
f8deb5b9 Poul Sander 2022-01-15 13:55 3855
f8deb5b9 Poul Sander 2022-01-15 13:55 3856
* Added support for `strftime <http://en.cppreference.com/w/cpp/chrono/c/strftime>`_-like
f8deb5b9 Poul Sander 2022-01-15 13:55 3857
  `date and time formatting <https://fmt.dev/3.0.0/api.html#date-and-time-formatting>`_
f8deb5b9 Poul Sander 2022-01-15 13:55 3858
  (`#283 <https://github.com/fmtlib/fmt/issues/283>`_):
f8deb5b9 Poul Sander 2022-01-15 13:55 3859
f8deb5b9 Poul Sander 2022-01-15 13:55 3860
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 3861
f8deb5b9 Poul Sander 2022-01-15 13:55 3862
    #include "fmt/time.h"
f8deb5b9 Poul Sander 2022-01-15 13:55 3863
f8deb5b9 Poul Sander 2022-01-15 13:55 3864
    std::time_t t = std::time(nullptr);
f8deb5b9 Poul Sander 2022-01-15 13:55 3865
    // Prints "The date is 2016-04-29." (with the current date)
f8deb5b9 Poul Sander 2022-01-15 13:55 3866
    fmt::print("The date is {:%Y-%m-%d}.", *std::localtime(&t));
f8deb5b9 Poul Sander 2022-01-15 13:55 3867
f8deb5b9 Poul Sander 2022-01-15 13:55 3868
* ``std::ostream`` support including formatting of user-defined types that provide
f8deb5b9 Poul Sander 2022-01-15 13:55 3869
  overloaded ``operator<<`` has been moved to ``fmt/ostream.h``:
f8deb5b9 Poul Sander 2022-01-15 13:55 3870
f8deb5b9 Poul Sander 2022-01-15 13:55 3871
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 3872
f8deb5b9 Poul Sander 2022-01-15 13:55 3873
    #include "fmt/ostream.h"
f8deb5b9 Poul Sander 2022-01-15 13:55 3874
f8deb5b9 Poul Sander 2022-01-15 13:55 3875
    class Date {
f8deb5b9 Poul Sander 2022-01-15 13:55 3876
      int year_, month_, day_;
f8deb5b9 Poul Sander 2022-01-15 13:55 3877
    public:
f8deb5b9 Poul Sander 2022-01-15 13:55 3878
      Date(int year, int month, int day) : year_(year), month_(month), day_(day) {}
f8deb5b9 Poul Sander 2022-01-15 13:55 3879
f8deb5b9 Poul Sander 2022-01-15 13:55 3880
      friend std::ostream &operator<<(std::ostream &os, const Date &d) {
f8deb5b9 Poul Sander 2022-01-15 13:55 3881
        return os << d.year_ << '-' << d.month_ << '-' << d.day_;
f8deb5b9 Poul Sander 2022-01-15 13:55 3882
      }
f8deb5b9 Poul Sander 2022-01-15 13:55 3883
    };
f8deb5b9 Poul Sander 2022-01-15 13:55 3884
f8deb5b9 Poul Sander 2022-01-15 13:55 3885
    std::string s = fmt::format("The date is {}", Date(2012, 12, 9));
f8deb5b9 Poul Sander 2022-01-15 13:55 3886
    // s == "The date is 2012-12-9"
f8deb5b9 Poul Sander 2022-01-15 13:55 3887
f8deb5b9 Poul Sander 2022-01-15 13:55 3888
* Added support for `custom argument formatters
f8deb5b9 Poul Sander 2022-01-15 13:55 3889
  <https://fmt.dev/3.0.0/api.html#argument-formatters>`_
f8deb5b9 Poul Sander 2022-01-15 13:55 3890
  (`#235 <https://github.com/fmtlib/fmt/issues/235>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3891
f8deb5b9 Poul Sander 2022-01-15 13:55 3892
* Added support for locale-specific integer formatting with the ``n`` specifier
f8deb5b9 Poul Sander 2022-01-15 13:55 3893
  (`#305 <https://github.com/fmtlib/fmt/issues/305>`_):
f8deb5b9 Poul Sander 2022-01-15 13:55 3894
f8deb5b9 Poul Sander 2022-01-15 13:55 3895
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 3896
f8deb5b9 Poul Sander 2022-01-15 13:55 3897
    std::setlocale(LC_ALL, "en_US.utf8");
f8deb5b9 Poul Sander 2022-01-15 13:55 3898
    fmt::print("cppformat: {:n}\n", 1234567); // prints 1,234,567
f8deb5b9 Poul Sander 2022-01-15 13:55 3899
f8deb5b9 Poul Sander 2022-01-15 13:55 3900
* Sign is now preserved when formatting an integer with an incorrect ``printf``
f8deb5b9 Poul Sander 2022-01-15 13:55 3901
  format specifier (`#265 <https://github.com/fmtlib/fmt/issues/265>`_):
f8deb5b9 Poul Sander 2022-01-15 13:55 3902
f8deb5b9 Poul Sander 2022-01-15 13:55 3903
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 3904
f8deb5b9 Poul Sander 2022-01-15 13:55 3905
    fmt::printf("%lld", -42); // prints -42
f8deb5b9 Poul Sander 2022-01-15 13:55 3906
f8deb5b9 Poul Sander 2022-01-15 13:55 3907
  Note that it would be an undefined behavior in ``std::printf``.
f8deb5b9 Poul Sander 2022-01-15 13:55 3908
f8deb5b9 Poul Sander 2022-01-15 13:55 3909
* Length modifiers such as ``ll`` are now optional in printf formatting
f8deb5b9 Poul Sander 2022-01-15 13:55 3910
  functions and the correct type is determined automatically
f8deb5b9 Poul Sander 2022-01-15 13:55 3911
  (`#255 <https://github.com/fmtlib/fmt/issues/255>`_):
f8deb5b9 Poul Sander 2022-01-15 13:55 3912
f8deb5b9 Poul Sander 2022-01-15 13:55 3913
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 3914
f8deb5b9 Poul Sander 2022-01-15 13:55 3915
    fmt::printf("%d", std::numeric_limits<long long>::max());
f8deb5b9 Poul Sander 2022-01-15 13:55 3916
f8deb5b9 Poul Sander 2022-01-15 13:55 3917
  Note that it would be an undefined behavior in ``std::printf``.
f8deb5b9 Poul Sander 2022-01-15 13:55 3918
f8deb5b9 Poul Sander 2022-01-15 13:55 3919
* Added initial support for custom formatters
f8deb5b9 Poul Sander 2022-01-15 13:55 3920
  (`#231 <https://github.com/fmtlib/fmt/issues/231>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3921
f8deb5b9 Poul Sander 2022-01-15 13:55 3922
* Fixed detection of user-defined literal support on Intel C++ compiler
f8deb5b9 Poul Sander 2022-01-15 13:55 3923
  (`#311 <https://github.com/fmtlib/fmt/issues/311>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3924
  `#312 <https://github.com/fmtlib/fmt/pull/312>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3925
  Thanks to `@dean0x7d (Dean Moldovan) <https://github.com/dean0x7d>`_ and
f8deb5b9 Poul Sander 2022-01-15 13:55 3926
  `@speth (Ray Speth) <https://github.com/speth>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3927
f8deb5b9 Poul Sander 2022-01-15 13:55 3928
* Reduced compile time
f8deb5b9 Poul Sander 2022-01-15 13:55 3929
  (`#243 <https://github.com/fmtlib/fmt/pull/243>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3930
  `#249 <https://github.com/fmtlib/fmt/pull/249>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3931
  `#317 <https://github.com/fmtlib/fmt/issues/317>`_):
f8deb5b9 Poul Sander 2022-01-15 13:55 3932
f8deb5b9 Poul Sander 2022-01-15 13:55 3933
  .. image:: https://cloud.githubusercontent.com/assets/4831417/11614060/
f8deb5b9 Poul Sander 2022-01-15 13:55 3934
             b9e826d2-9c36-11e5-8666-d4131bf503ef.png
f8deb5b9 Poul Sander 2022-01-15 13:55 3935
f8deb5b9 Poul Sander 2022-01-15 13:55 3936
  .. image:: https://cloud.githubusercontent.com/assets/4831417/11614080/
f8deb5b9 Poul Sander 2022-01-15 13:55 3937
             6ac903cc-9c37-11e5-8165-26df6efae364.png
f8deb5b9 Poul Sander 2022-01-15 13:55 3938
f8deb5b9 Poul Sander 2022-01-15 13:55 3939
  Thanks to `@dean0x7d (Dean Moldovan) <https://github.com/dean0x7d>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3940
f8deb5b9 Poul Sander 2022-01-15 13:55 3941
* Compile test fixes (`#313 <https://github.com/fmtlib/fmt/pull/313>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3942
  Thanks to `@dean0x7d (Dean Moldovan) <https://github.com/dean0x7d>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3943
f8deb5b9 Poul Sander 2022-01-15 13:55 3944
* Documentation fixes (`#239 <https://github.com/fmtlib/fmt/pull/239>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3945
  `#248 <https://github.com/fmtlib/fmt/issues/248>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3946
  `#252 <https://github.com/fmtlib/fmt/issues/252>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3947
  `#258 <https://github.com/fmtlib/fmt/pull/258>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3948
  `#260 <https://github.com/fmtlib/fmt/issues/260>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3949
  `#301 <https://github.com/fmtlib/fmt/issues/301>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3950
  `#309 <https://github.com/fmtlib/fmt/pull/309>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3951
  Thanks to `@ReadmeCritic <https://github.com/ReadmeCritic>`_
f8deb5b9 Poul Sander 2022-01-15 13:55 3952
  `@Gachapen (Magnus Bjerke Vik) <https://github.com/Gachapen>`_ and
f8deb5b9 Poul Sander 2022-01-15 13:55 3953
  `@jwilk (Jakub Wilk) <https://github.com/jwilk>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3954
f8deb5b9 Poul Sander 2022-01-15 13:55 3955
* Fixed compiler and sanitizer warnings
f8deb5b9 Poul Sander 2022-01-15 13:55 3956
  (`#244 <https://github.com/fmtlib/fmt/issues/244>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3957
  `#256 <https://github.com/fmtlib/fmt/pull/256>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3958
  `#259 <https://github.com/fmtlib/fmt/pull/259>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3959
  `#263 <https://github.com/fmtlib/fmt/issues/263>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3960
  `#274 <https://github.com/fmtlib/fmt/issues/274>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3961
  `#277 <https://github.com/fmtlib/fmt/pull/277>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3962
  `#286 <https://github.com/fmtlib/fmt/pull/286>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3963
  `#291 <https://github.com/fmtlib/fmt/issues/291>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3964
  `#296 <https://github.com/fmtlib/fmt/issues/296>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3965
  `#308 <https://github.com/fmtlib/fmt/issues/308>`_)
f8deb5b9 Poul Sander 2022-01-15 13:55 3966
  Thanks to `@mwinterb <https://github.com/mwinterb>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3967
  `@pweiskircher (Patrik Weiskircher) <https://github.com/pweiskircher>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3968
  `@Naios <https://github.com/Naios>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3969
f8deb5b9 Poul Sander 2022-01-15 13:55 3970
* Improved compatibility with Windows Store apps
f8deb5b9 Poul Sander 2022-01-15 13:55 3971
  (`#280 <https://github.com/fmtlib/fmt/issues/280>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3972
  `#285 <https://github.com/fmtlib/fmt/pull/285>`_)
f8deb5b9 Poul Sander 2022-01-15 13:55 3973
  Thanks to `@mwinterb <https://github.com/mwinterb>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3974
f8deb5b9 Poul Sander 2022-01-15 13:55 3975
* Added tests of compatibility with older C++ standards
f8deb5b9 Poul Sander 2022-01-15 13:55 3976
  (`#273 <https://github.com/fmtlib/fmt/pull/273>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3977
  Thanks to `@niosHD <https://github.com/niosHD>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3978
f8deb5b9 Poul Sander 2022-01-15 13:55 3979
* Fixed Android build (`#271 <https://github.com/fmtlib/fmt/pull/271>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3980
  Thanks to `@newnon <https://github.com/newnon>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3981
f8deb5b9 Poul Sander 2022-01-15 13:55 3982
* Changed ``ArgMap`` to be backed by a vector instead of a map.
f8deb5b9 Poul Sander 2022-01-15 13:55 3983
  (`#261 <https://github.com/fmtlib/fmt/issues/261>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 3984
  `#262 <https://github.com/fmtlib/fmt/pull/262>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3985
  Thanks to `@mwinterb <https://github.com/mwinterb>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3986
f8deb5b9 Poul Sander 2022-01-15 13:55 3987
* Added ``fprintf`` overload that writes to a ``std::ostream``
f8deb5b9 Poul Sander 2022-01-15 13:55 3988
  (`#251 <https://github.com/fmtlib/fmt/pull/251>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3989
  Thanks to `nickhutchinson (Nicholas Hutchinson) <https://github.com/nickhutchinson>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3990
f8deb5b9 Poul Sander 2022-01-15 13:55 3991
* Export symbols when building a Windows DLL
f8deb5b9 Poul Sander 2022-01-15 13:55 3992
  (`#245 <https://github.com/fmtlib/fmt/pull/245>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3993
  Thanks to `macdems (Maciek Dems) <https://github.com/macdems>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 3994
f8deb5b9 Poul Sander 2022-01-15 13:55 3995
* Fixed compilation on Cygwin (`#304 <https://github.com/fmtlib/fmt/issues/304>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3996
f8deb5b9 Poul Sander 2022-01-15 13:55 3997
* Implemented a workaround for a bug in Apple LLVM version 4.2 of clang
f8deb5b9 Poul Sander 2022-01-15 13:55 3998
  (`#276 <https://github.com/fmtlib/fmt/issues/276>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 3999
f8deb5b9 Poul Sander 2022-01-15 13:55 4000
* Implemented a workaround for Google Test bug
f8deb5b9 Poul Sander 2022-01-15 13:55 4001
  `#705 <https://github.com/google/googletest/issues/705>`_ on gcc 6
f8deb5b9 Poul Sander 2022-01-15 13:55 4002
  (`#268 <https://github.com/fmtlib/fmt/issues/268>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 4003
  Thanks to `octoploid <https://github.com/octoploid>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 4004
f8deb5b9 Poul Sander 2022-01-15 13:55 4005
* Removed Biicode support because the latter has been discontinued.
f8deb5b9 Poul Sander 2022-01-15 13:55 4006
f8deb5b9 Poul Sander 2022-01-15 13:55 4007
2.1.1 - 2016-04-11
f8deb5b9 Poul Sander 2022-01-15 13:55 4008
------------------
f8deb5b9 Poul Sander 2022-01-15 13:55 4009
f8deb5b9 Poul Sander 2022-01-15 13:55 4010
* The install location for generated CMake files is now configurable via
f8deb5b9 Poul Sander 2022-01-15 13:55 4011
  the ``FMT_CMAKE_DIR`` CMake variable
f8deb5b9 Poul Sander 2022-01-15 13:55 4012
  (`#299 <https://github.com/fmtlib/fmt/pull/299>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 4013
  Thanks to `@niosHD <https://github.com/niosHD>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 4014
f8deb5b9 Poul Sander 2022-01-15 13:55 4015
* Documentation fixes (`#252 <https://github.com/fmtlib/fmt/issues/252>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 4016
f8deb5b9 Poul Sander 2022-01-15 13:55 4017
2.1.0 - 2016-03-21
f8deb5b9 Poul Sander 2022-01-15 13:55 4018
------------------
f8deb5b9 Poul Sander 2022-01-15 13:55 4019
f8deb5b9 Poul Sander 2022-01-15 13:55 4020
* Project layout and build system improvements
f8deb5b9 Poul Sander 2022-01-15 13:55 4021
  (`#267 <https://github.com/fmtlib/fmt/pull/267>`_):
f8deb5b9 Poul Sander 2022-01-15 13:55 4022
f8deb5b9 Poul Sander 2022-01-15 13:55 4023
  * The code have been moved to the ``cppformat`` directory.
f8deb5b9 Poul Sander 2022-01-15 13:55 4024
    Including ``format.h`` from the top-level directory is deprecated
f8deb5b9 Poul Sander 2022-01-15 13:55 4025
    but works via a proxy header which will be removed in the next
f8deb5b9 Poul Sander 2022-01-15 13:55 4026
    major version.
f8deb5b9 Poul Sander 2022-01-15 13:55 4027
f8deb5b9 Poul Sander 2022-01-15 13:55 4028
  * C++ Format CMake targets now have proper interface definitions.
f8deb5b9 Poul Sander 2022-01-15 13:55 4029
f8deb5b9 Poul Sander 2022-01-15 13:55 4030
  * Installed version of the library now supports the header-only
f8deb5b9 Poul Sander 2022-01-15 13:55 4031
    configuration.
f8deb5b9 Poul Sander 2022-01-15 13:55 4032
f8deb5b9 Poul Sander 2022-01-15 13:55 4033
  * Targets ``doc``, ``install``, and ``test`` are now disabled if C++ Format
f8deb5b9 Poul Sander 2022-01-15 13:55 4034
    is included as a CMake subproject. They can be enabled by setting
f8deb5b9 Poul Sander 2022-01-15 13:55 4035
    ``FMT_DOC``, ``FMT_INSTALL``, and ``FMT_TEST`` in the parent project.
f8deb5b9 Poul Sander 2022-01-15 13:55 4036
f8deb5b9 Poul Sander 2022-01-15 13:55 4037
  Thanks to `@niosHD <https://github.com/niosHD>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 4038
f8deb5b9 Poul Sander 2022-01-15 13:55 4039
2.0.1 - 2016-03-13
f8deb5b9 Poul Sander 2022-01-15 13:55 4040
------------------
f8deb5b9 Poul Sander 2022-01-15 13:55 4041
f8deb5b9 Poul Sander 2022-01-15 13:55 4042
* Improved CMake find and package support
f8deb5b9 Poul Sander 2022-01-15 13:55 4043
  (`#264 <https://github.com/fmtlib/fmt/issues/264>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 4044
  Thanks to `@niosHD <https://github.com/niosHD>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 4045
f8deb5b9 Poul Sander 2022-01-15 13:55 4046
* Fix compile error with Android NDK and mingw32
f8deb5b9 Poul Sander 2022-01-15 13:55 4047
  (`#241 <https://github.com/fmtlib/fmt/issues/241>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 4048
  Thanks to `@Gachapen (Magnus Bjerke Vik) <https://github.com/Gachapen>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 4049
f8deb5b9 Poul Sander 2022-01-15 13:55 4050
* Documentation fixes
f8deb5b9 Poul Sander 2022-01-15 13:55 4051
  (`#248 <https://github.com/fmtlib/fmt/issues/248>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4052
  `#260 <https://github.com/fmtlib/fmt/issues/260>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 4053
f8deb5b9 Poul Sander 2022-01-15 13:55 4054
2.0.0 - 2015-12-01
f8deb5b9 Poul Sander 2022-01-15 13:55 4055
------------------
f8deb5b9 Poul Sander 2022-01-15 13:55 4056
f8deb5b9 Poul Sander 2022-01-15 13:55 4057
General
f8deb5b9 Poul Sander 2022-01-15 13:55 4058
~~~~~~~
f8deb5b9 Poul Sander 2022-01-15 13:55 4059
f8deb5b9 Poul Sander 2022-01-15 13:55 4060
* [Breaking] Named arguments
f8deb5b9 Poul Sander 2022-01-15 13:55 4061
  (`#169 <https://github.com/fmtlib/fmt/pull/169>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4062
  `#173 <https://github.com/fmtlib/fmt/pull/173>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4063
  `#174 <https://github.com/fmtlib/fmt/pull/174>`_):
f8deb5b9 Poul Sander 2022-01-15 13:55 4064
f8deb5b9 Poul Sander 2022-01-15 13:55 4065
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 4066
f8deb5b9 Poul Sander 2022-01-15 13:55 4067
    fmt::print("The answer is {answer}.", fmt::arg("answer", 42));
f8deb5b9 Poul Sander 2022-01-15 13:55 4068
f8deb5b9 Poul Sander 2022-01-15 13:55 4069
  Thanks to `@jamboree <https://github.com/jamboree>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 4070
f8deb5b9 Poul Sander 2022-01-15 13:55 4071
* [Experimental] User-defined literals for format and named arguments
f8deb5b9 Poul Sander 2022-01-15 13:55 4072
  (`#204 <https://github.com/fmtlib/fmt/pull/204>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4073
  `#206 <https://github.com/fmtlib/fmt/pull/206>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4074
  `#207 <https://github.com/fmtlib/fmt/pull/207>`_):
f8deb5b9 Poul Sander 2022-01-15 13:55 4075
f8deb5b9 Poul Sander 2022-01-15 13:55 4076
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 4077
f8deb5b9 Poul Sander 2022-01-15 13:55 4078
    using namespace fmt::literals;
f8deb5b9 Poul Sander 2022-01-15 13:55 4079
    fmt::print("The answer is {answer}.", "answer"_a=42);
f8deb5b9 Poul Sander 2022-01-15 13:55 4080
f8deb5b9 Poul Sander 2022-01-15 13:55 4081
  Thanks to `@dean0x7d (Dean Moldovan) <https://github.com/dean0x7d>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 4082
f8deb5b9 Poul Sander 2022-01-15 13:55 4083
* [Breaking] Formatting of more than 16 arguments is now supported when using
f8deb5b9 Poul Sander 2022-01-15 13:55 4084
  variadic templates
f8deb5b9 Poul Sander 2022-01-15 13:55 4085
  (`#141 <https://github.com/fmtlib/fmt/issues/141>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 4086
  Thanks to `@Shauren <https://github.com/Shauren>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 4087
f8deb5b9 Poul Sander 2022-01-15 13:55 4088
* Runtime width specification
f8deb5b9 Poul Sander 2022-01-15 13:55 4089
  (`#168 <https://github.com/fmtlib/fmt/pull/168>`_):
f8deb5b9 Poul Sander 2022-01-15 13:55 4090
f8deb5b9 Poul Sander 2022-01-15 13:55 4091
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 4092
f8deb5b9 Poul Sander 2022-01-15 13:55 4093
    fmt::format("{0:{1}}", 42, 5); // gives "   42"
f8deb5b9 Poul Sander 2022-01-15 13:55 4094
f8deb5b9 Poul Sander 2022-01-15 13:55 4095
  Thanks to `@jamboree <https://github.com/jamboree>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 4096
f8deb5b9 Poul Sander 2022-01-15 13:55 4097
* [Breaking] Enums are now formatted with an overloaded ``std::ostream`` insertion
f8deb5b9 Poul Sander 2022-01-15 13:55 4098
  operator (``operator<<``) if available
f8deb5b9 Poul Sander 2022-01-15 13:55 4099
  (`#232 <https://github.com/fmtlib/fmt/issues/232>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 4100
f8deb5b9 Poul Sander 2022-01-15 13:55 4101
* [Breaking] Changed default ``bool`` format to textual, "true" or "false"
f8deb5b9 Poul Sander 2022-01-15 13:55 4102
  (`#170 <https://github.com/fmtlib/fmt/issues/170>`_):
f8deb5b9 Poul Sander 2022-01-15 13:55 4103
f8deb5b9 Poul Sander 2022-01-15 13:55 4104
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 4105
  
f8deb5b9 Poul Sander 2022-01-15 13:55 4106
    fmt::print("{}", true); // prints "true"
f8deb5b9 Poul Sander 2022-01-15 13:55 4107
f8deb5b9 Poul Sander 2022-01-15 13:55 4108
  To print ``bool`` as a number use numeric format specifier such as ``d``:
f8deb5b9 Poul Sander 2022-01-15 13:55 4109
f8deb5b9 Poul Sander 2022-01-15 13:55 4110
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 4111
f8deb5b9 Poul Sander 2022-01-15 13:55 4112
    fmt::print("{:d}", true); // prints "1"
f8deb5b9 Poul Sander 2022-01-15 13:55 4113
f8deb5b9 Poul Sander 2022-01-15 13:55 4114
* ``fmt::printf`` and ``fmt::sprintf`` now support formatting of ``bool`` with the
f8deb5b9 Poul Sander 2022-01-15 13:55 4115
  ``%s`` specifier giving textual output, "true" or "false"
f8deb5b9 Poul Sander 2022-01-15 13:55 4116
  (`#223 <https://github.com/fmtlib/fmt/pull/223>`_):
f8deb5b9 Poul Sander 2022-01-15 13:55 4117
f8deb5b9 Poul Sander 2022-01-15 13:55 4118
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 4119
f8deb5b9 Poul Sander 2022-01-15 13:55 4120
    fmt::printf("%s", true); // prints "true"
f8deb5b9 Poul Sander 2022-01-15 13:55 4121
f8deb5b9 Poul Sander 2022-01-15 13:55 4122
  Thanks to `@LarsGullik <https://github.com/LarsGullik>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 4123
f8deb5b9 Poul Sander 2022-01-15 13:55 4124
* [Breaking] ``signed char`` and ``unsigned char`` are now formatted as integers by default
f8deb5b9 Poul Sander 2022-01-15 13:55 4125
  (`#217 <https://github.com/fmtlib/fmt/pull/217>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 4126
f8deb5b9 Poul Sander 2022-01-15 13:55 4127
* [Breaking] Pointers to C strings can now be formatted with the ``p`` specifier
f8deb5b9 Poul Sander 2022-01-15 13:55 4128
  (`#223 <https://github.com/fmtlib/fmt/pull/223>`_):
f8deb5b9 Poul Sander 2022-01-15 13:55 4129
f8deb5b9 Poul Sander 2022-01-15 13:55 4130
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 4131
f8deb5b9 Poul Sander 2022-01-15 13:55 4132
    fmt::print("{:p}", "test"); // prints pointer value
f8deb5b9 Poul Sander 2022-01-15 13:55 4133
f8deb5b9 Poul Sander 2022-01-15 13:55 4134
  Thanks to `@LarsGullik <https://github.com/LarsGullik>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 4135
f8deb5b9 Poul Sander 2022-01-15 13:55 4136
* [Breaking] ``fmt::printf`` and ``fmt::sprintf`` now print null pointers as ``(nil)``
f8deb5b9 Poul Sander 2022-01-15 13:55 4137
  and null strings as ``(null)`` for consistency with glibc
f8deb5b9 Poul Sander 2022-01-15 13:55 4138
  (`#226 <https://github.com/fmtlib/fmt/pull/226>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 4139
  Thanks to `@LarsGullik <https://github.com/LarsGullik>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 4140
f8deb5b9 Poul Sander 2022-01-15 13:55 4141
* [Breaking] ``fmt::(s)printf`` now supports formatting of objects of user-defined types
f8deb5b9 Poul Sander 2022-01-15 13:55 4142
  that provide an overloaded ``std::ostream`` insertion operator (``operator<<``)
f8deb5b9 Poul Sander 2022-01-15 13:55 4143
  (`#201 <https://github.com/fmtlib/fmt/issues/201>`_):
f8deb5b9 Poul Sander 2022-01-15 13:55 4144
f8deb5b9 Poul Sander 2022-01-15 13:55 4145
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 4146
f8deb5b9 Poul Sander 2022-01-15 13:55 4147
    fmt::printf("The date is %s", Date(2012, 12, 9));
f8deb5b9 Poul Sander 2022-01-15 13:55 4148
f8deb5b9 Poul Sander 2022-01-15 13:55 4149
* [Breaking] The ``Buffer`` template is now part of the public API and can be used
f8deb5b9 Poul Sander 2022-01-15 13:55 4150
  to implement custom memory buffers
f8deb5b9 Poul Sander 2022-01-15 13:55 4151
  (`#140 <https://github.com/fmtlib/fmt/issues/140>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 4152
  Thanks to `@polyvertex (Jean-Charles Lefebvre) <https://github.com/polyvertex>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 4153
f8deb5b9 Poul Sander 2022-01-15 13:55 4154
* [Breaking] Improved compatibility between ``BasicStringRef`` and
f8deb5b9 Poul Sander 2022-01-15 13:55 4155
  `std::experimental::basic_string_view
f8deb5b9 Poul Sander 2022-01-15 13:55 4156
  <http://en.cppreference.com/w/cpp/experimental/basic_string_view>`_
f8deb5b9 Poul Sander 2022-01-15 13:55 4157
  (`#100 <https://github.com/fmtlib/fmt/issues/100>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4158
  `#159 <https://github.com/fmtlib/fmt/issues/159>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4159
  `#183 <https://github.com/fmtlib/fmt/issues/183>`_):
f8deb5b9 Poul Sander 2022-01-15 13:55 4160
f8deb5b9 Poul Sander 2022-01-15 13:55 4161
  - Comparison operators now compare string content, not pointers
f8deb5b9 Poul Sander 2022-01-15 13:55 4162
  - ``BasicStringRef::c_str`` replaced by ``BasicStringRef::data``
f8deb5b9 Poul Sander 2022-01-15 13:55 4163
  - ``BasicStringRef`` is no longer assumed to be null-terminated
f8deb5b9 Poul Sander 2022-01-15 13:55 4164
f8deb5b9 Poul Sander 2022-01-15 13:55 4165
  References to null-terminated strings are now represented by a new class,
f8deb5b9 Poul Sander 2022-01-15 13:55 4166
  ``BasicCStringRef``.
f8deb5b9 Poul Sander 2022-01-15 13:55 4167
f8deb5b9 Poul Sander 2022-01-15 13:55 4168
* Dependency on pthreads introduced by Google Test is now optional
f8deb5b9 Poul Sander 2022-01-15 13:55 4169
  (`#185 <https://github.com/fmtlib/fmt/issues/185>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 4170
f8deb5b9 Poul Sander 2022-01-15 13:55 4171
* New CMake options ``FMT_DOC``, ``FMT_INSTALL`` and ``FMT_TEST`` to control
f8deb5b9 Poul Sander 2022-01-15 13:55 4172
  generation of ``doc``, ``install`` and ``test`` targets respectively, on by default
f8deb5b9 Poul Sander 2022-01-15 13:55 4173
  (`#197 <https://github.com/fmtlib/fmt/issues/197>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4174
  `#198 <https://github.com/fmtlib/fmt/issues/198>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4175
  `#200 <https://github.com/fmtlib/fmt/issues/200>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 4176
  Thanks to `@maddinat0r (Alex Martin) <https://github.com/maddinat0r>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 4177
f8deb5b9 Poul Sander 2022-01-15 13:55 4178
* ``noexcept`` is now used when compiling with MSVC2015
f8deb5b9 Poul Sander 2022-01-15 13:55 4179
  (`#215 <https://github.com/fmtlib/fmt/pull/215>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 4180
  Thanks to `@dmkrepo (Dmitriy) <https://github.com/dmkrepo>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 4181
f8deb5b9 Poul Sander 2022-01-15 13:55 4182
* Added an option to disable use of ``windows.h`` when ``FMT_USE_WINDOWS_H``
f8deb5b9 Poul Sander 2022-01-15 13:55 4183
  is defined as 0 before including ``format.h``
f8deb5b9 Poul Sander 2022-01-15 13:55 4184
  (`#171 <https://github.com/fmtlib/fmt/issues/171>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 4185
  Thanks to `@alfps (Alf P. Steinbach) <https://github.com/alfps>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 4186
f8deb5b9 Poul Sander 2022-01-15 13:55 4187
* [Breaking] ``windows.h`` is now included with ``NOMINMAX`` unless
f8deb5b9 Poul Sander 2022-01-15 13:55 4188
  ``FMT_WIN_MINMAX`` is defined. This is done to prevent breaking code using
f8deb5b9 Poul Sander 2022-01-15 13:55 4189
  ``std::min`` and ``std::max`` and only affects the header-only configuration
f8deb5b9 Poul Sander 2022-01-15 13:55 4190
  (`#152 <https://github.com/fmtlib/fmt/issues/152>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4191
  `#153 <https://github.com/fmtlib/fmt/pull/153>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4192
  `#154 <https://github.com/fmtlib/fmt/pull/154>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 4193
  Thanks to `@DevO2012 <https://github.com/DevO2012>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 4194
f8deb5b9 Poul Sander 2022-01-15 13:55 4195
* Improved support for custom character types
f8deb5b9 Poul Sander 2022-01-15 13:55 4196
  (`#171 <https://github.com/fmtlib/fmt/issues/171>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 4197
  Thanks to `@alfps (Alf P. Steinbach) <https://github.com/alfps>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 4198
f8deb5b9 Poul Sander 2022-01-15 13:55 4199
* Added an option to disable use of IOStreams when ``FMT_USE_IOSTREAMS``
f8deb5b9 Poul Sander 2022-01-15 13:55 4200
  is defined as 0 before including ``format.h``
f8deb5b9 Poul Sander 2022-01-15 13:55 4201
  (`#205 <https://github.com/fmtlib/fmt/issues/205>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4202
  `#208 <https://github.com/fmtlib/fmt/pull/208>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 4203
  Thanks to `@JodiTheTigger <https://github.com/JodiTheTigger>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 4204
f8deb5b9 Poul Sander 2022-01-15 13:55 4205
* Improved detection of ``isnan``, ``isinf`` and ``signbit``.
f8deb5b9 Poul Sander 2022-01-15 13:55 4206
f8deb5b9 Poul Sander 2022-01-15 13:55 4207
Optimization
f8deb5b9 Poul Sander 2022-01-15 13:55 4208
~~~~~~~~~~~~
f8deb5b9 Poul Sander 2022-01-15 13:55 4209
f8deb5b9 Poul Sander 2022-01-15 13:55 4210
* Made formatting of user-defined types more efficient with a custom stream buffer
f8deb5b9 Poul Sander 2022-01-15 13:55 4211
  (`#92 <https://github.com/fmtlib/fmt/issues/92>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4212
  `#230 <https://github.com/fmtlib/fmt/pull/230>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 4213
  Thanks to `@NotImplemented <https://github.com/NotImplemented>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 4214
f8deb5b9 Poul Sander 2022-01-15 13:55 4215
* Further improved performance of ``fmt::Writer`` on integer formatting
f8deb5b9 Poul Sander 2022-01-15 13:55 4216
  and fixed a minor regression. Now it is ~7% faster than ``karma::generate``
f8deb5b9 Poul Sander 2022-01-15 13:55 4217
  on Karma's benchmark
f8deb5b9 Poul Sander 2022-01-15 13:55 4218
  (`#186 <https://github.com/fmtlib/fmt/issues/186>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 4219
f8deb5b9 Poul Sander 2022-01-15 13:55 4220
* [Breaking] Reduced `compiled code size
f8deb5b9 Poul Sander 2022-01-15 13:55 4221
  <https://github.com/fmtlib/fmt#compile-time-and-code-bloat>`_
f8deb5b9 Poul Sander 2022-01-15 13:55 4222
  (`#143 <https://github.com/fmtlib/fmt/issues/143>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4223
  `#149 <https://github.com/fmtlib/fmt/pull/149>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 4224
f8deb5b9 Poul Sander 2022-01-15 13:55 4225
Distribution
f8deb5b9 Poul Sander 2022-01-15 13:55 4226
~~~~~~~~~~~~
f8deb5b9 Poul Sander 2022-01-15 13:55 4227
f8deb5b9 Poul Sander 2022-01-15 13:55 4228
* [Breaking] Headers are now installed in
f8deb5b9 Poul Sander 2022-01-15 13:55 4229
  ``${CMAKE_INSTALL_PREFIX}/include/cppformat``
f8deb5b9 Poul Sander 2022-01-15 13:55 4230
  (`#178 <https://github.com/fmtlib/fmt/issues/178>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 4231
  Thanks to `@jackyf (Eugene V. Lyubimkin) <https://github.com/jackyf>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 4232
f8deb5b9 Poul Sander 2022-01-15 13:55 4233
* [Breaking] Changed the library name from ``format`` to ``cppformat``
f8deb5b9 Poul Sander 2022-01-15 13:55 4234
  for consistency with the project name and to avoid potential conflicts
f8deb5b9 Poul Sander 2022-01-15 13:55 4235
  (`#178 <https://github.com/fmtlib/fmt/issues/178>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 4236
  Thanks to `@jackyf (Eugene V. Lyubimkin) <https://github.com/jackyf>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 4237
f8deb5b9 Poul Sander 2022-01-15 13:55 4238
* C++ Format is now available in `Debian <https://www.debian.org/>`_ GNU/Linux
f8deb5b9 Poul Sander 2022-01-15 13:55 4239
  (`stretch <https://packages.debian.org/source/stretch/cppformat>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4240
  `sid <https://packages.debian.org/source/sid/cppformat>`_) and 
f8deb5b9 Poul Sander 2022-01-15 13:55 4241
  derived distributions such as
f8deb5b9 Poul Sander 2022-01-15 13:55 4242
  `Ubuntu <https://launchpad.net/ubuntu/+source/cppformat>`_ 15.10 and later
f8deb5b9 Poul Sander 2022-01-15 13:55 4243
  (`#155 <https://github.com/fmtlib/fmt/issues/155>`_)::
f8deb5b9 Poul Sander 2022-01-15 13:55 4244
f8deb5b9 Poul Sander 2022-01-15 13:55 4245
    $ sudo apt-get install libcppformat1-dev
f8deb5b9 Poul Sander 2022-01-15 13:55 4246
f8deb5b9 Poul Sander 2022-01-15 13:55 4247
  Thanks to `@jackyf (Eugene V. Lyubimkin) <https://github.com/jackyf>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 4248
f8deb5b9 Poul Sander 2022-01-15 13:55 4249
* `Packages for Fedora and RHEL <https://admin.fedoraproject.org/pkgdb/package/cppformat/>`_
f8deb5b9 Poul Sander 2022-01-15 13:55 4250
  are now available. Thanks to Dave Johansen.
f8deb5b9 Poul Sander 2022-01-15 13:55 4251
  
f8deb5b9 Poul Sander 2022-01-15 13:55 4252
* C++ Format can now be installed via `Homebrew <http://brew.sh/>`_ on OS X
f8deb5b9 Poul Sander 2022-01-15 13:55 4253
  (`#157 <https://github.com/fmtlib/fmt/issues/157>`_)::
f8deb5b9 Poul Sander 2022-01-15 13:55 4254
f8deb5b9 Poul Sander 2022-01-15 13:55 4255
    $ brew install cppformat
f8deb5b9 Poul Sander 2022-01-15 13:55 4256
f8deb5b9 Poul Sander 2022-01-15 13:55 4257
  Thanks to `@ortho <https://github.com/ortho>`_, Anatoliy Bulukin.
f8deb5b9 Poul Sander 2022-01-15 13:55 4258
f8deb5b9 Poul Sander 2022-01-15 13:55 4259
Documentation
f8deb5b9 Poul Sander 2022-01-15 13:55 4260
~~~~~~~~~~~~~
f8deb5b9 Poul Sander 2022-01-15 13:55 4261
f8deb5b9 Poul Sander 2022-01-15 13:55 4262
* Migrated from ReadTheDocs to GitHub Pages for better responsiveness
f8deb5b9 Poul Sander 2022-01-15 13:55 4263
  and reliability
f8deb5b9 Poul Sander 2022-01-15 13:55 4264
  (`#128 <https://github.com/fmtlib/fmt/issues/128>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 4265
  New documentation address is http://cppformat.github.io/.
f8deb5b9 Poul Sander 2022-01-15 13:55 4266
f8deb5b9 Poul Sander 2022-01-15 13:55 4267
f8deb5b9 Poul Sander 2022-01-15 13:55 4268
* Added `Building the documentation
f8deb5b9 Poul Sander 2022-01-15 13:55 4269
  <https://fmt.dev/2.0.0/usage.html#building-the-documentation>`_
f8deb5b9 Poul Sander 2022-01-15 13:55 4270
  section to the documentation.
f8deb5b9 Poul Sander 2022-01-15 13:55 4271
f8deb5b9 Poul Sander 2022-01-15 13:55 4272
* Documentation build script is now compatible with Python 3 and newer pip versions.
f8deb5b9 Poul Sander 2022-01-15 13:55 4273
  (`#189 <https://github.com/fmtlib/fmt/pull/189>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4274
  `#209 <https://github.com/fmtlib/fmt/issues/209>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 4275
  Thanks to `@JodiTheTigger <https://github.com/JodiTheTigger>`_ and
f8deb5b9 Poul Sander 2022-01-15 13:55 4276
  `@xentec <https://github.com/xentec>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 4277
  
f8deb5b9 Poul Sander 2022-01-15 13:55 4278
* Documentation fixes and improvements
f8deb5b9 Poul Sander 2022-01-15 13:55 4279
  (`#36 <https://github.com/fmtlib/fmt/issues/36>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4280
  `#75 <https://github.com/fmtlib/fmt/issues/75>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4281
  `#125 <https://github.com/fmtlib/fmt/issues/125>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4282
  `#160 <https://github.com/fmtlib/fmt/pull/160>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4283
  `#161 <https://github.com/fmtlib/fmt/pull/161>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4284
  `#162 <https://github.com/fmtlib/fmt/issues/162>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4285
  `#165 <https://github.com/fmtlib/fmt/issues/165>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4286
  `#210 <https://github.com/fmtlib/fmt/issues/210>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 4287
  Thanks to `@syohex (Syohei YOSHIDA) <https://github.com/syohex>`_ and
f8deb5b9 Poul Sander 2022-01-15 13:55 4288
  bug reporters.
f8deb5b9 Poul Sander 2022-01-15 13:55 4289
f8deb5b9 Poul Sander 2022-01-15 13:55 4290
* Fixed out-of-tree documentation build
f8deb5b9 Poul Sander 2022-01-15 13:55 4291
  (`#177 <https://github.com/fmtlib/fmt/issues/177>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 4292
  Thanks to `@jackyf (Eugene V. Lyubimkin) <https://github.com/jackyf>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 4293
f8deb5b9 Poul Sander 2022-01-15 13:55 4294
Fixes
f8deb5b9 Poul Sander 2022-01-15 13:55 4295
~~~~~
f8deb5b9 Poul Sander 2022-01-15 13:55 4296
f8deb5b9 Poul Sander 2022-01-15 13:55 4297
* Fixed ``initializer_list`` detection
f8deb5b9 Poul Sander 2022-01-15 13:55 4298
  (`#136 <https://github.com/fmtlib/fmt/issues/136>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 4299
  Thanks to `@Gachapen (Magnus Bjerke Vik) <https://github.com/Gachapen>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 4300
f8deb5b9 Poul Sander 2022-01-15 13:55 4301
* [Breaking] Fixed formatting of enums with numeric format specifiers in
f8deb5b9 Poul Sander 2022-01-15 13:55 4302
  ``fmt::(s)printf`` 
f8deb5b9 Poul Sander 2022-01-15 13:55 4303
  (`#131 <https://github.com/fmtlib/fmt/issues/131>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4304
  `#139 <https://github.com/fmtlib/fmt/issues/139>`_):
f8deb5b9 Poul Sander 2022-01-15 13:55 4305
f8deb5b9 Poul Sander 2022-01-15 13:55 4306
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 4307
f8deb5b9 Poul Sander 2022-01-15 13:55 4308
    enum { ANSWER = 42 };
f8deb5b9 Poul Sander 2022-01-15 13:55 4309
    fmt::printf("%d", ANSWER);
f8deb5b9 Poul Sander 2022-01-15 13:55 4310
f8deb5b9 Poul Sander 2022-01-15 13:55 4311
  Thanks to `@Naios <https://github.com/Naios>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 4312
f8deb5b9 Poul Sander 2022-01-15 13:55 4313
* Improved compatibility with old versions of MinGW
f8deb5b9 Poul Sander 2022-01-15 13:55 4314
  (`#129 <https://github.com/fmtlib/fmt/issues/129>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4315
  `#130 <https://github.com/fmtlib/fmt/pull/130>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4316
  `#132 <https://github.com/fmtlib/fmt/issues/132>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 4317
  Thanks to `@cstamford (Christopher Stamford) <https://github.com/cstamford>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 4318
f8deb5b9 Poul Sander 2022-01-15 13:55 4319
* Fixed a compile error on MSVC with disabled exceptions
f8deb5b9 Poul Sander 2022-01-15 13:55 4320
  (`#144 <https://github.com/fmtlib/fmt/issues/144>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 4321
f8deb5b9 Poul Sander 2022-01-15 13:55 4322
* Added a workaround for broken implementation of variadic templates in MSVC2012
f8deb5b9 Poul Sander 2022-01-15 13:55 4323
  (`#148 <https://github.com/fmtlib/fmt/issues/148>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 4324
f8deb5b9 Poul Sander 2022-01-15 13:55 4325
* Placed the anonymous namespace within ``fmt`` namespace for the header-only
f8deb5b9 Poul Sander 2022-01-15 13:55 4326
  configuration
f8deb5b9 Poul Sander 2022-01-15 13:55 4327
  (`#171 <https://github.com/fmtlib/fmt/issues/171>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 4328
  Thanks to `@alfps (Alf P. Steinbach) <https://github.com/alfps>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 4329
f8deb5b9 Poul Sander 2022-01-15 13:55 4330
* Fixed issues reported by Coverity Scan
f8deb5b9 Poul Sander 2022-01-15 13:55 4331
  (`#187 <https://github.com/fmtlib/fmt/issues/187>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4332
  `#192 <https://github.com/fmtlib/fmt/issues/192>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 4333
f8deb5b9 Poul Sander 2022-01-15 13:55 4334
* Implemented a workaround for a name lookup bug in MSVC2010
f8deb5b9 Poul Sander 2022-01-15 13:55 4335
  (`#188 <https://github.com/fmtlib/fmt/issues/188>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 4336
f8deb5b9 Poul Sander 2022-01-15 13:55 4337
* Fixed compiler warnings
f8deb5b9 Poul Sander 2022-01-15 13:55 4338
  (`#95 <https://github.com/fmtlib/fmt/issues/95>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4339
  `#96 <https://github.com/fmtlib/fmt/issues/96>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4340
  `#114 <https://github.com/fmtlib/fmt/pull/114>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4341
  `#135 <https://github.com/fmtlib/fmt/issues/135>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4342
  `#142 <https://github.com/fmtlib/fmt/issues/142>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4343
  `#145 <https://github.com/fmtlib/fmt/issues/145>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4344
  `#146 <https://github.com/fmtlib/fmt/issues/146>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4345
  `#158 <https://github.com/fmtlib/fmt/issues/158>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4346
  `#163 <https://github.com/fmtlib/fmt/issues/163>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4347
  `#175 <https://github.com/fmtlib/fmt/issues/175>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4348
  `#190 <https://github.com/fmtlib/fmt/issues/190>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4349
  `#191 <https://github.com/fmtlib/fmt/pull/191>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4350
  `#194 <https://github.com/fmtlib/fmt/issues/194>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4351
  `#196 <https://github.com/fmtlib/fmt/pull/196>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4352
  `#216 <https://github.com/fmtlib/fmt/issues/216>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4353
  `#218 <https://github.com/fmtlib/fmt/pull/218>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4354
  `#220 <https://github.com/fmtlib/fmt/pull/220>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4355
  `#229 <https://github.com/fmtlib/fmt/pull/229>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4356
  `#233 <https://github.com/fmtlib/fmt/issues/233>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4357
  `#234 <https://github.com/fmtlib/fmt/issues/234>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4358
  `#236 <https://github.com/fmtlib/fmt/pull/236>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4359
  `#281 <https://github.com/fmtlib/fmt/issues/281>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4360
  `#289 <https://github.com/fmtlib/fmt/issues/289>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 4361
  Thanks to `@seanmiddleditch (Sean Middleditch) <https://github.com/seanmiddleditch>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4362
  `@dixlorenz (Dix Lorenz) <https://github.com/dixlorenz>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4363
  `@CarterLi (李通洲) <https://github.com/CarterLi>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4364
  `@Naios <https://github.com/Naios>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4365
  `@fmatthew5876 (Matthew Fioravante) <https://github.com/fmatthew5876>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4366
  `@LevskiWeng (Levski Weng) <https://github.com/LevskiWeng>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4367
  `@rpopescu <https://github.com/rpopescu>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4368
  `@gabime (Gabi Melman) <https://github.com/gabime>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4369
  `@cubicool (Jeremy Moles) <https://github.com/cubicool>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4370
  `@jkflying (Julian Kent) <https://github.com/jkflying>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4371
  `@LogicalKnight (Sean L) <https://github.com/LogicalKnight>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4372
  `@inguin (Ingo van Lil) <https://github.com/inguin>`_ and
f8deb5b9 Poul Sander 2022-01-15 13:55 4373
  `@Jopie64 (Johan) <https://github.com/Jopie64>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 4374
f8deb5b9 Poul Sander 2022-01-15 13:55 4375
* Fixed portability issues (mostly causing test failures) on ARM, ppc64, ppc64le,
f8deb5b9 Poul Sander 2022-01-15 13:55 4376
  s390x and SunOS 5.11 i386
f8deb5b9 Poul Sander 2022-01-15 13:55 4377
  (`#138 <https://github.com/fmtlib/fmt/issues/138>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4378
  `#179 <https://github.com/fmtlib/fmt/issues/179>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4379
  `#180 <https://github.com/fmtlib/fmt/issues/180>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4380
  `#202 <https://github.com/fmtlib/fmt/issues/202>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4381
  `#225 <https://github.com/fmtlib/fmt/issues/225>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4382
  `Red Hat Bugzilla Bug 1260297 <https://bugzilla.redhat.com/show_bug.cgi?id=1260297>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 4383
  Thanks to `@Naios <https://github.com/Naios>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4384
  `@jackyf (Eugene V. Lyubimkin) <https://github.com/jackyf>`_ and Dave Johansen.
f8deb5b9 Poul Sander 2022-01-15 13:55 4385
f8deb5b9 Poul Sander 2022-01-15 13:55 4386
* Fixed a name conflict with macro ``free`` defined in
f8deb5b9 Poul Sander 2022-01-15 13:55 4387
  ``crtdbg.h`` when ``_CRTDBG_MAP_ALLOC`` is set
f8deb5b9 Poul Sander 2022-01-15 13:55 4388
  (`#211 <https://github.com/fmtlib/fmt/issues/211>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 4389
f8deb5b9 Poul Sander 2022-01-15 13:55 4390
* Fixed shared library build on OS X
f8deb5b9 Poul Sander 2022-01-15 13:55 4391
  (`#212 <https://github.com/fmtlib/fmt/pull/212>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 4392
  Thanks to `@dean0x7d (Dean Moldovan) <https://github.com/dean0x7d>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 4393
f8deb5b9 Poul Sander 2022-01-15 13:55 4394
* Fixed an overload conflict on MSVC when ``/Zc:wchar_t-`` option is specified
f8deb5b9 Poul Sander 2022-01-15 13:55 4395
  (`#214 <https://github.com/fmtlib/fmt/pull/214>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 4396
  Thanks to `@slavanap (Vyacheslav Napadovsky) <https://github.com/slavanap>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 4397
f8deb5b9 Poul Sander 2022-01-15 13:55 4398
* Improved compatibility with MSVC 2008
f8deb5b9 Poul Sander 2022-01-15 13:55 4399
  (`#236 <https://github.com/fmtlib/fmt/pull/236>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 4400
  Thanks to `@Jopie64 (Johan) <https://github.com/Jopie64>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 4401
f8deb5b9 Poul Sander 2022-01-15 13:55 4402
* Improved compatibility with bcc32
f8deb5b9 Poul Sander 2022-01-15 13:55 4403
  (`#227 <https://github.com/fmtlib/fmt/issues/227>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 4404
f8deb5b9 Poul Sander 2022-01-15 13:55 4405
* Fixed ``static_assert`` detection on Clang
f8deb5b9 Poul Sander 2022-01-15 13:55 4406
  (`#228 <https://github.com/fmtlib/fmt/pull/228>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 4407
  Thanks to `@dean0x7d (Dean Moldovan) <https://github.com/dean0x7d>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 4408
f8deb5b9 Poul Sander 2022-01-15 13:55 4409
1.1.0 - 2015-03-06
f8deb5b9 Poul Sander 2022-01-15 13:55 4410
------------------
f8deb5b9 Poul Sander 2022-01-15 13:55 4411
f8deb5b9 Poul Sander 2022-01-15 13:55 4412
* Added ``BasicArrayWriter``, a class template that provides operations for
f8deb5b9 Poul Sander 2022-01-15 13:55 4413
  formatting and writing data into a fixed-size array
f8deb5b9 Poul Sander 2022-01-15 13:55 4414
  (`#105 <https://github.com/fmtlib/fmt/issues/105>`_ and
f8deb5b9 Poul Sander 2022-01-15 13:55 4415
  `#122 <https://github.com/fmtlib/fmt/issues/122>`_):
f8deb5b9 Poul Sander 2022-01-15 13:55 4416
f8deb5b9 Poul Sander 2022-01-15 13:55 4417
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 4418
  
f8deb5b9 Poul Sander 2022-01-15 13:55 4419
    char buffer[100];
f8deb5b9 Poul Sander 2022-01-15 13:55 4420
    fmt::ArrayWriter w(buffer);
f8deb5b9 Poul Sander 2022-01-15 13:55 4421
    w.write("The answer is {}", 42);
f8deb5b9 Poul Sander 2022-01-15 13:55 4422
f8deb5b9 Poul Sander 2022-01-15 13:55 4423
* Added `0 A.D. <http://play0ad.com/>`_ and `PenUltima Online (POL)
f8deb5b9 Poul Sander 2022-01-15 13:55 4424
  <http://www.polserver.com/>`_ to the list of notable projects using C++ Format.
f8deb5b9 Poul Sander 2022-01-15 13:55 4425
f8deb5b9 Poul Sander 2022-01-15 13:55 4426
* C++ Format now uses MSVC intrinsics for better formatting performance
f8deb5b9 Poul Sander 2022-01-15 13:55 4427
  (`#115 <https://github.com/fmtlib/fmt/pull/115>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4428
  `#116 <https://github.com/fmtlib/fmt/pull/116>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4429
  `#118 <https://github.com/fmtlib/fmt/pull/118>`_ and
f8deb5b9 Poul Sander 2022-01-15 13:55 4430
  `#121 <https://github.com/fmtlib/fmt/pull/121>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 4431
  Previously these optimizations where only used on GCC and Clang.
f8deb5b9 Poul Sander 2022-01-15 13:55 4432
  Thanks to `@CarterLi <https://github.com/CarterLi>`_ and
f8deb5b9 Poul Sander 2022-01-15 13:55 4433
  `@objectx <https://github.com/objectx>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 4434
f8deb5b9 Poul Sander 2022-01-15 13:55 4435
* CMake install target (`#119 <https://github.com/fmtlib/fmt/pull/119>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 4436
  Thanks to `@TrentHouliston <https://github.com/TrentHouliston>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 4437
f8deb5b9 Poul Sander 2022-01-15 13:55 4438
  You can now install C++ Format with ``make install`` command.
f8deb5b9 Poul Sander 2022-01-15 13:55 4439
f8deb5b9 Poul Sander 2022-01-15 13:55 4440
* Improved `Biicode <http://www.biicode.com/>`_ support
f8deb5b9 Poul Sander 2022-01-15 13:55 4441
  (`#98 <https://github.com/fmtlib/fmt/pull/98>`_ and
f8deb5b9 Poul Sander 2022-01-15 13:55 4442
  `#104 <https://github.com/fmtlib/fmt/pull/104>`_). Thanks to
f8deb5b9 Poul Sander 2022-01-15 13:55 4443
  `@MariadeAnton <https://github.com/MariadeAnton>`_ and
f8deb5b9 Poul Sander 2022-01-15 13:55 4444
  `@franramirez688 <https://github.com/franramirez688>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 4445
f8deb5b9 Poul Sander 2022-01-15 13:55 4446
* Improved support for building with `Android NDK
f8deb5b9 Poul Sander 2022-01-15 13:55 4447
  <https://developer.android.com/tools/sdk/ndk/index.html>`_
f8deb5b9 Poul Sander 2022-01-15 13:55 4448
  (`#107 <https://github.com/fmtlib/fmt/pull/107>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 4449
  Thanks to `@newnon <https://github.com/newnon>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 4450
  
f8deb5b9 Poul Sander 2022-01-15 13:55 4451
  The `android-ndk-example <https://github.com/fmtlib/android-ndk-example>`_
f8deb5b9 Poul Sander 2022-01-15 13:55 4452
  repository provides and example of using C++ Format with Android NDK:
f8deb5b9 Poul Sander 2022-01-15 13:55 4453
f8deb5b9 Poul Sander 2022-01-15 13:55 4454
  .. image:: https://raw.githubusercontent.com/fmtlib/android-ndk-example/
f8deb5b9 Poul Sander 2022-01-15 13:55 4455
            master/screenshot.png
f8deb5b9 Poul Sander 2022-01-15 13:55 4456
f8deb5b9 Poul Sander 2022-01-15 13:55 4457
* Improved documentation of ``SystemError`` and ``WindowsError``
f8deb5b9 Poul Sander 2022-01-15 13:55 4458
  (`#54 <https://github.com/fmtlib/fmt/issues/54>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 4459
f8deb5b9 Poul Sander 2022-01-15 13:55 4460
* Various code improvements
f8deb5b9 Poul Sander 2022-01-15 13:55 4461
  (`#110 <https://github.com/fmtlib/fmt/pull/110>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4462
  `#111 <https://github.com/fmtlib/fmt/pull/111>`_
f8deb5b9 Poul Sander 2022-01-15 13:55 4463
  `#112 <https://github.com/fmtlib/fmt/pull/112>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 4464
  Thanks to `@CarterLi <https://github.com/CarterLi>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 4465
f8deb5b9 Poul Sander 2022-01-15 13:55 4466
* Improved compile-time errors when formatting wide into narrow strings
f8deb5b9 Poul Sander 2022-01-15 13:55 4467
  (`#117 <https://github.com/fmtlib/fmt/issues/117>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 4468
f8deb5b9 Poul Sander 2022-01-15 13:55 4469
* Fixed ``BasicWriter::write`` without formatting arguments when C++11 support
f8deb5b9 Poul Sander 2022-01-15 13:55 4470
  is disabled (`#109 <https://github.com/fmtlib/fmt/issues/109>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 4471
f8deb5b9 Poul Sander 2022-01-15 13:55 4472
* Fixed header-only build on OS X with GCC 4.9
f8deb5b9 Poul Sander 2022-01-15 13:55 4473
  (`#124 <https://github.com/fmtlib/fmt/issues/124>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 4474
f8deb5b9 Poul Sander 2022-01-15 13:55 4475
* Fixed packaging issues (`#94 <https://github.com/fmtlib/fmt/issues/94>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 4476
f8deb5b9 Poul Sander 2022-01-15 13:55 4477
* Added `changelog <https://github.com/fmtlib/fmt/blob/master/ChangeLog.rst>`_
f8deb5b9 Poul Sander 2022-01-15 13:55 4478
  (`#103 <https://github.com/fmtlib/fmt/issues/103>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 4479
f8deb5b9 Poul Sander 2022-01-15 13:55 4480
1.0.0 - 2015-02-05
f8deb5b9 Poul Sander 2022-01-15 13:55 4481
------------------
f8deb5b9 Poul Sander 2022-01-15 13:55 4482
f8deb5b9 Poul Sander 2022-01-15 13:55 4483
* Add support for a header-only configuration when ``FMT_HEADER_ONLY`` is
f8deb5b9 Poul Sander 2022-01-15 13:55 4484
  defined before including ``format.h``:
f8deb5b9 Poul Sander 2022-01-15 13:55 4485
f8deb5b9 Poul Sander 2022-01-15 13:55 4486
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 4487
f8deb5b9 Poul Sander 2022-01-15 13:55 4488
    #define FMT_HEADER_ONLY
f8deb5b9 Poul Sander 2022-01-15 13:55 4489
    #include "format.h"
f8deb5b9 Poul Sander 2022-01-15 13:55 4490
f8deb5b9 Poul Sander 2022-01-15 13:55 4491
* Compute string length in the constructor of ``BasicStringRef``
f8deb5b9 Poul Sander 2022-01-15 13:55 4492
  instead of the ``size`` method
f8deb5b9 Poul Sander 2022-01-15 13:55 4493
  (`#79 <https://github.com/fmtlib/fmt/issues/79>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 4494
  This eliminates size computation for string literals on reasonable optimizing
f8deb5b9 Poul Sander 2022-01-15 13:55 4495
  compilers.
f8deb5b9 Poul Sander 2022-01-15 13:55 4496
f8deb5b9 Poul Sander 2022-01-15 13:55 4497
* Fix formatting of types with overloaded ``operator <<`` for ``std::wostream``
f8deb5b9 Poul Sander 2022-01-15 13:55 4498
  (`#86 <https://github.com/fmtlib/fmt/issues/86>`_):
f8deb5b9 Poul Sander 2022-01-15 13:55 4499
f8deb5b9 Poul Sander 2022-01-15 13:55 4500
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 4501
f8deb5b9 Poul Sander 2022-01-15 13:55 4502
    fmt::format(L"The date is {0}", Date(2012, 12, 9));
f8deb5b9 Poul Sander 2022-01-15 13:55 4503
f8deb5b9 Poul Sander 2022-01-15 13:55 4504
* Fix linkage of tests on Arch Linux
f8deb5b9 Poul Sander 2022-01-15 13:55 4505
  (`#89 <https://github.com/fmtlib/fmt/issues/89>`_).
f8deb5b9 Poul Sander 2022-01-15 13:55 4506
f8deb5b9 Poul Sander 2022-01-15 13:55 4507
* Allow precision specifier for non-float arguments
f8deb5b9 Poul Sander 2022-01-15 13:55 4508
  (`#90 <https://github.com/fmtlib/fmt/issues/90>`_):
f8deb5b9 Poul Sander 2022-01-15 13:55 4509
f8deb5b9 Poul Sander 2022-01-15 13:55 4510
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 4511
f8deb5b9 Poul Sander 2022-01-15 13:55 4512
    fmt::print("{:.3}\n", "Carpet"); // prints "Car"
f8deb5b9 Poul Sander 2022-01-15 13:55 4513
f8deb5b9 Poul Sander 2022-01-15 13:55 4514
* Fix build on Android NDK
f8deb5b9 Poul Sander 2022-01-15 13:55 4515
  (`#93 <https://github.com/fmtlib/fmt/issues/93>`_)
f8deb5b9 Poul Sander 2022-01-15 13:55 4516
f8deb5b9 Poul Sander 2022-01-15 13:55 4517
* Improvements to documentation build procedure.
f8deb5b9 Poul Sander 2022-01-15 13:55 4518
f8deb5b9 Poul Sander 2022-01-15 13:55 4519
* Remove ``FMT_SHARED`` CMake variable in favor of standard `BUILD_SHARED_LIBS
f8deb5b9 Poul Sander 2022-01-15 13:55 4520
  <http://www.cmake.org/cmake/help/v3.0/variable/BUILD_SHARED_LIBS.html>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 4521
f8deb5b9 Poul Sander 2022-01-15 13:55 4522
* Fix error handling in ``fmt::fprintf``.
f8deb5b9 Poul Sander 2022-01-15 13:55 4523
f8deb5b9 Poul Sander 2022-01-15 13:55 4524
* Fix a number of warnings.
f8deb5b9 Poul Sander 2022-01-15 13:55 4525
f8deb5b9 Poul Sander 2022-01-15 13:55 4526
0.12.0 - 2014-10-25
f8deb5b9 Poul Sander 2022-01-15 13:55 4527
-------------------
f8deb5b9 Poul Sander 2022-01-15 13:55 4528
f8deb5b9 Poul Sander 2022-01-15 13:55 4529
* [Breaking] Improved separation between formatting and buffer management.
f8deb5b9 Poul Sander 2022-01-15 13:55 4530
  ``Writer`` is now a base class that cannot be instantiated directly.
f8deb5b9 Poul Sander 2022-01-15 13:55 4531
  The new ``MemoryWriter`` class implements the default buffer management
f8deb5b9 Poul Sander 2022-01-15 13:55 4532
  with small allocations done on stack. So ``fmt::Writer`` should be replaced
f8deb5b9 Poul Sander 2022-01-15 13:55 4533
  with ``fmt::MemoryWriter`` in variable declarations.
f8deb5b9 Poul Sander 2022-01-15 13:55 4534
f8deb5b9 Poul Sander 2022-01-15 13:55 4535
  Old code:
f8deb5b9 Poul Sander 2022-01-15 13:55 4536
f8deb5b9 Poul Sander 2022-01-15 13:55 4537
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 4538
f8deb5b9 Poul Sander 2022-01-15 13:55 4539
    fmt::Writer w;
f8deb5b9 Poul Sander 2022-01-15 13:55 4540
f8deb5b9 Poul Sander 2022-01-15 13:55 4541
  New code: 
f8deb5b9 Poul Sander 2022-01-15 13:55 4542
f8deb5b9 Poul Sander 2022-01-15 13:55 4543
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 4544
f8deb5b9 Poul Sander 2022-01-15 13:55 4545
    fmt::MemoryWriter w;
f8deb5b9 Poul Sander 2022-01-15 13:55 4546
f8deb5b9 Poul Sander 2022-01-15 13:55 4547
  If you pass ``fmt::Writer`` by reference, you can continue to do so:
f8deb5b9 Poul Sander 2022-01-15 13:55 4548
f8deb5b9 Poul Sander 2022-01-15 13:55 4549
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 4550
f8deb5b9 Poul Sander 2022-01-15 13:55 4551
      void f(fmt::Writer &w);
f8deb5b9 Poul Sander 2022-01-15 13:55 4552
f8deb5b9 Poul Sander 2022-01-15 13:55 4553
  This doesn't affect the formatting API.
f8deb5b9 Poul Sander 2022-01-15 13:55 4554
f8deb5b9 Poul Sander 2022-01-15 13:55 4555
* Support for custom memory allocators
f8deb5b9 Poul Sander 2022-01-15 13:55 4556
  (`#69 <https://github.com/fmtlib/fmt/issues/69>`_)
f8deb5b9 Poul Sander 2022-01-15 13:55 4557
f8deb5b9 Poul Sander 2022-01-15 13:55 4558
* Formatting functions now accept `signed char` and `unsigned char` strings as
f8deb5b9 Poul Sander 2022-01-15 13:55 4559
  arguments (`#73 <https://github.com/fmtlib/fmt/issues/73>`_):
f8deb5b9 Poul Sander 2022-01-15 13:55 4560
f8deb5b9 Poul Sander 2022-01-15 13:55 4561
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 4562
f8deb5b9 Poul Sander 2022-01-15 13:55 4563
    auto s = format("GLSL version: {}", glGetString(GL_VERSION));
f8deb5b9 Poul Sander 2022-01-15 13:55 4564
f8deb5b9 Poul Sander 2022-01-15 13:55 4565
* Reduced code bloat. According to the new `benchmark results
f8deb5b9 Poul Sander 2022-01-15 13:55 4566
  <https://github.com/fmtlib/fmt#compile-time-and-code-bloat>`_,
f8deb5b9 Poul Sander 2022-01-15 13:55 4567
  cppformat is close to ``printf`` and by the order of magnitude better than
f8deb5b9 Poul Sander 2022-01-15 13:55 4568
  Boost Format in terms of compiled code size.
f8deb5b9 Poul Sander 2022-01-15 13:55 4569
f8deb5b9 Poul Sander 2022-01-15 13:55 4570
* Improved appearance of the documentation on mobile by using the `Sphinx
f8deb5b9 Poul Sander 2022-01-15 13:55 4571
  Bootstrap theme <http://ryan-roemer.github.io/sphinx-bootstrap-theme/>`_:
f8deb5b9 Poul Sander 2022-01-15 13:55 4572
f8deb5b9 Poul Sander 2022-01-15 13:55 4573
  .. |old| image:: https://cloud.githubusercontent.com/assets/576385/4792130/
f8deb5b9 Poul Sander 2022-01-15 13:55 4574
                   cd256436-5de3-11e4-9a62-c077d0c2b003.png
f8deb5b9 Poul Sander 2022-01-15 13:55 4575
f8deb5b9 Poul Sander 2022-01-15 13:55 4576
  .. |new| image:: https://cloud.githubusercontent.com/assets/576385/4792131/
f8deb5b9 Poul Sander 2022-01-15 13:55 4577
                   cd29896c-5de3-11e4-8f59-cac952942bf0.png
f8deb5b9 Poul Sander 2022-01-15 13:55 4578
  
f8deb5b9 Poul Sander 2022-01-15 13:55 4579
  +-------+-------+
f8deb5b9 Poul Sander 2022-01-15 13:55 4580
  |  Old  |  New  |
f8deb5b9 Poul Sander 2022-01-15 13:55 4581
  +-------+-------+
f8deb5b9 Poul Sander 2022-01-15 13:55 4582
  | |old| | |new| |
f8deb5b9 Poul Sander 2022-01-15 13:55 4583
  +-------+-------+
f8deb5b9 Poul Sander 2022-01-15 13:55 4584
f8deb5b9 Poul Sander 2022-01-15 13:55 4585
0.11.0 - 2014-08-21
f8deb5b9 Poul Sander 2022-01-15 13:55 4586
-------------------
f8deb5b9 Poul Sander 2022-01-15 13:55 4587
f8deb5b9 Poul Sander 2022-01-15 13:55 4588
* Safe printf implementation with a POSIX extension for positional arguments:
f8deb5b9 Poul Sander 2022-01-15 13:55 4589
f8deb5b9 Poul Sander 2022-01-15 13:55 4590
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 4591
f8deb5b9 Poul Sander 2022-01-15 13:55 4592
    fmt::printf("Elapsed time: %.2f seconds", 1.23);
f8deb5b9 Poul Sander 2022-01-15 13:55 4593
    fmt::printf("%1$s, %3$d %2$s", weekday, month, day);
f8deb5b9 Poul Sander 2022-01-15 13:55 4594
f8deb5b9 Poul Sander 2022-01-15 13:55 4595
* Arguments of ``char`` type can now be formatted as integers
f8deb5b9 Poul Sander 2022-01-15 13:55 4596
  (Issue `#55 <https://github.com/fmtlib/fmt/issues/55>`_):
f8deb5b9 Poul Sander 2022-01-15 13:55 4597
f8deb5b9 Poul Sander 2022-01-15 13:55 4598
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 4599
f8deb5b9 Poul Sander 2022-01-15 13:55 4600
    fmt::format("0x{0:02X}", 'a');
f8deb5b9 Poul Sander 2022-01-15 13:55 4601
f8deb5b9 Poul Sander 2022-01-15 13:55 4602
* Deprecated parts of the API removed.
f8deb5b9 Poul Sander 2022-01-15 13:55 4603
f8deb5b9 Poul Sander 2022-01-15 13:55 4604
* The library is now built and tested on MinGW with Appveyor in addition to
f8deb5b9 Poul Sander 2022-01-15 13:55 4605
  existing test platforms Linux/GCC, OS X/Clang, Windows/MSVC.
f8deb5b9 Poul Sander 2022-01-15 13:55 4606
f8deb5b9 Poul Sander 2022-01-15 13:55 4607
0.10.0 - 2014-07-01
f8deb5b9 Poul Sander 2022-01-15 13:55 4608
-------------------
f8deb5b9 Poul Sander 2022-01-15 13:55 4609
f8deb5b9 Poul Sander 2022-01-15 13:55 4610
**Improved API**
f8deb5b9 Poul Sander 2022-01-15 13:55 4611
f8deb5b9 Poul Sander 2022-01-15 13:55 4612
* All formatting methods are now implemented as variadic functions instead
f8deb5b9 Poul Sander 2022-01-15 13:55 4613
  of using ``operator<<`` for feeding arbitrary arguments into a temporary
f8deb5b9 Poul Sander 2022-01-15 13:55 4614
  formatter object. This works both with C++11 where variadic templates are
f8deb5b9 Poul Sander 2022-01-15 13:55 4615
  used and with older standards where variadic functions are emulated by
f8deb5b9 Poul Sander 2022-01-15 13:55 4616
  providing lightweight wrapper functions defined with the ``FMT_VARIADIC``
f8deb5b9 Poul Sander 2022-01-15 13:55 4617
  macro. You can use this macro for defining your own portable variadic
f8deb5b9 Poul Sander 2022-01-15 13:55 4618
  functions:
f8deb5b9 Poul Sander 2022-01-15 13:55 4619
f8deb5b9 Poul Sander 2022-01-15 13:55 4620
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 4621
f8deb5b9 Poul Sander 2022-01-15 13:55 4622
    void report_error(const char *format, const fmt::ArgList &args) {
f8deb5b9 Poul Sander 2022-01-15 13:55 4623
      fmt::print("Error: {}");
f8deb5b9 Poul Sander 2022-01-15 13:55 4624
      fmt::print(format, args);
f8deb5b9 Poul Sander 2022-01-15 13:55 4625
    }
f8deb5b9 Poul Sander 2022-01-15 13:55 4626
    FMT_VARIADIC(void, report_error, const char *)
f8deb5b9 Poul Sander 2022-01-15 13:55 4627
f8deb5b9 Poul Sander 2022-01-15 13:55 4628
    report_error("file not found: {}", path);
f8deb5b9 Poul Sander 2022-01-15 13:55 4629
f8deb5b9 Poul Sander 2022-01-15 13:55 4630
  Apart from a more natural syntax, this also improves performance as there
f8deb5b9 Poul Sander 2022-01-15 13:55 4631
  is no need to construct temporary formatter objects and control arguments'
f8deb5b9 Poul Sander 2022-01-15 13:55 4632
  lifetimes. Because the wrapper functions are very lightweight, this doesn't
f8deb5b9 Poul Sander 2022-01-15 13:55 4633
  cause code bloat even in pre-C++11 mode.
f8deb5b9 Poul Sander 2022-01-15 13:55 4634
f8deb5b9 Poul Sander 2022-01-15 13:55 4635
* Simplified common case of formatting an ``std::string``. Now it requires a
f8deb5b9 Poul Sander 2022-01-15 13:55 4636
  single function call:
f8deb5b9 Poul Sander 2022-01-15 13:55 4637
f8deb5b9 Poul Sander 2022-01-15 13:55 4638
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 4639
f8deb5b9 Poul Sander 2022-01-15 13:55 4640
    std::string s = format("The answer is {}.", 42);
f8deb5b9 Poul Sander 2022-01-15 13:55 4641
f8deb5b9 Poul Sander 2022-01-15 13:55 4642
  Previously it required 2 function calls:
f8deb5b9 Poul Sander 2022-01-15 13:55 4643
f8deb5b9 Poul Sander 2022-01-15 13:55 4644
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 4645
f8deb5b9 Poul Sander 2022-01-15 13:55 4646
    std::string s = str(Format("The answer is {}.") << 42);
f8deb5b9 Poul Sander 2022-01-15 13:55 4647
f8deb5b9 Poul Sander 2022-01-15 13:55 4648
  Instead of unsafe ``c_str`` function, ``fmt::Writer`` should be used directly
f8deb5b9 Poul Sander 2022-01-15 13:55 4649
  to bypass creation of ``std::string``:
f8deb5b9 Poul Sander 2022-01-15 13:55 4650
f8deb5b9 Poul Sander 2022-01-15 13:55 4651
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 4652
f8deb5b9 Poul Sander 2022-01-15 13:55 4653
    fmt::Writer w;
f8deb5b9 Poul Sander 2022-01-15 13:55 4654
    w.write("The answer is {}.", 42);
f8deb5b9 Poul Sander 2022-01-15 13:55 4655
    w.c_str();  // returns a C string
f8deb5b9 Poul Sander 2022-01-15 13:55 4656
f8deb5b9 Poul Sander 2022-01-15 13:55 4657
  This doesn't do dynamic memory allocation for small strings and is less error
f8deb5b9 Poul Sander 2022-01-15 13:55 4658
  prone as the lifetime of the string is the same as for ``std::string::c_str``
f8deb5b9 Poul Sander 2022-01-15 13:55 4659
  which is well understood (hopefully).
f8deb5b9 Poul Sander 2022-01-15 13:55 4660
f8deb5b9 Poul Sander 2022-01-15 13:55 4661
* Improved consistency in naming functions that are a part of the public API.
f8deb5b9 Poul Sander 2022-01-15 13:55 4662
  Now all public functions are lowercase following the standard library
f8deb5b9 Poul Sander 2022-01-15 13:55 4663
  conventions. Previously it was a combination of lowercase and
f8deb5b9 Poul Sander 2022-01-15 13:55 4664
  CapitalizedWords.
f8deb5b9 Poul Sander 2022-01-15 13:55 4665
  Issue `#50 <https://github.com/fmtlib/fmt/issues/50>`_.
f8deb5b9 Poul Sander 2022-01-15 13:55 4666
f8deb5b9 Poul Sander 2022-01-15 13:55 4667
* Old functions are marked as deprecated and will be removed in the next
f8deb5b9 Poul Sander 2022-01-15 13:55 4668
  release.
f8deb5b9 Poul Sander 2022-01-15 13:55 4669
f8deb5b9 Poul Sander 2022-01-15 13:55 4670
**Other Changes**
f8deb5b9 Poul Sander 2022-01-15 13:55 4671
f8deb5b9 Poul Sander 2022-01-15 13:55 4672
* Experimental support for printf format specifications (work in progress):
f8deb5b9 Poul Sander 2022-01-15 13:55 4673
f8deb5b9 Poul Sander 2022-01-15 13:55 4674
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 4675
f8deb5b9 Poul Sander 2022-01-15 13:55 4676
    fmt::printf("The answer is %d.", 42);
f8deb5b9 Poul Sander 2022-01-15 13:55 4677
    std::string s = fmt::sprintf("Look, a %s!", "string");
f8deb5b9 Poul Sander 2022-01-15 13:55 4678
f8deb5b9 Poul Sander 2022-01-15 13:55 4679
* Support for hexadecimal floating point format specifiers ``a`` and ``A``:
f8deb5b9 Poul Sander 2022-01-15 13:55 4680
f8deb5b9 Poul Sander 2022-01-15 13:55 4681
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 4682
f8deb5b9 Poul Sander 2022-01-15 13:55 4683
    print("{:a}", -42.0); // Prints -0x1.5p+5
f8deb5b9 Poul Sander 2022-01-15 13:55 4684
    print("{:A}", -42.0); // Prints -0X1.5P+5
f8deb5b9 Poul Sander 2022-01-15 13:55 4685
f8deb5b9 Poul Sander 2022-01-15 13:55 4686
* CMake option ``FMT_SHARED`` that specifies whether to build format as a
f8deb5b9 Poul Sander 2022-01-15 13:55 4687
  shared library (off by default).
f8deb5b9 Poul Sander 2022-01-15 13:55 4688
f8deb5b9 Poul Sander 2022-01-15 13:55 4689
0.9.0 - 2014-05-13
f8deb5b9 Poul Sander 2022-01-15 13:55 4690
------------------
f8deb5b9 Poul Sander 2022-01-15 13:55 4691
f8deb5b9 Poul Sander 2022-01-15 13:55 4692
* More efficient implementation of variadic formatting functions.
f8deb5b9 Poul Sander 2022-01-15 13:55 4693
f8deb5b9 Poul Sander 2022-01-15 13:55 4694
* ``Writer::Format`` now has a variadic overload:
f8deb5b9 Poul Sander 2022-01-15 13:55 4695
f8deb5b9 Poul Sander 2022-01-15 13:55 4696
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 4697
f8deb5b9 Poul Sander 2022-01-15 13:55 4698
    Writer out;
f8deb5b9 Poul Sander 2022-01-15 13:55 4699
    out.Format("Look, I'm {}!", "variadic");
f8deb5b9 Poul Sander 2022-01-15 13:55 4700
f8deb5b9 Poul Sander 2022-01-15 13:55 4701
* For efficiency and consistency with other overloads, variadic overload of
f8deb5b9 Poul Sander 2022-01-15 13:55 4702
  the ``Format`` function now returns ``Writer`` instead of ``std::string``.
f8deb5b9 Poul Sander 2022-01-15 13:55 4703
  Use the ``str`` function to convert it to ``std::string``:
f8deb5b9 Poul Sander 2022-01-15 13:55 4704
f8deb5b9 Poul Sander 2022-01-15 13:55 4705
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 4706
f8deb5b9 Poul Sander 2022-01-15 13:55 4707
    std::string s = str(Format("Look, I'm {}!", "variadic"));
f8deb5b9 Poul Sander 2022-01-15 13:55 4708
f8deb5b9 Poul Sander 2022-01-15 13:55 4709
* Replaced formatter actions with output sinks: ``NoAction`` -> ``NullSink``,
f8deb5b9 Poul Sander 2022-01-15 13:55 4710
  ``Write`` -> ``FileSink``, ``ColorWriter`` -> ``ANSITerminalSink``.
f8deb5b9 Poul Sander 2022-01-15 13:55 4711
  This improves naming consistency and shouldn't affect client code unless
f8deb5b9 Poul Sander 2022-01-15 13:55 4712
  these classes are used directly which should be rarely needed.
f8deb5b9 Poul Sander 2022-01-15 13:55 4713
f8deb5b9 Poul Sander 2022-01-15 13:55 4714
* Added ``ThrowSystemError`` function that formats a message and throws
f8deb5b9 Poul Sander 2022-01-15 13:55 4715
  ``SystemError`` containing the formatted message and system-specific error
f8deb5b9 Poul Sander 2022-01-15 13:55 4716
  description. For example, the following code
f8deb5b9 Poul Sander 2022-01-15 13:55 4717
f8deb5b9 Poul Sander 2022-01-15 13:55 4718
  .. code:: c++
f8deb5b9 Poul Sander 2022-01-15 13:55 4719
f8deb5b9 Poul Sander 2022-01-15 13:55 4720
    FILE *f = fopen(filename, "r");
f8deb5b9 Poul Sander 2022-01-15 13:55 4721
    if (!f)
f8deb5b9 Poul Sander 2022-01-15 13:55 4722
      ThrowSystemError(errno, "Failed to open file '{}'") << filename;
f8deb5b9 Poul Sander 2022-01-15 13:55 4723
f8deb5b9 Poul Sander 2022-01-15 13:55 4724
  will throw ``SystemError`` exception with description
f8deb5b9 Poul Sander 2022-01-15 13:55 4725
  "Failed to open file '<filename>': No such file or directory" if file
f8deb5b9 Poul Sander 2022-01-15 13:55 4726
  doesn't exist.
f8deb5b9 Poul Sander 2022-01-15 13:55 4727
f8deb5b9 Poul Sander 2022-01-15 13:55 4728
* Support for AppVeyor continuous integration platform.
f8deb5b9 Poul Sander 2022-01-15 13:55 4729
f8deb5b9 Poul Sander 2022-01-15 13:55 4730
* ``Format`` now throws ``SystemError`` in case of I/O errors.
f8deb5b9 Poul Sander 2022-01-15 13:55 4731
f8deb5b9 Poul Sander 2022-01-15 13:55 4732
* Improve test infrastructure. Print functions are now tested by redirecting
f8deb5b9 Poul Sander 2022-01-15 13:55 4733
  the output to a pipe.
f8deb5b9 Poul Sander 2022-01-15 13:55 4734
f8deb5b9 Poul Sander 2022-01-15 13:55 4735
0.8.0 - 2014-04-14
f8deb5b9 Poul Sander 2022-01-15 13:55 4736
------------------
f8deb5b9 Poul Sander 2022-01-15 13:55 4737
f8deb5b9 Poul Sander 2022-01-15 13:55 4738
* Initial release
1970-01-01 00:00 4739