git repos / blockattack-game

blame: source/misc/embedded_libs/fmt-11.0.2/doc/ChangeLog-old.md

normal view · raw

47fd5c32 Poul Sander 2024-10-05 08:44 1
# 7.1.3 - 2020-11-24
47fd5c32 Poul Sander 2024-10-05 08:44 2
47fd5c32 Poul Sander 2024-10-05 08:44 3
- Fixed handling of buffer boundaries in `format_to_n`
47fd5c32 Poul Sander 2024-10-05 08:44 4
  (https://github.com/fmtlib/fmt/issues/1996,
47fd5c32 Poul Sander 2024-10-05 08:44 5
  https://github.com/fmtlib/fmt/issues/2029).
47fd5c32 Poul Sander 2024-10-05 08:44 6
- Fixed linkage errors when linking with a shared library
47fd5c32 Poul Sander 2024-10-05 08:44 7
  (https://github.com/fmtlib/fmt/issues/2011).
47fd5c32 Poul Sander 2024-10-05 08:44 8
- Reintroduced ostream support to range formatters
47fd5c32 Poul Sander 2024-10-05 08:44 9
  (https://github.com/fmtlib/fmt/issues/2014).
47fd5c32 Poul Sander 2024-10-05 08:44 10
- Worked around an issue with mixing std versions in gcc
47fd5c32 Poul Sander 2024-10-05 08:44 11
  (https://github.com/fmtlib/fmt/issues/2017).
47fd5c32 Poul Sander 2024-10-05 08:44 12
47fd5c32 Poul Sander 2024-10-05 08:44 13
# 7.1.2 - 2020-11-04
47fd5c32 Poul Sander 2024-10-05 08:44 14
47fd5c32 Poul Sander 2024-10-05 08:44 15
- Fixed floating point formatting with large precision
47fd5c32 Poul Sander 2024-10-05 08:44 16
  (https://github.com/fmtlib/fmt/issues/1976).
47fd5c32 Poul Sander 2024-10-05 08:44 17
47fd5c32 Poul Sander 2024-10-05 08:44 18
# 7.1.1 - 2020-11-01
47fd5c32 Poul Sander 2024-10-05 08:44 19
47fd5c32 Poul Sander 2024-10-05 08:44 20
- Fixed ABI compatibility with 7.0.x
47fd5c32 Poul Sander 2024-10-05 08:44 21
  (https://github.com/fmtlib/fmt/issues/1961).
47fd5c32 Poul Sander 2024-10-05 08:44 22
- Added the `FMT_ARM_ABI_COMPATIBILITY` macro to work around ABI
47fd5c32 Poul Sander 2024-10-05 08:44 23
  incompatibility between GCC and Clang on ARM
47fd5c32 Poul Sander 2024-10-05 08:44 24
  (https://github.com/fmtlib/fmt/issues/1919).
47fd5c32 Poul Sander 2024-10-05 08:44 25
- Worked around a SFINAE bug in GCC 8
47fd5c32 Poul Sander 2024-10-05 08:44 26
  (https://github.com/fmtlib/fmt/issues/1957).
47fd5c32 Poul Sander 2024-10-05 08:44 27
- Fixed linkage errors when building with GCC\'s LTO
47fd5c32 Poul Sander 2024-10-05 08:44 28
  (https://github.com/fmtlib/fmt/issues/1955).
47fd5c32 Poul Sander 2024-10-05 08:44 29
- Fixed a compilation error when building without `__builtin_clz` or
47fd5c32 Poul Sander 2024-10-05 08:44 30
  equivalent (https://github.com/fmtlib/fmt/pull/1968).
47fd5c32 Poul Sander 2024-10-05 08:44 31
  Thanks @tohammer.
47fd5c32 Poul Sander 2024-10-05 08:44 32
- Fixed a sign conversion warning
47fd5c32 Poul Sander 2024-10-05 08:44 33
  (https://github.com/fmtlib/fmt/pull/1964). Thanks @OptoCloud.
47fd5c32 Poul Sander 2024-10-05 08:44 34
47fd5c32 Poul Sander 2024-10-05 08:44 35
# 7.1.0 - 2020-10-25
47fd5c32 Poul Sander 2024-10-05 08:44 36
47fd5c32 Poul Sander 2024-10-05 08:44 37
- Switched from
47fd5c32 Poul Sander 2024-10-05 08:44 38
  [Grisu3](https://www.cs.tufts.edu/~nr/cs257/archive/florian-loitsch/printf.pdf)
47fd5c32 Poul Sander 2024-10-05 08:44 39
  to [Dragonbox](https://github.com/jk-jeon/dragonbox) for the default
47fd5c32 Poul Sander 2024-10-05 08:44 40
  floating-point formatting which gives the shortest decimal
47fd5c32 Poul Sander 2024-10-05 08:44 41
  representation with round-trip guarantee and correct rounding
47fd5c32 Poul Sander 2024-10-05 08:44 42
  (https://github.com/fmtlib/fmt/pull/1882,
47fd5c32 Poul Sander 2024-10-05 08:44 43
  https://github.com/fmtlib/fmt/pull/1887,
47fd5c32 Poul Sander 2024-10-05 08:44 44
  https://github.com/fmtlib/fmt/pull/1894). This makes {fmt}
47fd5c32 Poul Sander 2024-10-05 08:44 45
  up to 20-30x faster than common implementations of
47fd5c32 Poul Sander 2024-10-05 08:44 46
  `std::ostringstream` and `sprintf` on
47fd5c32 Poul Sander 2024-10-05 08:44 47
  [dtoa-benchmark](https://github.com/fmtlib/dtoa-benchmark) and
47fd5c32 Poul Sander 2024-10-05 08:44 48
  faster than double-conversion and Ryƫ:
47fd5c32 Poul Sander 2024-10-05 08:44 49
47fd5c32 Poul Sander 2024-10-05 08:44 50
  ![](https://user-images.githubusercontent.com/576385/95684665-11719600-0ba8-11eb-8e5b-972ff4e49428.png)
47fd5c32 Poul Sander 2024-10-05 08:44 51
47fd5c32 Poul Sander 2024-10-05 08:44 52
  It is possible to get even better performance at the cost of larger
47fd5c32 Poul Sander 2024-10-05 08:44 53
  binary size by compiling with the `FMT_USE_FULL_CACHE_DRAGONBOX`
47fd5c32 Poul Sander 2024-10-05 08:44 54
  macro set to 1.
47fd5c32 Poul Sander 2024-10-05 08:44 55
47fd5c32 Poul Sander 2024-10-05 08:44 56
  Thanks @jk-jeon.
47fd5c32 Poul Sander 2024-10-05 08:44 57
47fd5c32 Poul Sander 2024-10-05 08:44 58
- Added an experimental unsynchronized file output API which, together
47fd5c32 Poul Sander 2024-10-05 08:44 59
  with [format string
47fd5c32 Poul Sander 2024-10-05 08:44 60
  compilation](https://fmt.dev/latest/api.html#compile-api), can give
47fd5c32 Poul Sander 2024-10-05 08:44 61
  [5-9 times speed up compared to
47fd5c32 Poul Sander 2024-10-05 08:44 62
  fprintf](https://www.zverovich.net/2020/08/04/optimal-file-buffer-size.html)
47fd5c32 Poul Sander 2024-10-05 08:44 63
  on common platforms ([godbolt](https://godbolt.org/z/nsTcG8)):
47fd5c32 Poul Sander 2024-10-05 08:44 64
47fd5c32 Poul Sander 2024-10-05 08:44 65
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 66
  #include <fmt/os.h>
47fd5c32 Poul Sander 2024-10-05 08:44 67
47fd5c32 Poul Sander 2024-10-05 08:44 68
  int main() {
47fd5c32 Poul Sander 2024-10-05 08:44 69
    auto f = fmt::output_file("guide");
47fd5c32 Poul Sander 2024-10-05 08:44 70
    f.print("The answer is {}.", 42);
47fd5c32 Poul Sander 2024-10-05 08:44 71
  }
47fd5c32 Poul Sander 2024-10-05 08:44 72
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 73
47fd5c32 Poul Sander 2024-10-05 08:44 74
- Added a formatter for `std::chrono::time_point<system_clock>`
47fd5c32 Poul Sander 2024-10-05 08:44 75
  (https://github.com/fmtlib/fmt/issues/1819,
47fd5c32 Poul Sander 2024-10-05 08:44 76
  https://github.com/fmtlib/fmt/pull/1837). For example
47fd5c32 Poul Sander 2024-10-05 08:44 77
  ([godbolt](https://godbolt.org/z/c4M6fh)):
47fd5c32 Poul Sander 2024-10-05 08:44 78
47fd5c32 Poul Sander 2024-10-05 08:44 79
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 80
  #include <fmt/chrono.h>
47fd5c32 Poul Sander 2024-10-05 08:44 81
47fd5c32 Poul Sander 2024-10-05 08:44 82
  int main() {
47fd5c32 Poul Sander 2024-10-05 08:44 83
    auto now = std::chrono::system_clock::now();
47fd5c32 Poul Sander 2024-10-05 08:44 84
    fmt::print("The time is {:%H:%M:%S}.\n", now);
47fd5c32 Poul Sander 2024-10-05 08:44 85
  }
47fd5c32 Poul Sander 2024-10-05 08:44 86
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 87
47fd5c32 Poul Sander 2024-10-05 08:44 88
  Thanks @adamburgess.
47fd5c32 Poul Sander 2024-10-05 08:44 89
47fd5c32 Poul Sander 2024-10-05 08:44 90
- Added support for ranges with non-const `begin`/`end` to `fmt::join`
47fd5c32 Poul Sander 2024-10-05 08:44 91
  (https://github.com/fmtlib/fmt/issues/1784,
47fd5c32 Poul Sander 2024-10-05 08:44 92
  https://github.com/fmtlib/fmt/pull/1786). For example
47fd5c32 Poul Sander 2024-10-05 08:44 93
  ([godbolt](https://godbolt.org/z/jP63Tv)):
47fd5c32 Poul Sander 2024-10-05 08:44 94
47fd5c32 Poul Sander 2024-10-05 08:44 95
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 96
  #include <fmt/ranges.h>
47fd5c32 Poul Sander 2024-10-05 08:44 97
  #include <range/v3/view/filter.hpp>
47fd5c32 Poul Sander 2024-10-05 08:44 98
47fd5c32 Poul Sander 2024-10-05 08:44 99
  int main() {
47fd5c32 Poul Sander 2024-10-05 08:44 100
    using std::literals::string_literals::operator""s;
47fd5c32 Poul Sander 2024-10-05 08:44 101
    auto strs = std::array{"a"s, "bb"s, "ccc"s};
47fd5c32 Poul Sander 2024-10-05 08:44 102
    auto range = strs | ranges::views::filter(
47fd5c32 Poul Sander 2024-10-05 08:44 103
      [] (const std::string &x) { return x.size() != 2; }
47fd5c32 Poul Sander 2024-10-05 08:44 104
    );
47fd5c32 Poul Sander 2024-10-05 08:44 105
    fmt::print("{}\n", fmt::join(range, ""));
47fd5c32 Poul Sander 2024-10-05 08:44 106
  }
47fd5c32 Poul Sander 2024-10-05 08:44 107
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 108
47fd5c32 Poul Sander 2024-10-05 08:44 109
  prints \"accc\".
47fd5c32 Poul Sander 2024-10-05 08:44 110
47fd5c32 Poul Sander 2024-10-05 08:44 111
  Thanks @tonyelewis.
47fd5c32 Poul Sander 2024-10-05 08:44 112
47fd5c32 Poul Sander 2024-10-05 08:44 113
- Added a `memory_buffer::append` overload that takes a range
47fd5c32 Poul Sander 2024-10-05 08:44 114
  (https://github.com/fmtlib/fmt/pull/1806). Thanks @BRevzin.
47fd5c32 Poul Sander 2024-10-05 08:44 115
47fd5c32 Poul Sander 2024-10-05 08:44 116
- Improved handling of single code units in `FMT_COMPILE`. For
47fd5c32 Poul Sander 2024-10-05 08:44 117
  example:
47fd5c32 Poul Sander 2024-10-05 08:44 118
47fd5c32 Poul Sander 2024-10-05 08:44 119
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 120
  #include <fmt/compile.h>
47fd5c32 Poul Sander 2024-10-05 08:44 121
47fd5c32 Poul Sander 2024-10-05 08:44 122
  char* f(char* buf) {
47fd5c32 Poul Sander 2024-10-05 08:44 123
    return fmt::format_to(buf, FMT_COMPILE("x{}"), 42);
47fd5c32 Poul Sander 2024-10-05 08:44 124
  }
47fd5c32 Poul Sander 2024-10-05 08:44 125
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 126
47fd5c32 Poul Sander 2024-10-05 08:44 127
  compiles to just ([godbolt](https://godbolt.org/z/5vncz3)):
47fd5c32 Poul Sander 2024-10-05 08:44 128
47fd5c32 Poul Sander 2024-10-05 08:44 129
  ```asm
47fd5c32 Poul Sander 2024-10-05 08:44 130
  _Z1fPc:
47fd5c32 Poul Sander 2024-10-05 08:44 131
    movb $120, (%rdi)
47fd5c32 Poul Sander 2024-10-05 08:44 132
    xorl %edx, %edx
47fd5c32 Poul Sander 2024-10-05 08:44 133
    cmpl $42, _ZN3fmt2v76detail10basic_dataIvE23zero_or_powers_of_10_32E+8(%rip)
47fd5c32 Poul Sander 2024-10-05 08:44 134
    movl $3, %eax
47fd5c32 Poul Sander 2024-10-05 08:44 135
    seta %dl
47fd5c32 Poul Sander 2024-10-05 08:44 136
    subl %edx, %eax
47fd5c32 Poul Sander 2024-10-05 08:44 137
    movzwl _ZN3fmt2v76detail10basic_dataIvE6digitsE+84(%rip), %edx
47fd5c32 Poul Sander 2024-10-05 08:44 138
    cltq
47fd5c32 Poul Sander 2024-10-05 08:44 139
    addq %rdi, %rax
47fd5c32 Poul Sander 2024-10-05 08:44 140
    movw %dx, -2(%rax)
47fd5c32 Poul Sander 2024-10-05 08:44 141
    ret
47fd5c32 Poul Sander 2024-10-05 08:44 142
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 143
47fd5c32 Poul Sander 2024-10-05 08:44 144
  Here a single `mov` instruction writes `'x'` (`$120`) to the output
47fd5c32 Poul Sander 2024-10-05 08:44 145
  buffer.
47fd5c32 Poul Sander 2024-10-05 08:44 146
47fd5c32 Poul Sander 2024-10-05 08:44 147
- Added dynamic width support to format string compilation
47fd5c32 Poul Sander 2024-10-05 08:44 148
  (https://github.com/fmtlib/fmt/issues/1809).
47fd5c32 Poul Sander 2024-10-05 08:44 149
47fd5c32 Poul Sander 2024-10-05 08:44 150
- Improved error reporting for unformattable types: now you\'ll get
47fd5c32 Poul Sander 2024-10-05 08:44 151
  the type name directly in the error message instead of the note:
47fd5c32 Poul Sander 2024-10-05 08:44 152
47fd5c32 Poul Sander 2024-10-05 08:44 153
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 154
  #include <fmt/core.h>
47fd5c32 Poul Sander 2024-10-05 08:44 155
47fd5c32 Poul Sander 2024-10-05 08:44 156
  struct how_about_no {};
47fd5c32 Poul Sander 2024-10-05 08:44 157
47fd5c32 Poul Sander 2024-10-05 08:44 158
  int main() {
47fd5c32 Poul Sander 2024-10-05 08:44 159
    fmt::print("{}", how_about_no());
47fd5c32 Poul Sander 2024-10-05 08:44 160
  }
47fd5c32 Poul Sander 2024-10-05 08:44 161
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 162
47fd5c32 Poul Sander 2024-10-05 08:44 163
  Error ([godbolt](https://godbolt.org/z/GoxM4e)):
47fd5c32 Poul Sander 2024-10-05 08:44 164
47fd5c32 Poul Sander 2024-10-05 08:44 165
  `fmt/core.h:1438:3: error: static_assert failed due to requirement 'fmt::v7::formattable<how_about_no>()' "Cannot format an argument. To make type T formattable provide a formatter<T> specialization: https://fmt.dev/latest/api.html#udt" ...`
47fd5c32 Poul Sander 2024-10-05 08:44 166
47fd5c32 Poul Sander 2024-10-05 08:44 167
- Added the
47fd5c32 Poul Sander 2024-10-05 08:44 168
  [make_args_checked](https://fmt.dev/7.1.0/api.html#argument-lists)
47fd5c32 Poul Sander 2024-10-05 08:44 169
  function template that allows you to write formatting functions with
47fd5c32 Poul Sander 2024-10-05 08:44 170
  compile-time format string checks and avoid binary code bloat
47fd5c32 Poul Sander 2024-10-05 08:44 171
  ([godbolt](https://godbolt.org/z/PEf9qr)):
47fd5c32 Poul Sander 2024-10-05 08:44 172
47fd5c32 Poul Sander 2024-10-05 08:44 173
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 174
  void vlog(const char* file, int line, fmt::string_view format,
47fd5c32 Poul Sander 2024-10-05 08:44 175
            fmt::format_args args) {
47fd5c32 Poul Sander 2024-10-05 08:44 176
    fmt::print("{}: {}: ", file, line);
47fd5c32 Poul Sander 2024-10-05 08:44 177
    fmt::vprint(format, args);
47fd5c32 Poul Sander 2024-10-05 08:44 178
  }
47fd5c32 Poul Sander 2024-10-05 08:44 179
47fd5c32 Poul Sander 2024-10-05 08:44 180
  template <typename S, typename... Args>
47fd5c32 Poul Sander 2024-10-05 08:44 181
  void log(const char* file, int line, const S& format, Args&&... args) {
47fd5c32 Poul Sander 2024-10-05 08:44 182
    vlog(file, line, format,
47fd5c32 Poul Sander 2024-10-05 08:44 183
        fmt::make_args_checked<Args...>(format, args...));
47fd5c32 Poul Sander 2024-10-05 08:44 184
  }
47fd5c32 Poul Sander 2024-10-05 08:44 185
47fd5c32 Poul Sander 2024-10-05 08:44 186
  #define MY_LOG(format, ...) \
47fd5c32 Poul Sander 2024-10-05 08:44 187
    log(__FILE__, __LINE__, FMT_STRING(format), __VA_ARGS__)
47fd5c32 Poul Sander 2024-10-05 08:44 188
47fd5c32 Poul Sander 2024-10-05 08:44 189
  MY_LOG("invalid squishiness: {}", 42);
47fd5c32 Poul Sander 2024-10-05 08:44 190
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 191
47fd5c32 Poul Sander 2024-10-05 08:44 192
- Replaced `snprintf` fallback with a faster internal IEEE 754 `float`
47fd5c32 Poul Sander 2024-10-05 08:44 193
  and `double` formatter for arbitrary precision. For example
47fd5c32 Poul Sander 2024-10-05 08:44 194
  ([godbolt](https://godbolt.org/z/dPhWvj)):
47fd5c32 Poul Sander 2024-10-05 08:44 195
47fd5c32 Poul Sander 2024-10-05 08:44 196
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 197
  #include <fmt/core.h>
47fd5c32 Poul Sander 2024-10-05 08:44 198
47fd5c32 Poul Sander 2024-10-05 08:44 199
  int main() {
47fd5c32 Poul Sander 2024-10-05 08:44 200
    fmt::print("{:.500}\n", 4.9406564584124654E-324);
47fd5c32 Poul Sander 2024-10-05 08:44 201
  }
47fd5c32 Poul Sander 2024-10-05 08:44 202
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 203
47fd5c32 Poul Sander 2024-10-05 08:44 204
  prints
47fd5c32 Poul Sander 2024-10-05 08:44 205
47fd5c32 Poul Sander 2024-10-05 08:44 206
  `4.9406564584124654417656879286822137236505980261432476442558568250067550727020875186529983636163599237979656469544571773092665671035593979639877479601078187812630071319031140452784581716784898210368871863605699873072305000638740915356498438731247339727316961514003171538539807412623856559117102665855668676818703956031062493194527159149245532930545654440112748012970999954193198940908041656332452475714786901472678015935523861155013480352649347201937902681071074917033322268447533357208324319360923829e-324`.
47fd5c32 Poul Sander 2024-10-05 08:44 207
47fd5c32 Poul Sander 2024-10-05 08:44 208
- Made `format_to_n` and `formatted_size` part of the [core
47fd5c32 Poul Sander 2024-10-05 08:44 209
  API](https://fmt.dev/latest/api.html#core-api)
47fd5c32 Poul Sander 2024-10-05 08:44 210
  ([godbolt](https://godbolt.org/z/sPjY1K)):
47fd5c32 Poul Sander 2024-10-05 08:44 211
47fd5c32 Poul Sander 2024-10-05 08:44 212
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 213
  #include <fmt/core.h>
47fd5c32 Poul Sander 2024-10-05 08:44 214
47fd5c32 Poul Sander 2024-10-05 08:44 215
  int main() {
47fd5c32 Poul Sander 2024-10-05 08:44 216
    char buffer[10];
47fd5c32 Poul Sander 2024-10-05 08:44 217
    auto result = fmt::format_to_n(buffer, sizeof(buffer), "{}", 42);
47fd5c32 Poul Sander 2024-10-05 08:44 218
  }
47fd5c32 Poul Sander 2024-10-05 08:44 219
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 220
47fd5c32 Poul Sander 2024-10-05 08:44 221
- Added `fmt::format_to_n` overload with format string compilation
47fd5c32 Poul Sander 2024-10-05 08:44 222
  (https://github.com/fmtlib/fmt/issues/1764,
47fd5c32 Poul Sander 2024-10-05 08:44 223
  https://github.com/fmtlib/fmt/pull/1767,
47fd5c32 Poul Sander 2024-10-05 08:44 224
  https://github.com/fmtlib/fmt/pull/1869). For example
47fd5c32 Poul Sander 2024-10-05 08:44 225
  ([godbolt](https://godbolt.org/z/93h86q)):
47fd5c32 Poul Sander 2024-10-05 08:44 226
47fd5c32 Poul Sander 2024-10-05 08:44 227
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 228
  #include <fmt/compile.h>
47fd5c32 Poul Sander 2024-10-05 08:44 229
47fd5c32 Poul Sander 2024-10-05 08:44 230
  int main() {
47fd5c32 Poul Sander 2024-10-05 08:44 231
    char buffer[8];
47fd5c32 Poul Sander 2024-10-05 08:44 232
    fmt::format_to_n(buffer, sizeof(buffer), FMT_COMPILE("{}"), 42);
47fd5c32 Poul Sander 2024-10-05 08:44 233
  }
47fd5c32 Poul Sander 2024-10-05 08:44 234
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 235
47fd5c32 Poul Sander 2024-10-05 08:44 236
  Thanks @Kurkin and @alexezeder.
47fd5c32 Poul Sander 2024-10-05 08:44 237
47fd5c32 Poul Sander 2024-10-05 08:44 238
- Added `fmt::format_to` overload that take `text_style`
47fd5c32 Poul Sander 2024-10-05 08:44 239
  (https://github.com/fmtlib/fmt/issues/1593,
47fd5c32 Poul Sander 2024-10-05 08:44 240
  https://github.com/fmtlib/fmt/issues/1842,
47fd5c32 Poul Sander 2024-10-05 08:44 241
  https://github.com/fmtlib/fmt/pull/1843). For example
47fd5c32 Poul Sander 2024-10-05 08:44 242
  ([godbolt](https://godbolt.org/z/91153r)):
47fd5c32 Poul Sander 2024-10-05 08:44 243
47fd5c32 Poul Sander 2024-10-05 08:44 244
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 245
  #include <fmt/color.h>
47fd5c32 Poul Sander 2024-10-05 08:44 246
47fd5c32 Poul Sander 2024-10-05 08:44 247
  int main() {
47fd5c32 Poul Sander 2024-10-05 08:44 248
    std::string out;
47fd5c32 Poul Sander 2024-10-05 08:44 249
    fmt::format_to(std::back_inserter(out),
47fd5c32 Poul Sander 2024-10-05 08:44 250
                   fmt::emphasis::bold | fg(fmt::color::red),
47fd5c32 Poul Sander 2024-10-05 08:44 251
                   "The answer is {}.", 42);
47fd5c32 Poul Sander 2024-10-05 08:44 252
  }
47fd5c32 Poul Sander 2024-10-05 08:44 253
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 254
47fd5c32 Poul Sander 2024-10-05 08:44 255
  Thanks @Naios.
47fd5c32 Poul Sander 2024-10-05 08:44 256
47fd5c32 Poul Sander 2024-10-05 08:44 257
- Made the `'#'` specifier emit trailing zeros in addition to the
47fd5c32 Poul Sander 2024-10-05 08:44 258
  decimal point (https://github.com/fmtlib/fmt/issues/1797).
47fd5c32 Poul Sander 2024-10-05 08:44 259
  For example ([godbolt](https://godbolt.org/z/bhdcW9)):
47fd5c32 Poul Sander 2024-10-05 08:44 260
47fd5c32 Poul Sander 2024-10-05 08:44 261
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 262
  #include <fmt/core.h>
47fd5c32 Poul Sander 2024-10-05 08:44 263
47fd5c32 Poul Sander 2024-10-05 08:44 264
  int main() {
47fd5c32 Poul Sander 2024-10-05 08:44 265
    fmt::print("{:#.2g}", 0.5);
47fd5c32 Poul Sander 2024-10-05 08:44 266
  }
47fd5c32 Poul Sander 2024-10-05 08:44 267
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 268
47fd5c32 Poul Sander 2024-10-05 08:44 269
  prints `0.50`.
47fd5c32 Poul Sander 2024-10-05 08:44 270
47fd5c32 Poul Sander 2024-10-05 08:44 271
- Changed the default floating point format to not include `.0` for
47fd5c32 Poul Sander 2024-10-05 08:44 272
  consistency with `std::format` and `std::to_chars`
47fd5c32 Poul Sander 2024-10-05 08:44 273
  (https://github.com/fmtlib/fmt/issues/1893,
47fd5c32 Poul Sander 2024-10-05 08:44 274
  https://github.com/fmtlib/fmt/issues/1943). It is possible
47fd5c32 Poul Sander 2024-10-05 08:44 275
  to get the decimal point and trailing zero with the `#` specifier.
47fd5c32 Poul Sander 2024-10-05 08:44 276
47fd5c32 Poul Sander 2024-10-05 08:44 277
- Fixed an issue with floating-point formatting that could result in
47fd5c32 Poul Sander 2024-10-05 08:44 278
  addition of a non-significant trailing zero in rare cases e.g.
47fd5c32 Poul Sander 2024-10-05 08:44 279
  `1.00e-34` instead of `1.0e-34`
47fd5c32 Poul Sander 2024-10-05 08:44 280
  (https://github.com/fmtlib/fmt/issues/1873,
47fd5c32 Poul Sander 2024-10-05 08:44 281
  https://github.com/fmtlib/fmt/issues/1917).
47fd5c32 Poul Sander 2024-10-05 08:44 282
47fd5c32 Poul Sander 2024-10-05 08:44 283
- Made `fmt::to_string` fallback on `ostream` insertion operator if
47fd5c32 Poul Sander 2024-10-05 08:44 284
  the `formatter` specialization is not provided
47fd5c32 Poul Sander 2024-10-05 08:44 285
  (https://github.com/fmtlib/fmt/issues/1815,
47fd5c32 Poul Sander 2024-10-05 08:44 286
  https://github.com/fmtlib/fmt/pull/1829). Thanks @alexezeder.
47fd5c32 Poul Sander 2024-10-05 08:44 287
47fd5c32 Poul Sander 2024-10-05 08:44 288
- Added support for the append mode to the experimental file API and
47fd5c32 Poul Sander 2024-10-05 08:44 289
  improved `fcntl.h` detection.
47fd5c32 Poul Sander 2024-10-05 08:44 290
  (https://github.com/fmtlib/fmt/pull/1847,
47fd5c32 Poul Sander 2024-10-05 08:44 291
  https://github.com/fmtlib/fmt/pull/1848). Thanks @t-wiser.
47fd5c32 Poul Sander 2024-10-05 08:44 292
47fd5c32 Poul Sander 2024-10-05 08:44 293
- Fixed handling of types that have both an implicit conversion
47fd5c32 Poul Sander 2024-10-05 08:44 294
  operator and an overloaded `ostream` insertion operator
47fd5c32 Poul Sander 2024-10-05 08:44 295
  (https://github.com/fmtlib/fmt/issues/1766).
47fd5c32 Poul Sander 2024-10-05 08:44 296
47fd5c32 Poul Sander 2024-10-05 08:44 297
- Fixed a slicing issue in an internal iterator type
47fd5c32 Poul Sander 2024-10-05 08:44 298
  (https://github.com/fmtlib/fmt/pull/1822). Thanks @BRevzin.
47fd5c32 Poul Sander 2024-10-05 08:44 299
47fd5c32 Poul Sander 2024-10-05 08:44 300
- Fixed an issue in locale-specific integer formatting
47fd5c32 Poul Sander 2024-10-05 08:44 301
  (https://github.com/fmtlib/fmt/issues/1927).
47fd5c32 Poul Sander 2024-10-05 08:44 302
47fd5c32 Poul Sander 2024-10-05 08:44 303
- Fixed handling of exotic code unit types
47fd5c32 Poul Sander 2024-10-05 08:44 304
  (https://github.com/fmtlib/fmt/issues/1870,
47fd5c32 Poul Sander 2024-10-05 08:44 305
  https://github.com/fmtlib/fmt/issues/1932).
47fd5c32 Poul Sander 2024-10-05 08:44 306
47fd5c32 Poul Sander 2024-10-05 08:44 307
- Improved `FMT_ALWAYS_INLINE`
47fd5c32 Poul Sander 2024-10-05 08:44 308
  (https://github.com/fmtlib/fmt/pull/1878). Thanks @jk-jeon.
47fd5c32 Poul Sander 2024-10-05 08:44 309
47fd5c32 Poul Sander 2024-10-05 08:44 310
- Removed dependency on `windows.h`
47fd5c32 Poul Sander 2024-10-05 08:44 311
  (https://github.com/fmtlib/fmt/pull/1900). Thanks @bernd5.
47fd5c32 Poul Sander 2024-10-05 08:44 312
47fd5c32 Poul Sander 2024-10-05 08:44 313
- Optimized counting of decimal digits on MSVC
47fd5c32 Poul Sander 2024-10-05 08:44 314
  (https://github.com/fmtlib/fmt/pull/1890). Thanks @mwinterb.
47fd5c32 Poul Sander 2024-10-05 08:44 315
47fd5c32 Poul Sander 2024-10-05 08:44 316
- Improved documentation
47fd5c32 Poul Sander 2024-10-05 08:44 317
  (https://github.com/fmtlib/fmt/issues/1772,
47fd5c32 Poul Sander 2024-10-05 08:44 318
  https://github.com/fmtlib/fmt/pull/1775,
47fd5c32 Poul Sander 2024-10-05 08:44 319
  https://github.com/fmtlib/fmt/pull/1792,
47fd5c32 Poul Sander 2024-10-05 08:44 320
  https://github.com/fmtlib/fmt/pull/1838,
47fd5c32 Poul Sander 2024-10-05 08:44 321
  https://github.com/fmtlib/fmt/pull/1888,
47fd5c32 Poul Sander 2024-10-05 08:44 322
  https://github.com/fmtlib/fmt/pull/1918,
47fd5c32 Poul Sander 2024-10-05 08:44 323
  https://github.com/fmtlib/fmt/pull/1939).
47fd5c32 Poul Sander 2024-10-05 08:44 324
  Thanks @leolchat, @pepsiman, @Klaim, @ravijanjam, @francesco-st and @udnaan.
47fd5c32 Poul Sander 2024-10-05 08:44 325
47fd5c32 Poul Sander 2024-10-05 08:44 326
- Added the `FMT_REDUCE_INT_INSTANTIATIONS` CMake option that reduces
47fd5c32 Poul Sander 2024-10-05 08:44 327
  the binary code size at the cost of some integer formatting
47fd5c32 Poul Sander 2024-10-05 08:44 328
  performance. This can be useful for extremely memory-constrained
47fd5c32 Poul Sander 2024-10-05 08:44 329
  embedded systems
47fd5c32 Poul Sander 2024-10-05 08:44 330
  (https://github.com/fmtlib/fmt/issues/1778,
47fd5c32 Poul Sander 2024-10-05 08:44 331
  https://github.com/fmtlib/fmt/pull/1781). Thanks @kammce.
47fd5c32 Poul Sander 2024-10-05 08:44 332
47fd5c32 Poul Sander 2024-10-05 08:44 333
- Added the `FMT_USE_INLINE_NAMESPACES` macro to control usage of
47fd5c32 Poul Sander 2024-10-05 08:44 334
  inline namespaces
47fd5c32 Poul Sander 2024-10-05 08:44 335
  (https://github.com/fmtlib/fmt/pull/1945). Thanks @darklukee.
47fd5c32 Poul Sander 2024-10-05 08:44 336
47fd5c32 Poul Sander 2024-10-05 08:44 337
- Improved build configuration
47fd5c32 Poul Sander 2024-10-05 08:44 338
  (https://github.com/fmtlib/fmt/pull/1760,
47fd5c32 Poul Sander 2024-10-05 08:44 339
  https://github.com/fmtlib/fmt/pull/1770,
47fd5c32 Poul Sander 2024-10-05 08:44 340
  https://github.com/fmtlib/fmt/issues/1779,
47fd5c32 Poul Sander 2024-10-05 08:44 341
  https://github.com/fmtlib/fmt/pull/1783,
47fd5c32 Poul Sander 2024-10-05 08:44 342
  https://github.com/fmtlib/fmt/pull/1823).
47fd5c32 Poul Sander 2024-10-05 08:44 343
  Thanks @dvetutnev, @xvitaly, @tambry, @medithe and @martinwuehrer.
47fd5c32 Poul Sander 2024-10-05 08:44 344
47fd5c32 Poul Sander 2024-10-05 08:44 345
- Fixed various warnings and compilation issues
47fd5c32 Poul Sander 2024-10-05 08:44 346
  (https://github.com/fmtlib/fmt/pull/1790,
47fd5c32 Poul Sander 2024-10-05 08:44 347
  https://github.com/fmtlib/fmt/pull/1802,
47fd5c32 Poul Sander 2024-10-05 08:44 348
  https://github.com/fmtlib/fmt/pull/1808,
47fd5c32 Poul Sander 2024-10-05 08:44 349
  https://github.com/fmtlib/fmt/issues/1810,
47fd5c32 Poul Sander 2024-10-05 08:44 350
  https://github.com/fmtlib/fmt/issues/1811,
47fd5c32 Poul Sander 2024-10-05 08:44 351
  https://github.com/fmtlib/fmt/pull/1812,
47fd5c32 Poul Sander 2024-10-05 08:44 352
  https://github.com/fmtlib/fmt/pull/1814,
47fd5c32 Poul Sander 2024-10-05 08:44 353
  https://github.com/fmtlib/fmt/pull/1816,
47fd5c32 Poul Sander 2024-10-05 08:44 354
  https://github.com/fmtlib/fmt/pull/1817,
47fd5c32 Poul Sander 2024-10-05 08:44 355
  https://github.com/fmtlib/fmt/pull/1818,
47fd5c32 Poul Sander 2024-10-05 08:44 356
  https://github.com/fmtlib/fmt/issues/1825,
47fd5c32 Poul Sander 2024-10-05 08:44 357
  https://github.com/fmtlib/fmt/pull/1836,
47fd5c32 Poul Sander 2024-10-05 08:44 358
  https://github.com/fmtlib/fmt/pull/1855,
47fd5c32 Poul Sander 2024-10-05 08:44 359
  https://github.com/fmtlib/fmt/pull/1856,
47fd5c32 Poul Sander 2024-10-05 08:44 360
  https://github.com/fmtlib/fmt/pull/1860,
47fd5c32 Poul Sander 2024-10-05 08:44 361
  https://github.com/fmtlib/fmt/pull/1877,
47fd5c32 Poul Sander 2024-10-05 08:44 362
  https://github.com/fmtlib/fmt/pull/1879,
47fd5c32 Poul Sander 2024-10-05 08:44 363
  https://github.com/fmtlib/fmt/pull/1880,
47fd5c32 Poul Sander 2024-10-05 08:44 364
  https://github.com/fmtlib/fmt/issues/1896,
47fd5c32 Poul Sander 2024-10-05 08:44 365
  https://github.com/fmtlib/fmt/pull/1897,
47fd5c32 Poul Sander 2024-10-05 08:44 366
  https://github.com/fmtlib/fmt/pull/1898,
47fd5c32 Poul Sander 2024-10-05 08:44 367
  https://github.com/fmtlib/fmt/issues/1904,
47fd5c32 Poul Sander 2024-10-05 08:44 368
  https://github.com/fmtlib/fmt/pull/1908,
47fd5c32 Poul Sander 2024-10-05 08:44 369
  https://github.com/fmtlib/fmt/issues/1911,
47fd5c32 Poul Sander 2024-10-05 08:44 370
  https://github.com/fmtlib/fmt/issues/1912,
47fd5c32 Poul Sander 2024-10-05 08:44 371
  https://github.com/fmtlib/fmt/issues/1928,
47fd5c32 Poul Sander 2024-10-05 08:44 372
  https://github.com/fmtlib/fmt/pull/1929,
47fd5c32 Poul Sander 2024-10-05 08:44 373
  https://github.com/fmtlib/fmt/issues/1935,
47fd5c32 Poul Sander 2024-10-05 08:44 374
  https://github.com/fmtlib/fmt/pull/1937,
47fd5c32 Poul Sander 2024-10-05 08:44 375
  https://github.com/fmtlib/fmt/pull/1942,
47fd5c32 Poul Sander 2024-10-05 08:44 376
  https://github.com/fmtlib/fmt/issues/1949).
47fd5c32 Poul Sander 2024-10-05 08:44 377
  Thanks @TheQwertiest, @medithe, @martinwuehrer, @n16h7hunt3r, @Othereum,
47fd5c32 Poul Sander 2024-10-05 08:44 378
  @gsjaardema, @AlexanderLanin, @gcerretani, @chronoxor, @noizefloor,
47fd5c32 Poul Sander 2024-10-05 08:44 379
  @akohlmey, @jk-jeon, @rimathia, @rglarix, @moiwi, @heckad, @MarcDirven.
47fd5c32 Poul Sander 2024-10-05 08:44 380
  @BartSiwek and @darklukee.
47fd5c32 Poul Sander 2024-10-05 08:44 381
47fd5c32 Poul Sander 2024-10-05 08:44 382
# 7.0.3 - 2020-08-06
47fd5c32 Poul Sander 2024-10-05 08:44 383
47fd5c32 Poul Sander 2024-10-05 08:44 384
- Worked around broken `numeric_limits` for 128-bit integers
47fd5c32 Poul Sander 2024-10-05 08:44 385
  (https://github.com/fmtlib/fmt/issues/1787).
47fd5c32 Poul Sander 2024-10-05 08:44 386
- Added error reporting on missing named arguments
47fd5c32 Poul Sander 2024-10-05 08:44 387
  (https://github.com/fmtlib/fmt/issues/1796).
47fd5c32 Poul Sander 2024-10-05 08:44 388
- Stopped using 128-bit integers with clang-cl
47fd5c32 Poul Sander 2024-10-05 08:44 389
  (https://github.com/fmtlib/fmt/pull/1800). Thanks @Kingcom.
47fd5c32 Poul Sander 2024-10-05 08:44 390
- Fixed issues in locale-specific integer formatting
47fd5c32 Poul Sander 2024-10-05 08:44 391
  (https://github.com/fmtlib/fmt/issues/1782,
47fd5c32 Poul Sander 2024-10-05 08:44 392
  https://github.com/fmtlib/fmt/issues/1801).
47fd5c32 Poul Sander 2024-10-05 08:44 393
47fd5c32 Poul Sander 2024-10-05 08:44 394
# 7.0.2 - 2020-07-29
47fd5c32 Poul Sander 2024-10-05 08:44 395
47fd5c32 Poul Sander 2024-10-05 08:44 396
- Worked around broken `numeric_limits` for 128-bit integers
47fd5c32 Poul Sander 2024-10-05 08:44 397
  (https://github.com/fmtlib/fmt/issues/1725).
47fd5c32 Poul Sander 2024-10-05 08:44 398
- Fixed compatibility with CMake 3.4
47fd5c32 Poul Sander 2024-10-05 08:44 399
  (https://github.com/fmtlib/fmt/issues/1779).
47fd5c32 Poul Sander 2024-10-05 08:44 400
- Fixed handling of digit separators in locale-specific formatting
47fd5c32 Poul Sander 2024-10-05 08:44 401
  (https://github.com/fmtlib/fmt/issues/1782).
47fd5c32 Poul Sander 2024-10-05 08:44 402
47fd5c32 Poul Sander 2024-10-05 08:44 403
# 7.0.1 - 2020-07-07
47fd5c32 Poul Sander 2024-10-05 08:44 404
47fd5c32 Poul Sander 2024-10-05 08:44 405
- Updated the inline version namespace name.
47fd5c32 Poul Sander 2024-10-05 08:44 406
- Worked around a gcc bug in mangling of alias templates
47fd5c32 Poul Sander 2024-10-05 08:44 407
  (https://github.com/fmtlib/fmt/issues/1753).
47fd5c32 Poul Sander 2024-10-05 08:44 408
- Fixed a linkage error on Windows
47fd5c32 Poul Sander 2024-10-05 08:44 409
  (https://github.com/fmtlib/fmt/issues/1757). Thanks @Kurkin.
47fd5c32 Poul Sander 2024-10-05 08:44 410
- Fixed minor issues with the documentation.
47fd5c32 Poul Sander 2024-10-05 08:44 411
47fd5c32 Poul Sander 2024-10-05 08:44 412
# 7.0.0 - 2020-07-05
47fd5c32 Poul Sander 2024-10-05 08:44 413
47fd5c32 Poul Sander 2024-10-05 08:44 414
- Reduced the library size. For example, on macOS a stripped test
47fd5c32 Poul Sander 2024-10-05 08:44 415
  binary statically linked with {fmt} [shrank from \~368k to less than
47fd5c32 Poul Sander 2024-10-05 08:44 416
  100k](http://www.zverovich.net/2020/05/21/reducing-library-size.html).
47fd5c32 Poul Sander 2024-10-05 08:44 417
47fd5c32 Poul Sander 2024-10-05 08:44 418
- Added a simpler and more efficient [format string compilation
47fd5c32 Poul Sander 2024-10-05 08:44 419
  API](https://fmt.dev/7.0.0/api.html#compile-api):
47fd5c32 Poul Sander 2024-10-05 08:44 420
47fd5c32 Poul Sander 2024-10-05 08:44 421
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 422
  #include <fmt/compile.h>
47fd5c32 Poul Sander 2024-10-05 08:44 423
47fd5c32 Poul Sander 2024-10-05 08:44 424
  // Converts 42 into std::string using the most efficient method and no
47fd5c32 Poul Sander 2024-10-05 08:44 425
  // runtime format string processing.
47fd5c32 Poul Sander 2024-10-05 08:44 426
  std::string s = fmt::format(FMT_COMPILE("{}"), 42);
47fd5c32 Poul Sander 2024-10-05 08:44 427
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 428
47fd5c32 Poul Sander 2024-10-05 08:44 429
  The old `fmt::compile` API is now deprecated.
47fd5c32 Poul Sander 2024-10-05 08:44 430
47fd5c32 Poul Sander 2024-10-05 08:44 431
- Optimized integer formatting: `format_to` with format string
47fd5c32 Poul Sander 2024-10-05 08:44 432
  compilation and a stack-allocated buffer is now [faster than
47fd5c32 Poul Sander 2024-10-05 08:44 433
  to_chars on both libc++ and
47fd5c32 Poul Sander 2024-10-05 08:44 434
  libstdc++](http://www.zverovich.net/2020/06/13/fast-int-to-string-revisited.html).
47fd5c32 Poul Sander 2024-10-05 08:44 435
47fd5c32 Poul Sander 2024-10-05 08:44 436
- Optimized handling of small format strings. For example,
47fd5c32 Poul Sander 2024-10-05 08:44 437
47fd5c32 Poul Sander 2024-10-05 08:44 438
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 439
  fmt::format("Result: {}: ({},{},{},{})", str1, str2, str3, str4, str5)
47fd5c32 Poul Sander 2024-10-05 08:44 440
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 441
47fd5c32 Poul Sander 2024-10-05 08:44 442
  is now \~40% faster
47fd5c32 Poul Sander 2024-10-05 08:44 443
  (https://github.com/fmtlib/fmt/issues/1685).
47fd5c32 Poul Sander 2024-10-05 08:44 444
47fd5c32 Poul Sander 2024-10-05 08:44 445
- Applied extern templates to improve compile times when using the
47fd5c32 Poul Sander 2024-10-05 08:44 446
  core API and `fmt/format.h`
47fd5c32 Poul Sander 2024-10-05 08:44 447
  (https://github.com/fmtlib/fmt/issues/1452). For example,
47fd5c32 Poul Sander 2024-10-05 08:44 448
  on macOS with clang the compile time of a test translation unit
47fd5c32 Poul Sander 2024-10-05 08:44 449
  dropped from 2.3s to 0.3s with `-O2` and from 0.6s to 0.3s with the
47fd5c32 Poul Sander 2024-10-05 08:44 450
  default settings (`-O0`).
47fd5c32 Poul Sander 2024-10-05 08:44 451
47fd5c32 Poul Sander 2024-10-05 08:44 452
  Before (`-O2`):
47fd5c32 Poul Sander 2024-10-05 08:44 453
47fd5c32 Poul Sander 2024-10-05 08:44 454
      % time c++ -c test.cc -I include -std=c++17 -O2
47fd5c32 Poul Sander 2024-10-05 08:44 455
      c++ -c test.cc -I include -std=c++17 -O2  2.22s user 0.08s system 99% cpu 2.311 total
47fd5c32 Poul Sander 2024-10-05 08:44 456
47fd5c32 Poul Sander 2024-10-05 08:44 457
  After (`-O2`):
47fd5c32 Poul Sander 2024-10-05 08:44 458
47fd5c32 Poul Sander 2024-10-05 08:44 459
      % time c++ -c test.cc -I include -std=c++17 -O2
47fd5c32 Poul Sander 2024-10-05 08:44 460
      c++ -c test.cc -I include -std=c++17 -O2  0.26s user 0.04s system 98% cpu 0.303 total
47fd5c32 Poul Sander 2024-10-05 08:44 461
47fd5c32 Poul Sander 2024-10-05 08:44 462
  Before (default):
47fd5c32 Poul Sander 2024-10-05 08:44 463
47fd5c32 Poul Sander 2024-10-05 08:44 464
      % time c++ -c test.cc -I include -std=c++17
47fd5c32 Poul Sander 2024-10-05 08:44 465
      c++ -c test.cc -I include -std=c++17  0.53s user 0.06s system 98% cpu 0.601 total
47fd5c32 Poul Sander 2024-10-05 08:44 466
47fd5c32 Poul Sander 2024-10-05 08:44 467
  After (default):
47fd5c32 Poul Sander 2024-10-05 08:44 468
47fd5c32 Poul Sander 2024-10-05 08:44 469
      % time c++ -c test.cc -I include -std=c++17
47fd5c32 Poul Sander 2024-10-05 08:44 470
      c++ -c test.cc -I include -std=c++17  0.24s user 0.06s system 98% cpu 0.301 total
47fd5c32 Poul Sander 2024-10-05 08:44 471
47fd5c32 Poul Sander 2024-10-05 08:44 472
  It is still recommended to use `fmt/core.h` instead of
47fd5c32 Poul Sander 2024-10-05 08:44 473
  `fmt/format.h` but the compile time difference is now smaller.
47fd5c32 Poul Sander 2024-10-05 08:44 474
  Thanks @alex3d for the suggestion.
47fd5c32 Poul Sander 2024-10-05 08:44 475
47fd5c32 Poul Sander 2024-10-05 08:44 476
- Named arguments are now stored on stack (no dynamic memory
47fd5c32 Poul Sander 2024-10-05 08:44 477
  allocations) and the compiled code is more compact and efficient.
47fd5c32 Poul Sander 2024-10-05 08:44 478
  For example
47fd5c32 Poul Sander 2024-10-05 08:44 479
47fd5c32 Poul Sander 2024-10-05 08:44 480
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 481
  #include <fmt/core.h>
47fd5c32 Poul Sander 2024-10-05 08:44 482
47fd5c32 Poul Sander 2024-10-05 08:44 483
  int main() {
47fd5c32 Poul Sander 2024-10-05 08:44 484
    fmt::print("The answer is {answer}\n", fmt::arg("answer", 42));
47fd5c32 Poul Sander 2024-10-05 08:44 485
  }
47fd5c32 Poul Sander 2024-10-05 08:44 486
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 487
47fd5c32 Poul Sander 2024-10-05 08:44 488
  compiles to just ([godbolt](https://godbolt.org/z/NcfEp_))
47fd5c32 Poul Sander 2024-10-05 08:44 489
47fd5c32 Poul Sander 2024-10-05 08:44 490
  ```asm
47fd5c32 Poul Sander 2024-10-05 08:44 491
  .LC0:
47fd5c32 Poul Sander 2024-10-05 08:44 492
          .string "answer"
47fd5c32 Poul Sander 2024-10-05 08:44 493
  .LC1:
47fd5c32 Poul Sander 2024-10-05 08:44 494
          .string "The answer is {answer}\n"
47fd5c32 Poul Sander 2024-10-05 08:44 495
  main:
47fd5c32 Poul Sander 2024-10-05 08:44 496
          sub     rsp, 56
47fd5c32 Poul Sander 2024-10-05 08:44 497
          mov     edi, OFFSET FLAT:.LC1
47fd5c32 Poul Sander 2024-10-05 08:44 498
          mov     esi, 23
47fd5c32 Poul Sander 2024-10-05 08:44 499
          movabs  rdx, 4611686018427387905
47fd5c32 Poul Sander 2024-10-05 08:44 500
          lea     rax, [rsp+32]
47fd5c32 Poul Sander 2024-10-05 08:44 501
          lea     rcx, [rsp+16]
47fd5c32 Poul Sander 2024-10-05 08:44 502
          mov     QWORD PTR [rsp+8], 1
47fd5c32 Poul Sander 2024-10-05 08:44 503
          mov     QWORD PTR [rsp], rax
47fd5c32 Poul Sander 2024-10-05 08:44 504
          mov     DWORD PTR [rsp+16], 42
47fd5c32 Poul Sander 2024-10-05 08:44 505
          mov     QWORD PTR [rsp+32], OFFSET FLAT:.LC0
47fd5c32 Poul Sander 2024-10-05 08:44 506
          mov     DWORD PTR [rsp+40], 0
47fd5c32 Poul Sander 2024-10-05 08:44 507
          call    fmt::v6::vprint(fmt::v6::basic_string_view<char>,
47fd5c32 Poul Sander 2024-10-05 08:44 508
                                  fmt::v6::format_args)
47fd5c32 Poul Sander 2024-10-05 08:44 509
          xor     eax, eax
47fd5c32 Poul Sander 2024-10-05 08:44 510
          add     rsp, 56
47fd5c32 Poul Sander 2024-10-05 08:44 511
          ret
47fd5c32 Poul Sander 2024-10-05 08:44 512
47fd5c32 Poul Sander 2024-10-05 08:44 513
      .L.str.1:
47fd5c32 Poul Sander 2024-10-05 08:44 514
              .asciz  "answer"
47fd5c32 Poul Sander 2024-10-05 08:44 515
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 516
47fd5c32 Poul Sander 2024-10-05 08:44 517
- Implemented compile-time checks for dynamic width and precision
47fd5c32 Poul Sander 2024-10-05 08:44 518
  (https://github.com/fmtlib/fmt/issues/1614):
47fd5c32 Poul Sander 2024-10-05 08:44 519
47fd5c32 Poul Sander 2024-10-05 08:44 520
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 521
  #include <fmt/format.h>
47fd5c32 Poul Sander 2024-10-05 08:44 522
47fd5c32 Poul Sander 2024-10-05 08:44 523
  int main() {
47fd5c32 Poul Sander 2024-10-05 08:44 524
    fmt::print(FMT_STRING("{0:{1}}"), 42);
47fd5c32 Poul Sander 2024-10-05 08:44 525
  }
47fd5c32 Poul Sander 2024-10-05 08:44 526
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 527
47fd5c32 Poul Sander 2024-10-05 08:44 528
  now gives a compilation error because argument 1 doesn\'t exist:
47fd5c32 Poul Sander 2024-10-05 08:44 529
47fd5c32 Poul Sander 2024-10-05 08:44 530
      In file included from test.cc:1:
47fd5c32 Poul Sander 2024-10-05 08:44 531
      include/fmt/format.h:2726:27: error: constexpr variable 'invalid_format' must be
47fd5c32 Poul Sander 2024-10-05 08:44 532
      initialized by a constant expression
47fd5c32 Poul Sander 2024-10-05 08:44 533
        FMT_CONSTEXPR_DECL bool invalid_format =
47fd5c32 Poul Sander 2024-10-05 08:44 534
                                ^
47fd5c32 Poul Sander 2024-10-05 08:44 535
      ...
47fd5c32 Poul Sander 2024-10-05 08:44 536
      include/fmt/core.h:569:26: note: in call to
47fd5c32 Poul Sander 2024-10-05 08:44 537
      '&checker(s, {}).context_->on_error(&"argument not found"[0])'
47fd5c32 Poul Sander 2024-10-05 08:44 538
          if (id >= num_args_) on_error("argument not found");
47fd5c32 Poul Sander 2024-10-05 08:44 539
                              ^
47fd5c32 Poul Sander 2024-10-05 08:44 540
47fd5c32 Poul Sander 2024-10-05 08:44 541
- Added sentinel support to `fmt::join`
47fd5c32 Poul Sander 2024-10-05 08:44 542
  (https://github.com/fmtlib/fmt/pull/1689)
47fd5c32 Poul Sander 2024-10-05 08:44 543
47fd5c32 Poul Sander 2024-10-05 08:44 544
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 545
  struct zstring_sentinel {};
47fd5c32 Poul Sander 2024-10-05 08:44 546
  bool operator==(const char* p, zstring_sentinel) { return *p == '\0'; }
47fd5c32 Poul Sander 2024-10-05 08:44 547
  bool operator!=(const char* p, zstring_sentinel) { return *p != '\0'; }
47fd5c32 Poul Sander 2024-10-05 08:44 548
47fd5c32 Poul Sander 2024-10-05 08:44 549
  struct zstring {
47fd5c32 Poul Sander 2024-10-05 08:44 550
    const char* p;
47fd5c32 Poul Sander 2024-10-05 08:44 551
    const char* begin() const { return p; }
47fd5c32 Poul Sander 2024-10-05 08:44 552
    zstring_sentinel end() const { return {}; }
47fd5c32 Poul Sander 2024-10-05 08:44 553
  };
47fd5c32 Poul Sander 2024-10-05 08:44 554
47fd5c32 Poul Sander 2024-10-05 08:44 555
  auto s = fmt::format("{}", fmt::join(zstring{"hello"}, "_"));
47fd5c32 Poul Sander 2024-10-05 08:44 556
  // s == "h_e_l_l_o"
47fd5c32 Poul Sander 2024-10-05 08:44 557
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 558
47fd5c32 Poul Sander 2024-10-05 08:44 559
  Thanks @BRevzin.
47fd5c32 Poul Sander 2024-10-05 08:44 560
47fd5c32 Poul Sander 2024-10-05 08:44 561
- Added support for named arguments, `clear` and `reserve` to
47fd5c32 Poul Sander 2024-10-05 08:44 562
  `dynamic_format_arg_store`
47fd5c32 Poul Sander 2024-10-05 08:44 563
  (https://github.com/fmtlib/fmt/issues/1655,
47fd5c32 Poul Sander 2024-10-05 08:44 564
  https://github.com/fmtlib/fmt/pull/1663,
47fd5c32 Poul Sander 2024-10-05 08:44 565
  https://github.com/fmtlib/fmt/pull/1674,
47fd5c32 Poul Sander 2024-10-05 08:44 566
  https://github.com/fmtlib/fmt/pull/1677). Thanks @vsolontsov-ll.
47fd5c32 Poul Sander 2024-10-05 08:44 567
47fd5c32 Poul Sander 2024-10-05 08:44 568
- Added support for the `'c'` format specifier to integral types for
47fd5c32 Poul Sander 2024-10-05 08:44 569
  compatibility with `std::format`
47fd5c32 Poul Sander 2024-10-05 08:44 570
  (https://github.com/fmtlib/fmt/issues/1652).
47fd5c32 Poul Sander 2024-10-05 08:44 571
47fd5c32 Poul Sander 2024-10-05 08:44 572
- Replaced the `'n'` format specifier with `'L'` for compatibility
47fd5c32 Poul Sander 2024-10-05 08:44 573
  with `std::format`
47fd5c32 Poul Sander 2024-10-05 08:44 574
  (https://github.com/fmtlib/fmt/issues/1624). The `'n'`
47fd5c32 Poul Sander 2024-10-05 08:44 575
  specifier can be enabled via the `FMT_DEPRECATED_N_SPECIFIER` macro.
47fd5c32 Poul Sander 2024-10-05 08:44 576
47fd5c32 Poul Sander 2024-10-05 08:44 577
- The `'='` format specifier is now disabled by default for
47fd5c32 Poul Sander 2024-10-05 08:44 578
  compatibility with `std::format`. It can be enabled via the
47fd5c32 Poul Sander 2024-10-05 08:44 579
  `FMT_DEPRECATED_NUMERIC_ALIGN` macro.
47fd5c32 Poul Sander 2024-10-05 08:44 580
47fd5c32 Poul Sander 2024-10-05 08:44 581
- Removed the following deprecated APIs:
47fd5c32 Poul Sander 2024-10-05 08:44 582
47fd5c32 Poul Sander 2024-10-05 08:44 583
  -   `FMT_STRING_ALIAS` and `fmt` macros - replaced by `FMT_STRING`
47fd5c32 Poul Sander 2024-10-05 08:44 584
  -   `fmt::basic_string_view::char_type` - replaced by
47fd5c32 Poul Sander 2024-10-05 08:44 585
      `fmt::basic_string_view::value_type`
47fd5c32 Poul Sander 2024-10-05 08:44 586
  -   `convert_to_int`
47fd5c32 Poul Sander 2024-10-05 08:44 587
  -   `format_arg_store::types`
47fd5c32 Poul Sander 2024-10-05 08:44 588
  -   `*parse_context` - replaced by `*format_parse_context`
47fd5c32 Poul Sander 2024-10-05 08:44 589
  -   `FMT_DEPRECATED_INCLUDE_OS`
47fd5c32 Poul Sander 2024-10-05 08:44 590
  -   `FMT_DEPRECATED_PERCENT` - incompatible with `std::format`
47fd5c32 Poul Sander 2024-10-05 08:44 591
  -   `*writer` - replaced by compiled format API
47fd5c32 Poul Sander 2024-10-05 08:44 592
47fd5c32 Poul Sander 2024-10-05 08:44 593
- Renamed the `internal` namespace to `detail`
47fd5c32 Poul Sander 2024-10-05 08:44 594
  (https://github.com/fmtlib/fmt/issues/1538). The former is
47fd5c32 Poul Sander 2024-10-05 08:44 595
  still provided as an alias if the `FMT_USE_INTERNAL` macro is
47fd5c32 Poul Sander 2024-10-05 08:44 596
  defined.
47fd5c32 Poul Sander 2024-10-05 08:44 597
47fd5c32 Poul Sander 2024-10-05 08:44 598
- Improved compatibility between `fmt::printf` with the standard specs
47fd5c32 Poul Sander 2024-10-05 08:44 599
  (https://github.com/fmtlib/fmt/issues/1595,
47fd5c32 Poul Sander 2024-10-05 08:44 600
  https://github.com/fmtlib/fmt/pull/1682,
47fd5c32 Poul Sander 2024-10-05 08:44 601
  https://github.com/fmtlib/fmt/pull/1683,
47fd5c32 Poul Sander 2024-10-05 08:44 602
  https://github.com/fmtlib/fmt/pull/1687,
47fd5c32 Poul Sander 2024-10-05 08:44 603
  https://github.com/fmtlib/fmt/pull/1699). Thanks @rimathia.
47fd5c32 Poul Sander 2024-10-05 08:44 604
47fd5c32 Poul Sander 2024-10-05 08:44 605
- Fixed handling of `operator<<` overloads that use `copyfmt`
47fd5c32 Poul Sander 2024-10-05 08:44 606
  (https://github.com/fmtlib/fmt/issues/1666).
47fd5c32 Poul Sander 2024-10-05 08:44 607
47fd5c32 Poul Sander 2024-10-05 08:44 608
- Added the `FMT_OS` CMake option to control inclusion of OS-specific
47fd5c32 Poul Sander 2024-10-05 08:44 609
  APIs in the fmt target. This can be useful for embedded platforms
47fd5c32 Poul Sander 2024-10-05 08:44 610
  (https://github.com/fmtlib/fmt/issues/1654,
47fd5c32 Poul Sander 2024-10-05 08:44 611
  https://github.com/fmtlib/fmt/pull/1656). Thanks @kwesolowski.
47fd5c32 Poul Sander 2024-10-05 08:44 612
47fd5c32 Poul Sander 2024-10-05 08:44 613
- Replaced `FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION` with the
47fd5c32 Poul Sander 2024-10-05 08:44 614
  `FMT_FUZZ` macro to prevent interfering with fuzzing of projects
47fd5c32 Poul Sander 2024-10-05 08:44 615
  using {fmt} (https://github.com/fmtlib/fmt/pull/1650).
47fd5c32 Poul Sander 2024-10-05 08:44 616
  Thanks @asraa.
47fd5c32 Poul Sander 2024-10-05 08:44 617
47fd5c32 Poul Sander 2024-10-05 08:44 618
- Fixed compatibility with emscripten
47fd5c32 Poul Sander 2024-10-05 08:44 619
  (https://github.com/fmtlib/fmt/issues/1636,
47fd5c32 Poul Sander 2024-10-05 08:44 620
  https://github.com/fmtlib/fmt/pull/1637). Thanks @ArthurSonzogni.
47fd5c32 Poul Sander 2024-10-05 08:44 621
47fd5c32 Poul Sander 2024-10-05 08:44 622
- Improved documentation
47fd5c32 Poul Sander 2024-10-05 08:44 623
  (https://github.com/fmtlib/fmt/issues/704,
47fd5c32 Poul Sander 2024-10-05 08:44 624
  https://github.com/fmtlib/fmt/pull/1643,
47fd5c32 Poul Sander 2024-10-05 08:44 625
  https://github.com/fmtlib/fmt/pull/1660,
47fd5c32 Poul Sander 2024-10-05 08:44 626
  https://github.com/fmtlib/fmt/pull/1681,
47fd5c32 Poul Sander 2024-10-05 08:44 627
  https://github.com/fmtlib/fmt/pull/1691,
47fd5c32 Poul Sander 2024-10-05 08:44 628
  https://github.com/fmtlib/fmt/pull/1706,
47fd5c32 Poul Sander 2024-10-05 08:44 629
  https://github.com/fmtlib/fmt/pull/1714,
47fd5c32 Poul Sander 2024-10-05 08:44 630
  https://github.com/fmtlib/fmt/pull/1721,
47fd5c32 Poul Sander 2024-10-05 08:44 631
  https://github.com/fmtlib/fmt/pull/1739,
47fd5c32 Poul Sander 2024-10-05 08:44 632
  https://github.com/fmtlib/fmt/pull/1740,
47fd5c32 Poul Sander 2024-10-05 08:44 633
  https://github.com/fmtlib/fmt/pull/1741,
47fd5c32 Poul Sander 2024-10-05 08:44 634
  https://github.com/fmtlib/fmt/pull/1751).
47fd5c32 Poul Sander 2024-10-05 08:44 635
  Thanks @senior7515, @lsr0, @puetzk, @fpelliccioni, Alexey Kuzmenko, @jelly,
47fd5c32 Poul Sander 2024-10-05 08:44 636
  @claremacrae, @jiapengwen, @gsjaardema and @alexey-milovidov.
47fd5c32 Poul Sander 2024-10-05 08:44 637
47fd5c32 Poul Sander 2024-10-05 08:44 638
- Implemented various build configuration fixes and improvements
47fd5c32 Poul Sander 2024-10-05 08:44 639
  (https://github.com/fmtlib/fmt/pull/1603,
47fd5c32 Poul Sander 2024-10-05 08:44 640
  https://github.com/fmtlib/fmt/pull/1657,
47fd5c32 Poul Sander 2024-10-05 08:44 641
  https://github.com/fmtlib/fmt/pull/1702,
47fd5c32 Poul Sander 2024-10-05 08:44 642
  https://github.com/fmtlib/fmt/pull/1728).
47fd5c32 Poul Sander 2024-10-05 08:44 643
  Thanks @scramsby, @jtojnar, @orivej and @flagarde.
47fd5c32 Poul Sander 2024-10-05 08:44 644
47fd5c32 Poul Sander 2024-10-05 08:44 645
- Fixed various warnings and compilation issues
47fd5c32 Poul Sander 2024-10-05 08:44 646
  (https://github.com/fmtlib/fmt/pull/1616,
47fd5c32 Poul Sander 2024-10-05 08:44 647
  https://github.com/fmtlib/fmt/issues/1620,
47fd5c32 Poul Sander 2024-10-05 08:44 648
  https://github.com/fmtlib/fmt/issues/1622,
47fd5c32 Poul Sander 2024-10-05 08:44 649
  https://github.com/fmtlib/fmt/issues/1625,
47fd5c32 Poul Sander 2024-10-05 08:44 650
  https://github.com/fmtlib/fmt/pull/1627,
47fd5c32 Poul Sander 2024-10-05 08:44 651
  https://github.com/fmtlib/fmt/issues/1628,
47fd5c32 Poul Sander 2024-10-05 08:44 652
  https://github.com/fmtlib/fmt/pull/1629,
47fd5c32 Poul Sander 2024-10-05 08:44 653
  https://github.com/fmtlib/fmt/issues/1631,
47fd5c32 Poul Sander 2024-10-05 08:44 654
  https://github.com/fmtlib/fmt/pull/1633,
47fd5c32 Poul Sander 2024-10-05 08:44 655
  https://github.com/fmtlib/fmt/pull/1649,
47fd5c32 Poul Sander 2024-10-05 08:44 656
  https://github.com/fmtlib/fmt/issues/1658,
47fd5c32 Poul Sander 2024-10-05 08:44 657
  https://github.com/fmtlib/fmt/pull/1661,
47fd5c32 Poul Sander 2024-10-05 08:44 658
  https://github.com/fmtlib/fmt/pull/1667,
47fd5c32 Poul Sander 2024-10-05 08:44 659
  https://github.com/fmtlib/fmt/issues/1668,
47fd5c32 Poul Sander 2024-10-05 08:44 660
  https://github.com/fmtlib/fmt/pull/1669,
47fd5c32 Poul Sander 2024-10-05 08:44 661
  https://github.com/fmtlib/fmt/issues/1692,
47fd5c32 Poul Sander 2024-10-05 08:44 662
  https://github.com/fmtlib/fmt/pull/1696,
47fd5c32 Poul Sander 2024-10-05 08:44 663
  https://github.com/fmtlib/fmt/pull/1697,
47fd5c32 Poul Sander 2024-10-05 08:44 664
  https://github.com/fmtlib/fmt/issues/1707,
47fd5c32 Poul Sander 2024-10-05 08:44 665
  https://github.com/fmtlib/fmt/pull/1712,
47fd5c32 Poul Sander 2024-10-05 08:44 666
  https://github.com/fmtlib/fmt/pull/1716,
47fd5c32 Poul Sander 2024-10-05 08:44 667
  https://github.com/fmtlib/fmt/pull/1722,
47fd5c32 Poul Sander 2024-10-05 08:44 668
  https://github.com/fmtlib/fmt/issues/1724,
47fd5c32 Poul Sander 2024-10-05 08:44 669
  https://github.com/fmtlib/fmt/pull/1729,
47fd5c32 Poul Sander 2024-10-05 08:44 670
  https://github.com/fmtlib/fmt/pull/1738,
47fd5c32 Poul Sander 2024-10-05 08:44 671
  https://github.com/fmtlib/fmt/issues/1742,
47fd5c32 Poul Sander 2024-10-05 08:44 672
  https://github.com/fmtlib/fmt/issues/1743,
47fd5c32 Poul Sander 2024-10-05 08:44 673
  https://github.com/fmtlib/fmt/pull/1744,
47fd5c32 Poul Sander 2024-10-05 08:44 674
  https://github.com/fmtlib/fmt/issues/1747,
47fd5c32 Poul Sander 2024-10-05 08:44 675
  https://github.com/fmtlib/fmt/pull/1750).
47fd5c32 Poul Sander 2024-10-05 08:44 676
  Thanks @gsjaardema, @gabime, @johnor, @Kurkin, @invexed, @peterbell10,
47fd5c32 Poul Sander 2024-10-05 08:44 677
  @daixtrose, @petrutlucian94, @Neargye, @ambitslix, @gabime, @erthink,
47fd5c32 Poul Sander 2024-10-05 08:44 678
  @tohammer and @0x8000-0000.
47fd5c32 Poul Sander 2024-10-05 08:44 679
47fd5c32 Poul Sander 2024-10-05 08:44 680
# 6.2.1 - 2020-05-09
47fd5c32 Poul Sander 2024-10-05 08:44 681
47fd5c32 Poul Sander 2024-10-05 08:44 682
- Fixed ostream support in `sprintf`
47fd5c32 Poul Sander 2024-10-05 08:44 683
  (https://github.com/fmtlib/fmt/issues/1631).
47fd5c32 Poul Sander 2024-10-05 08:44 684
- Fixed type detection when using implicit conversion to `string_view`
47fd5c32 Poul Sander 2024-10-05 08:44 685
  and ostream `operator<<` inconsistently
47fd5c32 Poul Sander 2024-10-05 08:44 686
  (https://github.com/fmtlib/fmt/issues/1662).
47fd5c32 Poul Sander 2024-10-05 08:44 687
47fd5c32 Poul Sander 2024-10-05 08:44 688
# 6.2.0 - 2020-04-05
47fd5c32 Poul Sander 2024-10-05 08:44 689
47fd5c32 Poul Sander 2024-10-05 08:44 690
- Improved error reporting when trying to format an object of a
47fd5c32 Poul Sander 2024-10-05 08:44 691
  non-formattable type:
47fd5c32 Poul Sander 2024-10-05 08:44 692
47fd5c32 Poul Sander 2024-10-05 08:44 693
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 694
  fmt::format("{}", S());
47fd5c32 Poul Sander 2024-10-05 08:44 695
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 696
47fd5c32 Poul Sander 2024-10-05 08:44 697
  now gives:
47fd5c32 Poul Sander 2024-10-05 08:44 698
47fd5c32 Poul Sander 2024-10-05 08:44 699
      include/fmt/core.h:1015:5: error: static_assert failed due to requirement
47fd5c32 Poul Sander 2024-10-05 08:44 700
      'formattable' "Cannot format argument. To make type T formattable provide a
47fd5c32 Poul Sander 2024-10-05 08:44 701
      formatter<T> specialization:
47fd5c32 Poul Sander 2024-10-05 08:44 702
      https://fmt.dev/latest/api.html#formatting-user-defined-types"
47fd5c32 Poul Sander 2024-10-05 08:44 703
          static_assert(
47fd5c32 Poul Sander 2024-10-05 08:44 704
          ^
47fd5c32 Poul Sander 2024-10-05 08:44 705
      ...
47fd5c32 Poul Sander 2024-10-05 08:44 706
      note: in instantiation of function template specialization
47fd5c32 Poul Sander 2024-10-05 08:44 707
      'fmt::v6::format<char [3], S, char>' requested here
47fd5c32 Poul Sander 2024-10-05 08:44 708
        fmt::format("{}", S());
47fd5c32 Poul Sander 2024-10-05 08:44 709
             ^
47fd5c32 Poul Sander 2024-10-05 08:44 710
47fd5c32 Poul Sander 2024-10-05 08:44 711
  if `S` is not formattable.
47fd5c32 Poul Sander 2024-10-05 08:44 712
47fd5c32 Poul Sander 2024-10-05 08:44 713
- Reduced the library size by \~10%.
47fd5c32 Poul Sander 2024-10-05 08:44 714
47fd5c32 Poul Sander 2024-10-05 08:44 715
- Always print decimal point if `#` is specified
47fd5c32 Poul Sander 2024-10-05 08:44 716
  (https://github.com/fmtlib/fmt/issues/1476,
47fd5c32 Poul Sander 2024-10-05 08:44 717
  https://github.com/fmtlib/fmt/issues/1498):
47fd5c32 Poul Sander 2024-10-05 08:44 718
47fd5c32 Poul Sander 2024-10-05 08:44 719
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 720
  fmt::print("{:#.0f}", 42.0);
47fd5c32 Poul Sander 2024-10-05 08:44 721
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 722
47fd5c32 Poul Sander 2024-10-05 08:44 723
  now prints `42.`
47fd5c32 Poul Sander 2024-10-05 08:44 724
47fd5c32 Poul Sander 2024-10-05 08:44 725
- Implemented the `'L'` specifier for locale-specific numeric
47fd5c32 Poul Sander 2024-10-05 08:44 726
  formatting to improve compatibility with `std::format`. The `'n'`
47fd5c32 Poul Sander 2024-10-05 08:44 727
  specifier is now deprecated and will be removed in the next major
47fd5c32 Poul Sander 2024-10-05 08:44 728
  release.
47fd5c32 Poul Sander 2024-10-05 08:44 729
47fd5c32 Poul Sander 2024-10-05 08:44 730
- Moved OS-specific APIs such as `windows_error` from `fmt/format.h`
47fd5c32 Poul Sander 2024-10-05 08:44 731
  to `fmt/os.h`. You can define `FMT_DEPRECATED_INCLUDE_OS` to
47fd5c32 Poul Sander 2024-10-05 08:44 732
  automatically include `fmt/os.h` from `fmt/format.h` for
47fd5c32 Poul Sander 2024-10-05 08:44 733
  compatibility but this will be disabled in the next major release.
47fd5c32 Poul Sander 2024-10-05 08:44 734
47fd5c32 Poul Sander 2024-10-05 08:44 735
- Added precision overflow detection in floating-point formatting.
47fd5c32 Poul Sander 2024-10-05 08:44 736
47fd5c32 Poul Sander 2024-10-05 08:44 737
- Implemented detection of invalid use of `fmt::arg`.
47fd5c32 Poul Sander 2024-10-05 08:44 738
47fd5c32 Poul Sander 2024-10-05 08:44 739
- Used `type_identity` to block unnecessary template argument
47fd5c32 Poul Sander 2024-10-05 08:44 740
  deduction. Thanks Tim Song.
47fd5c32 Poul Sander 2024-10-05 08:44 741
47fd5c32 Poul Sander 2024-10-05 08:44 742
- Improved UTF-8 handling
47fd5c32 Poul Sander 2024-10-05 08:44 743
  (https://github.com/fmtlib/fmt/issues/1109):
47fd5c32 Poul Sander 2024-10-05 08:44 744
47fd5c32 Poul Sander 2024-10-05 08:44 745
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 746
  fmt::print("┌{0:─^{2}}┐\n"
47fd5c32 Poul Sander 2024-10-05 08:44 747
             "│{1: ^{2}}│\n"
47fd5c32 Poul Sander 2024-10-05 08:44 748
             "└{0:─^{2}}┘\n", "", "ПрыĐČŃ–Ń‚Đ°ĐœĐœĐ”, сĐČДт!", 21);
47fd5c32 Poul Sander 2024-10-05 08:44 749
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 750
47fd5c32 Poul Sander 2024-10-05 08:44 751
  now prints:
47fd5c32 Poul Sander 2024-10-05 08:44 752
47fd5c32 Poul Sander 2024-10-05 08:44 753
      ┌─────────────────────┐
47fd5c32 Poul Sander 2024-10-05 08:44 754
      │  ПрыĐČŃ–Ń‚Đ°ĐœĐœĐ”, сĐČДт!  │
47fd5c32 Poul Sander 2024-10-05 08:44 755
      └─────────────────────┘
47fd5c32 Poul Sander 2024-10-05 08:44 756
47fd5c32 Poul Sander 2024-10-05 08:44 757
  on systems that support Unicode.
47fd5c32 Poul Sander 2024-10-05 08:44 758
47fd5c32 Poul Sander 2024-10-05 08:44 759
- Added experimental dynamic argument storage
47fd5c32 Poul Sander 2024-10-05 08:44 760
  (https://github.com/fmtlib/fmt/issues/1170,
47fd5c32 Poul Sander 2024-10-05 08:44 761
  https://github.com/fmtlib/fmt/pull/1584):
47fd5c32 Poul Sander 2024-10-05 08:44 762
47fd5c32 Poul Sander 2024-10-05 08:44 763
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 764
  fmt::dynamic_format_arg_store<fmt::format_context> store;
47fd5c32 Poul Sander 2024-10-05 08:44 765
  store.push_back("answer");
47fd5c32 Poul Sander 2024-10-05 08:44 766
  store.push_back(42);
47fd5c32 Poul Sander 2024-10-05 08:44 767
  fmt::vprint("The {} is {}.\n", store);
47fd5c32 Poul Sander 2024-10-05 08:44 768
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 769
47fd5c32 Poul Sander 2024-10-05 08:44 770
  prints:
47fd5c32 Poul Sander 2024-10-05 08:44 771
47fd5c32 Poul Sander 2024-10-05 08:44 772
      The answer is 42.
47fd5c32 Poul Sander 2024-10-05 08:44 773
47fd5c32 Poul Sander 2024-10-05 08:44 774
  Thanks @vsolontsov-ll.
47fd5c32 Poul Sander 2024-10-05 08:44 775
47fd5c32 Poul Sander 2024-10-05 08:44 776
- Made `fmt::join` accept `initializer_list`
47fd5c32 Poul Sander 2024-10-05 08:44 777
  (https://github.com/fmtlib/fmt/pull/1591). Thanks @Rapotkinnik.
47fd5c32 Poul Sander 2024-10-05 08:44 778
47fd5c32 Poul Sander 2024-10-05 08:44 779
- Fixed handling of empty tuples
47fd5c32 Poul Sander 2024-10-05 08:44 780
  (https://github.com/fmtlib/fmt/issues/1588).
47fd5c32 Poul Sander 2024-10-05 08:44 781
47fd5c32 Poul Sander 2024-10-05 08:44 782
- Fixed handling of output iterators in `format_to_n`
47fd5c32 Poul Sander 2024-10-05 08:44 783
  (https://github.com/fmtlib/fmt/issues/1506).
47fd5c32 Poul Sander 2024-10-05 08:44 784
47fd5c32 Poul Sander 2024-10-05 08:44 785
- Fixed formatting of `std::chrono::duration` types to wide output
47fd5c32 Poul Sander 2024-10-05 08:44 786
  (https://github.com/fmtlib/fmt/pull/1533). Thanks @zeffy.
47fd5c32 Poul Sander 2024-10-05 08:44 787
47fd5c32 Poul Sander 2024-10-05 08:44 788
- Added const `begin` and `end` overload to buffers
47fd5c32 Poul Sander 2024-10-05 08:44 789
  (https://github.com/fmtlib/fmt/pull/1553). Thanks @dominicpoeschko.
47fd5c32 Poul Sander 2024-10-05 08:44 790
47fd5c32 Poul Sander 2024-10-05 08:44 791
- Added the ability to disable floating-point formatting via
47fd5c32 Poul Sander 2024-10-05 08:44 792
  `FMT_USE_FLOAT`, `FMT_USE_DOUBLE` and `FMT_USE_LONG_DOUBLE` macros
47fd5c32 Poul Sander 2024-10-05 08:44 793
  for extremely memory-constrained embedded system
47fd5c32 Poul Sander 2024-10-05 08:44 794
  (https://github.com/fmtlib/fmt/pull/1590). Thanks @albaguirre.
47fd5c32 Poul Sander 2024-10-05 08:44 795
47fd5c32 Poul Sander 2024-10-05 08:44 796
- Made `FMT_STRING` work with `constexpr` `string_view`
47fd5c32 Poul Sander 2024-10-05 08:44 797
  (https://github.com/fmtlib/fmt/pull/1589). Thanks @scramsby.
47fd5c32 Poul Sander 2024-10-05 08:44 798
47fd5c32 Poul Sander 2024-10-05 08:44 799
- Implemented a minor optimization in the format string parser
47fd5c32 Poul Sander 2024-10-05 08:44 800
  (https://github.com/fmtlib/fmt/pull/1560). Thanks @IkarusDeveloper.
47fd5c32 Poul Sander 2024-10-05 08:44 801
47fd5c32 Poul Sander 2024-10-05 08:44 802
- Improved attribute detection
47fd5c32 Poul Sander 2024-10-05 08:44 803
  (https://github.com/fmtlib/fmt/pull/1469,
47fd5c32 Poul Sander 2024-10-05 08:44 804
  https://github.com/fmtlib/fmt/pull/1475,
47fd5c32 Poul Sander 2024-10-05 08:44 805
  https://github.com/fmtlib/fmt/pull/1576).
47fd5c32 Poul Sander 2024-10-05 08:44 806
  Thanks @federico-busato, @chronoxor and @refnum.
47fd5c32 Poul Sander 2024-10-05 08:44 807
47fd5c32 Poul Sander 2024-10-05 08:44 808
- Improved documentation
47fd5c32 Poul Sander 2024-10-05 08:44 809
  (https://github.com/fmtlib/fmt/pull/1481,
47fd5c32 Poul Sander 2024-10-05 08:44 810
  https://github.com/fmtlib/fmt/pull/1523).
47fd5c32 Poul Sander 2024-10-05 08:44 811
  Thanks @JackBoosY and @imba-tjd.
47fd5c32 Poul Sander 2024-10-05 08:44 812
47fd5c32 Poul Sander 2024-10-05 08:44 813
- Fixed symbol visibility on Linux when compiling with
47fd5c32 Poul Sander 2024-10-05 08:44 814
  `-fvisibility=hidden`
47fd5c32 Poul Sander 2024-10-05 08:44 815
  (https://github.com/fmtlib/fmt/pull/1535). Thanks @milianw.
47fd5c32 Poul Sander 2024-10-05 08:44 816
47fd5c32 Poul Sander 2024-10-05 08:44 817
- Implemented various build configuration fixes and improvements
47fd5c32 Poul Sander 2024-10-05 08:44 818
  (https://github.com/fmtlib/fmt/issues/1264,
47fd5c32 Poul Sander 2024-10-05 08:44 819
  https://github.com/fmtlib/fmt/issues/1460,
47fd5c32 Poul Sander 2024-10-05 08:44 820
  https://github.com/fmtlib/fmt/pull/1534,
47fd5c32 Poul Sander 2024-10-05 08:44 821
  https://github.com/fmtlib/fmt/issues/1536,
47fd5c32 Poul Sander 2024-10-05 08:44 822
  https://github.com/fmtlib/fmt/issues/1545,
47fd5c32 Poul Sander 2024-10-05 08:44 823
  https://github.com/fmtlib/fmt/pull/1546,
47fd5c32 Poul Sander 2024-10-05 08:44 824
  https://github.com/fmtlib/fmt/issues/1566,
47fd5c32 Poul Sander 2024-10-05 08:44 825
  https://github.com/fmtlib/fmt/pull/1582,
47fd5c32 Poul Sander 2024-10-05 08:44 826
  https://github.com/fmtlib/fmt/issues/1597,
47fd5c32 Poul Sander 2024-10-05 08:44 827
  https://github.com/fmtlib/fmt/pull/1598).
47fd5c32 Poul Sander 2024-10-05 08:44 828
  Thanks @ambitslix, @jwillikers and @stac47.
47fd5c32 Poul Sander 2024-10-05 08:44 829
47fd5c32 Poul Sander 2024-10-05 08:44 830
- Fixed various warnings and compilation issues
47fd5c32 Poul Sander 2024-10-05 08:44 831
  (https://github.com/fmtlib/fmt/pull/1433,
47fd5c32 Poul Sander 2024-10-05 08:44 832
  https://github.com/fmtlib/fmt/issues/1461,
47fd5c32 Poul Sander 2024-10-05 08:44 833
  https://github.com/fmtlib/fmt/pull/1470,
47fd5c32 Poul Sander 2024-10-05 08:44 834
  https://github.com/fmtlib/fmt/pull/1480,
47fd5c32 Poul Sander 2024-10-05 08:44 835
  https://github.com/fmtlib/fmt/pull/1485,
47fd5c32 Poul Sander 2024-10-05 08:44 836
  https://github.com/fmtlib/fmt/pull/1492,
47fd5c32 Poul Sander 2024-10-05 08:44 837
  https://github.com/fmtlib/fmt/issues/1493,
47fd5c32 Poul Sander 2024-10-05 08:44 838
  https://github.com/fmtlib/fmt/issues/1504,
47fd5c32 Poul Sander 2024-10-05 08:44 839
  https://github.com/fmtlib/fmt/pull/1505,
47fd5c32 Poul Sander 2024-10-05 08:44 840
  https://github.com/fmtlib/fmt/pull/1512,
47fd5c32 Poul Sander 2024-10-05 08:44 841
  https://github.com/fmtlib/fmt/issues/1515,
47fd5c32 Poul Sander 2024-10-05 08:44 842
  https://github.com/fmtlib/fmt/pull/1516,
47fd5c32 Poul Sander 2024-10-05 08:44 843
  https://github.com/fmtlib/fmt/pull/1518,
47fd5c32 Poul Sander 2024-10-05 08:44 844
  https://github.com/fmtlib/fmt/pull/1519,
47fd5c32 Poul Sander 2024-10-05 08:44 845
  https://github.com/fmtlib/fmt/pull/1520,
47fd5c32 Poul Sander 2024-10-05 08:44 846
  https://github.com/fmtlib/fmt/pull/1521,
47fd5c32 Poul Sander 2024-10-05 08:44 847
  https://github.com/fmtlib/fmt/pull/1522,
47fd5c32 Poul Sander 2024-10-05 08:44 848
  https://github.com/fmtlib/fmt/issues/1524,
47fd5c32 Poul Sander 2024-10-05 08:44 849
  https://github.com/fmtlib/fmt/pull/1530,
47fd5c32 Poul Sander 2024-10-05 08:44 850
  https://github.com/fmtlib/fmt/issues/1531,
47fd5c32 Poul Sander 2024-10-05 08:44 851
  https://github.com/fmtlib/fmt/pull/1532,
47fd5c32 Poul Sander 2024-10-05 08:44 852
  https://github.com/fmtlib/fmt/issues/1539,
47fd5c32 Poul Sander 2024-10-05 08:44 853
  https://github.com/fmtlib/fmt/issues/1547,
47fd5c32 Poul Sander 2024-10-05 08:44 854
  https://github.com/fmtlib/fmt/issues/1548,
47fd5c32 Poul Sander 2024-10-05 08:44 855
  https://github.com/fmtlib/fmt/pull/1554,
47fd5c32 Poul Sander 2024-10-05 08:44 856
  https://github.com/fmtlib/fmt/issues/1567,
47fd5c32 Poul Sander 2024-10-05 08:44 857
  https://github.com/fmtlib/fmt/pull/1568,
47fd5c32 Poul Sander 2024-10-05 08:44 858
  https://github.com/fmtlib/fmt/pull/1569,
47fd5c32 Poul Sander 2024-10-05 08:44 859
  https://github.com/fmtlib/fmt/pull/1571,
47fd5c32 Poul Sander 2024-10-05 08:44 860
  https://github.com/fmtlib/fmt/pull/1573,
47fd5c32 Poul Sander 2024-10-05 08:44 861
  https://github.com/fmtlib/fmt/pull/1575,
47fd5c32 Poul Sander 2024-10-05 08:44 862
  https://github.com/fmtlib/fmt/pull/1581,
47fd5c32 Poul Sander 2024-10-05 08:44 863
  https://github.com/fmtlib/fmt/issues/1583,
47fd5c32 Poul Sander 2024-10-05 08:44 864
  https://github.com/fmtlib/fmt/issues/1586,
47fd5c32 Poul Sander 2024-10-05 08:44 865
  https://github.com/fmtlib/fmt/issues/1587,
47fd5c32 Poul Sander 2024-10-05 08:44 866
  https://github.com/fmtlib/fmt/issues/1594,
47fd5c32 Poul Sander 2024-10-05 08:44 867
  https://github.com/fmtlib/fmt/pull/1596,
47fd5c32 Poul Sander 2024-10-05 08:44 868
  https://github.com/fmtlib/fmt/issues/1604,
47fd5c32 Poul Sander 2024-10-05 08:44 869
  https://github.com/fmtlib/fmt/pull/1606,
47fd5c32 Poul Sander 2024-10-05 08:44 870
  https://github.com/fmtlib/fmt/issues/1607,
47fd5c32 Poul Sander 2024-10-05 08:44 871
  https://github.com/fmtlib/fmt/issues/1609).
47fd5c32 Poul Sander 2024-10-05 08:44 872
  Thanks @marti4d, @iPherian, @parkertomatoes, @gsjaardema, @chronoxor,
47fd5c32 Poul Sander 2024-10-05 08:44 873
  @DanielaE, @torsten48, @tohammer, @lefticus, @ryusakki, @adnsv, @fghzxm,
47fd5c32 Poul Sander 2024-10-05 08:44 874
  @refnum, @pramodk, @Spirrwell and @scramsby.
47fd5c32 Poul Sander 2024-10-05 08:44 875
47fd5c32 Poul Sander 2024-10-05 08:44 876
# 6.1.2 - 2019-12-11
47fd5c32 Poul Sander 2024-10-05 08:44 877
47fd5c32 Poul Sander 2024-10-05 08:44 878
- Fixed ABI compatibility with `libfmt.so.6.0.0`
47fd5c32 Poul Sander 2024-10-05 08:44 879
  (https://github.com/fmtlib/fmt/issues/1471).
47fd5c32 Poul Sander 2024-10-05 08:44 880
- Fixed handling types convertible to `std::string_view`
47fd5c32 Poul Sander 2024-10-05 08:44 881
  (https://github.com/fmtlib/fmt/pull/1451). Thanks @denizevrenci.
47fd5c32 Poul Sander 2024-10-05 08:44 882
- Made CUDA test an opt-in enabled via the `FMT_CUDA_TEST` CMake
47fd5c32 Poul Sander 2024-10-05 08:44 883
  option.
47fd5c32 Poul Sander 2024-10-05 08:44 884
- Fixed sign conversion warnings
47fd5c32 Poul Sander 2024-10-05 08:44 885
  (https://github.com/fmtlib/fmt/pull/1440). Thanks @0x8000-0000.
47fd5c32 Poul Sander 2024-10-05 08:44 886
47fd5c32 Poul Sander 2024-10-05 08:44 887
# 6.1.1 - 2019-12-04
47fd5c32 Poul Sander 2024-10-05 08:44 888
47fd5c32 Poul Sander 2024-10-05 08:44 889
- Fixed shared library build on Windows
47fd5c32 Poul Sander 2024-10-05 08:44 890
  (https://github.com/fmtlib/fmt/pull/1443,
47fd5c32 Poul Sander 2024-10-05 08:44 891
  https://github.com/fmtlib/fmt/issues/1445,
47fd5c32 Poul Sander 2024-10-05 08:44 892
  https://github.com/fmtlib/fmt/pull/1446,
47fd5c32 Poul Sander 2024-10-05 08:44 893
  https://github.com/fmtlib/fmt/issues/1450).
47fd5c32 Poul Sander 2024-10-05 08:44 894
  Thanks @egorpugin and @bbolli.
47fd5c32 Poul Sander 2024-10-05 08:44 895
- Added a missing decimal point in exponent notation with trailing
47fd5c32 Poul Sander 2024-10-05 08:44 896
  zeros.
47fd5c32 Poul Sander 2024-10-05 08:44 897
- Removed deprecated `format_arg_store::TYPES`.
47fd5c32 Poul Sander 2024-10-05 08:44 898
47fd5c32 Poul Sander 2024-10-05 08:44 899
# 6.1.0 - 2019-12-01
47fd5c32 Poul Sander 2024-10-05 08:44 900
47fd5c32 Poul Sander 2024-10-05 08:44 901
- {fmt} now formats IEEE 754 `float` and `double` using the shortest
47fd5c32 Poul Sander 2024-10-05 08:44 902
  decimal representation with correct rounding by default:
47fd5c32 Poul Sander 2024-10-05 08:44 903
47fd5c32 Poul Sander 2024-10-05 08:44 904
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 905
  #include <cmath>
47fd5c32 Poul Sander 2024-10-05 08:44 906
  #include <fmt/core.h>
47fd5c32 Poul Sander 2024-10-05 08:44 907
47fd5c32 Poul Sander 2024-10-05 08:44 908
  int main() {
47fd5c32 Poul Sander 2024-10-05 08:44 909
    fmt::print("{}", M_PI);
47fd5c32 Poul Sander 2024-10-05 08:44 910
  }
47fd5c32 Poul Sander 2024-10-05 08:44 911
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 912
47fd5c32 Poul Sander 2024-10-05 08:44 913
  prints `3.141592653589793`.
47fd5c32 Poul Sander 2024-10-05 08:44 914
47fd5c32 Poul Sander 2024-10-05 08:44 915
- Made the fast binary to decimal floating-point formatter the
47fd5c32 Poul Sander 2024-10-05 08:44 916
  default, simplified it and improved performance. {fmt} is now 15
47fd5c32 Poul Sander 2024-10-05 08:44 917
  times faster than libc++\'s `std::ostringstream`, 11 times faster
47fd5c32 Poul Sander 2024-10-05 08:44 918
  than `printf` and 10% faster than double-conversion on
47fd5c32 Poul Sander 2024-10-05 08:44 919
  [dtoa-benchmark](https://github.com/fmtlib/dtoa-benchmark):
47fd5c32 Poul Sander 2024-10-05 08:44 920
47fd5c32 Poul Sander 2024-10-05 08:44 921
  | Function      | Time (ns) | Speedup |
47fd5c32 Poul Sander 2024-10-05 08:44 922
  | ------------- | --------: | ------: |
47fd5c32 Poul Sander 2024-10-05 08:44 923
  | ostringstream | 1,346.30  | 1.00x   |
47fd5c32 Poul Sander 2024-10-05 08:44 924
  | ostrstream    | 1,195.74  | 1.13x   |
47fd5c32 Poul Sander 2024-10-05 08:44 925
  | sprintf       | 995.08    | 1.35x   |
47fd5c32 Poul Sander 2024-10-05 08:44 926
  | doubleconv    | 99.10     | 13.59x  |
47fd5c32 Poul Sander 2024-10-05 08:44 927
  | fmt           | 88.34     | 15.24x  |
47fd5c32 Poul Sander 2024-10-05 08:44 928
47fd5c32 Poul Sander 2024-10-05 08:44 929
  ![](https://user-images.githubusercontent.com/576385/69767160-cdaca400-112f-11ea-9fc5-347c9f83caad.png)
47fd5c32 Poul Sander 2024-10-05 08:44 930
47fd5c32 Poul Sander 2024-10-05 08:44 931
- {fmt} no longer converts `float` arguments to `double`. In
47fd5c32 Poul Sander 2024-10-05 08:44 932
  particular this improves the default (shortest) representation of
47fd5c32 Poul Sander 2024-10-05 08:44 933
  floats and makes `fmt::format` consistent with `std::format` specs
47fd5c32 Poul Sander 2024-10-05 08:44 934
  (https://github.com/fmtlib/fmt/issues/1336,
47fd5c32 Poul Sander 2024-10-05 08:44 935
  https://github.com/fmtlib/fmt/issues/1353,
47fd5c32 Poul Sander 2024-10-05 08:44 936
  https://github.com/fmtlib/fmt/pull/1360,
47fd5c32 Poul Sander 2024-10-05 08:44 937
  https://github.com/fmtlib/fmt/pull/1361):
47fd5c32 Poul Sander 2024-10-05 08:44 938
47fd5c32 Poul Sander 2024-10-05 08:44 939
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 940
  fmt::print("{}", 0.1f);
47fd5c32 Poul Sander 2024-10-05 08:44 941
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 942
47fd5c32 Poul Sander 2024-10-05 08:44 943
  prints `0.1` instead of `0.10000000149011612`.
47fd5c32 Poul Sander 2024-10-05 08:44 944
47fd5c32 Poul Sander 2024-10-05 08:44 945
  Thanks @orivej.
47fd5c32 Poul Sander 2024-10-05 08:44 946
47fd5c32 Poul Sander 2024-10-05 08:44 947
- Made floating-point formatting output consistent with
47fd5c32 Poul Sander 2024-10-05 08:44 948
  `printf`/iostreams
47fd5c32 Poul Sander 2024-10-05 08:44 949
  (https://github.com/fmtlib/fmt/issues/1376,
47fd5c32 Poul Sander 2024-10-05 08:44 950
  https://github.com/fmtlib/fmt/issues/1417).
47fd5c32 Poul Sander 2024-10-05 08:44 951
47fd5c32 Poul Sander 2024-10-05 08:44 952
- Added support for 128-bit integers
47fd5c32 Poul Sander 2024-10-05 08:44 953
  (https://github.com/fmtlib/fmt/pull/1287):
47fd5c32 Poul Sander 2024-10-05 08:44 954
47fd5c32 Poul Sander 2024-10-05 08:44 955
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 956
  fmt::print("{}", std::numeric_limits<__int128_t>::max());
47fd5c32 Poul Sander 2024-10-05 08:44 957
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 958
47fd5c32 Poul Sander 2024-10-05 08:44 959
  prints `170141183460469231731687303715884105727`.
47fd5c32 Poul Sander 2024-10-05 08:44 960
47fd5c32 Poul Sander 2024-10-05 08:44 961
  Thanks @denizevrenci.
47fd5c32 Poul Sander 2024-10-05 08:44 962
47fd5c32 Poul Sander 2024-10-05 08:44 963
- The overload of `print` that takes `text_style` is now atomic, i.e.
47fd5c32 Poul Sander 2024-10-05 08:44 964
  the output from different threads doesn\'t interleave
47fd5c32 Poul Sander 2024-10-05 08:44 965
  (https://github.com/fmtlib/fmt/pull/1351). Thanks @tankiJong.
47fd5c32 Poul Sander 2024-10-05 08:44 966
47fd5c32 Poul Sander 2024-10-05 08:44 967
- Made compile time in the header-only mode \~20% faster by reducing
47fd5c32 Poul Sander 2024-10-05 08:44 968
  the number of template instantiations. `wchar_t` overload of
47fd5c32 Poul Sander 2024-10-05 08:44 969
  `vprint` was moved from `fmt/core.h` to `fmt/format.h`.
47fd5c32 Poul Sander 2024-10-05 08:44 970
47fd5c32 Poul Sander 2024-10-05 08:44 971
- Added an overload of `fmt::join` that works with tuples
47fd5c32 Poul Sander 2024-10-05 08:44 972
  (https://github.com/fmtlib/fmt/issues/1322,
47fd5c32 Poul Sander 2024-10-05 08:44 973
  https://github.com/fmtlib/fmt/pull/1330):
47fd5c32 Poul Sander 2024-10-05 08:44 974
47fd5c32 Poul Sander 2024-10-05 08:44 975
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 976
  #include <tuple>
47fd5c32 Poul Sander 2024-10-05 08:44 977
  #include <fmt/ranges.h>
47fd5c32 Poul Sander 2024-10-05 08:44 978
47fd5c32 Poul Sander 2024-10-05 08:44 979
  int main() {
47fd5c32 Poul Sander 2024-10-05 08:44 980
    std::tuple<char, int, float> t{'a', 1, 2.0f};
47fd5c32 Poul Sander 2024-10-05 08:44 981
    fmt::print("{}", t);
47fd5c32 Poul Sander 2024-10-05 08:44 982
  }
47fd5c32 Poul Sander 2024-10-05 08:44 983
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 984
47fd5c32 Poul Sander 2024-10-05 08:44 985
  prints `('a', 1, 2.0)`.
47fd5c32 Poul Sander 2024-10-05 08:44 986
47fd5c32 Poul Sander 2024-10-05 08:44 987
  Thanks @jeremyong.
47fd5c32 Poul Sander 2024-10-05 08:44 988
47fd5c32 Poul Sander 2024-10-05 08:44 989
- Changed formatting of octal zero with prefix from \"00\" to \"0\":
47fd5c32 Poul Sander 2024-10-05 08:44 990
47fd5c32 Poul Sander 2024-10-05 08:44 991
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 992
  fmt::print("{:#o}", 0);
47fd5c32 Poul Sander 2024-10-05 08:44 993
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 994
47fd5c32 Poul Sander 2024-10-05 08:44 995
  prints `0`.
47fd5c32 Poul Sander 2024-10-05 08:44 996
47fd5c32 Poul Sander 2024-10-05 08:44 997
- The locale is now passed to ostream insertion (`<<`) operators
47fd5c32 Poul Sander 2024-10-05 08:44 998
  (https://github.com/fmtlib/fmt/pull/1406):
47fd5c32 Poul Sander 2024-10-05 08:44 999
47fd5c32 Poul Sander 2024-10-05 08:44 1000
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 1001
  #include <fmt/locale.h>
47fd5c32 Poul Sander 2024-10-05 08:44 1002
  #include <fmt/ostream.h>
47fd5c32 Poul Sander 2024-10-05 08:44 1003
47fd5c32 Poul Sander 2024-10-05 08:44 1004
  struct S {
47fd5c32 Poul Sander 2024-10-05 08:44 1005
    double value;
47fd5c32 Poul Sander 2024-10-05 08:44 1006
  };
47fd5c32 Poul Sander 2024-10-05 08:44 1007
47fd5c32 Poul Sander 2024-10-05 08:44 1008
  std::ostream& operator<<(std::ostream& os, S s) {
47fd5c32 Poul Sander 2024-10-05 08:44 1009
    return os << s.value;
47fd5c32 Poul Sander 2024-10-05 08:44 1010
  }
47fd5c32 Poul Sander 2024-10-05 08:44 1011
47fd5c32 Poul Sander 2024-10-05 08:44 1012
  int main() {
47fd5c32 Poul Sander 2024-10-05 08:44 1013
    auto s = fmt::format(std::locale("fr_FR.UTF-8"), "{}", S{0.42});
47fd5c32 Poul Sander 2024-10-05 08:44 1014
    // s == "0,42"
47fd5c32 Poul Sander 2024-10-05 08:44 1015
  }
47fd5c32 Poul Sander 2024-10-05 08:44 1016
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 1017
47fd5c32 Poul Sander 2024-10-05 08:44 1018
  Thanks @dlaugt.
47fd5c32 Poul Sander 2024-10-05 08:44 1019
47fd5c32 Poul Sander 2024-10-05 08:44 1020
- Locale-specific number formatting now uses grouping
47fd5c32 Poul Sander 2024-10-05 08:44 1021
  (https://github.com/fmtlib/fmt/issues/1393,
47fd5c32 Poul Sander 2024-10-05 08:44 1022
  https://github.com/fmtlib/fmt/pull/1394). Thanks @skrdaniel.
47fd5c32 Poul Sander 2024-10-05 08:44 1023
47fd5c32 Poul Sander 2024-10-05 08:44 1024
- Fixed handling of types with deleted implicit rvalue conversion to
47fd5c32 Poul Sander 2024-10-05 08:44 1025
  `const char**` (https://github.com/fmtlib/fmt/issues/1421):
47fd5c32 Poul Sander 2024-10-05 08:44 1026
47fd5c32 Poul Sander 2024-10-05 08:44 1027
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 1028
  struct mystring {
47fd5c32 Poul Sander 2024-10-05 08:44 1029
    operator const char*() const&;
47fd5c32 Poul Sander 2024-10-05 08:44 1030
    operator const char*() &;
47fd5c32 Poul Sander 2024-10-05 08:44 1031
    operator const char*() const&& = delete;
47fd5c32 Poul Sander 2024-10-05 08:44 1032
    operator const char*() && = delete;
47fd5c32 Poul Sander 2024-10-05 08:44 1033
  };
47fd5c32 Poul Sander 2024-10-05 08:44 1034
  mystring str;
47fd5c32 Poul Sander 2024-10-05 08:44 1035
  fmt::print("{}", str); // now compiles
47fd5c32 Poul Sander 2024-10-05 08:44 1036
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 1037
47fd5c32 Poul Sander 2024-10-05 08:44 1038
- Enums are now mapped to correct underlying types instead of `int`
47fd5c32 Poul Sander 2024-10-05 08:44 1039
  (https://github.com/fmtlib/fmt/pull/1286). Thanks @agmt.
47fd5c32 Poul Sander 2024-10-05 08:44 1040
47fd5c32 Poul Sander 2024-10-05 08:44 1041
- Enum classes are no longer implicitly converted to `int`
47fd5c32 Poul Sander 2024-10-05 08:44 1042
  (https://github.com/fmtlib/fmt/issues/1424).
47fd5c32 Poul Sander 2024-10-05 08:44 1043
47fd5c32 Poul Sander 2024-10-05 08:44 1044
- Added `basic_format_parse_context` for consistency with C++20
47fd5c32 Poul Sander 2024-10-05 08:44 1045
  `std::format` and deprecated `basic_parse_context`.
47fd5c32 Poul Sander 2024-10-05 08:44 1046
47fd5c32 Poul Sander 2024-10-05 08:44 1047
- Fixed handling of UTF-8 in precision
47fd5c32 Poul Sander 2024-10-05 08:44 1048
  (https://github.com/fmtlib/fmt/issues/1389,
47fd5c32 Poul Sander 2024-10-05 08:44 1049
  https://github.com/fmtlib/fmt/pull/1390). Thanks @tajtiattila.
47fd5c32 Poul Sander 2024-10-05 08:44 1050
47fd5c32 Poul Sander 2024-10-05 08:44 1051
- {fmt} can now be installed on Linux, macOS and Windows with
47fd5c32 Poul Sander 2024-10-05 08:44 1052
  [Conda](https://docs.conda.io/en/latest/) using its
47fd5c32 Poul Sander 2024-10-05 08:44 1053
  [conda-forge](https://conda-forge.org)
47fd5c32 Poul Sander 2024-10-05 08:44 1054
  [package](https://github.com/conda-forge/fmt-feedstock)
47fd5c32 Poul Sander 2024-10-05 08:44 1055
  (https://github.com/fmtlib/fmt/pull/1410):
47fd5c32 Poul Sander 2024-10-05 08:44 1056
47fd5c32 Poul Sander 2024-10-05 08:44 1057
      conda install -c conda-forge fmt
47fd5c32 Poul Sander 2024-10-05 08:44 1058
47fd5c32 Poul Sander 2024-10-05 08:44 1059
  Thanks @tdegeus.
47fd5c32 Poul Sander 2024-10-05 08:44 1060
47fd5c32 Poul Sander 2024-10-05 08:44 1061
- Added a CUDA test (https://github.com/fmtlib/fmt/pull/1285,
47fd5c32 Poul Sander 2024-10-05 08:44 1062
  https://github.com/fmtlib/fmt/pull/1317).
47fd5c32 Poul Sander 2024-10-05 08:44 1063
  Thanks @luncliff and @risa2000.
47fd5c32 Poul Sander 2024-10-05 08:44 1064
47fd5c32 Poul Sander 2024-10-05 08:44 1065
- Improved documentation
47fd5c32 Poul Sander 2024-10-05 08:44 1066
  (https://github.com/fmtlib/fmt/pull/1276,
47fd5c32 Poul Sander 2024-10-05 08:44 1067
  https://github.com/fmtlib/fmt/issues/1291,
47fd5c32 Poul Sander 2024-10-05 08:44 1068
  https://github.com/fmtlib/fmt/issues/1296,
47fd5c32 Poul Sander 2024-10-05 08:44 1069
  https://github.com/fmtlib/fmt/pull/1315,
47fd5c32 Poul Sander 2024-10-05 08:44 1070
  https://github.com/fmtlib/fmt/pull/1332,
47fd5c32 Poul Sander 2024-10-05 08:44 1071
  https://github.com/fmtlib/fmt/pull/1337,
47fd5c32 Poul Sander 2024-10-05 08:44 1072
  https://github.com/fmtlib/fmt/issues/1395
47fd5c32 Poul Sander 2024-10-05 08:44 1073
  https://github.com/fmtlib/fmt/pull/1418).
47fd5c32 Poul Sander 2024-10-05 08:44 1074
  Thanks @waywardmonkeys, @pauldreik and @jackoalan.
47fd5c32 Poul Sander 2024-10-05 08:44 1075
47fd5c32 Poul Sander 2024-10-05 08:44 1076
- Various code improvements
47fd5c32 Poul Sander 2024-10-05 08:44 1077
  (https://github.com/fmtlib/fmt/pull/1358,
47fd5c32 Poul Sander 2024-10-05 08:44 1078
  https://github.com/fmtlib/fmt/pull/1407).
47fd5c32 Poul Sander 2024-10-05 08:44 1079
  Thanks @orivej and @dpacbach.
47fd5c32 Poul Sander 2024-10-05 08:44 1080
47fd5c32 Poul Sander 2024-10-05 08:44 1081
- Fixed compile-time format string checks for user-defined types
47fd5c32 Poul Sander 2024-10-05 08:44 1082
  (https://github.com/fmtlib/fmt/issues/1292).
47fd5c32 Poul Sander 2024-10-05 08:44 1083
47fd5c32 Poul Sander 2024-10-05 08:44 1084
- Worked around a false positive in `unsigned-integer-overflow` sanitizer
47fd5c32 Poul Sander 2024-10-05 08:44 1085
  (https://github.com/fmtlib/fmt/issues/1377).
47fd5c32 Poul Sander 2024-10-05 08:44 1086
47fd5c32 Poul Sander 2024-10-05 08:44 1087
- Fixed various warnings and compilation issues
47fd5c32 Poul Sander 2024-10-05 08:44 1088
  (https://github.com/fmtlib/fmt/issues/1273,
47fd5c32 Poul Sander 2024-10-05 08:44 1089
  https://github.com/fmtlib/fmt/pull/1278,
47fd5c32 Poul Sander 2024-10-05 08:44 1090
  https://github.com/fmtlib/fmt/pull/1280,
47fd5c32 Poul Sander 2024-10-05 08:44 1091
  https://github.com/fmtlib/fmt/issues/1281,
47fd5c32 Poul Sander 2024-10-05 08:44 1092
  https://github.com/fmtlib/fmt/issues/1288,
47fd5c32 Poul Sander 2024-10-05 08:44 1093
  https://github.com/fmtlib/fmt/pull/1290,
47fd5c32 Poul Sander 2024-10-05 08:44 1094
  https://github.com/fmtlib/fmt/pull/1301,
47fd5c32 Poul Sander 2024-10-05 08:44 1095
  https://github.com/fmtlib/fmt/issues/1305,
47fd5c32 Poul Sander 2024-10-05 08:44 1096
  https://github.com/fmtlib/fmt/issues/1306,
47fd5c32 Poul Sander 2024-10-05 08:44 1097
  https://github.com/fmtlib/fmt/issues/1309,
47fd5c32 Poul Sander 2024-10-05 08:44 1098
  https://github.com/fmtlib/fmt/pull/1312,
47fd5c32 Poul Sander 2024-10-05 08:44 1099
  https://github.com/fmtlib/fmt/issues/1313,
47fd5c32 Poul Sander 2024-10-05 08:44 1100
  https://github.com/fmtlib/fmt/issues/1316,
47fd5c32 Poul Sander 2024-10-05 08:44 1101
  https://github.com/fmtlib/fmt/issues/1319,
47fd5c32 Poul Sander 2024-10-05 08:44 1102
  https://github.com/fmtlib/fmt/pull/1320,
47fd5c32 Poul Sander 2024-10-05 08:44 1103
  https://github.com/fmtlib/fmt/pull/1326,
47fd5c32 Poul Sander 2024-10-05 08:44 1104
  https://github.com/fmtlib/fmt/pull/1328,
47fd5c32 Poul Sander 2024-10-05 08:44 1105
  https://github.com/fmtlib/fmt/issues/1344,
47fd5c32 Poul Sander 2024-10-05 08:44 1106
  https://github.com/fmtlib/fmt/pull/1345,
47fd5c32 Poul Sander 2024-10-05 08:44 1107
  https://github.com/fmtlib/fmt/pull/1347,
47fd5c32 Poul Sander 2024-10-05 08:44 1108
  https://github.com/fmtlib/fmt/pull/1349,
47fd5c32 Poul Sander 2024-10-05 08:44 1109
  https://github.com/fmtlib/fmt/issues/1354,
47fd5c32 Poul Sander 2024-10-05 08:44 1110
  https://github.com/fmtlib/fmt/issues/1362,
47fd5c32 Poul Sander 2024-10-05 08:44 1111
  https://github.com/fmtlib/fmt/issues/1366,
47fd5c32 Poul Sander 2024-10-05 08:44 1112
  https://github.com/fmtlib/fmt/pull/1364,
47fd5c32 Poul Sander 2024-10-05 08:44 1113
  https://github.com/fmtlib/fmt/pull/1370,
47fd5c32 Poul Sander 2024-10-05 08:44 1114
  https://github.com/fmtlib/fmt/pull/1371,
47fd5c32 Poul Sander 2024-10-05 08:44 1115
  https://github.com/fmtlib/fmt/issues/1385,
47fd5c32 Poul Sander 2024-10-05 08:44 1116
  https://github.com/fmtlib/fmt/issues/1388,
47fd5c32 Poul Sander 2024-10-05 08:44 1117
  https://github.com/fmtlib/fmt/pull/1397,
47fd5c32 Poul Sander 2024-10-05 08:44 1118
  https://github.com/fmtlib/fmt/pull/1414,
47fd5c32 Poul Sander 2024-10-05 08:44 1119
  https://github.com/fmtlib/fmt/pull/1416,
47fd5c32 Poul Sander 2024-10-05 08:44 1120
  https://github.com/fmtlib/fmt/issues/1422
47fd5c32 Poul Sander 2024-10-05 08:44 1121
  https://github.com/fmtlib/fmt/pull/1427,
47fd5c32 Poul Sander 2024-10-05 08:44 1122
  https://github.com/fmtlib/fmt/issues/1431,
47fd5c32 Poul Sander 2024-10-05 08:44 1123
  https://github.com/fmtlib/fmt/pull/1433).
47fd5c32 Poul Sander 2024-10-05 08:44 1124
  Thanks @hhb, @gsjaardema, @gabime, @neheb, @vedranmiletic, @dkavolis,
47fd5c32 Poul Sander 2024-10-05 08:44 1125
  @mwinterb, @orivej, @denizevrenci, @leonklingele, @chronoxor, @kent-tri,
47fd5c32 Poul Sander 2024-10-05 08:44 1126
  @0x8000-0000 and @marti4d.
47fd5c32 Poul Sander 2024-10-05 08:44 1127
47fd5c32 Poul Sander 2024-10-05 08:44 1128
# 6.0.0 - 2019-08-26
47fd5c32 Poul Sander 2024-10-05 08:44 1129
47fd5c32 Poul Sander 2024-10-05 08:44 1130
- Switched to the [MIT license](
47fd5c32 Poul Sander 2024-10-05 08:44 1131
  https://github.com/fmtlib/fmt/blob/5a4b24613ba16cc689977c3b5bd8274a3ba1dd1f/LICENSE.rst)
47fd5c32 Poul Sander 2024-10-05 08:44 1132
  with an optional exception that allows distributing binary code
47fd5c32 Poul Sander 2024-10-05 08:44 1133
  without attribution.
47fd5c32 Poul Sander 2024-10-05 08:44 1134
47fd5c32 Poul Sander 2024-10-05 08:44 1135
- Floating-point formatting is now locale-independent by default:
47fd5c32 Poul Sander 2024-10-05 08:44 1136
47fd5c32 Poul Sander 2024-10-05 08:44 1137
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 1138
  #include <locale>
47fd5c32 Poul Sander 2024-10-05 08:44 1139
  #include <fmt/core.h>
47fd5c32 Poul Sander 2024-10-05 08:44 1140
47fd5c32 Poul Sander 2024-10-05 08:44 1141
  int main() {
47fd5c32 Poul Sander 2024-10-05 08:44 1142
    std::locale::global(std::locale("ru_RU.UTF-8"));
47fd5c32 Poul Sander 2024-10-05 08:44 1143
    fmt::print("value = {}", 4.2);
47fd5c32 Poul Sander 2024-10-05 08:44 1144
  }
47fd5c32 Poul Sander 2024-10-05 08:44 1145
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 1146
47fd5c32 Poul Sander 2024-10-05 08:44 1147
  prints \"value = 4.2\" regardless of the locale.
47fd5c32 Poul Sander 2024-10-05 08:44 1148
47fd5c32 Poul Sander 2024-10-05 08:44 1149
  For locale-specific formatting use the `n` specifier:
47fd5c32 Poul Sander 2024-10-05 08:44 1150
47fd5c32 Poul Sander 2024-10-05 08:44 1151
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 1152
  std::locale::global(std::locale("ru_RU.UTF-8"));
47fd5c32 Poul Sander 2024-10-05 08:44 1153
  fmt::print("value = {:n}", 4.2);
47fd5c32 Poul Sander 2024-10-05 08:44 1154
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 1155
47fd5c32 Poul Sander 2024-10-05 08:44 1156
  prints \"value = 4,2\".
47fd5c32 Poul Sander 2024-10-05 08:44 1157
47fd5c32 Poul Sander 2024-10-05 08:44 1158
- Added an experimental Grisu floating-point formatting algorithm
47fd5c32 Poul Sander 2024-10-05 08:44 1159
  implementation (disabled by default). To enable it compile with the
47fd5c32 Poul Sander 2024-10-05 08:44 1160
  `FMT_USE_GRISU` macro defined to 1:
47fd5c32 Poul Sander 2024-10-05 08:44 1161
47fd5c32 Poul Sander 2024-10-05 08:44 1162
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 1163
  #define FMT_USE_GRISU 1
47fd5c32 Poul Sander 2024-10-05 08:44 1164
  #include <fmt/format.h>
47fd5c32 Poul Sander 2024-10-05 08:44 1165
47fd5c32 Poul Sander 2024-10-05 08:44 1166
  auto s = fmt::format("{}", 4.2); // formats 4.2 using Grisu
47fd5c32 Poul Sander 2024-10-05 08:44 1167
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 1168
47fd5c32 Poul Sander 2024-10-05 08:44 1169
  With Grisu enabled, {fmt} is 13x faster than `std::ostringstream`
47fd5c32 Poul Sander 2024-10-05 08:44 1170
  (libc++) and 10x faster than `sprintf` on
47fd5c32 Poul Sander 2024-10-05 08:44 1171
  [dtoa-benchmark](https://github.com/fmtlib/dtoa-benchmark) ([full
47fd5c32 Poul Sander 2024-10-05 08:44 1172
  results](https://fmt.dev/unknown_mac64_clang10.0.html)):
47fd5c32 Poul Sander 2024-10-05 08:44 1173
47fd5c32 Poul Sander 2024-10-05 08:44 1174
  ![](https://user-images.githubusercontent.com/576385/54883977-9fe8c000-4e28-11e9-8bde-272d122e7c52.jpg)
47fd5c32 Poul Sander 2024-10-05 08:44 1175
47fd5c32 Poul Sander 2024-10-05 08:44 1176
- Separated formatting and parsing contexts for consistency with
47fd5c32 Poul Sander 2024-10-05 08:44 1177
  [C++20 std::format](http://eel.is/c++draft/format), removing the
47fd5c32 Poul Sander 2024-10-05 08:44 1178
  undocumented `basic_format_context::parse_context()` function.
47fd5c32 Poul Sander 2024-10-05 08:44 1179
47fd5c32 Poul Sander 2024-10-05 08:44 1180
- Added [oss-fuzz](https://github.com/google/oss-fuzz) support
47fd5c32 Poul Sander 2024-10-05 08:44 1181
  (https://github.com/fmtlib/fmt/pull/1199). Thanks @pauldreik.
47fd5c32 Poul Sander 2024-10-05 08:44 1182
47fd5c32 Poul Sander 2024-10-05 08:44 1183
- `formatter` specializations now always take precedence over
47fd5c32 Poul Sander 2024-10-05 08:44 1184
  `operator<<` (https://github.com/fmtlib/fmt/issues/952):
47fd5c32 Poul Sander 2024-10-05 08:44 1185
47fd5c32 Poul Sander 2024-10-05 08:44 1186
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 1187
  #include <iostream>
47fd5c32 Poul Sander 2024-10-05 08:44 1188
  #include <fmt/ostream.h>
47fd5c32 Poul Sander 2024-10-05 08:44 1189
47fd5c32 Poul Sander 2024-10-05 08:44 1190
  struct S {};
47fd5c32 Poul Sander 2024-10-05 08:44 1191
47fd5c32 Poul Sander 2024-10-05 08:44 1192
  std::ostream& operator<<(std::ostream& os, S) {
47fd5c32 Poul Sander 2024-10-05 08:44 1193
    return os << 1;
47fd5c32 Poul Sander 2024-10-05 08:44 1194
  }
47fd5c32 Poul Sander 2024-10-05 08:44 1195
47fd5c32 Poul Sander 2024-10-05 08:44 1196
  template <>
47fd5c32 Poul Sander 2024-10-05 08:44 1197
  struct fmt::formatter<S> : fmt::formatter<int> {
47fd5c32 Poul Sander 2024-10-05 08:44 1198
    auto format(S, format_context& ctx) {
47fd5c32 Poul Sander 2024-10-05 08:44 1199
      return formatter<int>::format(2, ctx);
47fd5c32 Poul Sander 2024-10-05 08:44 1200
    }
47fd5c32 Poul Sander 2024-10-05 08:44 1201
  };
47fd5c32 Poul Sander 2024-10-05 08:44 1202
47fd5c32 Poul Sander 2024-10-05 08:44 1203
  int main() {
47fd5c32 Poul Sander 2024-10-05 08:44 1204
    std::cout << S() << "\n"; // prints 1 using operator<<
47fd5c32 Poul Sander 2024-10-05 08:44 1205
    fmt::print("{}\n", S());  // prints 2 using formatter
47fd5c32 Poul Sander 2024-10-05 08:44 1206
  }
47fd5c32 Poul Sander 2024-10-05 08:44 1207
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 1208
47fd5c32 Poul Sander 2024-10-05 08:44 1209
- Introduced the experimental `fmt::compile` function that does format
47fd5c32 Poul Sander 2024-10-05 08:44 1210
  string compilation
47fd5c32 Poul Sander 2024-10-05 08:44 1211
  (https://github.com/fmtlib/fmt/issues/618,
47fd5c32 Poul Sander 2024-10-05 08:44 1212
  https://github.com/fmtlib/fmt/issues/1169,
47fd5c32 Poul Sander 2024-10-05 08:44 1213
  https://github.com/fmtlib/fmt/pull/1171):
47fd5c32 Poul Sander 2024-10-05 08:44 1214
47fd5c32 Poul Sander 2024-10-05 08:44 1215
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 1216
  #include <fmt/compile.h>
47fd5c32 Poul Sander 2024-10-05 08:44 1217
47fd5c32 Poul Sander 2024-10-05 08:44 1218
  auto f = fmt::compile<int>("{}");
47fd5c32 Poul Sander 2024-10-05 08:44 1219
  std::string s = fmt::format(f, 42); // can be called multiple times to
47fd5c32 Poul Sander 2024-10-05 08:44 1220
                                      // format different values
47fd5c32 Poul Sander 2024-10-05 08:44 1221
  // s == "42"
47fd5c32 Poul Sander 2024-10-05 08:44 1222
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 1223
47fd5c32 Poul Sander 2024-10-05 08:44 1224
  It moves the cost of parsing a format string outside of the format
47fd5c32 Poul Sander 2024-10-05 08:44 1225
  function which can be beneficial when identically formatting many
47fd5c32 Poul Sander 2024-10-05 08:44 1226
  objects of the same types. Thanks @stryku.
47fd5c32 Poul Sander 2024-10-05 08:44 1227
47fd5c32 Poul Sander 2024-10-05 08:44 1228
- Added experimental `%` format specifier that formats floating-point
47fd5c32 Poul Sander 2024-10-05 08:44 1229
  values as percentages
47fd5c32 Poul Sander 2024-10-05 08:44 1230
  (https://github.com/fmtlib/fmt/pull/1060,
47fd5c32 Poul Sander 2024-10-05 08:44 1231
  https://github.com/fmtlib/fmt/pull/1069,
47fd5c32 Poul Sander 2024-10-05 08:44 1232
  https://github.com/fmtlib/fmt/pull/1071):
47fd5c32 Poul Sander 2024-10-05 08:44 1233
47fd5c32 Poul Sander 2024-10-05 08:44 1234
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 1235
  auto s = fmt::format("{:.1%}", 0.42); // s == "42.0%"
47fd5c32 Poul Sander 2024-10-05 08:44 1236
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 1237
47fd5c32 Poul Sander 2024-10-05 08:44 1238
  Thanks @gawain-bolton.
47fd5c32 Poul Sander 2024-10-05 08:44 1239
47fd5c32 Poul Sander 2024-10-05 08:44 1240
- Implemented precision for floating-point durations
47fd5c32 Poul Sander 2024-10-05 08:44 1241
  (https://github.com/fmtlib/fmt/issues/1004,
47fd5c32 Poul Sander 2024-10-05 08:44 1242
  https://github.com/fmtlib/fmt/pull/1012):
47fd5c32 Poul Sander 2024-10-05 08:44 1243
47fd5c32 Poul Sander 2024-10-05 08:44 1244
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 1245
  auto s = fmt::format("{:.1}", std::chrono::duration<double>(1.234));
47fd5c32 Poul Sander 2024-10-05 08:44 1246
  // s == 1.2s
47fd5c32 Poul Sander 2024-10-05 08:44 1247
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 1248
47fd5c32 Poul Sander 2024-10-05 08:44 1249
  Thanks @DanielaE.
47fd5c32 Poul Sander 2024-10-05 08:44 1250
47fd5c32 Poul Sander 2024-10-05 08:44 1251
- Implemented `chrono` format specifiers `%Q` and `%q` that give the
47fd5c32 Poul Sander 2024-10-05 08:44 1252
  value and the unit respectively
47fd5c32 Poul Sander 2024-10-05 08:44 1253
  (https://github.com/fmtlib/fmt/pull/1019):
47fd5c32 Poul Sander 2024-10-05 08:44 1254
47fd5c32 Poul Sander 2024-10-05 08:44 1255
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 1256
  auto value = fmt::format("{:%Q}", 42s); // value == "42"
47fd5c32 Poul Sander 2024-10-05 08:44 1257
  auto unit  = fmt::format("{:%q}", 42s); // unit == "s"
47fd5c32 Poul Sander 2024-10-05 08:44 1258
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 1259
47fd5c32 Poul Sander 2024-10-05 08:44 1260
  Thanks @DanielaE.
47fd5c32 Poul Sander 2024-10-05 08:44 1261
47fd5c32 Poul Sander 2024-10-05 08:44 1262
- Fixed handling of dynamic width in chrono formatter:
47fd5c32 Poul Sander 2024-10-05 08:44 1263
47fd5c32 Poul Sander 2024-10-05 08:44 1264
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 1265
  auto s = fmt::format("{0:{1}%H:%M:%S}", std::chrono::seconds(12345), 12);
47fd5c32 Poul Sander 2024-10-05 08:44 1266
  //                        ^ width argument index                     ^ width
47fd5c32 Poul Sander 2024-10-05 08:44 1267
  // s == "03:25:45    "
47fd5c32 Poul Sander 2024-10-05 08:44 1268
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 1269
47fd5c32 Poul Sander 2024-10-05 08:44 1270
  Thanks Howard Hinnant.
47fd5c32 Poul Sander 2024-10-05 08:44 1271
47fd5c32 Poul Sander 2024-10-05 08:44 1272
- Removed deprecated `fmt/time.h`. Use `fmt/chrono.h` instead.
47fd5c32 Poul Sander 2024-10-05 08:44 1273
47fd5c32 Poul Sander 2024-10-05 08:44 1274
- Added `fmt::format` and `fmt::vformat` overloads that take
47fd5c32 Poul Sander 2024-10-05 08:44 1275
  `text_style` (https://github.com/fmtlib/fmt/issues/993,
47fd5c32 Poul Sander 2024-10-05 08:44 1276
  https://github.com/fmtlib/fmt/pull/994):
47fd5c32 Poul Sander 2024-10-05 08:44 1277
47fd5c32 Poul Sander 2024-10-05 08:44 1278
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 1279
  #include <fmt/color.h>
47fd5c32 Poul Sander 2024-10-05 08:44 1280
47fd5c32 Poul Sander 2024-10-05 08:44 1281
  std::string message = fmt::format(fmt::emphasis::bold | fg(fmt::color::red),
47fd5c32 Poul Sander 2024-10-05 08:44 1282
                                    "The answer is {}.", 42);
47fd5c32 Poul Sander 2024-10-05 08:44 1283
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 1284
47fd5c32 Poul Sander 2024-10-05 08:44 1285
  Thanks @Naios.
47fd5c32 Poul Sander 2024-10-05 08:44 1286
47fd5c32 Poul Sander 2024-10-05 08:44 1287
- Removed the deprecated color API (`print_colored`). Use the new API,
47fd5c32 Poul Sander 2024-10-05 08:44 1288
  namely `print` overloads that take `text_style` instead.
47fd5c32 Poul Sander 2024-10-05 08:44 1289
47fd5c32 Poul Sander 2024-10-05 08:44 1290
- Made `std::unique_ptr` and `std::shared_ptr` formattable as pointers
47fd5c32 Poul Sander 2024-10-05 08:44 1291
  via `fmt::ptr` (https://github.com/fmtlib/fmt/pull/1121):
47fd5c32 Poul Sander 2024-10-05 08:44 1292
47fd5c32 Poul Sander 2024-10-05 08:44 1293
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 1294
  std::unique_ptr<int> p = ...;
47fd5c32 Poul Sander 2024-10-05 08:44 1295
  fmt::print("{}", fmt::ptr(p)); // prints p as a pointer
47fd5c32 Poul Sander 2024-10-05 08:44 1296
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 1297
47fd5c32 Poul Sander 2024-10-05 08:44 1298
  Thanks @sighingnow.
47fd5c32 Poul Sander 2024-10-05 08:44 1299
47fd5c32 Poul Sander 2024-10-05 08:44 1300
- Made `print` and `vprint` report I/O errors
47fd5c32 Poul Sander 2024-10-05 08:44 1301
  (https://github.com/fmtlib/fmt/issues/1098,
47fd5c32 Poul Sander 2024-10-05 08:44 1302
  https://github.com/fmtlib/fmt/pull/1099). Thanks @BillyDonahue.
47fd5c32 Poul Sander 2024-10-05 08:44 1303
47fd5c32 Poul Sander 2024-10-05 08:44 1304
- Marked deprecated APIs with the `[[deprecated]]` attribute and
47fd5c32 Poul Sander 2024-10-05 08:44 1305
  removed internal uses of deprecated APIs
47fd5c32 Poul Sander 2024-10-05 08:44 1306
  (https://github.com/fmtlib/fmt/pull/1022). Thanks @eliaskosunen.
47fd5c32 Poul Sander 2024-10-05 08:44 1307
47fd5c32 Poul Sander 2024-10-05 08:44 1308
- Modernized the codebase using more C++11 features and removing
47fd5c32 Poul Sander 2024-10-05 08:44 1309
  workarounds. Most importantly, `buffer_context` is now an alias
47fd5c32 Poul Sander 2024-10-05 08:44 1310
  template, so use `buffer_context<T>` instead of
47fd5c32 Poul Sander 2024-10-05 08:44 1311
  `buffer_context<T>::type`. These features require GCC 4.8 or later.
47fd5c32 Poul Sander 2024-10-05 08:44 1312
47fd5c32 Poul Sander 2024-10-05 08:44 1313
- `formatter` specializations now always take precedence over implicit
47fd5c32 Poul Sander 2024-10-05 08:44 1314
  conversions to `int` and the undocumented `convert_to_int` trait is
47fd5c32 Poul Sander 2024-10-05 08:44 1315
  now deprecated.
47fd5c32 Poul Sander 2024-10-05 08:44 1316
47fd5c32 Poul Sander 2024-10-05 08:44 1317
- Moved the undocumented `basic_writer`, `writer`, and `wwriter` types
47fd5c32 Poul Sander 2024-10-05 08:44 1318
  to the `internal` namespace.
47fd5c32 Poul Sander 2024-10-05 08:44 1319
47fd5c32 Poul Sander 2024-10-05 08:44 1320
- Removed deprecated `basic_format_context::begin()`. Use `out()`
47fd5c32 Poul Sander 2024-10-05 08:44 1321
  instead.
47fd5c32 Poul Sander 2024-10-05 08:44 1322
47fd5c32 Poul Sander 2024-10-05 08:44 1323
- Disallowed passing the result of `join` as an lvalue to prevent
47fd5c32 Poul Sander 2024-10-05 08:44 1324
  misuse.
47fd5c32 Poul Sander 2024-10-05 08:44 1325
47fd5c32 Poul Sander 2024-10-05 08:44 1326
- Refactored the undocumented structs that represent parsed format
47fd5c32 Poul Sander 2024-10-05 08:44 1327
  specifiers to simplify the API and allow multibyte fill.
47fd5c32 Poul Sander 2024-10-05 08:44 1328
47fd5c32 Poul Sander 2024-10-05 08:44 1329
- Moved SFINAE to template parameters to reduce symbol sizes.
47fd5c32 Poul Sander 2024-10-05 08:44 1330
47fd5c32 Poul Sander 2024-10-05 08:44 1331
- Switched to `fputws` for writing wide strings so that it\'s no
47fd5c32 Poul Sander 2024-10-05 08:44 1332
  longer required to call `_setmode` on Windows
47fd5c32 Poul Sander 2024-10-05 08:44 1333
  (https://github.com/fmtlib/fmt/issues/1229,
47fd5c32 Poul Sander 2024-10-05 08:44 1334
  https://github.com/fmtlib/fmt/pull/1243). Thanks @jackoalan.
47fd5c32 Poul Sander 2024-10-05 08:44 1335
47fd5c32 Poul Sander 2024-10-05 08:44 1336
- Improved literal-based API
47fd5c32 Poul Sander 2024-10-05 08:44 1337
  (https://github.com/fmtlib/fmt/pull/1254). Thanks @sylveon.
47fd5c32 Poul Sander 2024-10-05 08:44 1338
47fd5c32 Poul Sander 2024-10-05 08:44 1339
- Added support for exotic platforms without `uintptr_t` such as IBM i
47fd5c32 Poul Sander 2024-10-05 08:44 1340
  (AS/400) which has 128-bit pointers and only 64-bit integers
47fd5c32 Poul Sander 2024-10-05 08:44 1341
  (https://github.com/fmtlib/fmt/issues/1059).
47fd5c32 Poul Sander 2024-10-05 08:44 1342
47fd5c32 Poul Sander 2024-10-05 08:44 1343
- Added [Sublime Text syntax highlighting config](
47fd5c32 Poul Sander 2024-10-05 08:44 1344
  https://github.com/fmtlib/fmt/blob/master/support/C%2B%2B.sublime-syntax)
47fd5c32 Poul Sander 2024-10-05 08:44 1345
  (https://github.com/fmtlib/fmt/issues/1037). Thanks @Kronuz.
47fd5c32 Poul Sander 2024-10-05 08:44 1346
47fd5c32 Poul Sander 2024-10-05 08:44 1347
- Added the `FMT_ENFORCE_COMPILE_STRING` macro to enforce the use of
47fd5c32 Poul Sander 2024-10-05 08:44 1348
  compile-time format strings
47fd5c32 Poul Sander 2024-10-05 08:44 1349
  (https://github.com/fmtlib/fmt/pull/1231). Thanks @jackoalan.
47fd5c32 Poul Sander 2024-10-05 08:44 1350
47fd5c32 Poul Sander 2024-10-05 08:44 1351
- Stopped setting `CMAKE_BUILD_TYPE` if {fmt} is a subproject
47fd5c32 Poul Sander 2024-10-05 08:44 1352
  (https://github.com/fmtlib/fmt/issues/1081).
47fd5c32 Poul Sander 2024-10-05 08:44 1353
47fd5c32 Poul Sander 2024-10-05 08:44 1354
- Various build improvements
47fd5c32 Poul Sander 2024-10-05 08:44 1355
  (https://github.com/fmtlib/fmt/pull/1039,
47fd5c32 Poul Sander 2024-10-05 08:44 1356
  https://github.com/fmtlib/fmt/pull/1078,
47fd5c32 Poul Sander 2024-10-05 08:44 1357
  https://github.com/fmtlib/fmt/pull/1091,
47fd5c32 Poul Sander 2024-10-05 08:44 1358
  https://github.com/fmtlib/fmt/pull/1103,
47fd5c32 Poul Sander 2024-10-05 08:44 1359
  https://github.com/fmtlib/fmt/pull/1177).
47fd5c32 Poul Sander 2024-10-05 08:44 1360
  Thanks @luncliff, @jasonszang, @olafhering, @Lecetem and @pauldreik.
47fd5c32 Poul Sander 2024-10-05 08:44 1361
47fd5c32 Poul Sander 2024-10-05 08:44 1362
- Improved documentation
47fd5c32 Poul Sander 2024-10-05 08:44 1363
  (https://github.com/fmtlib/fmt/issues/1049,
47fd5c32 Poul Sander 2024-10-05 08:44 1364
  https://github.com/fmtlib/fmt/pull/1051,
47fd5c32 Poul Sander 2024-10-05 08:44 1365
  https://github.com/fmtlib/fmt/pull/1083,
47fd5c32 Poul Sander 2024-10-05 08:44 1366
  https://github.com/fmtlib/fmt/pull/1113,
47fd5c32 Poul Sander 2024-10-05 08:44 1367
  https://github.com/fmtlib/fmt/pull/1114,
47fd5c32 Poul Sander 2024-10-05 08:44 1368
  https://github.com/fmtlib/fmt/issues/1146,
47fd5c32 Poul Sander 2024-10-05 08:44 1369
  https://github.com/fmtlib/fmt/issues/1180,
47fd5c32 Poul Sander 2024-10-05 08:44 1370
  https://github.com/fmtlib/fmt/pull/1250,
47fd5c32 Poul Sander 2024-10-05 08:44 1371
  https://github.com/fmtlib/fmt/pull/1252,
47fd5c32 Poul Sander 2024-10-05 08:44 1372
  https://github.com/fmtlib/fmt/pull/1265).
47fd5c32 Poul Sander 2024-10-05 08:44 1373
  Thanks @mikelui, @foonathan, @BillyDonahue, @jwakely, @kaisbe and
47fd5c32 Poul Sander 2024-10-05 08:44 1374
  @sdebionne.
47fd5c32 Poul Sander 2024-10-05 08:44 1375
47fd5c32 Poul Sander 2024-10-05 08:44 1376
- Fixed ambiguous formatter specialization in `fmt/ranges.h`
47fd5c32 Poul Sander 2024-10-05 08:44 1377
  (https://github.com/fmtlib/fmt/issues/1123).
47fd5c32 Poul Sander 2024-10-05 08:44 1378
47fd5c32 Poul Sander 2024-10-05 08:44 1379
- Fixed formatting of a non-empty `std::filesystem::path` which is an
47fd5c32 Poul Sander 2024-10-05 08:44 1380
  infinitely deep range of its components
47fd5c32 Poul Sander 2024-10-05 08:44 1381
  (https://github.com/fmtlib/fmt/issues/1268).
47fd5c32 Poul Sander 2024-10-05 08:44 1382
47fd5c32 Poul Sander 2024-10-05 08:44 1383
- Fixed handling of general output iterators when formatting
47fd5c32 Poul Sander 2024-10-05 08:44 1384
  characters (https://github.com/fmtlib/fmt/issues/1056,
47fd5c32 Poul Sander 2024-10-05 08:44 1385
  https://github.com/fmtlib/fmt/pull/1058). Thanks @abolz.
47fd5c32 Poul Sander 2024-10-05 08:44 1386
47fd5c32 Poul Sander 2024-10-05 08:44 1387
- Fixed handling of output iterators in `formatter` specialization for
47fd5c32 Poul Sander 2024-10-05 08:44 1388
  ranges (https://github.com/fmtlib/fmt/issues/1064).
47fd5c32 Poul Sander 2024-10-05 08:44 1389
47fd5c32 Poul Sander 2024-10-05 08:44 1390
- Fixed handling of exotic character types
47fd5c32 Poul Sander 2024-10-05 08:44 1391
  (https://github.com/fmtlib/fmt/issues/1188).
47fd5c32 Poul Sander 2024-10-05 08:44 1392
47fd5c32 Poul Sander 2024-10-05 08:44 1393
- Made chrono formatting work with exceptions disabled
47fd5c32 Poul Sander 2024-10-05 08:44 1394
  (https://github.com/fmtlib/fmt/issues/1062).
47fd5c32 Poul Sander 2024-10-05 08:44 1395
47fd5c32 Poul Sander 2024-10-05 08:44 1396
- Fixed DLL visibility issues
47fd5c32 Poul Sander 2024-10-05 08:44 1397
  (https://github.com/fmtlib/fmt/pull/1134,
47fd5c32 Poul Sander 2024-10-05 08:44 1398
  https://github.com/fmtlib/fmt/pull/1147). Thanks @denchat.
47fd5c32 Poul Sander 2024-10-05 08:44 1399
47fd5c32 Poul Sander 2024-10-05 08:44 1400
- Disabled the use of UDL template extension on GCC 9
47fd5c32 Poul Sander 2024-10-05 08:44 1401
  (https://github.com/fmtlib/fmt/issues/1148).
47fd5c32 Poul Sander 2024-10-05 08:44 1402
47fd5c32 Poul Sander 2024-10-05 08:44 1403
- Removed misplaced `format` compile-time checks from `printf`
47fd5c32 Poul Sander 2024-10-05 08:44 1404
  (https://github.com/fmtlib/fmt/issues/1173).
47fd5c32 Poul Sander 2024-10-05 08:44 1405
47fd5c32 Poul Sander 2024-10-05 08:44 1406
- Fixed issues in the experimental floating-point formatter
47fd5c32 Poul Sander 2024-10-05 08:44 1407
  (https://github.com/fmtlib/fmt/issues/1072,
47fd5c32 Poul Sander 2024-10-05 08:44 1408
  https://github.com/fmtlib/fmt/issues/1129,
47fd5c32 Poul Sander 2024-10-05 08:44 1409
  https://github.com/fmtlib/fmt/issues/1153,
47fd5c32 Poul Sander 2024-10-05 08:44 1410
  https://github.com/fmtlib/fmt/pull/1155,
47fd5c32 Poul Sander 2024-10-05 08:44 1411
  https://github.com/fmtlib/fmt/issues/1210,
47fd5c32 Poul Sander 2024-10-05 08:44 1412
  https://github.com/fmtlib/fmt/issues/1222). Thanks @alabuzhev.
47fd5c32 Poul Sander 2024-10-05 08:44 1413
47fd5c32 Poul Sander 2024-10-05 08:44 1414
- Fixed bugs discovered by fuzzing or during fuzzing integration
47fd5c32 Poul Sander 2024-10-05 08:44 1415
  (https://github.com/fmtlib/fmt/issues/1124,
47fd5c32 Poul Sander 2024-10-05 08:44 1416
  https://github.com/fmtlib/fmt/issues/1127,
47fd5c32 Poul Sander 2024-10-05 08:44 1417
  https://github.com/fmtlib/fmt/issues/1132,
47fd5c32 Poul Sander 2024-10-05 08:44 1418
  https://github.com/fmtlib/fmt/pull/1135,
47fd5c32 Poul Sander 2024-10-05 08:44 1419
  https://github.com/fmtlib/fmt/issues/1136,
47fd5c32 Poul Sander 2024-10-05 08:44 1420
  https://github.com/fmtlib/fmt/issues/1141,
47fd5c32 Poul Sander 2024-10-05 08:44 1421
  https://github.com/fmtlib/fmt/issues/1142,
47fd5c32 Poul Sander 2024-10-05 08:44 1422
  https://github.com/fmtlib/fmt/issues/1178,
47fd5c32 Poul Sander 2024-10-05 08:44 1423
  https://github.com/fmtlib/fmt/issues/1179,
47fd5c32 Poul Sander 2024-10-05 08:44 1424
  https://github.com/fmtlib/fmt/issues/1194). Thanks @pauldreik.
47fd5c32 Poul Sander 2024-10-05 08:44 1425
47fd5c32 Poul Sander 2024-10-05 08:44 1426
- Fixed building tests on FreeBSD and Hurd
47fd5c32 Poul Sander 2024-10-05 08:44 1427
  (https://github.com/fmtlib/fmt/issues/1043). Thanks @jackyf.
47fd5c32 Poul Sander 2024-10-05 08:44 1428
47fd5c32 Poul Sander 2024-10-05 08:44 1429
- Fixed various warnings and compilation issues
47fd5c32 Poul Sander 2024-10-05 08:44 1430
  (https://github.com/fmtlib/fmt/pull/998,
47fd5c32 Poul Sander 2024-10-05 08:44 1431
  https://github.com/fmtlib/fmt/pull/1006,
47fd5c32 Poul Sander 2024-10-05 08:44 1432
  https://github.com/fmtlib/fmt/issues/1008,
47fd5c32 Poul Sander 2024-10-05 08:44 1433
  https://github.com/fmtlib/fmt/issues/1011,
47fd5c32 Poul Sander 2024-10-05 08:44 1434
  https://github.com/fmtlib/fmt/issues/1025,
47fd5c32 Poul Sander 2024-10-05 08:44 1435
  https://github.com/fmtlib/fmt/pull/1027,
47fd5c32 Poul Sander 2024-10-05 08:44 1436
  https://github.com/fmtlib/fmt/pull/1028,
47fd5c32 Poul Sander 2024-10-05 08:44 1437
  https://github.com/fmtlib/fmt/pull/1029,
47fd5c32 Poul Sander 2024-10-05 08:44 1438
  https://github.com/fmtlib/fmt/pull/1030,
47fd5c32 Poul Sander 2024-10-05 08:44 1439
  https://github.com/fmtlib/fmt/pull/1031,
47fd5c32 Poul Sander 2024-10-05 08:44 1440
  https://github.com/fmtlib/fmt/pull/1054,
47fd5c32 Poul Sander 2024-10-05 08:44 1441
  https://github.com/fmtlib/fmt/issues/1063,
47fd5c32 Poul Sander 2024-10-05 08:44 1442
  https://github.com/fmtlib/fmt/pull/1068,
47fd5c32 Poul Sander 2024-10-05 08:44 1443
  https://github.com/fmtlib/fmt/pull/1074,
47fd5c32 Poul Sander 2024-10-05 08:44 1444
  https://github.com/fmtlib/fmt/pull/1075,
47fd5c32 Poul Sander 2024-10-05 08:44 1445
  https://github.com/fmtlib/fmt/pull/1079,
47fd5c32 Poul Sander 2024-10-05 08:44 1446
  https://github.com/fmtlib/fmt/pull/1086,
47fd5c32 Poul Sander 2024-10-05 08:44 1447
  https://github.com/fmtlib/fmt/issues/1088,
47fd5c32 Poul Sander 2024-10-05 08:44 1448
  https://github.com/fmtlib/fmt/pull/1089,
47fd5c32 Poul Sander 2024-10-05 08:44 1449
  https://github.com/fmtlib/fmt/pull/1094,
47fd5c32 Poul Sander 2024-10-05 08:44 1450
  https://github.com/fmtlib/fmt/issues/1101,
47fd5c32 Poul Sander 2024-10-05 08:44 1451
  https://github.com/fmtlib/fmt/pull/1102,
47fd5c32 Poul Sander 2024-10-05 08:44 1452
  https://github.com/fmtlib/fmt/issues/1105,
47fd5c32 Poul Sander 2024-10-05 08:44 1453
  https://github.com/fmtlib/fmt/pull/1107,
47fd5c32 Poul Sander 2024-10-05 08:44 1454
  https://github.com/fmtlib/fmt/issues/1115,
47fd5c32 Poul Sander 2024-10-05 08:44 1455
  https://github.com/fmtlib/fmt/issues/1117,
47fd5c32 Poul Sander 2024-10-05 08:44 1456
  https://github.com/fmtlib/fmt/issues/1118,
47fd5c32 Poul Sander 2024-10-05 08:44 1457
  https://github.com/fmtlib/fmt/issues/1120,
47fd5c32 Poul Sander 2024-10-05 08:44 1458
  https://github.com/fmtlib/fmt/issues/1123,
47fd5c32 Poul Sander 2024-10-05 08:44 1459
  https://github.com/fmtlib/fmt/pull/1139,
47fd5c32 Poul Sander 2024-10-05 08:44 1460
  https://github.com/fmtlib/fmt/issues/1140,
47fd5c32 Poul Sander 2024-10-05 08:44 1461
  https://github.com/fmtlib/fmt/issues/1143,
47fd5c32 Poul Sander 2024-10-05 08:44 1462
  https://github.com/fmtlib/fmt/pull/1144,
47fd5c32 Poul Sander 2024-10-05 08:44 1463
  https://github.com/fmtlib/fmt/pull/1150,
47fd5c32 Poul Sander 2024-10-05 08:44 1464
  https://github.com/fmtlib/fmt/pull/1151,
47fd5c32 Poul Sander 2024-10-05 08:44 1465
  https://github.com/fmtlib/fmt/issues/1152,
47fd5c32 Poul Sander 2024-10-05 08:44 1466
  https://github.com/fmtlib/fmt/issues/1154,
47fd5c32 Poul Sander 2024-10-05 08:44 1467
  https://github.com/fmtlib/fmt/issues/1156,
47fd5c32 Poul Sander 2024-10-05 08:44 1468
  https://github.com/fmtlib/fmt/pull/1159,
47fd5c32 Poul Sander 2024-10-05 08:44 1469
  https://github.com/fmtlib/fmt/issues/1175,
47fd5c32 Poul Sander 2024-10-05 08:44 1470
  https://github.com/fmtlib/fmt/issues/1181,
47fd5c32 Poul Sander 2024-10-05 08:44 1471
  https://github.com/fmtlib/fmt/issues/1186,
47fd5c32 Poul Sander 2024-10-05 08:44 1472
  https://github.com/fmtlib/fmt/pull/1187,
47fd5c32 Poul Sander 2024-10-05 08:44 1473
  https://github.com/fmtlib/fmt/pull/1191,
47fd5c32 Poul Sander 2024-10-05 08:44 1474
  https://github.com/fmtlib/fmt/issues/1197,
47fd5c32 Poul Sander 2024-10-05 08:44 1475
  https://github.com/fmtlib/fmt/issues/1200,
47fd5c32 Poul Sander 2024-10-05 08:44 1476
  https://github.com/fmtlib/fmt/issues/1203,
47fd5c32 Poul Sander 2024-10-05 08:44 1477
  https://github.com/fmtlib/fmt/issues/1205,
47fd5c32 Poul Sander 2024-10-05 08:44 1478
  https://github.com/fmtlib/fmt/pull/1206,
47fd5c32 Poul Sander 2024-10-05 08:44 1479
  https://github.com/fmtlib/fmt/issues/1213,
47fd5c32 Poul Sander 2024-10-05 08:44 1480
  https://github.com/fmtlib/fmt/issues/1214,
47fd5c32 Poul Sander 2024-10-05 08:44 1481
  https://github.com/fmtlib/fmt/pull/1217,
47fd5c32 Poul Sander 2024-10-05 08:44 1482
  https://github.com/fmtlib/fmt/issues/1228,
47fd5c32 Poul Sander 2024-10-05 08:44 1483
  https://github.com/fmtlib/fmt/pull/1230,
47fd5c32 Poul Sander 2024-10-05 08:44 1484
  https://github.com/fmtlib/fmt/issues/1232,
47fd5c32 Poul Sander 2024-10-05 08:44 1485
  https://github.com/fmtlib/fmt/pull/1235,
47fd5c32 Poul Sander 2024-10-05 08:44 1486
  https://github.com/fmtlib/fmt/pull/1236,
47fd5c32 Poul Sander 2024-10-05 08:44 1487
  https://github.com/fmtlib/fmt/issues/1240).
47fd5c32 Poul Sander 2024-10-05 08:44 1488
  Thanks @DanielaE, @mwinterb, @eliaskosunen, @morinmorin, @ricco19,
47fd5c32 Poul Sander 2024-10-05 08:44 1489
  @waywardmonkeys, @chronoxor, @remyabel, @pauldreik, @gsjaardema, @rcane,
47fd5c32 Poul Sander 2024-10-05 08:44 1490
  @mocabe, @denchat, @cjdb, @HazardyKnusperkeks, @vedranmiletic, @jackoalan,
47fd5c32 Poul Sander 2024-10-05 08:44 1491
  @DaanDeMeyer and @starkmapper.
47fd5c32 Poul Sander 2024-10-05 08:44 1492
47fd5c32 Poul Sander 2024-10-05 08:44 1493
# 5.3.0 - 2018-12-28
47fd5c32 Poul Sander 2024-10-05 08:44 1494
47fd5c32 Poul Sander 2024-10-05 08:44 1495
- Introduced experimental chrono formatting support:
47fd5c32 Poul Sander 2024-10-05 08:44 1496
47fd5c32 Poul Sander 2024-10-05 08:44 1497
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 1498
  #include <fmt/chrono.h>
47fd5c32 Poul Sander 2024-10-05 08:44 1499
47fd5c32 Poul Sander 2024-10-05 08:44 1500
  int main() {
47fd5c32 Poul Sander 2024-10-05 08:44 1501
    using namespace std::literals::chrono_literals;
47fd5c32 Poul Sander 2024-10-05 08:44 1502
    fmt::print("Default format: {} {}\n", 42s, 100ms);
47fd5c32 Poul Sander 2024-10-05 08:44 1503
    fmt::print("strftime-like format: {:%H:%M:%S}\n", 3h + 15min + 30s);
47fd5c32 Poul Sander 2024-10-05 08:44 1504
  }
47fd5c32 Poul Sander 2024-10-05 08:44 1505
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 1506
47fd5c32 Poul Sander 2024-10-05 08:44 1507
  prints:
47fd5c32 Poul Sander 2024-10-05 08:44 1508
47fd5c32 Poul Sander 2024-10-05 08:44 1509
      Default format: 42s 100ms
47fd5c32 Poul Sander 2024-10-05 08:44 1510
      strftime-like format: 03:15:30
47fd5c32 Poul Sander 2024-10-05 08:44 1511
47fd5c32 Poul Sander 2024-10-05 08:44 1512
- Added experimental support for emphasis (bold, italic, underline,
47fd5c32 Poul Sander 2024-10-05 08:44 1513
  strikethrough), colored output to a file stream, and improved
47fd5c32 Poul Sander 2024-10-05 08:44 1514
  colored formatting API
47fd5c32 Poul Sander 2024-10-05 08:44 1515
  (https://github.com/fmtlib/fmt/pull/961,
47fd5c32 Poul Sander 2024-10-05 08:44 1516
  https://github.com/fmtlib/fmt/pull/967,
47fd5c32 Poul Sander 2024-10-05 08:44 1517
  https://github.com/fmtlib/fmt/pull/973):
47fd5c32 Poul Sander 2024-10-05 08:44 1518
47fd5c32 Poul Sander 2024-10-05 08:44 1519
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 1520
  #include <fmt/color.h>
47fd5c32 Poul Sander 2024-10-05 08:44 1521
47fd5c32 Poul Sander 2024-10-05 08:44 1522
  int main() {
47fd5c32 Poul Sander 2024-10-05 08:44 1523
    fmt::print(fg(fmt::color::crimson) | fmt::emphasis::bold,
47fd5c32 Poul Sander 2024-10-05 08:44 1524
               "Hello, {}!\n", "world");
47fd5c32 Poul Sander 2024-10-05 08:44 1525
    fmt::print(fg(fmt::color::floral_white) | bg(fmt::color::slate_gray) |
47fd5c32 Poul Sander 2024-10-05 08:44 1526
               fmt::emphasis::underline, "OlĂĄ, {}!\n", "Mundo");
47fd5c32 Poul Sander 2024-10-05 08:44 1527
    fmt::print(fg(fmt::color::steel_blue) | fmt::emphasis::italic,
47fd5c32 Poul Sander 2024-10-05 08:44 1528
               "äœ ć„œ{}\n", "侖界");
47fd5c32 Poul Sander 2024-10-05 08:44 1529
  }
47fd5c32 Poul Sander 2024-10-05 08:44 1530
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 1531
47fd5c32 Poul Sander 2024-10-05 08:44 1532
  prints the following on modern terminals with RGB color support:
47fd5c32 Poul Sander 2024-10-05 08:44 1533
47fd5c32 Poul Sander 2024-10-05 08:44 1534
  ![](https://github.com/fmtlib/fmt/assets/%0A576385/2a93c904-d6fa-4aa6-b453-2618e1c327d7)
47fd5c32 Poul Sander 2024-10-05 08:44 1535
47fd5c32 Poul Sander 2024-10-05 08:44 1536
  Thanks @Rakete1111.
47fd5c32 Poul Sander 2024-10-05 08:44 1537
47fd5c32 Poul Sander 2024-10-05 08:44 1538
- Added support for 4-bit terminal colors
47fd5c32 Poul Sander 2024-10-05 08:44 1539
  (https://github.com/fmtlib/fmt/issues/968,
47fd5c32 Poul Sander 2024-10-05 08:44 1540
  https://github.com/fmtlib/fmt/pull/974)
47fd5c32 Poul Sander 2024-10-05 08:44 1541
47fd5c32 Poul Sander 2024-10-05 08:44 1542
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 1543
  #include <fmt/color.h>
47fd5c32 Poul Sander 2024-10-05 08:44 1544
47fd5c32 Poul Sander 2024-10-05 08:44 1545
  int main() {
47fd5c32 Poul Sander 2024-10-05 08:44 1546
    print(fg(fmt::terminal_color::red), "stop\n");
47fd5c32 Poul Sander 2024-10-05 08:44 1547
  }
47fd5c32 Poul Sander 2024-10-05 08:44 1548
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 1549
47fd5c32 Poul Sander 2024-10-05 08:44 1550
  Note that these colors vary by terminal:
47fd5c32 Poul Sander 2024-10-05 08:44 1551
47fd5c32 Poul Sander 2024-10-05 08:44 1552
  ![](https://user-images.githubusercontent.com/576385/50405925-dbfc7e00-0770-11e9-9b85-333fab0af9ac.png)
47fd5c32 Poul Sander 2024-10-05 08:44 1553
47fd5c32 Poul Sander 2024-10-05 08:44 1554
  Thanks @Rakete1111.
47fd5c32 Poul Sander 2024-10-05 08:44 1555
47fd5c32 Poul Sander 2024-10-05 08:44 1556
- Parameterized formatting functions on the type of the format string
47fd5c32 Poul Sander 2024-10-05 08:44 1557
  (https://github.com/fmtlib/fmt/issues/880,
47fd5c32 Poul Sander 2024-10-05 08:44 1558
  https://github.com/fmtlib/fmt/pull/881,
47fd5c32 Poul Sander 2024-10-05 08:44 1559
  https://github.com/fmtlib/fmt/pull/883,
47fd5c32 Poul Sander 2024-10-05 08:44 1560
  https://github.com/fmtlib/fmt/pull/885,
47fd5c32 Poul Sander 2024-10-05 08:44 1561
  https://github.com/fmtlib/fmt/pull/897,
47fd5c32 Poul Sander 2024-10-05 08:44 1562
  https://github.com/fmtlib/fmt/issues/920). Any object of
47fd5c32 Poul Sander 2024-10-05 08:44 1563
  type `S` that has an overloaded `to_string_view(const S&)` returning
47fd5c32 Poul Sander 2024-10-05 08:44 1564
  `fmt::string_view` can be used as a format string:
47fd5c32 Poul Sander 2024-10-05 08:44 1565
47fd5c32 Poul Sander 2024-10-05 08:44 1566
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 1567
  namespace my_ns {
47fd5c32 Poul Sander 2024-10-05 08:44 1568
  inline string_view to_string_view(const my_string& s) {
47fd5c32 Poul Sander 2024-10-05 08:44 1569
    return {s.data(), s.length()};
47fd5c32 Poul Sander 2024-10-05 08:44 1570
  }
47fd5c32 Poul Sander 2024-10-05 08:44 1571
  }
47fd5c32 Poul Sander 2024-10-05 08:44 1572
47fd5c32 Poul Sander 2024-10-05 08:44 1573
  std::string message = fmt::format(my_string("The answer is {}."), 42);
47fd5c32 Poul Sander 2024-10-05 08:44 1574
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 1575
47fd5c32 Poul Sander 2024-10-05 08:44 1576
  Thanks @DanielaE.
47fd5c32 Poul Sander 2024-10-05 08:44 1577
47fd5c32 Poul Sander 2024-10-05 08:44 1578
- Made `std::string_view` work as a format string
47fd5c32 Poul Sander 2024-10-05 08:44 1579
  (https://github.com/fmtlib/fmt/pull/898):
47fd5c32 Poul Sander 2024-10-05 08:44 1580
47fd5c32 Poul Sander 2024-10-05 08:44 1581
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 1582
  auto message = fmt::format(std::string_view("The answer is {}."), 42);
47fd5c32 Poul Sander 2024-10-05 08:44 1583
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 1584
47fd5c32 Poul Sander 2024-10-05 08:44 1585
  Thanks @DanielaE.
47fd5c32 Poul Sander 2024-10-05 08:44 1586
47fd5c32 Poul Sander 2024-10-05 08:44 1587
- Added wide string support to compile-time format string checks
47fd5c32 Poul Sander 2024-10-05 08:44 1588
  (https://github.com/fmtlib/fmt/pull/924):
47fd5c32 Poul Sander 2024-10-05 08:44 1589
47fd5c32 Poul Sander 2024-10-05 08:44 1590
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 1591
  print(fmt(L"{:f}"), 42); // compile-time error: invalid type specifier
47fd5c32 Poul Sander 2024-10-05 08:44 1592
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 1593
47fd5c32 Poul Sander 2024-10-05 08:44 1594
  Thanks @XZiar.
47fd5c32 Poul Sander 2024-10-05 08:44 1595
47fd5c32 Poul Sander 2024-10-05 08:44 1596
- Made colored print functions work with wide strings
47fd5c32 Poul Sander 2024-10-05 08:44 1597
  (https://github.com/fmtlib/fmt/pull/867):
47fd5c32 Poul Sander 2024-10-05 08:44 1598
47fd5c32 Poul Sander 2024-10-05 08:44 1599
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 1600
  #include <fmt/color.h>
47fd5c32 Poul Sander 2024-10-05 08:44 1601
47fd5c32 Poul Sander 2024-10-05 08:44 1602
  int main() {
47fd5c32 Poul Sander 2024-10-05 08:44 1603
    print(fg(fmt::color::red), L"{}\n", 42);
47fd5c32 Poul Sander 2024-10-05 08:44 1604
  }
47fd5c32 Poul Sander 2024-10-05 08:44 1605
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 1606
47fd5c32 Poul Sander 2024-10-05 08:44 1607
  Thanks @DanielaE.
47fd5c32 Poul Sander 2024-10-05 08:44 1608
47fd5c32 Poul Sander 2024-10-05 08:44 1609
- Introduced experimental Unicode support
47fd5c32 Poul Sander 2024-10-05 08:44 1610
  (https://github.com/fmtlib/fmt/issues/628,
47fd5c32 Poul Sander 2024-10-05 08:44 1611
  https://github.com/fmtlib/fmt/pull/891):
47fd5c32 Poul Sander 2024-10-05 08:44 1612
47fd5c32 Poul Sander 2024-10-05 08:44 1613
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 1614
  using namespace fmt::literals;
47fd5c32 Poul Sander 2024-10-05 08:44 1615
  auto s = fmt::format("{:*^5}"_u, "đŸ€Ą"_u); // s == "**đŸ€Ą**"_u
47fd5c32 Poul Sander 2024-10-05 08:44 1616
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 1617
47fd5c32 Poul Sander 2024-10-05 08:44 1618
- Improved locale support:
47fd5c32 Poul Sander 2024-10-05 08:44 1619
47fd5c32 Poul Sander 2024-10-05 08:44 1620
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 1621
  #include <fmt/locale.h>
47fd5c32 Poul Sander 2024-10-05 08:44 1622
47fd5c32 Poul Sander 2024-10-05 08:44 1623
  struct numpunct : std::numpunct<char> {
47fd5c32 Poul Sander 2024-10-05 08:44 1624
   protected:
47fd5c32 Poul Sander 2024-10-05 08:44 1625
    char do_thousands_sep() const override { return '~'; }
47fd5c32 Poul Sander 2024-10-05 08:44 1626
  };
47fd5c32 Poul Sander 2024-10-05 08:44 1627
47fd5c32 Poul Sander 2024-10-05 08:44 1628
  std::locale loc;
47fd5c32 Poul Sander 2024-10-05 08:44 1629
  auto s = fmt::format(std::locale(loc, new numpunct()), "{:n}", 1234567);
47fd5c32 Poul Sander 2024-10-05 08:44 1630
  // s == "1~234~567"
47fd5c32 Poul Sander 2024-10-05 08:44 1631
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 1632
47fd5c32 Poul Sander 2024-10-05 08:44 1633
- Constrained formatting functions on proper iterator types
47fd5c32 Poul Sander 2024-10-05 08:44 1634
  (https://github.com/fmtlib/fmt/pull/921). Thanks @DanielaE.
47fd5c32 Poul Sander 2024-10-05 08:44 1635
47fd5c32 Poul Sander 2024-10-05 08:44 1636
- Added `make_printf_args` and `make_wprintf_args` functions
47fd5c32 Poul Sander 2024-10-05 08:44 1637
  (https://github.com/fmtlib/fmt/pull/934). Thanks @tnovotny.
47fd5c32 Poul Sander 2024-10-05 08:44 1638
47fd5c32 Poul Sander 2024-10-05 08:44 1639
- Deprecated `fmt::visit`, `parse_context`, and `wparse_context`. Use
47fd5c32 Poul Sander 2024-10-05 08:44 1640
  `fmt::visit_format_arg`, `format_parse_context`, and
47fd5c32 Poul Sander 2024-10-05 08:44 1641
  `wformat_parse_context` instead.
47fd5c32 Poul Sander 2024-10-05 08:44 1642
47fd5c32 Poul Sander 2024-10-05 08:44 1643
- Removed undocumented `basic_fixed_buffer` which has been superseded
47fd5c32 Poul Sander 2024-10-05 08:44 1644
  by the iterator-based API
47fd5c32 Poul Sander 2024-10-05 08:44 1645
  (https://github.com/fmtlib/fmt/issues/873,
47fd5c32 Poul Sander 2024-10-05 08:44 1646
  https://github.com/fmtlib/fmt/pull/902). Thanks @superfunc.
47fd5c32 Poul Sander 2024-10-05 08:44 1647
47fd5c32 Poul Sander 2024-10-05 08:44 1648
- Disallowed repeated leading zeros in an argument ID:
47fd5c32 Poul Sander 2024-10-05 08:44 1649
47fd5c32 Poul Sander 2024-10-05 08:44 1650
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 1651
  fmt::print("{000}", 42); // error
47fd5c32 Poul Sander 2024-10-05 08:44 1652
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 1653
47fd5c32 Poul Sander 2024-10-05 08:44 1654
- Reintroduced support for gcc 4.4.
47fd5c32 Poul Sander 2024-10-05 08:44 1655
47fd5c32 Poul Sander 2024-10-05 08:44 1656
- Fixed compilation on platforms with exotic `double`
47fd5c32 Poul Sander 2024-10-05 08:44 1657
  (https://github.com/fmtlib/fmt/issues/878).
47fd5c32 Poul Sander 2024-10-05 08:44 1658
47fd5c32 Poul Sander 2024-10-05 08:44 1659
- Improved documentation
47fd5c32 Poul Sander 2024-10-05 08:44 1660
  (https://github.com/fmtlib/fmt/issues/164,
47fd5c32 Poul Sander 2024-10-05 08:44 1661
  https://github.com/fmtlib/fmt/issues/877,
47fd5c32 Poul Sander 2024-10-05 08:44 1662
  https://github.com/fmtlib/fmt/pull/901,
47fd5c32 Poul Sander 2024-10-05 08:44 1663
  https://github.com/fmtlib/fmt/pull/906,
47fd5c32 Poul Sander 2024-10-05 08:44 1664
  https://github.com/fmtlib/fmt/pull/979).
47fd5c32 Poul Sander 2024-10-05 08:44 1665
  Thanks @kookjr, @DarkDimius and @HecticSerenity.
47fd5c32 Poul Sander 2024-10-05 08:44 1666
47fd5c32 Poul Sander 2024-10-05 08:44 1667
- Added pkgconfig support which makes it easier to consume the library
47fd5c32 Poul Sander 2024-10-05 08:44 1668
  from meson and other build systems
47fd5c32 Poul Sander 2024-10-05 08:44 1669
  (https://github.com/fmtlib/fmt/pull/916). Thanks @colemickens.
47fd5c32 Poul Sander 2024-10-05 08:44 1670
47fd5c32 Poul Sander 2024-10-05 08:44 1671
- Various build improvements
47fd5c32 Poul Sander 2024-10-05 08:44 1672
  (https://github.com/fmtlib/fmt/pull/909,
47fd5c32 Poul Sander 2024-10-05 08:44 1673
  https://github.com/fmtlib/fmt/pull/926,
47fd5c32 Poul Sander 2024-10-05 08:44 1674
  https://github.com/fmtlib/fmt/pull/937,
47fd5c32 Poul Sander 2024-10-05 08:44 1675
  https://github.com/fmtlib/fmt/pull/953,
47fd5c32 Poul Sander 2024-10-05 08:44 1676
  https://github.com/fmtlib/fmt/pull/959).
47fd5c32 Poul Sander 2024-10-05 08:44 1677
  Thanks @tchaikov, @luncliff, @AndreasSchoenle, @hotwatermorning and @Zefz.
47fd5c32 Poul Sander 2024-10-05 08:44 1678
47fd5c32 Poul Sander 2024-10-05 08:44 1679
- Improved `string_view` construction performance
47fd5c32 Poul Sander 2024-10-05 08:44 1680
  (https://github.com/fmtlib/fmt/pull/914). Thanks @gabime.
47fd5c32 Poul Sander 2024-10-05 08:44 1681
47fd5c32 Poul Sander 2024-10-05 08:44 1682
- Fixed non-matching char types
47fd5c32 Poul Sander 2024-10-05 08:44 1683
  (https://github.com/fmtlib/fmt/pull/895). Thanks @DanielaE.
47fd5c32 Poul Sander 2024-10-05 08:44 1684
47fd5c32 Poul Sander 2024-10-05 08:44 1685
- Fixed `format_to_n` with `std::back_insert_iterator`
47fd5c32 Poul Sander 2024-10-05 08:44 1686
  (https://github.com/fmtlib/fmt/pull/913). Thanks @DanielaE.
47fd5c32 Poul Sander 2024-10-05 08:44 1687
47fd5c32 Poul Sander 2024-10-05 08:44 1688
- Fixed locale-dependent formatting
47fd5c32 Poul Sander 2024-10-05 08:44 1689
  (https://github.com/fmtlib/fmt/issues/905).
47fd5c32 Poul Sander 2024-10-05 08:44 1690
47fd5c32 Poul Sander 2024-10-05 08:44 1691
- Fixed various compiler warnings and errors
47fd5c32 Poul Sander 2024-10-05 08:44 1692
  (https://github.com/fmtlib/fmt/pull/882,
47fd5c32 Poul Sander 2024-10-05 08:44 1693
  https://github.com/fmtlib/fmt/pull/886,
47fd5c32 Poul Sander 2024-10-05 08:44 1694
  https://github.com/fmtlib/fmt/pull/933,
47fd5c32 Poul Sander 2024-10-05 08:44 1695
  https://github.com/fmtlib/fmt/pull/941,
47fd5c32 Poul Sander 2024-10-05 08:44 1696
  https://github.com/fmtlib/fmt/issues/931,
47fd5c32 Poul Sander 2024-10-05 08:44 1697
  https://github.com/fmtlib/fmt/pull/943,
47fd5c32 Poul Sander 2024-10-05 08:44 1698
  https://github.com/fmtlib/fmt/pull/954,
47fd5c32 Poul Sander 2024-10-05 08:44 1699
  https://github.com/fmtlib/fmt/pull/956,
47fd5c32 Poul Sander 2024-10-05 08:44 1700
  https://github.com/fmtlib/fmt/pull/962,
47fd5c32 Poul Sander 2024-10-05 08:44 1701
  https://github.com/fmtlib/fmt/issues/965,
47fd5c32 Poul Sander 2024-10-05 08:44 1702
  https://github.com/fmtlib/fmt/issues/977,
47fd5c32 Poul Sander 2024-10-05 08:44 1703
  https://github.com/fmtlib/fmt/pull/983,
47fd5c32 Poul Sander 2024-10-05 08:44 1704
  https://github.com/fmtlib/fmt/pull/989).
47fd5c32 Poul Sander 2024-10-05 08:44 1705
  Thanks @Luthaf, @stevenhoving, @christinaa, @lgritz, @DanielaE,
47fd5c32 Poul Sander 2024-10-05 08:44 1706
  @0x8000-0000 and @liuping1997.
47fd5c32 Poul Sander 2024-10-05 08:44 1707
47fd5c32 Poul Sander 2024-10-05 08:44 1708
# 5.2.1 - 2018-09-21
47fd5c32 Poul Sander 2024-10-05 08:44 1709
47fd5c32 Poul Sander 2024-10-05 08:44 1710
- Fixed `visit` lookup issues on gcc 7 & 8
47fd5c32 Poul Sander 2024-10-05 08:44 1711
  (https://github.com/fmtlib/fmt/pull/870). Thanks @medithe.
47fd5c32 Poul Sander 2024-10-05 08:44 1712
- Fixed linkage errors on older gcc.
47fd5c32 Poul Sander 2024-10-05 08:44 1713
- Prevented `fmt/range.h` from specializing `fmt::basic_string_view`
47fd5c32 Poul Sander 2024-10-05 08:44 1714
  (https://github.com/fmtlib/fmt/issues/865,
47fd5c32 Poul Sander 2024-10-05 08:44 1715
  https://github.com/fmtlib/fmt/pull/868). Thanks @hhggit.
47fd5c32 Poul Sander 2024-10-05 08:44 1716
- Improved error message when formatting unknown types
47fd5c32 Poul Sander 2024-10-05 08:44 1717
  (https://github.com/fmtlib/fmt/pull/872). Thanks @foonathan.
47fd5c32 Poul Sander 2024-10-05 08:44 1718
- Disabled templated user-defined literals when compiled under nvcc
47fd5c32 Poul Sander 2024-10-05 08:44 1719
  (https://github.com/fmtlib/fmt/pull/875). Thanks @CandyGumdrop.
47fd5c32 Poul Sander 2024-10-05 08:44 1720
- Fixed `format_to` formatting to `wmemory_buffer`
47fd5c32 Poul Sander 2024-10-05 08:44 1721
  (https://github.com/fmtlib/fmt/issues/874).
47fd5c32 Poul Sander 2024-10-05 08:44 1722
47fd5c32 Poul Sander 2024-10-05 08:44 1723
# 5.2.0 - 2018-09-13
47fd5c32 Poul Sander 2024-10-05 08:44 1724
47fd5c32 Poul Sander 2024-10-05 08:44 1725
- Optimized format string parsing and argument processing which
47fd5c32 Poul Sander 2024-10-05 08:44 1726
  resulted in up to 5x speed up on long format strings and significant
47fd5c32 Poul Sander 2024-10-05 08:44 1727
  performance boost on various benchmarks. For example, version 5.2 is
47fd5c32 Poul Sander 2024-10-05 08:44 1728
  2.22x faster than 5.1 on decimal integer formatting with `format_to`
47fd5c32 Poul Sander 2024-10-05 08:44 1729
  (macOS, clang-902.0.39.2):
47fd5c32 Poul Sander 2024-10-05 08:44 1730
47fd5c32 Poul Sander 2024-10-05 08:44 1731
  | Method                     | Time, s         | Speedup |
47fd5c32 Poul Sander 2024-10-05 08:44 1732
  | -------------------------- | --------------: | ------: |
47fd5c32 Poul Sander 2024-10-05 08:44 1733
  | fmt::format 5.1            | 0.58            |         |
47fd5c32 Poul Sander 2024-10-05 08:44 1734
  | fmt::format 5.2            | 0.35            |   1.66x |
47fd5c32 Poul Sander 2024-10-05 08:44 1735
  | fmt::format_to 5.1         | 0.51            |         |
47fd5c32 Poul Sander 2024-10-05 08:44 1736
  | fmt::format_to 5.2         | 0.23            |   2.22x |
47fd5c32 Poul Sander 2024-10-05 08:44 1737
  | sprintf                    | 0.71            |         |
47fd5c32 Poul Sander 2024-10-05 08:44 1738
  | std::to_string             | 1.01            |         |
47fd5c32 Poul Sander 2024-10-05 08:44 1739
  | std::stringstream          | 1.73            |         |
47fd5c32 Poul Sander 2024-10-05 08:44 1740
47fd5c32 Poul Sander 2024-10-05 08:44 1741
- Changed the `fmt` macro from opt-out to opt-in to prevent name
47fd5c32 Poul Sander 2024-10-05 08:44 1742
  collisions. To enable it define the `FMT_STRING_ALIAS` macro to 1
47fd5c32 Poul Sander 2024-10-05 08:44 1743
  before including `fmt/format.h`:
47fd5c32 Poul Sander 2024-10-05 08:44 1744
47fd5c32 Poul Sander 2024-10-05 08:44 1745
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 1746
  #define FMT_STRING_ALIAS 1
47fd5c32 Poul Sander 2024-10-05 08:44 1747
  #include <fmt/format.h>
47fd5c32 Poul Sander 2024-10-05 08:44 1748
  std::string answer = format(fmt("{}"), 42);
47fd5c32 Poul Sander 2024-10-05 08:44 1749
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 1750
47fd5c32 Poul Sander 2024-10-05 08:44 1751
- Added compile-time format string checks to `format_to` overload that
47fd5c32 Poul Sander 2024-10-05 08:44 1752
  takes `fmt::memory_buffer`
47fd5c32 Poul Sander 2024-10-05 08:44 1753
  (https://github.com/fmtlib/fmt/issues/783):
47fd5c32 Poul Sander 2024-10-05 08:44 1754
47fd5c32 Poul Sander 2024-10-05 08:44 1755
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 1756
  fmt::memory_buffer buf;
47fd5c32 Poul Sander 2024-10-05 08:44 1757
  // Compile-time error: invalid type specifier.
47fd5c32 Poul Sander 2024-10-05 08:44 1758
  fmt::format_to(buf, fmt("{:d}"), "foo");
47fd5c32 Poul Sander 2024-10-05 08:44 1759
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 1760
47fd5c32 Poul Sander 2024-10-05 08:44 1761
- Moved experimental color support to `fmt/color.h` and enabled the
47fd5c32 Poul Sander 2024-10-05 08:44 1762
  new API by default. The old API can be enabled by defining the
47fd5c32 Poul Sander 2024-10-05 08:44 1763
  `FMT_DEPRECATED_COLORS` macro.
47fd5c32 Poul Sander 2024-10-05 08:44 1764
47fd5c32 Poul Sander 2024-10-05 08:44 1765
- Added formatting support for types explicitly convertible to
47fd5c32 Poul Sander 2024-10-05 08:44 1766
  `fmt::string_view`:
47fd5c32 Poul Sander 2024-10-05 08:44 1767
47fd5c32 Poul Sander 2024-10-05 08:44 1768
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 1769
  struct foo {
47fd5c32 Poul Sander 2024-10-05 08:44 1770
    explicit operator fmt::string_view() const { return "foo"; }
47fd5c32 Poul Sander 2024-10-05 08:44 1771
  };
47fd5c32 Poul Sander 2024-10-05 08:44 1772
  auto s = format("{}", foo());
47fd5c32 Poul Sander 2024-10-05 08:44 1773
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 1774
47fd5c32 Poul Sander 2024-10-05 08:44 1775
  In particular, this makes formatting function work with
47fd5c32 Poul Sander 2024-10-05 08:44 1776
  `folly::StringPiece`.
47fd5c32 Poul Sander 2024-10-05 08:44 1777
47fd5c32 Poul Sander 2024-10-05 08:44 1778
- Implemented preliminary support for `char*_t` by replacing the
47fd5c32 Poul Sander 2024-10-05 08:44 1779
  `format` function overloads with a single function template
47fd5c32 Poul Sander 2024-10-05 08:44 1780
  parameterized on the string type.
47fd5c32 Poul Sander 2024-10-05 08:44 1781
47fd5c32 Poul Sander 2024-10-05 08:44 1782
- Added support for dynamic argument lists
47fd5c32 Poul Sander 2024-10-05 08:44 1783
  (https://github.com/fmtlib/fmt/issues/814,
47fd5c32 Poul Sander 2024-10-05 08:44 1784
  https://github.com/fmtlib/fmt/pull/819). Thanks @MikePopoloski.
47fd5c32 Poul Sander 2024-10-05 08:44 1785
47fd5c32 Poul Sander 2024-10-05 08:44 1786
- Reduced executable size overhead for embedded targets using newlib
47fd5c32 Poul Sander 2024-10-05 08:44 1787
  nano by making locale dependency optional
47fd5c32 Poul Sander 2024-10-05 08:44 1788
  (https://github.com/fmtlib/fmt/pull/839). Thanks @teajay-fr.
47fd5c32 Poul Sander 2024-10-05 08:44 1789
47fd5c32 Poul Sander 2024-10-05 08:44 1790
- Keep `noexcept` specifier when exceptions are disabled
47fd5c32 Poul Sander 2024-10-05 08:44 1791
  (https://github.com/fmtlib/fmt/issues/801,
47fd5c32 Poul Sander 2024-10-05 08:44 1792
  https://github.com/fmtlib/fmt/pull/810). Thanks @qis.
47fd5c32 Poul Sander 2024-10-05 08:44 1793
47fd5c32 Poul Sander 2024-10-05 08:44 1794
- Fixed formatting of user-defined types providing `operator<<` with
47fd5c32 Poul Sander 2024-10-05 08:44 1795
  `format_to_n` (https://github.com/fmtlib/fmt/pull/806).
47fd5c32 Poul Sander 2024-10-05 08:44 1796
  Thanks @mkurdej.
47fd5c32 Poul Sander 2024-10-05 08:44 1797
47fd5c32 Poul Sander 2024-10-05 08:44 1798
- Fixed dynamic linkage of new symbols
47fd5c32 Poul Sander 2024-10-05 08:44 1799
  (https://github.com/fmtlib/fmt/issues/808).
47fd5c32 Poul Sander 2024-10-05 08:44 1800
47fd5c32 Poul Sander 2024-10-05 08:44 1801
- Fixed global initialization issue
47fd5c32 Poul Sander 2024-10-05 08:44 1802
  (https://github.com/fmtlib/fmt/issues/807):
47fd5c32 Poul Sander 2024-10-05 08:44 1803
47fd5c32 Poul Sander 2024-10-05 08:44 1804
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 1805
  // This works on compilers with constexpr support.
47fd5c32 Poul Sander 2024-10-05 08:44 1806
  static const std::string answer = fmt::format("{}", 42);
47fd5c32 Poul Sander 2024-10-05 08:44 1807
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 1808
47fd5c32 Poul Sander 2024-10-05 08:44 1809
- Fixed various compiler warnings and errors
47fd5c32 Poul Sander 2024-10-05 08:44 1810
  (https://github.com/fmtlib/fmt/pull/804,
47fd5c32 Poul Sander 2024-10-05 08:44 1811
  https://github.com/fmtlib/fmt/issues/809,
47fd5c32 Poul Sander 2024-10-05 08:44 1812
  https://github.com/fmtlib/fmt/pull/811,
47fd5c32 Poul Sander 2024-10-05 08:44 1813
  https://github.com/fmtlib/fmt/issues/822,
47fd5c32 Poul Sander 2024-10-05 08:44 1814
  https://github.com/fmtlib/fmt/pull/827,
47fd5c32 Poul Sander 2024-10-05 08:44 1815
  https://github.com/fmtlib/fmt/issues/830,
47fd5c32 Poul Sander 2024-10-05 08:44 1816
  https://github.com/fmtlib/fmt/pull/838,
47fd5c32 Poul Sander 2024-10-05 08:44 1817
  https://github.com/fmtlib/fmt/issues/843,
47fd5c32 Poul Sander 2024-10-05 08:44 1818
  https://github.com/fmtlib/fmt/pull/844,
47fd5c32 Poul Sander 2024-10-05 08:44 1819
  https://github.com/fmtlib/fmt/issues/851,
47fd5c32 Poul Sander 2024-10-05 08:44 1820
  https://github.com/fmtlib/fmt/pull/852,
47fd5c32 Poul Sander 2024-10-05 08:44 1821
  https://github.com/fmtlib/fmt/pull/854).
47fd5c32 Poul Sander 2024-10-05 08:44 1822
  Thanks @henryiii, @medithe, and @eliasdaler.
47fd5c32 Poul Sander 2024-10-05 08:44 1823
47fd5c32 Poul Sander 2024-10-05 08:44 1824
# 5.1.0 - 2018-07-05
47fd5c32 Poul Sander 2024-10-05 08:44 1825
47fd5c32 Poul Sander 2024-10-05 08:44 1826
- Added experimental support for RGB color output enabled with the
47fd5c32 Poul Sander 2024-10-05 08:44 1827
  `FMT_EXTENDED_COLORS` macro:
47fd5c32 Poul Sander 2024-10-05 08:44 1828
47fd5c32 Poul Sander 2024-10-05 08:44 1829
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 1830
  #define FMT_EXTENDED_COLORS
47fd5c32 Poul Sander 2024-10-05 08:44 1831
  #define FMT_HEADER_ONLY // or compile fmt with FMT_EXTENDED_COLORS defined
47fd5c32 Poul Sander 2024-10-05 08:44 1832
  #include <fmt/format.h>
47fd5c32 Poul Sander 2024-10-05 08:44 1833
47fd5c32 Poul Sander 2024-10-05 08:44 1834
  fmt::print(fmt::color::steel_blue, "Some beautiful text");
47fd5c32 Poul Sander 2024-10-05 08:44 1835
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 1836
47fd5c32 Poul Sander 2024-10-05 08:44 1837
  The old API (the `print_colored` and `vprint_colored` functions and
47fd5c32 Poul Sander 2024-10-05 08:44 1838
  the `color` enum) is now deprecated.
47fd5c32 Poul Sander 2024-10-05 08:44 1839
  (https://github.com/fmtlib/fmt/issues/762
47fd5c32 Poul Sander 2024-10-05 08:44 1840
  https://github.com/fmtlib/fmt/pull/767). thanks @Remotion.
47fd5c32 Poul Sander 2024-10-05 08:44 1841
47fd5c32 Poul Sander 2024-10-05 08:44 1842
- Added quotes to strings in ranges and tuples
47fd5c32 Poul Sander 2024-10-05 08:44 1843
  (https://github.com/fmtlib/fmt/pull/766). Thanks @Remotion.
47fd5c32 Poul Sander 2024-10-05 08:44 1844
47fd5c32 Poul Sander 2024-10-05 08:44 1845
- Made `format_to` work with `basic_memory_buffer`
47fd5c32 Poul Sander 2024-10-05 08:44 1846
  (https://github.com/fmtlib/fmt/issues/776).
47fd5c32 Poul Sander 2024-10-05 08:44 1847
47fd5c32 Poul Sander 2024-10-05 08:44 1848
- Added `vformat_to_n` and `wchar_t` overload of `format_to_n`
47fd5c32 Poul Sander 2024-10-05 08:44 1849
  (https://github.com/fmtlib/fmt/issues/764,
47fd5c32 Poul Sander 2024-10-05 08:44 1850
  https://github.com/fmtlib/fmt/issues/769).
47fd5c32 Poul Sander 2024-10-05 08:44 1851
47fd5c32 Poul Sander 2024-10-05 08:44 1852
- Made `is_range` and `is_tuple_like` part of public (experimental)
47fd5c32 Poul Sander 2024-10-05 08:44 1853
  API to allow specialization for user-defined types
47fd5c32 Poul Sander 2024-10-05 08:44 1854
  (https://github.com/fmtlib/fmt/issues/751,
47fd5c32 Poul Sander 2024-10-05 08:44 1855
  https://github.com/fmtlib/fmt/pull/759). Thanks @drrlvn.
47fd5c32 Poul Sander 2024-10-05 08:44 1856
47fd5c32 Poul Sander 2024-10-05 08:44 1857
- Added more compilers to continuous integration and increased
47fd5c32 Poul Sander 2024-10-05 08:44 1858
  `FMT_PEDANTIC` warning levels
47fd5c32 Poul Sander 2024-10-05 08:44 1859
  (https://github.com/fmtlib/fmt/pull/736). Thanks @eliaskosunen.
47fd5c32 Poul Sander 2024-10-05 08:44 1860
47fd5c32 Poul Sander 2024-10-05 08:44 1861
- Fixed compilation with MSVC 2013.
47fd5c32 Poul Sander 2024-10-05 08:44 1862
47fd5c32 Poul Sander 2024-10-05 08:44 1863
- Fixed handling of user-defined types in `format_to`
47fd5c32 Poul Sander 2024-10-05 08:44 1864
  (https://github.com/fmtlib/fmt/issues/793).
47fd5c32 Poul Sander 2024-10-05 08:44 1865
47fd5c32 Poul Sander 2024-10-05 08:44 1866
- Forced linking of inline `vformat` functions into the library
47fd5c32 Poul Sander 2024-10-05 08:44 1867
  (https://github.com/fmtlib/fmt/issues/795).
47fd5c32 Poul Sander 2024-10-05 08:44 1868
47fd5c32 Poul Sander 2024-10-05 08:44 1869
- Fixed incorrect call to on_align in `'{:}='`
47fd5c32 Poul Sander 2024-10-05 08:44 1870
  (https://github.com/fmtlib/fmt/issues/750).
47fd5c32 Poul Sander 2024-10-05 08:44 1871
47fd5c32 Poul Sander 2024-10-05 08:44 1872
- Fixed floating-point formatting to a non-back_insert_iterator with
47fd5c32 Poul Sander 2024-10-05 08:44 1873
  sign & numeric alignment specified
47fd5c32 Poul Sander 2024-10-05 08:44 1874
  (https://github.com/fmtlib/fmt/issues/756).
47fd5c32 Poul Sander 2024-10-05 08:44 1875
47fd5c32 Poul Sander 2024-10-05 08:44 1876
- Fixed formatting to an array with `format_to_n`
47fd5c32 Poul Sander 2024-10-05 08:44 1877
  (https://github.com/fmtlib/fmt/issues/778).
47fd5c32 Poul Sander 2024-10-05 08:44 1878
47fd5c32 Poul Sander 2024-10-05 08:44 1879
- Fixed formatting of more than 15 named arguments
47fd5c32 Poul Sander 2024-10-05 08:44 1880
  (https://github.com/fmtlib/fmt/issues/754).
47fd5c32 Poul Sander 2024-10-05 08:44 1881
47fd5c32 Poul Sander 2024-10-05 08:44 1882
- Fixed handling of compile-time strings when including
47fd5c32 Poul Sander 2024-10-05 08:44 1883
  `fmt/ostream.h`. (https://github.com/fmtlib/fmt/issues/768).
47fd5c32 Poul Sander 2024-10-05 08:44 1884
47fd5c32 Poul Sander 2024-10-05 08:44 1885
- Fixed various compiler warnings and errors
47fd5c32 Poul Sander 2024-10-05 08:44 1886
  (https://github.com/fmtlib/fmt/issues/742,
47fd5c32 Poul Sander 2024-10-05 08:44 1887
  https://github.com/fmtlib/fmt/issues/748,
47fd5c32 Poul Sander 2024-10-05 08:44 1888
  https://github.com/fmtlib/fmt/issues/752,
47fd5c32 Poul Sander 2024-10-05 08:44 1889
  https://github.com/fmtlib/fmt/issues/770,
47fd5c32 Poul Sander 2024-10-05 08:44 1890
  https://github.com/fmtlib/fmt/pull/775,
47fd5c32 Poul Sander 2024-10-05 08:44 1891
  https://github.com/fmtlib/fmt/issues/779,
47fd5c32 Poul Sander 2024-10-05 08:44 1892
  https://github.com/fmtlib/fmt/pull/780,
47fd5c32 Poul Sander 2024-10-05 08:44 1893
  https://github.com/fmtlib/fmt/pull/790,
47fd5c32 Poul Sander 2024-10-05 08:44 1894
  https://github.com/fmtlib/fmt/pull/792,
47fd5c32 Poul Sander 2024-10-05 08:44 1895
  https://github.com/fmtlib/fmt/pull/800).
47fd5c32 Poul Sander 2024-10-05 08:44 1896
  Thanks @Remotion, @gabime, @foonathan, @Dark-Passenger and @0x8000-0000.
47fd5c32 Poul Sander 2024-10-05 08:44 1897
47fd5c32 Poul Sander 2024-10-05 08:44 1898
# 5.0.0 - 2018-05-21
47fd5c32 Poul Sander 2024-10-05 08:44 1899
47fd5c32 Poul Sander 2024-10-05 08:44 1900
- Added a requirement for partial C++11 support, most importantly
47fd5c32 Poul Sander 2024-10-05 08:44 1901
  variadic templates and type traits, and dropped `FMT_VARIADIC_*`
47fd5c32 Poul Sander 2024-10-05 08:44 1902
  emulation macros. Variadic templates are available since GCC 4.4,
47fd5c32 Poul Sander 2024-10-05 08:44 1903
  Clang 2.9 and MSVC 18.0 (2013). For older compilers use {fmt}
47fd5c32 Poul Sander 2024-10-05 08:44 1904
  [version 4.x](https://github.com/fmtlib/fmt/releases/tag/4.1.0)
47fd5c32 Poul Sander 2024-10-05 08:44 1905
  which continues to be maintained and works with C++98 compilers.
47fd5c32 Poul Sander 2024-10-05 08:44 1906
47fd5c32 Poul Sander 2024-10-05 08:44 1907
- Renamed symbols to follow standard C++ naming conventions and
47fd5c32 Poul Sander 2024-10-05 08:44 1908
  proposed a subset of the library for standardization in [P0645R2
47fd5c32 Poul Sander 2024-10-05 08:44 1909
  Text Formatting](https://wg21.link/P0645).
47fd5c32 Poul Sander 2024-10-05 08:44 1910
47fd5c32 Poul Sander 2024-10-05 08:44 1911
- Implemented `constexpr` parsing of format strings and [compile-time
47fd5c32 Poul Sander 2024-10-05 08:44 1912
  format string
47fd5c32 Poul Sander 2024-10-05 08:44 1913
  checks](https://fmt.dev/latest/api.html#compile-time-format-string-checks).
47fd5c32 Poul Sander 2024-10-05 08:44 1914
  For example
47fd5c32 Poul Sander 2024-10-05 08:44 1915
47fd5c32 Poul Sander 2024-10-05 08:44 1916
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 1917
  #include <fmt/format.h>
47fd5c32 Poul Sander 2024-10-05 08:44 1918
47fd5c32 Poul Sander 2024-10-05 08:44 1919
  std::string s = format(fmt("{:d}"), "foo");
47fd5c32 Poul Sander 2024-10-05 08:44 1920
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 1921
47fd5c32 Poul Sander 2024-10-05 08:44 1922
  gives a compile-time error because `d` is an invalid specifier for
47fd5c32 Poul Sander 2024-10-05 08:44 1923
  strings ([godbolt](https://godbolt.org/g/rnCy9Q)):
47fd5c32 Poul Sander 2024-10-05 08:44 1924
47fd5c32 Poul Sander 2024-10-05 08:44 1925
      ...
47fd5c32 Poul Sander 2024-10-05 08:44 1926
      <source>:4:19: note: in instantiation of function template specialization 'fmt::v5::format<S, char [4]>' requested here
47fd5c32 Poul Sander 2024-10-05 08:44 1927
        std::string s = format(fmt("{:d}"), "foo");
47fd5c32 Poul Sander 2024-10-05 08:44 1928
                        ^
47fd5c32 Poul Sander 2024-10-05 08:44 1929
      format.h:1337:13: note: non-constexpr function 'on_error' cannot be used in a constant expression
47fd5c32 Poul Sander 2024-10-05 08:44 1930
          handler.on_error("invalid type specifier");
47fd5c32 Poul Sander 2024-10-05 08:44 1931
47fd5c32 Poul Sander 2024-10-05 08:44 1932
  Compile-time checks require relaxed `constexpr` (C++14 feature)
47fd5c32 Poul Sander 2024-10-05 08:44 1933
  support. If the latter is not available, checks will be performed at
47fd5c32 Poul Sander 2024-10-05 08:44 1934
  runtime.
47fd5c32 Poul Sander 2024-10-05 08:44 1935
47fd5c32 Poul Sander 2024-10-05 08:44 1936
- Separated format string parsing and formatting in the extension API
47fd5c32 Poul Sander 2024-10-05 08:44 1937
  to enable compile-time format string processing. For example
47fd5c32 Poul Sander 2024-10-05 08:44 1938
47fd5c32 Poul Sander 2024-10-05 08:44 1939
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 1940
  struct Answer {};
47fd5c32 Poul Sander 2024-10-05 08:44 1941
47fd5c32 Poul Sander 2024-10-05 08:44 1942
  namespace fmt {
47fd5c32 Poul Sander 2024-10-05 08:44 1943
  template <>
47fd5c32 Poul Sander 2024-10-05 08:44 1944
  struct formatter<Answer> {
47fd5c32 Poul Sander 2024-10-05 08:44 1945
    constexpr auto parse(parse_context& ctx) {
47fd5c32 Poul Sander 2024-10-05 08:44 1946
      auto it = ctx.begin();
47fd5c32 Poul Sander 2024-10-05 08:44 1947
      spec = *it;
47fd5c32 Poul Sander 2024-10-05 08:44 1948
      if (spec != 'd' && spec != 's')
47fd5c32 Poul Sander 2024-10-05 08:44 1949
        throw format_error("invalid specifier");
47fd5c32 Poul Sander 2024-10-05 08:44 1950
      return ++it;
47fd5c32 Poul Sander 2024-10-05 08:44 1951
    }
47fd5c32 Poul Sander 2024-10-05 08:44 1952
47fd5c32 Poul Sander 2024-10-05 08:44 1953
    template <typename FormatContext>
47fd5c32 Poul Sander 2024-10-05 08:44 1954
    auto format(Answer, FormatContext& ctx) {
47fd5c32 Poul Sander 2024-10-05 08:44 1955
      return spec == 's' ?
47fd5c32 Poul Sander 2024-10-05 08:44 1956
        format_to(ctx.begin(), "{}", "fourty-two") :
47fd5c32 Poul Sander 2024-10-05 08:44 1957
        format_to(ctx.begin(), "{}", 42);
47fd5c32 Poul Sander 2024-10-05 08:44 1958
    }
47fd5c32 Poul Sander 2024-10-05 08:44 1959
47fd5c32 Poul Sander 2024-10-05 08:44 1960
    char spec = 0;
47fd5c32 Poul Sander 2024-10-05 08:44 1961
  };
47fd5c32 Poul Sander 2024-10-05 08:44 1962
  }
47fd5c32 Poul Sander 2024-10-05 08:44 1963
47fd5c32 Poul Sander 2024-10-05 08:44 1964
  std::string s = format(fmt("{:x}"), Answer());
47fd5c32 Poul Sander 2024-10-05 08:44 1965
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 1966
47fd5c32 Poul Sander 2024-10-05 08:44 1967
  gives a compile-time error due to invalid format specifier
47fd5c32 Poul Sander 2024-10-05 08:44 1968
  ([godbolt](https://godbolt.org/g/2jQ1Dv)):
47fd5c32 Poul Sander 2024-10-05 08:44 1969
47fd5c32 Poul Sander 2024-10-05 08:44 1970
      ...
47fd5c32 Poul Sander 2024-10-05 08:44 1971
      <source>:12:45: error: expression '<throw-expression>' is not a constant expression
47fd5c32 Poul Sander 2024-10-05 08:44 1972
             throw format_error("invalid specifier");
47fd5c32 Poul Sander 2024-10-05 08:44 1973
47fd5c32 Poul Sander 2024-10-05 08:44 1974
- Added [iterator
47fd5c32 Poul Sander 2024-10-05 08:44 1975
  support](https://fmt.dev/latest/api.html#output-iterator-support):
47fd5c32 Poul Sander 2024-10-05 08:44 1976
47fd5c32 Poul Sander 2024-10-05 08:44 1977
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 1978
  #include <vector>
47fd5c32 Poul Sander 2024-10-05 08:44 1979
  #include <fmt/format.h>
47fd5c32 Poul Sander 2024-10-05 08:44 1980
47fd5c32 Poul Sander 2024-10-05 08:44 1981
  std::vector<char> out;
47fd5c32 Poul Sander 2024-10-05 08:44 1982
  fmt::format_to(std::back_inserter(out), "{}", 42);
47fd5c32 Poul Sander 2024-10-05 08:44 1983
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 1984
47fd5c32 Poul Sander 2024-10-05 08:44 1985
- Added the
47fd5c32 Poul Sander 2024-10-05 08:44 1986
  [format_to_n](https://fmt.dev/latest/api.html#_CPPv2N3fmt11format_to_nE8OutputItNSt6size_tE11string_viewDpRK4Args)
47fd5c32 Poul Sander 2024-10-05 08:44 1987
  function that restricts the output to the specified number of
47fd5c32 Poul Sander 2024-10-05 08:44 1988
  characters (https://github.com/fmtlib/fmt/issues/298):
47fd5c32 Poul Sander 2024-10-05 08:44 1989
47fd5c32 Poul Sander 2024-10-05 08:44 1990
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 1991
  char out[4];
47fd5c32 Poul Sander 2024-10-05 08:44 1992
  fmt::format_to_n(out, sizeof(out), "{}", 12345);
47fd5c32 Poul Sander 2024-10-05 08:44 1993
  // out == "1234" (without terminating '\0')
47fd5c32 Poul Sander 2024-10-05 08:44 1994
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 1995
47fd5c32 Poul Sander 2024-10-05 08:44 1996
- Added the [formatted_size](
47fd5c32 Poul Sander 2024-10-05 08:44 1997
  https://fmt.dev/latest/api.html#_CPPv2N3fmt14formatted_sizeE11string_viewDpRK4Args)
47fd5c32 Poul Sander 2024-10-05 08:44 1998
  function for computing the output size:
47fd5c32 Poul Sander 2024-10-05 08:44 1999
47fd5c32 Poul Sander 2024-10-05 08:44 2000
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 2001
  #include <fmt/format.h>
47fd5c32 Poul Sander 2024-10-05 08:44 2002
47fd5c32 Poul Sander 2024-10-05 08:44 2003
  auto size = fmt::formatted_size("{}", 12345); // size == 5
47fd5c32 Poul Sander 2024-10-05 08:44 2004
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 2005
47fd5c32 Poul Sander 2024-10-05 08:44 2006
- Improved compile times by reducing dependencies on standard headers
47fd5c32 Poul Sander 2024-10-05 08:44 2007
  and providing a lightweight [core
47fd5c32 Poul Sander 2024-10-05 08:44 2008
  API](https://fmt.dev/latest/api.html#core-api):
47fd5c32 Poul Sander 2024-10-05 08:44 2009
47fd5c32 Poul Sander 2024-10-05 08:44 2010
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 2011
  #include <fmt/core.h>
47fd5c32 Poul Sander 2024-10-05 08:44 2012
47fd5c32 Poul Sander 2024-10-05 08:44 2013
  fmt::print("The answer is {}.", 42);
47fd5c32 Poul Sander 2024-10-05 08:44 2014
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 2015
47fd5c32 Poul Sander 2024-10-05 08:44 2016
  See [Compile time and code
47fd5c32 Poul Sander 2024-10-05 08:44 2017
  bloat](https://github.com/fmtlib/fmt#compile-time-and-code-bloat).
47fd5c32 Poul Sander 2024-10-05 08:44 2018
47fd5c32 Poul Sander 2024-10-05 08:44 2019
- Added the [make_format_args](
47fd5c32 Poul Sander 2024-10-05 08:44 2020
  https://fmt.dev/latest/api.html#_CPPv2N3fmt16make_format_argsEDpRK4Args)
47fd5c32 Poul Sander 2024-10-05 08:44 2021
  function for capturing formatting arguments:
47fd5c32 Poul Sander 2024-10-05 08:44 2022
47fd5c32 Poul Sander 2024-10-05 08:44 2023
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 2024
  // Prints formatted error message.
47fd5c32 Poul Sander 2024-10-05 08:44 2025
  void vreport_error(const char *format, fmt::format_args args) {
47fd5c32 Poul Sander 2024-10-05 08:44 2026
    fmt::print("Error: ");
47fd5c32 Poul Sander 2024-10-05 08:44 2027
    fmt::vprint(format, args);
47fd5c32 Poul Sander 2024-10-05 08:44 2028
  }
47fd5c32 Poul Sander 2024-10-05 08:44 2029
  template <typename... Args>
47fd5c32 Poul Sander 2024-10-05 08:44 2030
  void report_error(const char *format, const Args & ... args) {
47fd5c32 Poul Sander 2024-10-05 08:44 2031
    vreport_error(format, fmt::make_format_args(args...));
47fd5c32 Poul Sander 2024-10-05 08:44 2032
  }
47fd5c32 Poul Sander 2024-10-05 08:44 2033
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 2034
47fd5c32 Poul Sander 2024-10-05 08:44 2035
- Added the `make_printf_args` function for capturing `printf`
47fd5c32 Poul Sander 2024-10-05 08:44 2036
  arguments (https://github.com/fmtlib/fmt/issues/687,
47fd5c32 Poul Sander 2024-10-05 08:44 2037
  https://github.com/fmtlib/fmt/pull/694). Thanks @Kronuz.
47fd5c32 Poul Sander 2024-10-05 08:44 2038
47fd5c32 Poul Sander 2024-10-05 08:44 2039
- Added prefix `v` to non-variadic functions taking `format_args` to
47fd5c32 Poul Sander 2024-10-05 08:44 2040
  distinguish them from variadic ones:
47fd5c32 Poul Sander 2024-10-05 08:44 2041
47fd5c32 Poul Sander 2024-10-05 08:44 2042
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 2043
  std::string vformat(string_view format_str, format_args args);
47fd5c32 Poul Sander 2024-10-05 08:44 2044
47fd5c32 Poul Sander 2024-10-05 08:44 2045
  template <typename... Args>
47fd5c32 Poul Sander 2024-10-05 08:44 2046
  std::string format(string_view format_str, const Args & ... args);
47fd5c32 Poul Sander 2024-10-05 08:44 2047
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 2048
47fd5c32 Poul Sander 2024-10-05 08:44 2049
- Added experimental support for formatting ranges, containers and
47fd5c32 Poul Sander 2024-10-05 08:44 2050
  tuple-like types in `fmt/ranges.h`
47fd5c32 Poul Sander 2024-10-05 08:44 2051
  (https://github.com/fmtlib/fmt/pull/735):
47fd5c32 Poul Sander 2024-10-05 08:44 2052
47fd5c32 Poul Sander 2024-10-05 08:44 2053
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 2054
  #include <fmt/ranges.h>
47fd5c32 Poul Sander 2024-10-05 08:44 2055
47fd5c32 Poul Sander 2024-10-05 08:44 2056
  std::vector<int> v = {1, 2, 3};
47fd5c32 Poul Sander 2024-10-05 08:44 2057
  fmt::print("{}", v); // prints {1, 2, 3}
47fd5c32 Poul Sander 2024-10-05 08:44 2058
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 2059
47fd5c32 Poul Sander 2024-10-05 08:44 2060
  Thanks @Remotion.
47fd5c32 Poul Sander 2024-10-05 08:44 2061
47fd5c32 Poul Sander 2024-10-05 08:44 2062
- Implemented `wchar_t` date and time formatting
47fd5c32 Poul Sander 2024-10-05 08:44 2063
  (https://github.com/fmtlib/fmt/pull/712):
47fd5c32 Poul Sander 2024-10-05 08:44 2064
47fd5c32 Poul Sander 2024-10-05 08:44 2065
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 2066
  #include <fmt/time.h>
47fd5c32 Poul Sander 2024-10-05 08:44 2067
47fd5c32 Poul Sander 2024-10-05 08:44 2068
  std::time_t t = std::time(nullptr);
47fd5c32 Poul Sander 2024-10-05 08:44 2069
  auto s = fmt::format(L"The date is {:%Y-%m-%d}.", *std::localtime(&t));
47fd5c32 Poul Sander 2024-10-05 08:44 2070
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 2071
47fd5c32 Poul Sander 2024-10-05 08:44 2072
  Thanks @DanielaE.
47fd5c32 Poul Sander 2024-10-05 08:44 2073
47fd5c32 Poul Sander 2024-10-05 08:44 2074
- Provided more wide string overloads
47fd5c32 Poul Sander 2024-10-05 08:44 2075
  (https://github.com/fmtlib/fmt/pull/724). Thanks @DanielaE.
47fd5c32 Poul Sander 2024-10-05 08:44 2076
47fd5c32 Poul Sander 2024-10-05 08:44 2077
- Switched from a custom null-terminated string view class to
47fd5c32 Poul Sander 2024-10-05 08:44 2078
  `string_view` in the format API and provided `fmt::string_view`
47fd5c32 Poul Sander 2024-10-05 08:44 2079
  which implements a subset of `std::string_view` API for pre-C++17
47fd5c32 Poul Sander 2024-10-05 08:44 2080
  systems.
47fd5c32 Poul Sander 2024-10-05 08:44 2081
47fd5c32 Poul Sander 2024-10-05 08:44 2082
- Added support for `std::experimental::string_view`
47fd5c32 Poul Sander 2024-10-05 08:44 2083
  (https://github.com/fmtlib/fmt/pull/607):
47fd5c32 Poul Sander 2024-10-05 08:44 2084
47fd5c32 Poul Sander 2024-10-05 08:44 2085
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 2086
  #include <fmt/core.h>
47fd5c32 Poul Sander 2024-10-05 08:44 2087
  #include <experimental/string_view>
47fd5c32 Poul Sander 2024-10-05 08:44 2088
47fd5c32 Poul Sander 2024-10-05 08:44 2089
  fmt::print("{}", std::experimental::string_view("foo"));
47fd5c32 Poul Sander 2024-10-05 08:44 2090
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 2091
47fd5c32 Poul Sander 2024-10-05 08:44 2092
  Thanks @virgiliofornazin.
47fd5c32 Poul Sander 2024-10-05 08:44 2093
47fd5c32 Poul Sander 2024-10-05 08:44 2094
- Allowed mixing named and automatic arguments:
47fd5c32 Poul Sander 2024-10-05 08:44 2095
47fd5c32 Poul Sander 2024-10-05 08:44 2096
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 2097
  fmt::format("{} {two}", 1, fmt::arg("two", 2));
47fd5c32 Poul Sander 2024-10-05 08:44 2098
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 2099
47fd5c32 Poul Sander 2024-10-05 08:44 2100
- Removed the write API in favor of the [format
47fd5c32 Poul Sander 2024-10-05 08:44 2101
  API](https://fmt.dev/latest/api.html#format-api) with compile-time
47fd5c32 Poul Sander 2024-10-05 08:44 2102
  handling of format strings.
47fd5c32 Poul Sander 2024-10-05 08:44 2103
47fd5c32 Poul Sander 2024-10-05 08:44 2104
- Disallowed formatting of multibyte strings into a wide character
47fd5c32 Poul Sander 2024-10-05 08:44 2105
  target (https://github.com/fmtlib/fmt/pull/606).
47fd5c32 Poul Sander 2024-10-05 08:44 2106
47fd5c32 Poul Sander 2024-10-05 08:44 2107
- Improved documentation
47fd5c32 Poul Sander 2024-10-05 08:44 2108
  (https://github.com/fmtlib/fmt/pull/515,
47fd5c32 Poul Sander 2024-10-05 08:44 2109
  https://github.com/fmtlib/fmt/issues/614,
47fd5c32 Poul Sander 2024-10-05 08:44 2110
  https://github.com/fmtlib/fmt/pull/617,
47fd5c32 Poul Sander 2024-10-05 08:44 2111
  https://github.com/fmtlib/fmt/pull/661,
47fd5c32 Poul Sander 2024-10-05 08:44 2112
  https://github.com/fmtlib/fmt/pull/680).
47fd5c32 Poul Sander 2024-10-05 08:44 2113
  Thanks @ibell, @mihaitodor and @johnthagen.
47fd5c32 Poul Sander 2024-10-05 08:44 2114
47fd5c32 Poul Sander 2024-10-05 08:44 2115
- Implemented more efficient handling of large number of format
47fd5c32 Poul Sander 2024-10-05 08:44 2116
  arguments.
47fd5c32 Poul Sander 2024-10-05 08:44 2117
47fd5c32 Poul Sander 2024-10-05 08:44 2118
- Introduced an inline namespace for symbol versioning.
47fd5c32 Poul Sander 2024-10-05 08:44 2119
47fd5c32 Poul Sander 2024-10-05 08:44 2120
- Added debug postfix `d` to the `fmt` library name
47fd5c32 Poul Sander 2024-10-05 08:44 2121
  (https://github.com/fmtlib/fmt/issues/636).
47fd5c32 Poul Sander 2024-10-05 08:44 2122
47fd5c32 Poul Sander 2024-10-05 08:44 2123
- Removed unnecessary `fmt/` prefix in includes
47fd5c32 Poul Sander 2024-10-05 08:44 2124
  (https://github.com/fmtlib/fmt/pull/397). Thanks @chronoxor.
47fd5c32 Poul Sander 2024-10-05 08:44 2125
47fd5c32 Poul Sander 2024-10-05 08:44 2126
- Moved `fmt/*.h` to `include/fmt/*.h` to prevent irrelevant files and
47fd5c32 Poul Sander 2024-10-05 08:44 2127
  directories appearing on the include search paths when fmt is used
47fd5c32 Poul Sander 2024-10-05 08:44 2128
  as a subproject and moved source files to the `src` directory.
47fd5c32 Poul Sander 2024-10-05 08:44 2129
47fd5c32 Poul Sander 2024-10-05 08:44 2130
- Added qmake project file `support/fmt.pro`
47fd5c32 Poul Sander 2024-10-05 08:44 2131
  (https://github.com/fmtlib/fmt/pull/641). Thanks @cowo78.
47fd5c32 Poul Sander 2024-10-05 08:44 2132
47fd5c32 Poul Sander 2024-10-05 08:44 2133
- Added Gradle build file `support/build.gradle`
47fd5c32 Poul Sander 2024-10-05 08:44 2134
  (https://github.com/fmtlib/fmt/pull/649). Thanks @luncliff.
47fd5c32 Poul Sander 2024-10-05 08:44 2135
47fd5c32 Poul Sander 2024-10-05 08:44 2136
- Removed `FMT_CPPFORMAT` CMake option.
47fd5c32 Poul Sander 2024-10-05 08:44 2137
47fd5c32 Poul Sander 2024-10-05 08:44 2138
- Fixed a name conflict with the macro `CHAR_WIDTH` in glibc
47fd5c32 Poul Sander 2024-10-05 08:44 2139
  (https://github.com/fmtlib/fmt/pull/616). Thanks @aroig.
47fd5c32 Poul Sander 2024-10-05 08:44 2140
47fd5c32 Poul Sander 2024-10-05 08:44 2141
- Fixed handling of nested braces in `fmt::join`
47fd5c32 Poul Sander 2024-10-05 08:44 2142
  (https://github.com/fmtlib/fmt/issues/638).
47fd5c32 Poul Sander 2024-10-05 08:44 2143
47fd5c32 Poul Sander 2024-10-05 08:44 2144
- Added `SOURCELINK_SUFFIX` for compatibility with Sphinx 1.5
47fd5c32 Poul Sander 2024-10-05 08:44 2145
  (https://github.com/fmtlib/fmt/pull/497). Thanks @ginggs.
47fd5c32 Poul Sander 2024-10-05 08:44 2146
47fd5c32 Poul Sander 2024-10-05 08:44 2147
- Added a missing `inline` in the header-only mode
47fd5c32 Poul Sander 2024-10-05 08:44 2148
  (https://github.com/fmtlib/fmt/pull/626). Thanks @aroig.
47fd5c32 Poul Sander 2024-10-05 08:44 2149
47fd5c32 Poul Sander 2024-10-05 08:44 2150
- Fixed various compiler warnings
47fd5c32 Poul Sander 2024-10-05 08:44 2151
  (https://github.com/fmtlib/fmt/pull/640,
47fd5c32 Poul Sander 2024-10-05 08:44 2152
  https://github.com/fmtlib/fmt/pull/656,
47fd5c32 Poul Sander 2024-10-05 08:44 2153
  https://github.com/fmtlib/fmt/pull/679,
47fd5c32 Poul Sander 2024-10-05 08:44 2154
  https://github.com/fmtlib/fmt/pull/681,
47fd5c32 Poul Sander 2024-10-05 08:44 2155
  https://github.com/fmtlib/fmt/pull/705,
47fd5c32 Poul Sander 2024-10-05 08:44 2156
  https://github.com/fmtlib/fmt/issues/715,
47fd5c32 Poul Sander 2024-10-05 08:44 2157
  https://github.com/fmtlib/fmt/pull/717,
47fd5c32 Poul Sander 2024-10-05 08:44 2158
  https://github.com/fmtlib/fmt/pull/720,
47fd5c32 Poul Sander 2024-10-05 08:44 2159
  https://github.com/fmtlib/fmt/pull/723,
47fd5c32 Poul Sander 2024-10-05 08:44 2160
  https://github.com/fmtlib/fmt/pull/726,
47fd5c32 Poul Sander 2024-10-05 08:44 2161
  https://github.com/fmtlib/fmt/pull/730,
47fd5c32 Poul Sander 2024-10-05 08:44 2162
  https://github.com/fmtlib/fmt/pull/739).
47fd5c32 Poul Sander 2024-10-05 08:44 2163
  Thanks @peterbell10, @LarsGullik, @foonathan, @eliaskosunen,
47fd5c32 Poul Sander 2024-10-05 08:44 2164
  @christianparpart, @DanielaE and @mwinterb.
47fd5c32 Poul Sander 2024-10-05 08:44 2165
47fd5c32 Poul Sander 2024-10-05 08:44 2166
- Worked around an MSVC bug and fixed several warnings
47fd5c32 Poul Sander 2024-10-05 08:44 2167
  (https://github.com/fmtlib/fmt/pull/653). Thanks @alabuzhev.
47fd5c32 Poul Sander 2024-10-05 08:44 2168
47fd5c32 Poul Sander 2024-10-05 08:44 2169
- Worked around GCC bug 67371
47fd5c32 Poul Sander 2024-10-05 08:44 2170
  (https://github.com/fmtlib/fmt/issues/682).
47fd5c32 Poul Sander 2024-10-05 08:44 2171
47fd5c32 Poul Sander 2024-10-05 08:44 2172
- Fixed compilation with `-fno-exceptions`
47fd5c32 Poul Sander 2024-10-05 08:44 2173
  (https://github.com/fmtlib/fmt/pull/655). Thanks @chenxiaolong.
47fd5c32 Poul Sander 2024-10-05 08:44 2174
47fd5c32 Poul Sander 2024-10-05 08:44 2175
- Made `constexpr remove_prefix` gcc version check tighter
47fd5c32 Poul Sander 2024-10-05 08:44 2176
  (https://github.com/fmtlib/fmt/issues/648).
47fd5c32 Poul Sander 2024-10-05 08:44 2177
47fd5c32 Poul Sander 2024-10-05 08:44 2178
- Renamed internal type enum constants to prevent collision with
47fd5c32 Poul Sander 2024-10-05 08:44 2179
  poorly written C libraries
47fd5c32 Poul Sander 2024-10-05 08:44 2180
  (https://github.com/fmtlib/fmt/issues/644).
47fd5c32 Poul Sander 2024-10-05 08:44 2181
47fd5c32 Poul Sander 2024-10-05 08:44 2182
- Added detection of `wostream operator<<`
47fd5c32 Poul Sander 2024-10-05 08:44 2183
  (https://github.com/fmtlib/fmt/issues/650).
47fd5c32 Poul Sander 2024-10-05 08:44 2184
47fd5c32 Poul Sander 2024-10-05 08:44 2185
- Fixed compilation on OpenBSD
47fd5c32 Poul Sander 2024-10-05 08:44 2186
  (https://github.com/fmtlib/fmt/pull/660). Thanks @hubslave.
47fd5c32 Poul Sander 2024-10-05 08:44 2187
47fd5c32 Poul Sander 2024-10-05 08:44 2188
- Fixed compilation on FreeBSD 12
47fd5c32 Poul Sander 2024-10-05 08:44 2189
  (https://github.com/fmtlib/fmt/pull/732). Thanks @dankm.
47fd5c32 Poul Sander 2024-10-05 08:44 2190
47fd5c32 Poul Sander 2024-10-05 08:44 2191
- Fixed compilation when there is a mismatch between `-std` options
47fd5c32 Poul Sander 2024-10-05 08:44 2192
  between the library and user code
47fd5c32 Poul Sander 2024-10-05 08:44 2193
  (https://github.com/fmtlib/fmt/issues/664).
47fd5c32 Poul Sander 2024-10-05 08:44 2194
47fd5c32 Poul Sander 2024-10-05 08:44 2195
- Fixed compilation with GCC 7 and `-std=c++11`
47fd5c32 Poul Sander 2024-10-05 08:44 2196
  (https://github.com/fmtlib/fmt/issues/734).
47fd5c32 Poul Sander 2024-10-05 08:44 2197
47fd5c32 Poul Sander 2024-10-05 08:44 2198
- Improved generated binary code on GCC 7 and older
47fd5c32 Poul Sander 2024-10-05 08:44 2199
  (https://github.com/fmtlib/fmt/issues/668).
47fd5c32 Poul Sander 2024-10-05 08:44 2200
47fd5c32 Poul Sander 2024-10-05 08:44 2201
- Fixed handling of numeric alignment with no width
47fd5c32 Poul Sander 2024-10-05 08:44 2202
  (https://github.com/fmtlib/fmt/issues/675).
47fd5c32 Poul Sander 2024-10-05 08:44 2203
47fd5c32 Poul Sander 2024-10-05 08:44 2204
- Fixed handling of empty strings in UTF8/16 converters
47fd5c32 Poul Sander 2024-10-05 08:44 2205
  (https://github.com/fmtlib/fmt/pull/676). Thanks @vgalka-sl.
47fd5c32 Poul Sander 2024-10-05 08:44 2206
47fd5c32 Poul Sander 2024-10-05 08:44 2207
- Fixed formatting of an empty `string_view`
47fd5c32 Poul Sander 2024-10-05 08:44 2208
  (https://github.com/fmtlib/fmt/issues/689).
47fd5c32 Poul Sander 2024-10-05 08:44 2209
47fd5c32 Poul Sander 2024-10-05 08:44 2210
- Fixed detection of `string_view` on libc++
47fd5c32 Poul Sander 2024-10-05 08:44 2211
  (https://github.com/fmtlib/fmt/issues/686).
47fd5c32 Poul Sander 2024-10-05 08:44 2212
47fd5c32 Poul Sander 2024-10-05 08:44 2213
- Fixed DLL issues (https://github.com/fmtlib/fmt/pull/696).
47fd5c32 Poul Sander 2024-10-05 08:44 2214
  Thanks @sebkoenig.
47fd5c32 Poul Sander 2024-10-05 08:44 2215
47fd5c32 Poul Sander 2024-10-05 08:44 2216
- Fixed compile checks for mixing narrow and wide strings
47fd5c32 Poul Sander 2024-10-05 08:44 2217
  (https://github.com/fmtlib/fmt/issues/690).
47fd5c32 Poul Sander 2024-10-05 08:44 2218
47fd5c32 Poul Sander 2024-10-05 08:44 2219
- Disabled unsafe implicit conversion to `std::string`
47fd5c32 Poul Sander 2024-10-05 08:44 2220
  (https://github.com/fmtlib/fmt/issues/729).
47fd5c32 Poul Sander 2024-10-05 08:44 2221
47fd5c32 Poul Sander 2024-10-05 08:44 2222
- Fixed handling of reused format specs (as in `fmt::join`) for
47fd5c32 Poul Sander 2024-10-05 08:44 2223
  pointers (https://github.com/fmtlib/fmt/pull/725). Thanks @mwinterb.
47fd5c32 Poul Sander 2024-10-05 08:44 2224
47fd5c32 Poul Sander 2024-10-05 08:44 2225
- Fixed installation of `fmt/ranges.h`
47fd5c32 Poul Sander 2024-10-05 08:44 2226
  (https://github.com/fmtlib/fmt/pull/738). Thanks @sv1990.
47fd5c32 Poul Sander 2024-10-05 08:44 2227
47fd5c32 Poul Sander 2024-10-05 08:44 2228
# 4.1.0 - 2017-12-20
47fd5c32 Poul Sander 2024-10-05 08:44 2229
47fd5c32 Poul Sander 2024-10-05 08:44 2230
- Added `fmt::to_wstring()` in addition to `fmt::to_string()`
47fd5c32 Poul Sander 2024-10-05 08:44 2231
  (https://github.com/fmtlib/fmt/pull/559). Thanks @alabuzhev.
47fd5c32 Poul Sander 2024-10-05 08:44 2232
- Added support for C++17 `std::string_view`
47fd5c32 Poul Sander 2024-10-05 08:44 2233
  (https://github.com/fmtlib/fmt/pull/571 and
47fd5c32 Poul Sander 2024-10-05 08:44 2234
  https://github.com/fmtlib/fmt/pull/578).
47fd5c32 Poul Sander 2024-10-05 08:44 2235
  Thanks @thelostt and @mwinterb.
47fd5c32 Poul Sander 2024-10-05 08:44 2236
- Enabled stream exceptions to catch errors
47fd5c32 Poul Sander 2024-10-05 08:44 2237
  (https://github.com/fmtlib/fmt/issues/581). Thanks @crusader-mike.
47fd5c32 Poul Sander 2024-10-05 08:44 2238
- Allowed formatting of class hierarchies with `fmt::format_arg()`
47fd5c32 Poul Sander 2024-10-05 08:44 2239
  (https://github.com/fmtlib/fmt/pull/547). Thanks @rollbear.
47fd5c32 Poul Sander 2024-10-05 08:44 2240
- Removed limitations on character types
47fd5c32 Poul Sander 2024-10-05 08:44 2241
  (https://github.com/fmtlib/fmt/pull/563). Thanks @Yelnats321.
47fd5c32 Poul Sander 2024-10-05 08:44 2242
- Conditionally enabled use of `std::allocator_traits`
47fd5c32 Poul Sander 2024-10-05 08:44 2243
  (https://github.com/fmtlib/fmt/pull/583). Thanks @mwinterb.
47fd5c32 Poul Sander 2024-10-05 08:44 2244
- Added support for `const` variadic member function emulation with
47fd5c32 Poul Sander 2024-10-05 08:44 2245
  `FMT_VARIADIC_CONST`
47fd5c32 Poul Sander 2024-10-05 08:44 2246
  (https://github.com/fmtlib/fmt/pull/591). Thanks @ludekvodicka.
47fd5c32 Poul Sander 2024-10-05 08:44 2247
- Various bugfixes: bad overflow check, unsupported implicit type
47fd5c32 Poul Sander 2024-10-05 08:44 2248
  conversion when determining formatting function, test segfaults
47fd5c32 Poul Sander 2024-10-05 08:44 2249
  (https://github.com/fmtlib/fmt/issues/551), ill-formed
47fd5c32 Poul Sander 2024-10-05 08:44 2250
  macros (https://github.com/fmtlib/fmt/pull/542) and
47fd5c32 Poul Sander 2024-10-05 08:44 2251
  ambiguous overloads
47fd5c32 Poul Sander 2024-10-05 08:44 2252
  (https://github.com/fmtlib/fmt/issues/580). Thanks @xylosper.
47fd5c32 Poul Sander 2024-10-05 08:44 2253
- Prevented warnings on MSVC
47fd5c32 Poul Sander 2024-10-05 08:44 2254
  (https://github.com/fmtlib/fmt/pull/605,
47fd5c32 Poul Sander 2024-10-05 08:44 2255
  https://github.com/fmtlib/fmt/pull/602, and
47fd5c32 Poul Sander 2024-10-05 08:44 2256
  https://github.com/fmtlib/fmt/pull/545), clang
47fd5c32 Poul Sander 2024-10-05 08:44 2257
  (https://github.com/fmtlib/fmt/pull/582), GCC
47fd5c32 Poul Sander 2024-10-05 08:44 2258
  (https://github.com/fmtlib/fmt/issues/573), various
47fd5c32 Poul Sander 2024-10-05 08:44 2259
  conversion warnings (https://github.com/fmtlib/fmt/pull/609,
47fd5c32 Poul Sander 2024-10-05 08:44 2260
  https://github.com/fmtlib/fmt/pull/567,
47fd5c32 Poul Sander 2024-10-05 08:44 2261
  https://github.com/fmtlib/fmt/pull/553 and
47fd5c32 Poul Sander 2024-10-05 08:44 2262
  https://github.com/fmtlib/fmt/pull/553), and added
47fd5c32 Poul Sander 2024-10-05 08:44 2263
  `override` and `[[noreturn]]`
47fd5c32 Poul Sander 2024-10-05 08:44 2264
  (https://github.com/fmtlib/fmt/pull/549 and
47fd5c32 Poul Sander 2024-10-05 08:44 2265
  https://github.com/fmtlib/fmt/issues/555).
47fd5c32 Poul Sander 2024-10-05 08:44 2266
  Thanks @alabuzhev, @virgiliofornazin, @alexanderbock, @yumetodo, @VaderY,
47fd5c32 Poul Sander 2024-10-05 08:44 2267
  @jpcima, @thelostt and @Manu343726.
47fd5c32 Poul Sander 2024-10-05 08:44 2268
- Improved CMake: Used `GNUInstallDirs` to set installation location
47fd5c32 Poul Sander 2024-10-05 08:44 2269
  (https://github.com/fmtlib/fmt/pull/610) and fixed warnings
47fd5c32 Poul Sander 2024-10-05 08:44 2270
  (https://github.com/fmtlib/fmt/pull/536 and
47fd5c32 Poul Sander 2024-10-05 08:44 2271
  https://github.com/fmtlib/fmt/pull/556).
47fd5c32 Poul Sander 2024-10-05 08:44 2272
  Thanks @mikecrowe, @evgen231 and @henryiii.
47fd5c32 Poul Sander 2024-10-05 08:44 2273
47fd5c32 Poul Sander 2024-10-05 08:44 2274
# 4.0.0 - 2017-06-27
47fd5c32 Poul Sander 2024-10-05 08:44 2275
47fd5c32 Poul Sander 2024-10-05 08:44 2276
- Removed old compatibility headers `cppformat/*.h` and CMake options
47fd5c32 Poul Sander 2024-10-05 08:44 2277
  (https://github.com/fmtlib/fmt/pull/527). Thanks @maddinat0r.
47fd5c32 Poul Sander 2024-10-05 08:44 2278
47fd5c32 Poul Sander 2024-10-05 08:44 2279
- Added `string.h` containing `fmt::to_string()` as alternative to
47fd5c32 Poul Sander 2024-10-05 08:44 2280
  `std::to_string()` as well as other string writer functionality
47fd5c32 Poul Sander 2024-10-05 08:44 2281
  (https://github.com/fmtlib/fmt/issues/326 and
47fd5c32 Poul Sander 2024-10-05 08:44 2282
  https://github.com/fmtlib/fmt/pull/441):
47fd5c32 Poul Sander 2024-10-05 08:44 2283
47fd5c32 Poul Sander 2024-10-05 08:44 2284
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 2285
  #include "fmt/string.h"
47fd5c32 Poul Sander 2024-10-05 08:44 2286
47fd5c32 Poul Sander 2024-10-05 08:44 2287
  std::string answer = fmt::to_string(42);
47fd5c32 Poul Sander 2024-10-05 08:44 2288
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 2289
47fd5c32 Poul Sander 2024-10-05 08:44 2290
  Thanks @glebov-andrey.
47fd5c32 Poul Sander 2024-10-05 08:44 2291
47fd5c32 Poul Sander 2024-10-05 08:44 2292
- Moved `fmt::printf()` to new `printf.h` header and allowed `%s` as
47fd5c32 Poul Sander 2024-10-05 08:44 2293
  generic specifier (https://github.com/fmtlib/fmt/pull/453),
47fd5c32 Poul Sander 2024-10-05 08:44 2294
  made `%.f` more conformant to regular `printf()`
47fd5c32 Poul Sander 2024-10-05 08:44 2295
  (https://github.com/fmtlib/fmt/pull/490), added custom
47fd5c32 Poul Sander 2024-10-05 08:44 2296
  writer support (https://github.com/fmtlib/fmt/issues/476)
47fd5c32 Poul Sander 2024-10-05 08:44 2297
  and implemented missing custom argument formatting
47fd5c32 Poul Sander 2024-10-05 08:44 2298
  (https://github.com/fmtlib/fmt/pull/339 and
47fd5c32 Poul Sander 2024-10-05 08:44 2299
  https://github.com/fmtlib/fmt/pull/340):
47fd5c32 Poul Sander 2024-10-05 08:44 2300
47fd5c32 Poul Sander 2024-10-05 08:44 2301
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 2302
  #include "fmt/printf.h"
47fd5c32 Poul Sander 2024-10-05 08:44 2303
47fd5c32 Poul Sander 2024-10-05 08:44 2304
  // %s format specifier can be used with any argument type.
47fd5c32 Poul Sander 2024-10-05 08:44 2305
  fmt::printf("%s", 42);
47fd5c32 Poul Sander 2024-10-05 08:44 2306
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 2307
47fd5c32 Poul Sander 2024-10-05 08:44 2308
  Thanks @mojoBrendan, @manylegged and @spacemoose.
47fd5c32 Poul Sander 2024-10-05 08:44 2309
  See also https://github.com/fmtlib/fmt/issues/360,
47fd5c32 Poul Sander 2024-10-05 08:44 2310
  https://github.com/fmtlib/fmt/issues/335 and
47fd5c32 Poul Sander 2024-10-05 08:44 2311
  https://github.com/fmtlib/fmt/issues/331.
47fd5c32 Poul Sander 2024-10-05 08:44 2312
47fd5c32 Poul Sander 2024-10-05 08:44 2313
- Added `container.h` containing a `BasicContainerWriter` to write to
47fd5c32 Poul Sander 2024-10-05 08:44 2314
  containers like `std::vector`
47fd5c32 Poul Sander 2024-10-05 08:44 2315
  (https://github.com/fmtlib/fmt/pull/450). Thanks @polyvertex.
47fd5c32 Poul Sander 2024-10-05 08:44 2316
47fd5c32 Poul Sander 2024-10-05 08:44 2317
- Added `fmt::join()` function that takes a range and formats its
47fd5c32 Poul Sander 2024-10-05 08:44 2318
  elements separated by a given string
47fd5c32 Poul Sander 2024-10-05 08:44 2319
  (https://github.com/fmtlib/fmt/pull/466):
47fd5c32 Poul Sander 2024-10-05 08:44 2320
47fd5c32 Poul Sander 2024-10-05 08:44 2321
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 2322
  #include "fmt/format.h"
47fd5c32 Poul Sander 2024-10-05 08:44 2323
47fd5c32 Poul Sander 2024-10-05 08:44 2324
  std::vector<double> v = {1.2, 3.4, 5.6};
47fd5c32 Poul Sander 2024-10-05 08:44 2325
  // Prints "(+01.20, +03.40, +05.60)".
47fd5c32 Poul Sander 2024-10-05 08:44 2326
  fmt::print("({:+06.2f})", fmt::join(v.begin(), v.end(), ", "));
47fd5c32 Poul Sander 2024-10-05 08:44 2327
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 2328
47fd5c32 Poul Sander 2024-10-05 08:44 2329
  Thanks @olivier80.
47fd5c32 Poul Sander 2024-10-05 08:44 2330
47fd5c32 Poul Sander 2024-10-05 08:44 2331
- Added support for custom formatting specifications to simplify
47fd5c32 Poul Sander 2024-10-05 08:44 2332
  customization of built-in formatting
47fd5c32 Poul Sander 2024-10-05 08:44 2333
  (https://github.com/fmtlib/fmt/pull/444). Thanks @polyvertex.
47fd5c32 Poul Sander 2024-10-05 08:44 2334
  See also https://github.com/fmtlib/fmt/issues/439.
47fd5c32 Poul Sander 2024-10-05 08:44 2335
47fd5c32 Poul Sander 2024-10-05 08:44 2336
- Added `fmt::format_system_error()` for error code formatting
47fd5c32 Poul Sander 2024-10-05 08:44 2337
  (https://github.com/fmtlib/fmt/issues/323 and
47fd5c32 Poul Sander 2024-10-05 08:44 2338
  https://github.com/fmtlib/fmt/pull/526). Thanks @maddinat0r.
47fd5c32 Poul Sander 2024-10-05 08:44 2339
47fd5c32 Poul Sander 2024-10-05 08:44 2340
- Added thread-safe `fmt::localtime()` and `fmt::gmtime()` as
47fd5c32 Poul Sander 2024-10-05 08:44 2341
  replacement for the standard version to `time.h`
47fd5c32 Poul Sander 2024-10-05 08:44 2342
  (https://github.com/fmtlib/fmt/pull/396). Thanks @codicodi.
47fd5c32 Poul Sander 2024-10-05 08:44 2343
47fd5c32 Poul Sander 2024-10-05 08:44 2344
- Internal improvements to `NamedArg` and `ArgLists`
47fd5c32 Poul Sander 2024-10-05 08:44 2345
  (https://github.com/fmtlib/fmt/pull/389 and
47fd5c32 Poul Sander 2024-10-05 08:44 2346
  https://github.com/fmtlib/fmt/pull/390). Thanks @chronoxor.
47fd5c32 Poul Sander 2024-10-05 08:44 2347
47fd5c32 Poul Sander 2024-10-05 08:44 2348
- Fixed crash due to bug in `FormatBuf`
47fd5c32 Poul Sander 2024-10-05 08:44 2349
  (https://github.com/fmtlib/fmt/pull/493). Thanks @effzeh. See also
47fd5c32 Poul Sander 2024-10-05 08:44 2350
  https://github.com/fmtlib/fmt/issues/480 and
47fd5c32 Poul Sander 2024-10-05 08:44 2351
  https://github.com/fmtlib/fmt/issues/491.
47fd5c32 Poul Sander 2024-10-05 08:44 2352
47fd5c32 Poul Sander 2024-10-05 08:44 2353
- Fixed handling of wide strings in `fmt::StringWriter`.
47fd5c32 Poul Sander 2024-10-05 08:44 2354
47fd5c32 Poul Sander 2024-10-05 08:44 2355
- Improved compiler error messages
47fd5c32 Poul Sander 2024-10-05 08:44 2356
  (https://github.com/fmtlib/fmt/issues/357).
47fd5c32 Poul Sander 2024-10-05 08:44 2357
47fd5c32 Poul Sander 2024-10-05 08:44 2358
- Fixed various warnings and issues with various compilers
47fd5c32 Poul Sander 2024-10-05 08:44 2359
  (https://github.com/fmtlib/fmt/pull/494,
47fd5c32 Poul Sander 2024-10-05 08:44 2360
  https://github.com/fmtlib/fmt/pull/499,
47fd5c32 Poul Sander 2024-10-05 08:44 2361
  https://github.com/fmtlib/fmt/pull/483,
47fd5c32 Poul Sander 2024-10-05 08:44 2362
  https://github.com/fmtlib/fmt/pull/485,
47fd5c32 Poul Sander 2024-10-05 08:44 2363
  https://github.com/fmtlib/fmt/pull/482,
47fd5c32 Poul Sander 2024-10-05 08:44 2364
  https://github.com/fmtlib/fmt/pull/475,
47fd5c32 Poul Sander 2024-10-05 08:44 2365
  https://github.com/fmtlib/fmt/pull/473 and
47fd5c32 Poul Sander 2024-10-05 08:44 2366
  https://github.com/fmtlib/fmt/pull/414).
47fd5c32 Poul Sander 2024-10-05 08:44 2367
  Thanks @chronoxor, @zhaohuaxishi, @pkestene, @dschmidt and @0x414c.
47fd5c32 Poul Sander 2024-10-05 08:44 2368
47fd5c32 Poul Sander 2024-10-05 08:44 2369
- Improved CMake: targets are now namespaced
47fd5c32 Poul Sander 2024-10-05 08:44 2370
  (https://github.com/fmtlib/fmt/pull/511 and
47fd5c32 Poul Sander 2024-10-05 08:44 2371
  https://github.com/fmtlib/fmt/pull/513), supported
47fd5c32 Poul Sander 2024-10-05 08:44 2372
  header-only `printf.h`
47fd5c32 Poul Sander 2024-10-05 08:44 2373
  (https://github.com/fmtlib/fmt/pull/354), fixed issue with
47fd5c32 Poul Sander 2024-10-05 08:44 2374
  minimal supported library subset
47fd5c32 Poul Sander 2024-10-05 08:44 2375
  (https://github.com/fmtlib/fmt/issues/418,
47fd5c32 Poul Sander 2024-10-05 08:44 2376
  https://github.com/fmtlib/fmt/pull/419 and
47fd5c32 Poul Sander 2024-10-05 08:44 2377
  https://github.com/fmtlib/fmt/pull/420).
47fd5c32 Poul Sander 2024-10-05 08:44 2378
  Thanks @bjoernthiel, @niosHD, @LogicalKnight and @alabuzhev.
47fd5c32 Poul Sander 2024-10-05 08:44 2379
47fd5c32 Poul Sander 2024-10-05 08:44 2380
- Improved documentation (https://github.com/fmtlib/fmt/pull/393).
47fd5c32 Poul Sander 2024-10-05 08:44 2381
  Thanks @pwm1234.
47fd5c32 Poul Sander 2024-10-05 08:44 2382
47fd5c32 Poul Sander 2024-10-05 08:44 2383
# 3.0.2 - 2017-06-14
47fd5c32 Poul Sander 2024-10-05 08:44 2384
47fd5c32 Poul Sander 2024-10-05 08:44 2385
- Added `FMT_VERSION` macro
47fd5c32 Poul Sander 2024-10-05 08:44 2386
  (https://github.com/fmtlib/fmt/issues/411).
47fd5c32 Poul Sander 2024-10-05 08:44 2387
- Used `FMT_NULL` instead of literal `0`
47fd5c32 Poul Sander 2024-10-05 08:44 2388
  (https://github.com/fmtlib/fmt/pull/409). Thanks @alabuzhev.
47fd5c32 Poul Sander 2024-10-05 08:44 2389
- Added extern templates for `format_float`
47fd5c32 Poul Sander 2024-10-05 08:44 2390
  (https://github.com/fmtlib/fmt/issues/413).
47fd5c32 Poul Sander 2024-10-05 08:44 2391
- Fixed implicit conversion issue
47fd5c32 Poul Sander 2024-10-05 08:44 2392
  (https://github.com/fmtlib/fmt/issues/507).
47fd5c32 Poul Sander 2024-10-05 08:44 2393
- Fixed signbit detection
47fd5c32 Poul Sander 2024-10-05 08:44 2394
  (https://github.com/fmtlib/fmt/issues/423).
47fd5c32 Poul Sander 2024-10-05 08:44 2395
- Fixed naming collision
47fd5c32 Poul Sander 2024-10-05 08:44 2396
  (https://github.com/fmtlib/fmt/issues/425).
47fd5c32 Poul Sander 2024-10-05 08:44 2397
- Fixed missing intrinsic for C++/CLI
47fd5c32 Poul Sander 2024-10-05 08:44 2398
  (https://github.com/fmtlib/fmt/pull/457). Thanks @calumr.
47fd5c32 Poul Sander 2024-10-05 08:44 2399
- Fixed Android detection
47fd5c32 Poul Sander 2024-10-05 08:44 2400
  (https://github.com/fmtlib/fmt/pull/458). Thanks @Gachapen.
47fd5c32 Poul Sander 2024-10-05 08:44 2401
- Use lean `windows.h` if not in header-only mode
47fd5c32 Poul Sander 2024-10-05 08:44 2402
  (https://github.com/fmtlib/fmt/pull/503). Thanks @Quentin01.
47fd5c32 Poul Sander 2024-10-05 08:44 2403
- Fixed issue with CMake exporting C++11 flag
47fd5c32 Poul Sander 2024-10-05 08:44 2404
  (https://github.com/fmtlib/fmt/pull/455). Thanks @EricWF.
47fd5c32 Poul Sander 2024-10-05 08:44 2405
- Fixed issue with nvcc and MSVC compiler bug and MinGW
47fd5c32 Poul Sander 2024-10-05 08:44 2406
  (https://github.com/fmtlib/fmt/issues/505).
47fd5c32 Poul Sander 2024-10-05 08:44 2407
- Fixed DLL issues (https://github.com/fmtlib/fmt/pull/469 and
47fd5c32 Poul Sander 2024-10-05 08:44 2408
  https://github.com/fmtlib/fmt/pull/502).
47fd5c32 Poul Sander 2024-10-05 08:44 2409
  Thanks @richardeakin and @AndreasSchoenle.
47fd5c32 Poul Sander 2024-10-05 08:44 2410
- Fixed test compilation under FreeBSD
47fd5c32 Poul Sander 2024-10-05 08:44 2411
  (https://github.com/fmtlib/fmt/issues/433).
47fd5c32 Poul Sander 2024-10-05 08:44 2412
- Fixed various warnings
47fd5c32 Poul Sander 2024-10-05 08:44 2413
  (https://github.com/fmtlib/fmt/pull/403,
47fd5c32 Poul Sander 2024-10-05 08:44 2414
  https://github.com/fmtlib/fmt/pull/410 and
47fd5c32 Poul Sander 2024-10-05 08:44 2415
  https://github.com/fmtlib/fmt/pull/510).
47fd5c32 Poul Sander 2024-10-05 08:44 2416
  Thanks @Lecetem, @chenhayat and @trozen.
47fd5c32 Poul Sander 2024-10-05 08:44 2417
- Worked around a broken `__builtin_clz` in clang with MS codegen
47fd5c32 Poul Sander 2024-10-05 08:44 2418
  (https://github.com/fmtlib/fmt/issues/519).
47fd5c32 Poul Sander 2024-10-05 08:44 2419
- Removed redundant include
47fd5c32 Poul Sander 2024-10-05 08:44 2420
  (https://github.com/fmtlib/fmt/issues/479).
47fd5c32 Poul Sander 2024-10-05 08:44 2421
- Fixed documentation issues.
47fd5c32 Poul Sander 2024-10-05 08:44 2422
47fd5c32 Poul Sander 2024-10-05 08:44 2423
# 3.0.1 - 2016-11-01
47fd5c32 Poul Sander 2024-10-05 08:44 2424
47fd5c32 Poul Sander 2024-10-05 08:44 2425
- Fixed handling of thousands separator
47fd5c32 Poul Sander 2024-10-05 08:44 2426
  (https://github.com/fmtlib/fmt/issues/353).
47fd5c32 Poul Sander 2024-10-05 08:44 2427
- Fixed handling of `unsigned char` strings
47fd5c32 Poul Sander 2024-10-05 08:44 2428
  (https://github.com/fmtlib/fmt/issues/373).
47fd5c32 Poul Sander 2024-10-05 08:44 2429
- Corrected buffer growth when formatting time
47fd5c32 Poul Sander 2024-10-05 08:44 2430
  (https://github.com/fmtlib/fmt/issues/367).
47fd5c32 Poul Sander 2024-10-05 08:44 2431
- Removed warnings under MSVC and clang
47fd5c32 Poul Sander 2024-10-05 08:44 2432
  (https://github.com/fmtlib/fmt/issues/318,
47fd5c32 Poul Sander 2024-10-05 08:44 2433
  https://github.com/fmtlib/fmt/issues/250, also merged
47fd5c32 Poul Sander 2024-10-05 08:44 2434
  https://github.com/fmtlib/fmt/pull/385 and
47fd5c32 Poul Sander 2024-10-05 08:44 2435
  https://github.com/fmtlib/fmt/pull/361).
47fd5c32 Poul Sander 2024-10-05 08:44 2436
  Thanks @jcelerier and @nmoehrle.
47fd5c32 Poul Sander 2024-10-05 08:44 2437
- Fixed compilation issues under Android
47fd5c32 Poul Sander 2024-10-05 08:44 2438
  (https://github.com/fmtlib/fmt/pull/327,
47fd5c32 Poul Sander 2024-10-05 08:44 2439
  https://github.com/fmtlib/fmt/issues/345 and
47fd5c32 Poul Sander 2024-10-05 08:44 2440
  https://github.com/fmtlib/fmt/pull/381), FreeBSD
47fd5c32 Poul Sander 2024-10-05 08:44 2441
  (https://github.com/fmtlib/fmt/pull/358), Cygwin
47fd5c32 Poul Sander 2024-10-05 08:44 2442
  (https://github.com/fmtlib/fmt/issues/388), MinGW
47fd5c32 Poul Sander 2024-10-05 08:44 2443
  (https://github.com/fmtlib/fmt/issues/355) as well as other
47fd5c32 Poul Sander 2024-10-05 08:44 2444
  issues (https://github.com/fmtlib/fmt/issues/350,
47fd5c32 Poul Sander 2024-10-05 08:44 2445
  https://github.com/fmtlib/fmt/issues/355,
47fd5c32 Poul Sander 2024-10-05 08:44 2446
  https://github.com/fmtlib/fmt/pull/348,
47fd5c32 Poul Sander 2024-10-05 08:44 2447
  https://github.com/fmtlib/fmt/pull/402,
47fd5c32 Poul Sander 2024-10-05 08:44 2448
  https://github.com/fmtlib/fmt/pull/405).
47fd5c32 Poul Sander 2024-10-05 08:44 2449
  Thanks @dpantele, @hghwng, @arvedarved, @LogicalKnight and @JanHellwig.
47fd5c32 Poul Sander 2024-10-05 08:44 2450
- Fixed some documentation issues and extended specification
47fd5c32 Poul Sander 2024-10-05 08:44 2451
  (https://github.com/fmtlib/fmt/issues/320,
47fd5c32 Poul Sander 2024-10-05 08:44 2452
  https://github.com/fmtlib/fmt/pull/333,
47fd5c32 Poul Sander 2024-10-05 08:44 2453
  https://github.com/fmtlib/fmt/issues/347,
47fd5c32 Poul Sander 2024-10-05 08:44 2454
  https://github.com/fmtlib/fmt/pull/362). Thanks @smellman.
47fd5c32 Poul Sander 2024-10-05 08:44 2455
47fd5c32 Poul Sander 2024-10-05 08:44 2456
# 3.0.0 - 2016-05-07
47fd5c32 Poul Sander 2024-10-05 08:44 2457
47fd5c32 Poul Sander 2024-10-05 08:44 2458
- The project has been renamed from C++ Format (cppformat) to fmt for
47fd5c32 Poul Sander 2024-10-05 08:44 2459
  consistency with the used namespace and macro prefix
47fd5c32 Poul Sander 2024-10-05 08:44 2460
  (https://github.com/fmtlib/fmt/issues/307). Library headers
47fd5c32 Poul Sander 2024-10-05 08:44 2461
  are now located in the `fmt` directory:
47fd5c32 Poul Sander 2024-10-05 08:44 2462
47fd5c32 Poul Sander 2024-10-05 08:44 2463
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 2464
  #include "fmt/format.h"
47fd5c32 Poul Sander 2024-10-05 08:44 2465
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 2466
47fd5c32 Poul Sander 2024-10-05 08:44 2467
  Including `format.h` from the `cppformat` directory is deprecated
47fd5c32 Poul Sander 2024-10-05 08:44 2468
  but works via a proxy header which will be removed in the next major
47fd5c32 Poul Sander 2024-10-05 08:44 2469
  version.
47fd5c32 Poul Sander 2024-10-05 08:44 2470
47fd5c32 Poul Sander 2024-10-05 08:44 2471
  The documentation is now available at <https://fmt.dev>.
47fd5c32 Poul Sander 2024-10-05 08:44 2472
47fd5c32 Poul Sander 2024-10-05 08:44 2473
- Added support for
47fd5c32 Poul Sander 2024-10-05 08:44 2474
  [strftime](http://en.cppreference.com/w/cpp/chrono/c/strftime)-like
47fd5c32 Poul Sander 2024-10-05 08:44 2475
  [date and time
47fd5c32 Poul Sander 2024-10-05 08:44 2476
  formatting](https://fmt.dev/3.0.0/api.html#date-and-time-formatting)
47fd5c32 Poul Sander 2024-10-05 08:44 2477
  (https://github.com/fmtlib/fmt/issues/283):
47fd5c32 Poul Sander 2024-10-05 08:44 2478
47fd5c32 Poul Sander 2024-10-05 08:44 2479
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 2480
  #include "fmt/time.h"
47fd5c32 Poul Sander 2024-10-05 08:44 2481
47fd5c32 Poul Sander 2024-10-05 08:44 2482
  std::time_t t = std::time(nullptr);
47fd5c32 Poul Sander 2024-10-05 08:44 2483
  // Prints "The date is 2016-04-29." (with the current date)
47fd5c32 Poul Sander 2024-10-05 08:44 2484
  fmt::print("The date is {:%Y-%m-%d}.", *std::localtime(&t));
47fd5c32 Poul Sander 2024-10-05 08:44 2485
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 2486
47fd5c32 Poul Sander 2024-10-05 08:44 2487
- `std::ostream` support including formatting of user-defined types
47fd5c32 Poul Sander 2024-10-05 08:44 2488
  that provide overloaded `operator<<` has been moved to
47fd5c32 Poul Sander 2024-10-05 08:44 2489
  `fmt/ostream.h`:
47fd5c32 Poul Sander 2024-10-05 08:44 2490
47fd5c32 Poul Sander 2024-10-05 08:44 2491
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 2492
  #include "fmt/ostream.h"
47fd5c32 Poul Sander 2024-10-05 08:44 2493
47fd5c32 Poul Sander 2024-10-05 08:44 2494
  class Date {
47fd5c32 Poul Sander 2024-10-05 08:44 2495
    int year_, month_, day_;
47fd5c32 Poul Sander 2024-10-05 08:44 2496
  public:
47fd5c32 Poul Sander 2024-10-05 08:44 2497
    Date(int year, int month, int day) : year_(year), month_(month), day_(day) {}
47fd5c32 Poul Sander 2024-10-05 08:44 2498
47fd5c32 Poul Sander 2024-10-05 08:44 2499
    friend std::ostream &operator<<(std::ostream &os, const Date &d) {
47fd5c32 Poul Sander 2024-10-05 08:44 2500
      return os << d.year_ << '-' << d.month_ << '-' << d.day_;
47fd5c32 Poul Sander 2024-10-05 08:44 2501
    }
47fd5c32 Poul Sander 2024-10-05 08:44 2502
  };
47fd5c32 Poul Sander 2024-10-05 08:44 2503
47fd5c32 Poul Sander 2024-10-05 08:44 2504
  std::string s = fmt::format("The date is {}", Date(2012, 12, 9));
47fd5c32 Poul Sander 2024-10-05 08:44 2505
  // s == "The date is 2012-12-9"
47fd5c32 Poul Sander 2024-10-05 08:44 2506
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 2507
47fd5c32 Poul Sander 2024-10-05 08:44 2508
- Added support for [custom argument
47fd5c32 Poul Sander 2024-10-05 08:44 2509
  formatters](https://fmt.dev/3.0.0/api.html#argument-formatters)
47fd5c32 Poul Sander 2024-10-05 08:44 2510
  (https://github.com/fmtlib/fmt/issues/235).
47fd5c32 Poul Sander 2024-10-05 08:44 2511
47fd5c32 Poul Sander 2024-10-05 08:44 2512
- Added support for locale-specific integer formatting with the `n`
47fd5c32 Poul Sander 2024-10-05 08:44 2513
  specifier (https://github.com/fmtlib/fmt/issues/305):
47fd5c32 Poul Sander 2024-10-05 08:44 2514
47fd5c32 Poul Sander 2024-10-05 08:44 2515
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 2516
  std::setlocale(LC_ALL, "en_US.utf8");
47fd5c32 Poul Sander 2024-10-05 08:44 2517
  fmt::print("cppformat: {:n}\n", 1234567); // prints 1,234,567
47fd5c32 Poul Sander 2024-10-05 08:44 2518
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 2519
47fd5c32 Poul Sander 2024-10-05 08:44 2520
- Sign is now preserved when formatting an integer with an incorrect
47fd5c32 Poul Sander 2024-10-05 08:44 2521
  `printf` format specifier
47fd5c32 Poul Sander 2024-10-05 08:44 2522
  (https://github.com/fmtlib/fmt/issues/265):
47fd5c32 Poul Sander 2024-10-05 08:44 2523
47fd5c32 Poul Sander 2024-10-05 08:44 2524
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 2525
  fmt::printf("%lld", -42); // prints -42
47fd5c32 Poul Sander 2024-10-05 08:44 2526
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 2527
47fd5c32 Poul Sander 2024-10-05 08:44 2528
  Note that it would be an undefined behavior in `std::printf`.
47fd5c32 Poul Sander 2024-10-05 08:44 2529
47fd5c32 Poul Sander 2024-10-05 08:44 2530
- Length modifiers such as `ll` are now optional in printf formatting
47fd5c32 Poul Sander 2024-10-05 08:44 2531
  functions and the correct type is determined automatically
47fd5c32 Poul Sander 2024-10-05 08:44 2532
  (https://github.com/fmtlib/fmt/issues/255):
47fd5c32 Poul Sander 2024-10-05 08:44 2533
47fd5c32 Poul Sander 2024-10-05 08:44 2534
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 2535
  fmt::printf("%d", std::numeric_limits<long long>::max());
47fd5c32 Poul Sander 2024-10-05 08:44 2536
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 2537
47fd5c32 Poul Sander 2024-10-05 08:44 2538
  Note that it would be an undefined behavior in `std::printf`.
47fd5c32 Poul Sander 2024-10-05 08:44 2539
47fd5c32 Poul Sander 2024-10-05 08:44 2540
- Added initial support for custom formatters
47fd5c32 Poul Sander 2024-10-05 08:44 2541
  (https://github.com/fmtlib/fmt/issues/231).
47fd5c32 Poul Sander 2024-10-05 08:44 2542
47fd5c32 Poul Sander 2024-10-05 08:44 2543
- Fixed detection of user-defined literal support on Intel C++
47fd5c32 Poul Sander 2024-10-05 08:44 2544
  compiler (https://github.com/fmtlib/fmt/issues/311,
47fd5c32 Poul Sander 2024-10-05 08:44 2545
  https://github.com/fmtlib/fmt/pull/312).
47fd5c32 Poul Sander 2024-10-05 08:44 2546
  Thanks @dean0x7d and @speth.
47fd5c32 Poul Sander 2024-10-05 08:44 2547
47fd5c32 Poul Sander 2024-10-05 08:44 2548
- Reduced compile time
47fd5c32 Poul Sander 2024-10-05 08:44 2549
  (https://github.com/fmtlib/fmt/pull/243,
47fd5c32 Poul Sander 2024-10-05 08:44 2550
  https://github.com/fmtlib/fmt/pull/249,
47fd5c32 Poul Sander 2024-10-05 08:44 2551
  https://github.com/fmtlib/fmt/issues/317):
47fd5c32 Poul Sander 2024-10-05 08:44 2552
47fd5c32 Poul Sander 2024-10-05 08:44 2553
  ![](https://cloud.githubusercontent.com/assets/4831417/11614060/b9e826d2-9c36-11e5-8666-d4131bf503ef.png)
47fd5c32 Poul Sander 2024-10-05 08:44 2554
47fd5c32 Poul Sander 2024-10-05 08:44 2555
  ![](https://cloud.githubusercontent.com/assets/4831417/11614080/6ac903cc-9c37-11e5-8165-26df6efae364.png)
47fd5c32 Poul Sander 2024-10-05 08:44 2556
47fd5c32 Poul Sander 2024-10-05 08:44 2557
  Thanks @dean0x7d.
47fd5c32 Poul Sander 2024-10-05 08:44 2558
47fd5c32 Poul Sander 2024-10-05 08:44 2559
- Compile test fixes (https://github.com/fmtlib/fmt/pull/313).
47fd5c32 Poul Sander 2024-10-05 08:44 2560
  Thanks @dean0x7d.
47fd5c32 Poul Sander 2024-10-05 08:44 2561
47fd5c32 Poul Sander 2024-10-05 08:44 2562
- Documentation fixes (https://github.com/fmtlib/fmt/pull/239,
47fd5c32 Poul Sander 2024-10-05 08:44 2563
  https://github.com/fmtlib/fmt/issues/248,
47fd5c32 Poul Sander 2024-10-05 08:44 2564
  https://github.com/fmtlib/fmt/issues/252,
47fd5c32 Poul Sander 2024-10-05 08:44 2565
  https://github.com/fmtlib/fmt/pull/258,
47fd5c32 Poul Sander 2024-10-05 08:44 2566
  https://github.com/fmtlib/fmt/issues/260,
47fd5c32 Poul Sander 2024-10-05 08:44 2567
  https://github.com/fmtlib/fmt/issues/301,
47fd5c32 Poul Sander 2024-10-05 08:44 2568
  https://github.com/fmtlib/fmt/pull/309).
47fd5c32 Poul Sander 2024-10-05 08:44 2569
  Thanks @ReadmeCritic @Gachapen and @jwilk.
47fd5c32 Poul Sander 2024-10-05 08:44 2570
47fd5c32 Poul Sander 2024-10-05 08:44 2571
- Fixed compiler and sanitizer warnings
47fd5c32 Poul Sander 2024-10-05 08:44 2572
  (https://github.com/fmtlib/fmt/issues/244,
47fd5c32 Poul Sander 2024-10-05 08:44 2573
  https://github.com/fmtlib/fmt/pull/256,
47fd5c32 Poul Sander 2024-10-05 08:44 2574
  https://github.com/fmtlib/fmt/pull/259,
47fd5c32 Poul Sander 2024-10-05 08:44 2575
  https://github.com/fmtlib/fmt/issues/263,
47fd5c32 Poul Sander 2024-10-05 08:44 2576
  https://github.com/fmtlib/fmt/issues/274,
47fd5c32 Poul Sander 2024-10-05 08:44 2577
  https://github.com/fmtlib/fmt/pull/277,
47fd5c32 Poul Sander 2024-10-05 08:44 2578
  https://github.com/fmtlib/fmt/pull/286,
47fd5c32 Poul Sander 2024-10-05 08:44 2579
  https://github.com/fmtlib/fmt/issues/291,
47fd5c32 Poul Sander 2024-10-05 08:44 2580
  https://github.com/fmtlib/fmt/issues/296,
47fd5c32 Poul Sander 2024-10-05 08:44 2581
  https://github.com/fmtlib/fmt/issues/308).
47fd5c32 Poul Sander 2024-10-05 08:44 2582
  Thanks @mwinterb, @pweiskircher and @Naios.
47fd5c32 Poul Sander 2024-10-05 08:44 2583
47fd5c32 Poul Sander 2024-10-05 08:44 2584
- Improved compatibility with Windows Store apps
47fd5c32 Poul Sander 2024-10-05 08:44 2585
  (https://github.com/fmtlib/fmt/issues/280,
47fd5c32 Poul Sander 2024-10-05 08:44 2586
  https://github.com/fmtlib/fmt/pull/285) Thanks @mwinterb.
47fd5c32 Poul Sander 2024-10-05 08:44 2587
47fd5c32 Poul Sander 2024-10-05 08:44 2588
- Added tests of compatibility with older C++ standards
47fd5c32 Poul Sander 2024-10-05 08:44 2589
  (https://github.com/fmtlib/fmt/pull/273). Thanks @niosHD.
47fd5c32 Poul Sander 2024-10-05 08:44 2590
47fd5c32 Poul Sander 2024-10-05 08:44 2591
- Fixed Android build
47fd5c32 Poul Sander 2024-10-05 08:44 2592
  (https://github.com/fmtlib/fmt/pull/271). Thanks @newnon.
47fd5c32 Poul Sander 2024-10-05 08:44 2593
47fd5c32 Poul Sander 2024-10-05 08:44 2594
- Changed `ArgMap` to be backed by a vector instead of a map.
47fd5c32 Poul Sander 2024-10-05 08:44 2595
  (https://github.com/fmtlib/fmt/issues/261,
47fd5c32 Poul Sander 2024-10-05 08:44 2596
  https://github.com/fmtlib/fmt/pull/262). Thanks @mwinterb.
47fd5c32 Poul Sander 2024-10-05 08:44 2597
47fd5c32 Poul Sander 2024-10-05 08:44 2598
- Added `fprintf` overload that writes to a `std::ostream`
47fd5c32 Poul Sander 2024-10-05 08:44 2599
  (https://github.com/fmtlib/fmt/pull/251).
47fd5c32 Poul Sander 2024-10-05 08:44 2600
  Thanks @nickhutchinson.
47fd5c32 Poul Sander 2024-10-05 08:44 2601
47fd5c32 Poul Sander 2024-10-05 08:44 2602
- Export symbols when building a Windows DLL
47fd5c32 Poul Sander 2024-10-05 08:44 2603
  (https://github.com/fmtlib/fmt/pull/245).
47fd5c32 Poul Sander 2024-10-05 08:44 2604
  Thanks @macdems.
47fd5c32 Poul Sander 2024-10-05 08:44 2605
47fd5c32 Poul Sander 2024-10-05 08:44 2606
- Fixed compilation on Cygwin
47fd5c32 Poul Sander 2024-10-05 08:44 2607
  (https://github.com/fmtlib/fmt/issues/304).
47fd5c32 Poul Sander 2024-10-05 08:44 2608
47fd5c32 Poul Sander 2024-10-05 08:44 2609
- Implemented a workaround for a bug in Apple LLVM version 4.2 of
47fd5c32 Poul Sander 2024-10-05 08:44 2610
  clang (https://github.com/fmtlib/fmt/issues/276).
47fd5c32 Poul Sander 2024-10-05 08:44 2611
47fd5c32 Poul Sander 2024-10-05 08:44 2612
- Implemented a workaround for Google Test bug
47fd5c32 Poul Sander 2024-10-05 08:44 2613
  https://github.com/google/googletest/issues/705 on gcc 6
47fd5c32 Poul Sander 2024-10-05 08:44 2614
  (https://github.com/fmtlib/fmt/issues/268). Thanks @octoploid.
47fd5c32 Poul Sander 2024-10-05 08:44 2615
47fd5c32 Poul Sander 2024-10-05 08:44 2616
- Removed Biicode support because the latter has been discontinued.
47fd5c32 Poul Sander 2024-10-05 08:44 2617
47fd5c32 Poul Sander 2024-10-05 08:44 2618
# 2.1.1 - 2016-04-11
47fd5c32 Poul Sander 2024-10-05 08:44 2619
47fd5c32 Poul Sander 2024-10-05 08:44 2620
- The install location for generated CMake files is now configurable
47fd5c32 Poul Sander 2024-10-05 08:44 2621
  via the `FMT_CMAKE_DIR` CMake variable
47fd5c32 Poul Sander 2024-10-05 08:44 2622
  (https://github.com/fmtlib/fmt/pull/299). Thanks @niosHD.
47fd5c32 Poul Sander 2024-10-05 08:44 2623
- Documentation fixes
47fd5c32 Poul Sander 2024-10-05 08:44 2624
  (https://github.com/fmtlib/fmt/issues/252).
47fd5c32 Poul Sander 2024-10-05 08:44 2625
47fd5c32 Poul Sander 2024-10-05 08:44 2626
# 2.1.0 - 2016-03-21
47fd5c32 Poul Sander 2024-10-05 08:44 2627
47fd5c32 Poul Sander 2024-10-05 08:44 2628
- Project layout and build system improvements
47fd5c32 Poul Sander 2024-10-05 08:44 2629
  (https://github.com/fmtlib/fmt/pull/267):
47fd5c32 Poul Sander 2024-10-05 08:44 2630
47fd5c32 Poul Sander 2024-10-05 08:44 2631
  -   The code have been moved to the `cppformat` directory. Including
47fd5c32 Poul Sander 2024-10-05 08:44 2632
      `format.h` from the top-level directory is deprecated but works
47fd5c32 Poul Sander 2024-10-05 08:44 2633
      via a proxy header which will be removed in the next major
47fd5c32 Poul Sander 2024-10-05 08:44 2634
      version.
47fd5c32 Poul Sander 2024-10-05 08:44 2635
  -   C++ Format CMake targets now have proper interface definitions.
47fd5c32 Poul Sander 2024-10-05 08:44 2636
  -   Installed version of the library now supports the header-only
47fd5c32 Poul Sander 2024-10-05 08:44 2637
      configuration.
47fd5c32 Poul Sander 2024-10-05 08:44 2638
  -   Targets `doc`, `install`, and `test` are now disabled if C++
47fd5c32 Poul Sander 2024-10-05 08:44 2639
      Format is included as a CMake subproject. They can be enabled by
47fd5c32 Poul Sander 2024-10-05 08:44 2640
      setting `FMT_DOC`, `FMT_INSTALL`, and `FMT_TEST` in the parent
47fd5c32 Poul Sander 2024-10-05 08:44 2641
      project.
47fd5c32 Poul Sander 2024-10-05 08:44 2642
47fd5c32 Poul Sander 2024-10-05 08:44 2643
  Thanks @niosHD.
47fd5c32 Poul Sander 2024-10-05 08:44 2644
47fd5c32 Poul Sander 2024-10-05 08:44 2645
# 2.0.1 - 2016-03-13
47fd5c32 Poul Sander 2024-10-05 08:44 2646
47fd5c32 Poul Sander 2024-10-05 08:44 2647
- Improved CMake find and package support
47fd5c32 Poul Sander 2024-10-05 08:44 2648
  (https://github.com/fmtlib/fmt/issues/264). Thanks @niosHD.
47fd5c32 Poul Sander 2024-10-05 08:44 2649
- Fix compile error with Android NDK and mingw32
47fd5c32 Poul Sander 2024-10-05 08:44 2650
  (https://github.com/fmtlib/fmt/issues/241). Thanks @Gachapen.
47fd5c32 Poul Sander 2024-10-05 08:44 2651
- Documentation fixes
47fd5c32 Poul Sander 2024-10-05 08:44 2652
  (https://github.com/fmtlib/fmt/issues/248,
47fd5c32 Poul Sander 2024-10-05 08:44 2653
  https://github.com/fmtlib/fmt/issues/260).
47fd5c32 Poul Sander 2024-10-05 08:44 2654
47fd5c32 Poul Sander 2024-10-05 08:44 2655
# 2.0.0 - 2015-12-01
47fd5c32 Poul Sander 2024-10-05 08:44 2656
47fd5c32 Poul Sander 2024-10-05 08:44 2657
## General
47fd5c32 Poul Sander 2024-10-05 08:44 2658
47fd5c32 Poul Sander 2024-10-05 08:44 2659
- \[Breaking\] Named arguments
47fd5c32 Poul Sander 2024-10-05 08:44 2660
  (https://github.com/fmtlib/fmt/pull/169,
47fd5c32 Poul Sander 2024-10-05 08:44 2661
  https://github.com/fmtlib/fmt/pull/173,
47fd5c32 Poul Sander 2024-10-05 08:44 2662
  https://github.com/fmtlib/fmt/pull/174):
47fd5c32 Poul Sander 2024-10-05 08:44 2663
47fd5c32 Poul Sander 2024-10-05 08:44 2664
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 2665
  fmt::print("The answer is {answer}.", fmt::arg("answer", 42));
47fd5c32 Poul Sander 2024-10-05 08:44 2666
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 2667
47fd5c32 Poul Sander 2024-10-05 08:44 2668
  Thanks @jamboree.
47fd5c32 Poul Sander 2024-10-05 08:44 2669
47fd5c32 Poul Sander 2024-10-05 08:44 2670
- \[Experimental\] User-defined literals for format and named
47fd5c32 Poul Sander 2024-10-05 08:44 2671
  arguments (https://github.com/fmtlib/fmt/pull/204,
47fd5c32 Poul Sander 2024-10-05 08:44 2672
  https://github.com/fmtlib/fmt/pull/206,
47fd5c32 Poul Sander 2024-10-05 08:44 2673
  https://github.com/fmtlib/fmt/pull/207):
47fd5c32 Poul Sander 2024-10-05 08:44 2674
47fd5c32 Poul Sander 2024-10-05 08:44 2675
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 2676
  using namespace fmt::literals;
47fd5c32 Poul Sander 2024-10-05 08:44 2677
  fmt::print("The answer is {answer}.", "answer"_a=42);
47fd5c32 Poul Sander 2024-10-05 08:44 2678
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 2679
47fd5c32 Poul Sander 2024-10-05 08:44 2680
  Thanks @dean0x7d.
47fd5c32 Poul Sander 2024-10-05 08:44 2681
47fd5c32 Poul Sander 2024-10-05 08:44 2682
- \[Breaking\] Formatting of more than 16 arguments is now supported
47fd5c32 Poul Sander 2024-10-05 08:44 2683
  when using variadic templates
47fd5c32 Poul Sander 2024-10-05 08:44 2684
  (https://github.com/fmtlib/fmt/issues/141). Thanks @Shauren.
47fd5c32 Poul Sander 2024-10-05 08:44 2685
47fd5c32 Poul Sander 2024-10-05 08:44 2686
- Runtime width specification
47fd5c32 Poul Sander 2024-10-05 08:44 2687
  (https://github.com/fmtlib/fmt/pull/168):
47fd5c32 Poul Sander 2024-10-05 08:44 2688
47fd5c32 Poul Sander 2024-10-05 08:44 2689
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 2690
  fmt::format("{0:{1}}", 42, 5); // gives "   42"
47fd5c32 Poul Sander 2024-10-05 08:44 2691
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 2692
47fd5c32 Poul Sander 2024-10-05 08:44 2693
  Thanks @jamboree.
47fd5c32 Poul Sander 2024-10-05 08:44 2694
47fd5c32 Poul Sander 2024-10-05 08:44 2695
- \[Breaking\] Enums are now formatted with an overloaded
47fd5c32 Poul Sander 2024-10-05 08:44 2696
  `std::ostream` insertion operator (`operator<<`) if available
47fd5c32 Poul Sander 2024-10-05 08:44 2697
  (https://github.com/fmtlib/fmt/issues/232).
47fd5c32 Poul Sander 2024-10-05 08:44 2698
47fd5c32 Poul Sander 2024-10-05 08:44 2699
- \[Breaking\] Changed default `bool` format to textual, \"true\" or
47fd5c32 Poul Sander 2024-10-05 08:44 2700
  \"false\" (https://github.com/fmtlib/fmt/issues/170):
47fd5c32 Poul Sander 2024-10-05 08:44 2701
47fd5c32 Poul Sander 2024-10-05 08:44 2702
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 2703
  fmt::print("{}", true); // prints "true"
47fd5c32 Poul Sander 2024-10-05 08:44 2704
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 2705
47fd5c32 Poul Sander 2024-10-05 08:44 2706
  To print `bool` as a number use numeric format specifier such as
47fd5c32 Poul Sander 2024-10-05 08:44 2707
  `d`:
47fd5c32 Poul Sander 2024-10-05 08:44 2708
47fd5c32 Poul Sander 2024-10-05 08:44 2709
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 2710
  fmt::print("{:d}", true); // prints "1"
47fd5c32 Poul Sander 2024-10-05 08:44 2711
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 2712
47fd5c32 Poul Sander 2024-10-05 08:44 2713
- `fmt::printf` and `fmt::sprintf` now support formatting of `bool`
47fd5c32 Poul Sander 2024-10-05 08:44 2714
  with the `%s` specifier giving textual output, \"true\" or \"false\"
47fd5c32 Poul Sander 2024-10-05 08:44 2715
  (https://github.com/fmtlib/fmt/pull/223):
47fd5c32 Poul Sander 2024-10-05 08:44 2716
47fd5c32 Poul Sander 2024-10-05 08:44 2717
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 2718
  fmt::printf("%s", true); // prints "true"
47fd5c32 Poul Sander 2024-10-05 08:44 2719
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 2720
47fd5c32 Poul Sander 2024-10-05 08:44 2721
  Thanks @LarsGullik.
47fd5c32 Poul Sander 2024-10-05 08:44 2722
47fd5c32 Poul Sander 2024-10-05 08:44 2723
- \[Breaking\] `signed char` and `unsigned char` are now formatted as
47fd5c32 Poul Sander 2024-10-05 08:44 2724
  integers by default
47fd5c32 Poul Sander 2024-10-05 08:44 2725
  (https://github.com/fmtlib/fmt/pull/217).
47fd5c32 Poul Sander 2024-10-05 08:44 2726
47fd5c32 Poul Sander 2024-10-05 08:44 2727
- \[Breaking\] Pointers to C strings can now be formatted with the `p`
47fd5c32 Poul Sander 2024-10-05 08:44 2728
  specifier (https://github.com/fmtlib/fmt/pull/223):
47fd5c32 Poul Sander 2024-10-05 08:44 2729
47fd5c32 Poul Sander 2024-10-05 08:44 2730
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 2731
  fmt::print("{:p}", "test"); // prints pointer value
47fd5c32 Poul Sander 2024-10-05 08:44 2732
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 2733
47fd5c32 Poul Sander 2024-10-05 08:44 2734
  Thanks @LarsGullik.
47fd5c32 Poul Sander 2024-10-05 08:44 2735
47fd5c32 Poul Sander 2024-10-05 08:44 2736
- \[Breaking\] `fmt::printf` and `fmt::sprintf` now print null
47fd5c32 Poul Sander 2024-10-05 08:44 2737
  pointers as `(nil)` and null strings as `(null)` for consistency
47fd5c32 Poul Sander 2024-10-05 08:44 2738
  with glibc (https://github.com/fmtlib/fmt/pull/226).
47fd5c32 Poul Sander 2024-10-05 08:44 2739
  Thanks @LarsGullik.
47fd5c32 Poul Sander 2024-10-05 08:44 2740
47fd5c32 Poul Sander 2024-10-05 08:44 2741
- \[Breaking\] `fmt::(s)printf` now supports formatting of objects of
47fd5c32 Poul Sander 2024-10-05 08:44 2742
  user-defined types that provide an overloaded `std::ostream`
47fd5c32 Poul Sander 2024-10-05 08:44 2743
  insertion operator (`operator<<`)
47fd5c32 Poul Sander 2024-10-05 08:44 2744
  (https://github.com/fmtlib/fmt/issues/201):
47fd5c32 Poul Sander 2024-10-05 08:44 2745
47fd5c32 Poul Sander 2024-10-05 08:44 2746
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 2747
  fmt::printf("The date is %s", Date(2012, 12, 9));
47fd5c32 Poul Sander 2024-10-05 08:44 2748
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 2749
47fd5c32 Poul Sander 2024-10-05 08:44 2750
- \[Breaking\] The `Buffer` template is now part of the public API and
47fd5c32 Poul Sander 2024-10-05 08:44 2751
  can be used to implement custom memory buffers
47fd5c32 Poul Sander 2024-10-05 08:44 2752
  (https://github.com/fmtlib/fmt/issues/140). Thanks @polyvertex.
47fd5c32 Poul Sander 2024-10-05 08:44 2753
47fd5c32 Poul Sander 2024-10-05 08:44 2754
- \[Breaking\] Improved compatibility between `BasicStringRef` and
47fd5c32 Poul Sander 2024-10-05 08:44 2755
  [std::experimental::basic_string_view](
47fd5c32 Poul Sander 2024-10-05 08:44 2756
  http://en.cppreference.com/w/cpp/experimental/basic_string_view)
47fd5c32 Poul Sander 2024-10-05 08:44 2757
  (https://github.com/fmtlib/fmt/issues/100,
47fd5c32 Poul Sander 2024-10-05 08:44 2758
  https://github.com/fmtlib/fmt/issues/159,
47fd5c32 Poul Sander 2024-10-05 08:44 2759
  https://github.com/fmtlib/fmt/issues/183):
47fd5c32 Poul Sander 2024-10-05 08:44 2760
47fd5c32 Poul Sander 2024-10-05 08:44 2761
  -   Comparison operators now compare string content, not pointers
47fd5c32 Poul Sander 2024-10-05 08:44 2762
  -   `BasicStringRef::c_str` replaced by `BasicStringRef::data`
47fd5c32 Poul Sander 2024-10-05 08:44 2763
  -   `BasicStringRef` is no longer assumed to be null-terminated
47fd5c32 Poul Sander 2024-10-05 08:44 2764
47fd5c32 Poul Sander 2024-10-05 08:44 2765
  References to null-terminated strings are now represented by a new
47fd5c32 Poul Sander 2024-10-05 08:44 2766
  class, `BasicCStringRef`.
47fd5c32 Poul Sander 2024-10-05 08:44 2767
47fd5c32 Poul Sander 2024-10-05 08:44 2768
- Dependency on pthreads introduced by Google Test is now optional
47fd5c32 Poul Sander 2024-10-05 08:44 2769
  (https://github.com/fmtlib/fmt/issues/185).
47fd5c32 Poul Sander 2024-10-05 08:44 2770
47fd5c32 Poul Sander 2024-10-05 08:44 2771
- New CMake options `FMT_DOC`, `FMT_INSTALL` and `FMT_TEST` to control
47fd5c32 Poul Sander 2024-10-05 08:44 2772
  generation of `doc`, `install` and `test` targets respectively, on
47fd5c32 Poul Sander 2024-10-05 08:44 2773
  by default (https://github.com/fmtlib/fmt/issues/197,
47fd5c32 Poul Sander 2024-10-05 08:44 2774
  https://github.com/fmtlib/fmt/issues/198,
47fd5c32 Poul Sander 2024-10-05 08:44 2775
  https://github.com/fmtlib/fmt/issues/200). Thanks @maddinat0r.
47fd5c32 Poul Sander 2024-10-05 08:44 2776
47fd5c32 Poul Sander 2024-10-05 08:44 2777
- `noexcept` is now used when compiling with MSVC2015
47fd5c32 Poul Sander 2024-10-05 08:44 2778
  (https://github.com/fmtlib/fmt/pull/215). Thanks @dmkrepo.
47fd5c32 Poul Sander 2024-10-05 08:44 2779
47fd5c32 Poul Sander 2024-10-05 08:44 2780
- Added an option to disable use of `windows.h` when
47fd5c32 Poul Sander 2024-10-05 08:44 2781
  `FMT_USE_WINDOWS_H` is defined as 0 before including `format.h`
47fd5c32 Poul Sander 2024-10-05 08:44 2782
  (https://github.com/fmtlib/fmt/issues/171). Thanks @alfps.
47fd5c32 Poul Sander 2024-10-05 08:44 2783
47fd5c32 Poul Sander 2024-10-05 08:44 2784
- \[Breaking\] `windows.h` is now included with `NOMINMAX` unless
47fd5c32 Poul Sander 2024-10-05 08:44 2785
  `FMT_WIN_MINMAX` is defined. This is done to prevent breaking code
47fd5c32 Poul Sander 2024-10-05 08:44 2786
  using `std::min` and `std::max` and only affects the header-only
47fd5c32 Poul Sander 2024-10-05 08:44 2787
  configuration (https://github.com/fmtlib/fmt/issues/152,
47fd5c32 Poul Sander 2024-10-05 08:44 2788
  https://github.com/fmtlib/fmt/pull/153,
47fd5c32 Poul Sander 2024-10-05 08:44 2789
  https://github.com/fmtlib/fmt/pull/154). Thanks @DevO2012.
47fd5c32 Poul Sander 2024-10-05 08:44 2790
47fd5c32 Poul Sander 2024-10-05 08:44 2791
- Improved support for custom character types
47fd5c32 Poul Sander 2024-10-05 08:44 2792
  (https://github.com/fmtlib/fmt/issues/171). Thanks @alfps.
47fd5c32 Poul Sander 2024-10-05 08:44 2793
47fd5c32 Poul Sander 2024-10-05 08:44 2794
- Added an option to disable use of IOStreams when `FMT_USE_IOSTREAMS`
47fd5c32 Poul Sander 2024-10-05 08:44 2795
  is defined as 0 before including `format.h`
47fd5c32 Poul Sander 2024-10-05 08:44 2796
  (https://github.com/fmtlib/fmt/issues/205,
47fd5c32 Poul Sander 2024-10-05 08:44 2797
  https://github.com/fmtlib/fmt/pull/208). Thanks @JodiTheTigger.
47fd5c32 Poul Sander 2024-10-05 08:44 2798
47fd5c32 Poul Sander 2024-10-05 08:44 2799
- Improved detection of `isnan`, `isinf` and `signbit`.
47fd5c32 Poul Sander 2024-10-05 08:44 2800
47fd5c32 Poul Sander 2024-10-05 08:44 2801
## Optimization
47fd5c32 Poul Sander 2024-10-05 08:44 2802
47fd5c32 Poul Sander 2024-10-05 08:44 2803
- Made formatting of user-defined types more efficient with a custom
47fd5c32 Poul Sander 2024-10-05 08:44 2804
  stream buffer (https://github.com/fmtlib/fmt/issues/92,
47fd5c32 Poul Sander 2024-10-05 08:44 2805
  https://github.com/fmtlib/fmt/pull/230). Thanks @NotImplemented.
47fd5c32 Poul Sander 2024-10-05 08:44 2806
- Further improved performance of `fmt::Writer` on integer formatting
47fd5c32 Poul Sander 2024-10-05 08:44 2807
  and fixed a minor regression. Now it is \~7% faster than
47fd5c32 Poul Sander 2024-10-05 08:44 2808
  `karma::generate` on Karma\'s benchmark
47fd5c32 Poul Sander 2024-10-05 08:44 2809
  (https://github.com/fmtlib/fmt/issues/186).
47fd5c32 Poul Sander 2024-10-05 08:44 2810
- \[Breaking\] Reduced [compiled code
47fd5c32 Poul Sander 2024-10-05 08:44 2811
  size](https://github.com/fmtlib/fmt#compile-time-and-code-bloat)
47fd5c32 Poul Sander 2024-10-05 08:44 2812
  (https://github.com/fmtlib/fmt/issues/143,
47fd5c32 Poul Sander 2024-10-05 08:44 2813
  https://github.com/fmtlib/fmt/pull/149).
47fd5c32 Poul Sander 2024-10-05 08:44 2814
47fd5c32 Poul Sander 2024-10-05 08:44 2815
## Distribution
47fd5c32 Poul Sander 2024-10-05 08:44 2816
47fd5c32 Poul Sander 2024-10-05 08:44 2817
- \[Breaking\] Headers are now installed in
47fd5c32 Poul Sander 2024-10-05 08:44 2818
  `${CMAKE_INSTALL_PREFIX}/include/cppformat`
47fd5c32 Poul Sander 2024-10-05 08:44 2819
  (https://github.com/fmtlib/fmt/issues/178). Thanks @jackyf.
47fd5c32 Poul Sander 2024-10-05 08:44 2820
47fd5c32 Poul Sander 2024-10-05 08:44 2821
- \[Breaking\] Changed the library name from `format` to `cppformat`
47fd5c32 Poul Sander 2024-10-05 08:44 2822
  for consistency with the project name and to avoid potential
47fd5c32 Poul Sander 2024-10-05 08:44 2823
  conflicts (https://github.com/fmtlib/fmt/issues/178).
47fd5c32 Poul Sander 2024-10-05 08:44 2824
  Thanks @jackyf.
47fd5c32 Poul Sander 2024-10-05 08:44 2825
47fd5c32 Poul Sander 2024-10-05 08:44 2826
- C++ Format is now available in [Debian](https://www.debian.org/)
47fd5c32 Poul Sander 2024-10-05 08:44 2827
  GNU/Linux
47fd5c32 Poul Sander 2024-10-05 08:44 2828
  ([stretch](https://packages.debian.org/source/stretch/cppformat),
47fd5c32 Poul Sander 2024-10-05 08:44 2829
  [sid](https://packages.debian.org/source/sid/cppformat)) and derived
47fd5c32 Poul Sander 2024-10-05 08:44 2830
  distributions such as
47fd5c32 Poul Sander 2024-10-05 08:44 2831
  [Ubuntu](https://launchpad.net/ubuntu/+source/cppformat) 15.10 and
47fd5c32 Poul Sander 2024-10-05 08:44 2832
  later (https://github.com/fmtlib/fmt/issues/155):
47fd5c32 Poul Sander 2024-10-05 08:44 2833
47fd5c32 Poul Sander 2024-10-05 08:44 2834
      $ sudo apt-get install libcppformat1-dev
47fd5c32 Poul Sander 2024-10-05 08:44 2835
47fd5c32 Poul Sander 2024-10-05 08:44 2836
  Thanks @jackyf.
47fd5c32 Poul Sander 2024-10-05 08:44 2837
47fd5c32 Poul Sander 2024-10-05 08:44 2838
- [Packages for Fedora and
47fd5c32 Poul Sander 2024-10-05 08:44 2839
  RHEL](https://admin.fedoraproject.org/pkgdb/package/cppformat/) are
47fd5c32 Poul Sander 2024-10-05 08:44 2840
  now available. Thanks Dave Johansen.
47fd5c32 Poul Sander 2024-10-05 08:44 2841
47fd5c32 Poul Sander 2024-10-05 08:44 2842
- C++ Format can now be installed via [Homebrew](http://brew.sh/) on
47fd5c32 Poul Sander 2024-10-05 08:44 2843
  OS X (https://github.com/fmtlib/fmt/issues/157):
47fd5c32 Poul Sander 2024-10-05 08:44 2844
47fd5c32 Poul Sander 2024-10-05 08:44 2845
      $ brew install cppformat
47fd5c32 Poul Sander 2024-10-05 08:44 2846
47fd5c32 Poul Sander 2024-10-05 08:44 2847
  Thanks @ortho and Anatoliy Bulukin.
47fd5c32 Poul Sander 2024-10-05 08:44 2848
47fd5c32 Poul Sander 2024-10-05 08:44 2849
## Documentation
47fd5c32 Poul Sander 2024-10-05 08:44 2850
47fd5c32 Poul Sander 2024-10-05 08:44 2851
- Migrated from ReadTheDocs to GitHub Pages for better responsiveness
47fd5c32 Poul Sander 2024-10-05 08:44 2852
  and reliability (https://github.com/fmtlib/fmt/issues/128).
47fd5c32 Poul Sander 2024-10-05 08:44 2853
  New documentation address is <http://cppformat.github.io/>.
47fd5c32 Poul Sander 2024-10-05 08:44 2854
- Added [Building thedocumentation](
47fd5c32 Poul Sander 2024-10-05 08:44 2855
  https://fmt.dev/2.0.0/usage.html#building-the-documentation)
47fd5c32 Poul Sander 2024-10-05 08:44 2856
  section to the documentation.
47fd5c32 Poul Sander 2024-10-05 08:44 2857
- Documentation build script is now compatible with Python 3 and newer
47fd5c32 Poul Sander 2024-10-05 08:44 2858
  pip versions. (https://github.com/fmtlib/fmt/pull/189,
47fd5c32 Poul Sander 2024-10-05 08:44 2859
  https://github.com/fmtlib/fmt/issues/209).
47fd5c32 Poul Sander 2024-10-05 08:44 2860
  Thanks @JodiTheTigger and @xentec.
47fd5c32 Poul Sander 2024-10-05 08:44 2861
- Documentation fixes and improvements
47fd5c32 Poul Sander 2024-10-05 08:44 2862
  (https://github.com/fmtlib/fmt/issues/36,
47fd5c32 Poul Sander 2024-10-05 08:44 2863
  https://github.com/fmtlib/fmt/issues/75,
47fd5c32 Poul Sander 2024-10-05 08:44 2864
  https://github.com/fmtlib/fmt/issues/125,
47fd5c32 Poul Sander 2024-10-05 08:44 2865
  https://github.com/fmtlib/fmt/pull/160,
47fd5c32 Poul Sander 2024-10-05 08:44 2866
  https://github.com/fmtlib/fmt/pull/161,
47fd5c32 Poul Sander 2024-10-05 08:44 2867
  https://github.com/fmtlib/fmt/issues/162,
47fd5c32 Poul Sander 2024-10-05 08:44 2868
  https://github.com/fmtlib/fmt/issues/165,
47fd5c32 Poul Sander 2024-10-05 08:44 2869
  https://github.com/fmtlib/fmt/issues/210). 
47fd5c32 Poul Sander 2024-10-05 08:44 2870
  Thanks @syohex.
47fd5c32 Poul Sander 2024-10-05 08:44 2871
- Fixed out-of-tree documentation build
47fd5c32 Poul Sander 2024-10-05 08:44 2872
  (https://github.com/fmtlib/fmt/issues/177). Thanks @jackyf.
47fd5c32 Poul Sander 2024-10-05 08:44 2873
47fd5c32 Poul Sander 2024-10-05 08:44 2874
## Fixes
47fd5c32 Poul Sander 2024-10-05 08:44 2875
47fd5c32 Poul Sander 2024-10-05 08:44 2876
- Fixed `initializer_list` detection
47fd5c32 Poul Sander 2024-10-05 08:44 2877
  (https://github.com/fmtlib/fmt/issues/136). Thanks @Gachapen.
47fd5c32 Poul Sander 2024-10-05 08:44 2878
47fd5c32 Poul Sander 2024-10-05 08:44 2879
- \[Breaking\] Fixed formatting of enums with numeric format
47fd5c32 Poul Sander 2024-10-05 08:44 2880
  specifiers in `fmt::(s)printf`
47fd5c32 Poul Sander 2024-10-05 08:44 2881
  (https://github.com/fmtlib/fmt/issues/131,
47fd5c32 Poul Sander 2024-10-05 08:44 2882
  https://github.com/fmtlib/fmt/issues/139):
47fd5c32 Poul Sander 2024-10-05 08:44 2883
47fd5c32 Poul Sander 2024-10-05 08:44 2884
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 2885
  enum { ANSWER = 42 };
47fd5c32 Poul Sander 2024-10-05 08:44 2886
  fmt::printf("%d", ANSWER);
47fd5c32 Poul Sander 2024-10-05 08:44 2887
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 2888
47fd5c32 Poul Sander 2024-10-05 08:44 2889
  Thanks @Naios.
47fd5c32 Poul Sander 2024-10-05 08:44 2890
47fd5c32 Poul Sander 2024-10-05 08:44 2891
- Improved compatibility with old versions of MinGW
47fd5c32 Poul Sander 2024-10-05 08:44 2892
  (https://github.com/fmtlib/fmt/issues/129,
47fd5c32 Poul Sander 2024-10-05 08:44 2893
  https://github.com/fmtlib/fmt/pull/130,
47fd5c32 Poul Sander 2024-10-05 08:44 2894
  https://github.com/fmtlib/fmt/issues/132). Thanks @cstamford.
47fd5c32 Poul Sander 2024-10-05 08:44 2895
47fd5c32 Poul Sander 2024-10-05 08:44 2896
- Fixed a compile error on MSVC with disabled exceptions
47fd5c32 Poul Sander 2024-10-05 08:44 2897
  (https://github.com/fmtlib/fmt/issues/144).
47fd5c32 Poul Sander 2024-10-05 08:44 2898
47fd5c32 Poul Sander 2024-10-05 08:44 2899
- Added a workaround for broken implementation of variadic templates
47fd5c32 Poul Sander 2024-10-05 08:44 2900
  in MSVC2012 (https://github.com/fmtlib/fmt/issues/148).
47fd5c32 Poul Sander 2024-10-05 08:44 2901
47fd5c32 Poul Sander 2024-10-05 08:44 2902
- Placed the anonymous namespace within `fmt` namespace for the
47fd5c32 Poul Sander 2024-10-05 08:44 2903
  header-only configuration (https://github.com/fmtlib/fmt/issues/171).
47fd5c32 Poul Sander 2024-10-05 08:44 2904
  Thanks @alfps.
47fd5c32 Poul Sander 2024-10-05 08:44 2905
47fd5c32 Poul Sander 2024-10-05 08:44 2906
- Fixed issues reported by Coverity Scan
47fd5c32 Poul Sander 2024-10-05 08:44 2907
  (https://github.com/fmtlib/fmt/issues/187,
47fd5c32 Poul Sander 2024-10-05 08:44 2908
  https://github.com/fmtlib/fmt/issues/192).
47fd5c32 Poul Sander 2024-10-05 08:44 2909
47fd5c32 Poul Sander 2024-10-05 08:44 2910
- Implemented a workaround for a name lookup bug in MSVC2010
47fd5c32 Poul Sander 2024-10-05 08:44 2911
  (https://github.com/fmtlib/fmt/issues/188).
47fd5c32 Poul Sander 2024-10-05 08:44 2912
47fd5c32 Poul Sander 2024-10-05 08:44 2913
- Fixed compiler warnings
47fd5c32 Poul Sander 2024-10-05 08:44 2914
  (https://github.com/fmtlib/fmt/issues/95,
47fd5c32 Poul Sander 2024-10-05 08:44 2915
  https://github.com/fmtlib/fmt/issues/96,
47fd5c32 Poul Sander 2024-10-05 08:44 2916
  https://github.com/fmtlib/fmt/pull/114,
47fd5c32 Poul Sander 2024-10-05 08:44 2917
  https://github.com/fmtlib/fmt/issues/135,
47fd5c32 Poul Sander 2024-10-05 08:44 2918
  https://github.com/fmtlib/fmt/issues/142,
47fd5c32 Poul Sander 2024-10-05 08:44 2919
  https://github.com/fmtlib/fmt/issues/145,
47fd5c32 Poul Sander 2024-10-05 08:44 2920
  https://github.com/fmtlib/fmt/issues/146,
47fd5c32 Poul Sander 2024-10-05 08:44 2921
  https://github.com/fmtlib/fmt/issues/158,
47fd5c32 Poul Sander 2024-10-05 08:44 2922
  https://github.com/fmtlib/fmt/issues/163,
47fd5c32 Poul Sander 2024-10-05 08:44 2923
  https://github.com/fmtlib/fmt/issues/175,
47fd5c32 Poul Sander 2024-10-05 08:44 2924
  https://github.com/fmtlib/fmt/issues/190,
47fd5c32 Poul Sander 2024-10-05 08:44 2925
  https://github.com/fmtlib/fmt/pull/191,
47fd5c32 Poul Sander 2024-10-05 08:44 2926
  https://github.com/fmtlib/fmt/issues/194,
47fd5c32 Poul Sander 2024-10-05 08:44 2927
  https://github.com/fmtlib/fmt/pull/196,
47fd5c32 Poul Sander 2024-10-05 08:44 2928
  https://github.com/fmtlib/fmt/issues/216,
47fd5c32 Poul Sander 2024-10-05 08:44 2929
  https://github.com/fmtlib/fmt/pull/218,
47fd5c32 Poul Sander 2024-10-05 08:44 2930
  https://github.com/fmtlib/fmt/pull/220,
47fd5c32 Poul Sander 2024-10-05 08:44 2931
  https://github.com/fmtlib/fmt/pull/229,
47fd5c32 Poul Sander 2024-10-05 08:44 2932
  https://github.com/fmtlib/fmt/issues/233,
47fd5c32 Poul Sander 2024-10-05 08:44 2933
  https://github.com/fmtlib/fmt/issues/234,
47fd5c32 Poul Sander 2024-10-05 08:44 2934
  https://github.com/fmtlib/fmt/pull/236,
47fd5c32 Poul Sander 2024-10-05 08:44 2935
  https://github.com/fmtlib/fmt/issues/281,
47fd5c32 Poul Sander 2024-10-05 08:44 2936
  https://github.com/fmtlib/fmt/issues/289).
47fd5c32 Poul Sander 2024-10-05 08:44 2937
  Thanks @seanmiddleditch, @dixlorenz, @CarterLi, @Naios, @fmatthew5876,
47fd5c32 Poul Sander 2024-10-05 08:44 2938
  @LevskiWeng, @rpopescu, @gabime, @cubicool, @jkflying, @LogicalKnight,
47fd5c32 Poul Sander 2024-10-05 08:44 2939
  @inguin and @Jopie64.
47fd5c32 Poul Sander 2024-10-05 08:44 2940
47fd5c32 Poul Sander 2024-10-05 08:44 2941
- Fixed portability issues (mostly causing test failures) on ARM,
47fd5c32 Poul Sander 2024-10-05 08:44 2942
  ppc64, ppc64le, s390x and SunOS 5.11 i386
47fd5c32 Poul Sander 2024-10-05 08:44 2943
  (https://github.com/fmtlib/fmt/issues/138,
47fd5c32 Poul Sander 2024-10-05 08:44 2944
  https://github.com/fmtlib/fmt/issues/179,
47fd5c32 Poul Sander 2024-10-05 08:44 2945
  https://github.com/fmtlib/fmt/issues/180,
47fd5c32 Poul Sander 2024-10-05 08:44 2946
  https://github.com/fmtlib/fmt/issues/202,
47fd5c32 Poul Sander 2024-10-05 08:44 2947
  https://github.com/fmtlib/fmt/issues/225, [Red Hat Bugzilla
47fd5c32 Poul Sander 2024-10-05 08:44 2948
  Bug 1260297](https://bugzilla.redhat.com/show_bug.cgi?id=1260297)).
47fd5c32 Poul Sander 2024-10-05 08:44 2949
  Thanks @Naios, @jackyf and Dave Johansen.
47fd5c32 Poul Sander 2024-10-05 08:44 2950
47fd5c32 Poul Sander 2024-10-05 08:44 2951
- Fixed a name conflict with macro `free` defined in `crtdbg.h` when
47fd5c32 Poul Sander 2024-10-05 08:44 2952
  `_CRTDBG_MAP_ALLOC` is set (https://github.com/fmtlib/fmt/issues/211).
47fd5c32 Poul Sander 2024-10-05 08:44 2953
47fd5c32 Poul Sander 2024-10-05 08:44 2954
- Fixed shared library build on OS X
47fd5c32 Poul Sander 2024-10-05 08:44 2955
  (https://github.com/fmtlib/fmt/pull/212). Thanks @dean0x7d.
47fd5c32 Poul Sander 2024-10-05 08:44 2956
47fd5c32 Poul Sander 2024-10-05 08:44 2957
- Fixed an overload conflict on MSVC when `/Zc:wchar_t-` option is
47fd5c32 Poul Sander 2024-10-05 08:44 2958
  specified (https://github.com/fmtlib/fmt/pull/214).
47fd5c32 Poul Sander 2024-10-05 08:44 2959
  Thanks @slavanap.
47fd5c32 Poul Sander 2024-10-05 08:44 2960
47fd5c32 Poul Sander 2024-10-05 08:44 2961
- Improved compatibility with MSVC 2008
47fd5c32 Poul Sander 2024-10-05 08:44 2962
  (https://github.com/fmtlib/fmt/pull/236). Thanks @Jopie64.
47fd5c32 Poul Sander 2024-10-05 08:44 2963
47fd5c32 Poul Sander 2024-10-05 08:44 2964
- Improved compatibility with bcc32
47fd5c32 Poul Sander 2024-10-05 08:44 2965
  (https://github.com/fmtlib/fmt/issues/227).
47fd5c32 Poul Sander 2024-10-05 08:44 2966
47fd5c32 Poul Sander 2024-10-05 08:44 2967
- Fixed `static_assert` detection on Clang
47fd5c32 Poul Sander 2024-10-05 08:44 2968
  (https://github.com/fmtlib/fmt/pull/228). Thanks @dean0x7d.
47fd5c32 Poul Sander 2024-10-05 08:44 2969
47fd5c32 Poul Sander 2024-10-05 08:44 2970
# 1.1.0 - 2015-03-06
47fd5c32 Poul Sander 2024-10-05 08:44 2971
47fd5c32 Poul Sander 2024-10-05 08:44 2972
- Added `BasicArrayWriter`, a class template that provides operations
47fd5c32 Poul Sander 2024-10-05 08:44 2973
  for formatting and writing data into a fixed-size array
47fd5c32 Poul Sander 2024-10-05 08:44 2974
  (https://github.com/fmtlib/fmt/issues/105 and
47fd5c32 Poul Sander 2024-10-05 08:44 2975
  https://github.com/fmtlib/fmt/issues/122):
47fd5c32 Poul Sander 2024-10-05 08:44 2976
47fd5c32 Poul Sander 2024-10-05 08:44 2977
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 2978
  char buffer[100];
47fd5c32 Poul Sander 2024-10-05 08:44 2979
  fmt::ArrayWriter w(buffer);
47fd5c32 Poul Sander 2024-10-05 08:44 2980
  w.write("The answer is {}", 42);
47fd5c32 Poul Sander 2024-10-05 08:44 2981
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 2982
47fd5c32 Poul Sander 2024-10-05 08:44 2983
- Added [0 A.D.](http://play0ad.com/) and [PenUltima Online
47fd5c32 Poul Sander 2024-10-05 08:44 2984
  (POL)](http://www.polserver.com/) to the list of notable projects
47fd5c32 Poul Sander 2024-10-05 08:44 2985
  using C++ Format.
47fd5c32 Poul Sander 2024-10-05 08:44 2986
47fd5c32 Poul Sander 2024-10-05 08:44 2987
- C++ Format now uses MSVC intrinsics for better formatting performance
47fd5c32 Poul Sander 2024-10-05 08:44 2988
  (https://github.com/fmtlib/fmt/pull/115,
47fd5c32 Poul Sander 2024-10-05 08:44 2989
  https://github.com/fmtlib/fmt/pull/116,
47fd5c32 Poul Sander 2024-10-05 08:44 2990
  https://github.com/fmtlib/fmt/pull/118 and
47fd5c32 Poul Sander 2024-10-05 08:44 2991
  https://github.com/fmtlib/fmt/pull/121). Previously these
47fd5c32 Poul Sander 2024-10-05 08:44 2992
  optimizations where only used on GCC and Clang.
47fd5c32 Poul Sander 2024-10-05 08:44 2993
  Thanks @CarterLi and @objectx.
47fd5c32 Poul Sander 2024-10-05 08:44 2994
47fd5c32 Poul Sander 2024-10-05 08:44 2995
- CMake install target
47fd5c32 Poul Sander 2024-10-05 08:44 2996
  (https://github.com/fmtlib/fmt/pull/119). Thanks @TrentHouliston.
47fd5c32 Poul Sander 2024-10-05 08:44 2997
47fd5c32 Poul Sander 2024-10-05 08:44 2998
  You can now install C++ Format with `make install` command.
47fd5c32 Poul Sander 2024-10-05 08:44 2999
47fd5c32 Poul Sander 2024-10-05 08:44 3000
- Improved [Biicode](http://www.biicode.com/) support
47fd5c32 Poul Sander 2024-10-05 08:44 3001
  (https://github.com/fmtlib/fmt/pull/98 and
47fd5c32 Poul Sander 2024-10-05 08:44 3002
  https://github.com/fmtlib/fmt/pull/104).
47fd5c32 Poul Sander 2024-10-05 08:44 3003
  Thanks @MariadeAnton and @franramirez688.
47fd5c32 Poul Sander 2024-10-05 08:44 3004
47fd5c32 Poul Sander 2024-10-05 08:44 3005
- Improved support for building with [Android NDK](
47fd5c32 Poul Sander 2024-10-05 08:44 3006
  https://developer.android.com/tools/sdk/ndk/index.html)
47fd5c32 Poul Sander 2024-10-05 08:44 3007
  (https://github.com/fmtlib/fmt/pull/107). Thanks @newnon.
47fd5c32 Poul Sander 2024-10-05 08:44 3008
47fd5c32 Poul Sander 2024-10-05 08:44 3009
  The [android-ndk-example](https://github.com/fmtlib/android-ndk-example)
47fd5c32 Poul Sander 2024-10-05 08:44 3010
  repository provides and example of using C++ Format with Android NDK:
47fd5c32 Poul Sander 2024-10-05 08:44 3011
47fd5c32 Poul Sander 2024-10-05 08:44 3012
  ![](https://raw.githubusercontent.com/fmtlib/android-ndk-example/master/screenshot.png)
47fd5c32 Poul Sander 2024-10-05 08:44 3013
47fd5c32 Poul Sander 2024-10-05 08:44 3014
- Improved documentation of `SystemError` and `WindowsError`
47fd5c32 Poul Sander 2024-10-05 08:44 3015
  (https://github.com/fmtlib/fmt/issues/54).
47fd5c32 Poul Sander 2024-10-05 08:44 3016
47fd5c32 Poul Sander 2024-10-05 08:44 3017
- Various code improvements
47fd5c32 Poul Sander 2024-10-05 08:44 3018
  (https://github.com/fmtlib/fmt/pull/110,
47fd5c32 Poul Sander 2024-10-05 08:44 3019
  https://github.com/fmtlib/fmt/pull/111
47fd5c32 Poul Sander 2024-10-05 08:44 3020
  https://github.com/fmtlib/fmt/pull/112). Thanks @CarterLi.
47fd5c32 Poul Sander 2024-10-05 08:44 3021
47fd5c32 Poul Sander 2024-10-05 08:44 3022
- Improved compile-time errors when formatting wide into narrow
47fd5c32 Poul Sander 2024-10-05 08:44 3023
  strings (https://github.com/fmtlib/fmt/issues/117).
47fd5c32 Poul Sander 2024-10-05 08:44 3024
47fd5c32 Poul Sander 2024-10-05 08:44 3025
- Fixed `BasicWriter::write` without formatting arguments when C++11
47fd5c32 Poul Sander 2024-10-05 08:44 3026
  support is disabled
47fd5c32 Poul Sander 2024-10-05 08:44 3027
  (https://github.com/fmtlib/fmt/issues/109).
47fd5c32 Poul Sander 2024-10-05 08:44 3028
47fd5c32 Poul Sander 2024-10-05 08:44 3029
- Fixed header-only build on OS X with GCC 4.9
47fd5c32 Poul Sander 2024-10-05 08:44 3030
  (https://github.com/fmtlib/fmt/issues/124).
47fd5c32 Poul Sander 2024-10-05 08:44 3031
47fd5c32 Poul Sander 2024-10-05 08:44 3032
- Fixed packaging issues (https://github.com/fmtlib/fmt/issues/94).
47fd5c32 Poul Sander 2024-10-05 08:44 3033
47fd5c32 Poul Sander 2024-10-05 08:44 3034
- Added [changelog](https://github.com/fmtlib/fmt/blob/master/ChangeLog.md)
47fd5c32 Poul Sander 2024-10-05 08:44 3035
  (https://github.com/fmtlib/fmt/issues/103).
47fd5c32 Poul Sander 2024-10-05 08:44 3036
47fd5c32 Poul Sander 2024-10-05 08:44 3037
# 1.0.0 - 2015-02-05
47fd5c32 Poul Sander 2024-10-05 08:44 3038
47fd5c32 Poul Sander 2024-10-05 08:44 3039
- Add support for a header-only configuration when `FMT_HEADER_ONLY`
47fd5c32 Poul Sander 2024-10-05 08:44 3040
  is defined before including `format.h`:
47fd5c32 Poul Sander 2024-10-05 08:44 3041
47fd5c32 Poul Sander 2024-10-05 08:44 3042
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 3043
  #define FMT_HEADER_ONLY
47fd5c32 Poul Sander 2024-10-05 08:44 3044
  #include "format.h"
47fd5c32 Poul Sander 2024-10-05 08:44 3045
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 3046
47fd5c32 Poul Sander 2024-10-05 08:44 3047
- Compute string length in the constructor of `BasicStringRef` instead
47fd5c32 Poul Sander 2024-10-05 08:44 3048
  of the `size` method
47fd5c32 Poul Sander 2024-10-05 08:44 3049
  (https://github.com/fmtlib/fmt/issues/79). This eliminates
47fd5c32 Poul Sander 2024-10-05 08:44 3050
  size computation for string literals on reasonable optimizing
47fd5c32 Poul Sander 2024-10-05 08:44 3051
  compilers.
47fd5c32 Poul Sander 2024-10-05 08:44 3052
47fd5c32 Poul Sander 2024-10-05 08:44 3053
- Fix formatting of types with overloaded `operator <<` for
47fd5c32 Poul Sander 2024-10-05 08:44 3054
  `std::wostream` (https://github.com/fmtlib/fmt/issues/86):
47fd5c32 Poul Sander 2024-10-05 08:44 3055
47fd5c32 Poul Sander 2024-10-05 08:44 3056
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 3057
  fmt::format(L"The date is {0}", Date(2012, 12, 9));
47fd5c32 Poul Sander 2024-10-05 08:44 3058
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 3059
47fd5c32 Poul Sander 2024-10-05 08:44 3060
- Fix linkage of tests on Arch Linux
47fd5c32 Poul Sander 2024-10-05 08:44 3061
  (https://github.com/fmtlib/fmt/issues/89).
47fd5c32 Poul Sander 2024-10-05 08:44 3062
47fd5c32 Poul Sander 2024-10-05 08:44 3063
- Allow precision specifier for non-float arguments
47fd5c32 Poul Sander 2024-10-05 08:44 3064
  (https://github.com/fmtlib/fmt/issues/90):
47fd5c32 Poul Sander 2024-10-05 08:44 3065
47fd5c32 Poul Sander 2024-10-05 08:44 3066
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 3067
  fmt::print("{:.3}\n", "Carpet"); // prints "Car"
47fd5c32 Poul Sander 2024-10-05 08:44 3068
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 3069
47fd5c32 Poul Sander 2024-10-05 08:44 3070
- Fix build on Android NDK (https://github.com/fmtlib/fmt/issues/93).
47fd5c32 Poul Sander 2024-10-05 08:44 3071
47fd5c32 Poul Sander 2024-10-05 08:44 3072
- Improvements to documentation build procedure.
47fd5c32 Poul Sander 2024-10-05 08:44 3073
47fd5c32 Poul Sander 2024-10-05 08:44 3074
- Remove `FMT_SHARED` CMake variable in favor of standard [BUILD_SHARED_LIBS](
47fd5c32 Poul Sander 2024-10-05 08:44 3075
  http://www.cmake.org/cmake/help/v3.0/variable/BUILD_SHARED_LIBS.html).
47fd5c32 Poul Sander 2024-10-05 08:44 3076
47fd5c32 Poul Sander 2024-10-05 08:44 3077
- Fix error handling in `fmt::fprintf`.
47fd5c32 Poul Sander 2024-10-05 08:44 3078
47fd5c32 Poul Sander 2024-10-05 08:44 3079
- Fix a number of warnings.
47fd5c32 Poul Sander 2024-10-05 08:44 3080
47fd5c32 Poul Sander 2024-10-05 08:44 3081
# 0.12.0 - 2014-10-25
47fd5c32 Poul Sander 2024-10-05 08:44 3082
47fd5c32 Poul Sander 2024-10-05 08:44 3083
- \[Breaking\] Improved separation between formatting and buffer
47fd5c32 Poul Sander 2024-10-05 08:44 3084
  management. `Writer` is now a base class that cannot be instantiated
47fd5c32 Poul Sander 2024-10-05 08:44 3085
  directly. The new `MemoryWriter` class implements the default buffer
47fd5c32 Poul Sander 2024-10-05 08:44 3086
  management with small allocations done on stack. So `fmt::Writer`
47fd5c32 Poul Sander 2024-10-05 08:44 3087
  should be replaced with `fmt::MemoryWriter` in variable
47fd5c32 Poul Sander 2024-10-05 08:44 3088
  declarations.
47fd5c32 Poul Sander 2024-10-05 08:44 3089
47fd5c32 Poul Sander 2024-10-05 08:44 3090
  Old code:
47fd5c32 Poul Sander 2024-10-05 08:44 3091
47fd5c32 Poul Sander 2024-10-05 08:44 3092
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 3093
  fmt::Writer w;
47fd5c32 Poul Sander 2024-10-05 08:44 3094
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 3095
47fd5c32 Poul Sander 2024-10-05 08:44 3096
  New code:
47fd5c32 Poul Sander 2024-10-05 08:44 3097
47fd5c32 Poul Sander 2024-10-05 08:44 3098
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 3099
  fmt::MemoryWriter w;
47fd5c32 Poul Sander 2024-10-05 08:44 3100
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 3101
47fd5c32 Poul Sander 2024-10-05 08:44 3102
  If you pass `fmt::Writer` by reference, you can continue to do so:
47fd5c32 Poul Sander 2024-10-05 08:44 3103
47fd5c32 Poul Sander 2024-10-05 08:44 3104
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 3105
  void f(fmt::Writer &w);
47fd5c32 Poul Sander 2024-10-05 08:44 3106
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 3107
47fd5c32 Poul Sander 2024-10-05 08:44 3108
  This doesn\'t affect the formatting API.
47fd5c32 Poul Sander 2024-10-05 08:44 3109
47fd5c32 Poul Sander 2024-10-05 08:44 3110
- Support for custom memory allocators
47fd5c32 Poul Sander 2024-10-05 08:44 3111
  (https://github.com/fmtlib/fmt/issues/69)
47fd5c32 Poul Sander 2024-10-05 08:44 3112
47fd5c32 Poul Sander 2024-10-05 08:44 3113
- Formatting functions now accept [signed char]{.title-ref} and
47fd5c32 Poul Sander 2024-10-05 08:44 3114
  [unsigned char]{.title-ref} strings as arguments
47fd5c32 Poul Sander 2024-10-05 08:44 3115
  (https://github.com/fmtlib/fmt/issues/73):
47fd5c32 Poul Sander 2024-10-05 08:44 3116
47fd5c32 Poul Sander 2024-10-05 08:44 3117
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 3118
  auto s = format("GLSL version: {}", glGetString(GL_VERSION));
47fd5c32 Poul Sander 2024-10-05 08:44 3119
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 3120
47fd5c32 Poul Sander 2024-10-05 08:44 3121
- Reduced code bloat. According to the new [benchmark
47fd5c32 Poul Sander 2024-10-05 08:44 3122
  results](https://github.com/fmtlib/fmt#compile-time-and-code-bloat),
47fd5c32 Poul Sander 2024-10-05 08:44 3123
  cppformat is close to `printf` and by the order of magnitude better
47fd5c32 Poul Sander 2024-10-05 08:44 3124
  than Boost Format in terms of compiled code size.
47fd5c32 Poul Sander 2024-10-05 08:44 3125
47fd5c32 Poul Sander 2024-10-05 08:44 3126
- Improved appearance of the documentation on mobile by using the
47fd5c32 Poul Sander 2024-10-05 08:44 3127
  [Sphinx Bootstrap
47fd5c32 Poul Sander 2024-10-05 08:44 3128
  theme](http://ryan-roemer.github.io/sphinx-bootstrap-theme/):
47fd5c32 Poul Sander 2024-10-05 08:44 3129
47fd5c32 Poul Sander 2024-10-05 08:44 3130
  | Old | New |
47fd5c32 Poul Sander 2024-10-05 08:44 3131
  | --- | --- |
47fd5c32 Poul Sander 2024-10-05 08:44 3132
  | ![](https://cloud.githubusercontent.com/assets/576385/4792130/cd256436-5de3-11e4-9a62-c077d0c2b003.png) | ![](https://cloud.githubusercontent.com/assets/576385/4792131/cd29896c-5de3-11e4-8f59-cac952942bf0.png) |
47fd5c32 Poul Sander 2024-10-05 08:44 3133
47fd5c32 Poul Sander 2024-10-05 08:44 3134
# 0.11.0 - 2014-08-21
47fd5c32 Poul Sander 2024-10-05 08:44 3135
47fd5c32 Poul Sander 2024-10-05 08:44 3136
- Safe printf implementation with a POSIX extension for positional
47fd5c32 Poul Sander 2024-10-05 08:44 3137
  arguments:
47fd5c32 Poul Sander 2024-10-05 08:44 3138
47fd5c32 Poul Sander 2024-10-05 08:44 3139
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 3140
  fmt::printf("Elapsed time: %.2f seconds", 1.23);
47fd5c32 Poul Sander 2024-10-05 08:44 3141
  fmt::printf("%1$s, %3$d %2$s", weekday, month, day);
47fd5c32 Poul Sander 2024-10-05 08:44 3142
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 3143
47fd5c32 Poul Sander 2024-10-05 08:44 3144
- Arguments of `char` type can now be formatted as integers (Issue
47fd5c32 Poul Sander 2024-10-05 08:44 3145
  https://github.com/fmtlib/fmt/issues/55):
47fd5c32 Poul Sander 2024-10-05 08:44 3146
47fd5c32 Poul Sander 2024-10-05 08:44 3147
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 3148
  fmt::format("0x{0:02X}", 'a');
47fd5c32 Poul Sander 2024-10-05 08:44 3149
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 3150
47fd5c32 Poul Sander 2024-10-05 08:44 3151
- Deprecated parts of the API removed.
47fd5c32 Poul Sander 2024-10-05 08:44 3152
47fd5c32 Poul Sander 2024-10-05 08:44 3153
- The library is now built and tested on MinGW with Appveyor in
47fd5c32 Poul Sander 2024-10-05 08:44 3154
  addition to existing test platforms Linux/GCC, OS X/Clang,
47fd5c32 Poul Sander 2024-10-05 08:44 3155
  Windows/MSVC.
47fd5c32 Poul Sander 2024-10-05 08:44 3156
47fd5c32 Poul Sander 2024-10-05 08:44 3157
# 0.10.0 - 2014-07-01
47fd5c32 Poul Sander 2024-10-05 08:44 3158
47fd5c32 Poul Sander 2024-10-05 08:44 3159
**Improved API**
47fd5c32 Poul Sander 2024-10-05 08:44 3160
47fd5c32 Poul Sander 2024-10-05 08:44 3161
- All formatting methods are now implemented as variadic functions
47fd5c32 Poul Sander 2024-10-05 08:44 3162
  instead of using `operator<<` for feeding arbitrary arguments into a
47fd5c32 Poul Sander 2024-10-05 08:44 3163
  temporary formatter object. This works both with C++11 where
47fd5c32 Poul Sander 2024-10-05 08:44 3164
  variadic templates are used and with older standards where variadic
47fd5c32 Poul Sander 2024-10-05 08:44 3165
  functions are emulated by providing lightweight wrapper functions
47fd5c32 Poul Sander 2024-10-05 08:44 3166
  defined with the `FMT_VARIADIC` macro. You can use this macro for
47fd5c32 Poul Sander 2024-10-05 08:44 3167
  defining your own portable variadic functions:
47fd5c32 Poul Sander 2024-10-05 08:44 3168
47fd5c32 Poul Sander 2024-10-05 08:44 3169
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 3170
  void report_error(const char *format, const fmt::ArgList &args) {
47fd5c32 Poul Sander 2024-10-05 08:44 3171
    fmt::print("Error: {}");
47fd5c32 Poul Sander 2024-10-05 08:44 3172
    fmt::print(format, args);
47fd5c32 Poul Sander 2024-10-05 08:44 3173
  }
47fd5c32 Poul Sander 2024-10-05 08:44 3174
  FMT_VARIADIC(void, report_error, const char *)
47fd5c32 Poul Sander 2024-10-05 08:44 3175
47fd5c32 Poul Sander 2024-10-05 08:44 3176
  report_error("file not found: {}", path);
47fd5c32 Poul Sander 2024-10-05 08:44 3177
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 3178
47fd5c32 Poul Sander 2024-10-05 08:44 3179
  Apart from a more natural syntax, this also improves performance as
47fd5c32 Poul Sander 2024-10-05 08:44 3180
  there is no need to construct temporary formatter objects and
47fd5c32 Poul Sander 2024-10-05 08:44 3181
  control arguments\' lifetimes. Because the wrapper functions are
47fd5c32 Poul Sander 2024-10-05 08:44 3182
  very lightweight, this doesn\'t cause code bloat even in pre-C++11
47fd5c32 Poul Sander 2024-10-05 08:44 3183
  mode.
47fd5c32 Poul Sander 2024-10-05 08:44 3184
47fd5c32 Poul Sander 2024-10-05 08:44 3185
- Simplified common case of formatting an `std::string`. Now it
47fd5c32 Poul Sander 2024-10-05 08:44 3186
  requires a single function call:
47fd5c32 Poul Sander 2024-10-05 08:44 3187
47fd5c32 Poul Sander 2024-10-05 08:44 3188
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 3189
  std::string s = format("The answer is {}.", 42);
47fd5c32 Poul Sander 2024-10-05 08:44 3190
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 3191
47fd5c32 Poul Sander 2024-10-05 08:44 3192
  Previously it required 2 function calls:
47fd5c32 Poul Sander 2024-10-05 08:44 3193
47fd5c32 Poul Sander 2024-10-05 08:44 3194
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 3195
  std::string s = str(Format("The answer is {}.") << 42);
47fd5c32 Poul Sander 2024-10-05 08:44 3196
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 3197
47fd5c32 Poul Sander 2024-10-05 08:44 3198
  Instead of unsafe `c_str` function, `fmt::Writer` should be used
47fd5c32 Poul Sander 2024-10-05 08:44 3199
  directly to bypass creation of `std::string`:
47fd5c32 Poul Sander 2024-10-05 08:44 3200
47fd5c32 Poul Sander 2024-10-05 08:44 3201
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 3202
  fmt::Writer w;
47fd5c32 Poul Sander 2024-10-05 08:44 3203
  w.write("The answer is {}.", 42);
47fd5c32 Poul Sander 2024-10-05 08:44 3204
  w.c_str();  // returns a C string
47fd5c32 Poul Sander 2024-10-05 08:44 3205
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 3206
47fd5c32 Poul Sander 2024-10-05 08:44 3207
  This doesn\'t do dynamic memory allocation for small strings and is
47fd5c32 Poul Sander 2024-10-05 08:44 3208
  less error prone as the lifetime of the string is the same as for
47fd5c32 Poul Sander 2024-10-05 08:44 3209
  `std::string::c_str` which is well understood (hopefully).
47fd5c32 Poul Sander 2024-10-05 08:44 3210
47fd5c32 Poul Sander 2024-10-05 08:44 3211
- Improved consistency in naming functions that are a part of the
47fd5c32 Poul Sander 2024-10-05 08:44 3212
  public API. Now all public functions are lowercase following the
47fd5c32 Poul Sander 2024-10-05 08:44 3213
  standard library conventions. Previously it was a combination of
47fd5c32 Poul Sander 2024-10-05 08:44 3214
  lowercase and CapitalizedWords. Issue
47fd5c32 Poul Sander 2024-10-05 08:44 3215
  https://github.com/fmtlib/fmt/issues/50.
47fd5c32 Poul Sander 2024-10-05 08:44 3216
47fd5c32 Poul Sander 2024-10-05 08:44 3217
- Old functions are marked as deprecated and will be removed in the
47fd5c32 Poul Sander 2024-10-05 08:44 3218
  next release.
47fd5c32 Poul Sander 2024-10-05 08:44 3219
47fd5c32 Poul Sander 2024-10-05 08:44 3220
**Other Changes**
47fd5c32 Poul Sander 2024-10-05 08:44 3221
47fd5c32 Poul Sander 2024-10-05 08:44 3222
- Experimental support for printf format specifications (work in
47fd5c32 Poul Sander 2024-10-05 08:44 3223
  progress):
47fd5c32 Poul Sander 2024-10-05 08:44 3224
47fd5c32 Poul Sander 2024-10-05 08:44 3225
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 3226
  fmt::printf("The answer is %d.", 42);
47fd5c32 Poul Sander 2024-10-05 08:44 3227
  std::string s = fmt::sprintf("Look, a %s!", "string");
47fd5c32 Poul Sander 2024-10-05 08:44 3228
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 3229
47fd5c32 Poul Sander 2024-10-05 08:44 3230
- Support for hexadecimal floating point format specifiers `a` and
47fd5c32 Poul Sander 2024-10-05 08:44 3231
  `A`:
47fd5c32 Poul Sander 2024-10-05 08:44 3232
47fd5c32 Poul Sander 2024-10-05 08:44 3233
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 3234
  print("{:a}", -42.0); // Prints -0x1.5p+5
47fd5c32 Poul Sander 2024-10-05 08:44 3235
  print("{:A}", -42.0); // Prints -0X1.5P+5
47fd5c32 Poul Sander 2024-10-05 08:44 3236
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 3237
47fd5c32 Poul Sander 2024-10-05 08:44 3238
- CMake option `FMT_SHARED` that specifies whether to build format as
47fd5c32 Poul Sander 2024-10-05 08:44 3239
  a shared library (off by default).
47fd5c32 Poul Sander 2024-10-05 08:44 3240
47fd5c32 Poul Sander 2024-10-05 08:44 3241
# 0.9.0 - 2014-05-13
47fd5c32 Poul Sander 2024-10-05 08:44 3242
47fd5c32 Poul Sander 2024-10-05 08:44 3243
- More efficient implementation of variadic formatting functions.
47fd5c32 Poul Sander 2024-10-05 08:44 3244
47fd5c32 Poul Sander 2024-10-05 08:44 3245
- `Writer::Format` now has a variadic overload:
47fd5c32 Poul Sander 2024-10-05 08:44 3246
47fd5c32 Poul Sander 2024-10-05 08:44 3247
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 3248
  Writer out;
47fd5c32 Poul Sander 2024-10-05 08:44 3249
  out.Format("Look, I'm {}!", "variadic");
47fd5c32 Poul Sander 2024-10-05 08:44 3250
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 3251
47fd5c32 Poul Sander 2024-10-05 08:44 3252
- For efficiency and consistency with other overloads, variadic
47fd5c32 Poul Sander 2024-10-05 08:44 3253
  overload of the `Format` function now returns `Writer` instead of
47fd5c32 Poul Sander 2024-10-05 08:44 3254
  `std::string`. Use the `str` function to convert it to
47fd5c32 Poul Sander 2024-10-05 08:44 3255
  `std::string`:
47fd5c32 Poul Sander 2024-10-05 08:44 3256
47fd5c32 Poul Sander 2024-10-05 08:44 3257
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 3258
  std::string s = str(Format("Look, I'm {}!", "variadic"));
47fd5c32 Poul Sander 2024-10-05 08:44 3259
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 3260
47fd5c32 Poul Sander 2024-10-05 08:44 3261
- Replaced formatter actions with output sinks: `NoAction` -\>
47fd5c32 Poul Sander 2024-10-05 08:44 3262
  `NullSink`, `Write` -\> `FileSink`, `ColorWriter` -\>
47fd5c32 Poul Sander 2024-10-05 08:44 3263
  `ANSITerminalSink`. This improves naming consistency and shouldn\'t
47fd5c32 Poul Sander 2024-10-05 08:44 3264
  affect client code unless these classes are used directly which
47fd5c32 Poul Sander 2024-10-05 08:44 3265
  should be rarely needed.
47fd5c32 Poul Sander 2024-10-05 08:44 3266
47fd5c32 Poul Sander 2024-10-05 08:44 3267
- Added `ThrowSystemError` function that formats a message and throws
47fd5c32 Poul Sander 2024-10-05 08:44 3268
  `SystemError` containing the formatted message and system-specific
47fd5c32 Poul Sander 2024-10-05 08:44 3269
  error description. For example, the following code
47fd5c32 Poul Sander 2024-10-05 08:44 3270
47fd5c32 Poul Sander 2024-10-05 08:44 3271
  ```c++
47fd5c32 Poul Sander 2024-10-05 08:44 3272
  FILE *f = fopen(filename, "r");
47fd5c32 Poul Sander 2024-10-05 08:44 3273
  if (!f)
47fd5c32 Poul Sander 2024-10-05 08:44 3274
    ThrowSystemError(errno, "Failed to open file '{}'") << filename;
47fd5c32 Poul Sander 2024-10-05 08:44 3275
  ```
47fd5c32 Poul Sander 2024-10-05 08:44 3276
47fd5c32 Poul Sander 2024-10-05 08:44 3277
  will throw `SystemError` exception with description \"Failed to open
47fd5c32 Poul Sander 2024-10-05 08:44 3278
  file \'\<filename\>\': No such file or directory\" if file doesn\'t
47fd5c32 Poul Sander 2024-10-05 08:44 3279
  exist.
47fd5c32 Poul Sander 2024-10-05 08:44 3280
47fd5c32 Poul Sander 2024-10-05 08:44 3281
- Support for AppVeyor continuous integration platform.
47fd5c32 Poul Sander 2024-10-05 08:44 3282
47fd5c32 Poul Sander 2024-10-05 08:44 3283
- `Format` now throws `SystemError` in case of I/O errors.
47fd5c32 Poul Sander 2024-10-05 08:44 3284
47fd5c32 Poul Sander 2024-10-05 08:44 3285
- Improve test infrastructure. Print functions are now tested by
47fd5c32 Poul Sander 2024-10-05 08:44 3286
  redirecting the output to a pipe.
47fd5c32 Poul Sander 2024-10-05 08:44 3287
47fd5c32 Poul Sander 2024-10-05 08:44 3288
# 0.8.0 - 2014-04-14
47fd5c32 Poul Sander 2024-10-05 08:44 3289
47fd5c32 Poul Sander 2024-10-05 08:44 3290
- Initial release
1970-01-01 00:00 3291