|
2 | 2 |
|
3 | 3 | ## Unreleased |
4 | 4 |
|
| 5 | +## Version 2.6.0 |
| 6 | + |
| 7 | +This version adds finer grained control of when option callbacks are executed, |
| 8 | +and further refinements in the help formatting. It also fixes a number of bugs |
| 9 | +in type support and the ordering of options. The other major change is moving |
| 10 | +Extra Validators to a new file which can be disabled for slightly faster |
| 11 | +compilation if not used, and allowing additional future Validators to be easily |
| 12 | +added. |
| 13 | + |
| 14 | +### Added |
| 15 | + |
| 16 | +- Added option to align long options with a ratio via |
| 17 | + `long_option_alignment_ratio` in the formatter. This allows more control over |
| 18 | + help output formatting. [#1185][] |
| 19 | +- Added support for `std::string_view` in the `as<T>` method on options. |
| 20 | + [#1187][] |
| 21 | +- Added flags on the formatter to disable formatting for the description and |
| 22 | + footer, allowing custom formatting such as word art. [#1150][] |
| 23 | +- Added subcommand prefix matching as a modifier to `CLI::App`. Also included an |
| 24 | + example of close matching logic. [#1152][] |
| 25 | +- Added additional fuzzing mechanics, including fuzzing subcommands, and |
| 26 | + improved handling of edge cases. [#1170][] |
| 27 | +- Added new tests for array options and fixed ambiguity between tuple and |
| 28 | + container conversions. [#1136][] |
| 29 | +- Added ability to use rvalue references in `add_flag` descriptions. [#1173][] |
| 30 | +- Added CMake presets for default and tidy builds. [#1181][] |
| 31 | +- Added several validator examples and documentation [#1192][] |
| 32 | +- Added permission validators for files and directories [#1203][] |
| 33 | +- Added fine grained control for option callback priority, and in what order |
| 34 | + options including help execute in the processing sequence. [#1226][] |
| 35 | +- Added github action to link with future testing is oss-fuzz [#1225][] |
| 36 | + |
| 37 | +### Changed |
| 38 | + |
| 39 | +- Moved several of the validators to `ExtraValidators.hpp` and |
| 40 | + `ExtraValidators_inl.hpp` files, The compilation of these nonessential |
| 41 | + validators can be disabled by setting `CLI11_DISABLE_EXTRA_VALIDATORS` to |
| 42 | + `OFF`. Future additional validators will be behind a compile flag |
| 43 | + `CLI11_ENABLE_EXTRA_VALIDATORS`. All non-essential validators will be under |
| 44 | + this option with version 3.0. [#1192][] |
| 45 | +- Updated processing order: requirements are now checked before callbacks, |
| 46 | + avoiding unexpected side effects. [#1186][] |
| 47 | +- Updated minimum required CMake version to 3.14+. [#1182][] |
| 48 | +- Improved Meson build: support for building shared precompiled libraries, |
| 49 | + pkgconfig, and header installation. [#1167][] |
| 50 | +- Improved fuzzing tests with new failure cases and extended coverage. [#1164][] |
| 51 | +- Updated CI to remove deprecated images and add new ones (Windows-2022/2025, |
| 52 | + arm64, FreeBSD). [#1172][], [#1178][] |
| 53 | +- Updated license file to include the correct version number for packagers. |
| 54 | + [#1180][] |
| 55 | + |
| 56 | +### Fixed |
| 57 | + |
| 58 | +- Fixed issue with IPV4 validator where it would allow a trailing `.`. [#1192][] |
| 59 | +- Fixed edge case where a missing config file and no default caused a segfault. |
| 60 | + [#1199][] |
| 61 | +- Fixed issue with TOML multiline arrays when the first line contained only a |
| 62 | + single character. [#1196][] |
| 63 | +- Fixed default value conversion errors when locales added thousands separators. |
| 64 | + [#1160][] |
| 65 | +- Fixed multiple footer printing in help output for option groups. [#1161][] |
| 66 | +- Fixed incorrect argument order in extras error messages. [#1162][] |
| 67 | +- Fixed reversed argument order in unexpected argument error messages. [#1158][] |
| 68 | +- Fixed ambiguity with `vector<array>` options. [#1147][] |
| 69 | +- Fixed bug parsing negative floating point values without a leading zero. |
| 70 | + [#1140][] |
| 71 | +- Fixed spelling mistake in `Error.hpp`. [#1129][] |
| 72 | +- Fixed compilation issue with MSVC 2017. [#1143][] |
| 73 | +- Fixed issue with default strings of arrays in config output. [#1155][] |
| 74 | +- Fixed fuzzing issues with NaNs and certain error pathways. [#1138][] |
| 75 | +- Fixed fuzzer misinterpreting `--sub1.-` as a short option. [#1148][] |
| 76 | +- Fixed issue where parse_order was not cleared on reset. [#1218][] |
| 77 | +- modify code to make compatible with /GR- option in MSVC [#1206][] |
| 78 | +- Fixed issue where the version flag would not take precedence over option |
| 79 | + requirements [#1226][] |
| 80 | +- Fixed extra newlines being printed if a footer was in use [#1229][] |
| 81 | + |
| 82 | +[#1129]: https://github.com/CLIUtils/CLI11/pull/1129 |
| 83 | +[#1136]: https://github.com/CLIUtils/CLI11/pull/1136 |
| 84 | +[#1138]: https://github.com/CLIUtils/CLI11/pull/1138 |
| 85 | +[#1140]: https://github.com/CLIUtils/CLI11/pull/1140 |
| 86 | +[#1143]: https://github.com/CLIUtils/CLI11/pull/1143 |
| 87 | +[#1147]: https://github.com/CLIUtils/CLI11/pull/1147 |
| 88 | +[#1148]: https://github.com/CLIUtils/CLI11/pull/1148 |
| 89 | +[#1150]: https://github.com/CLIUtils/CLI11/pull/1150 |
| 90 | +[#1152]: https://github.com/CLIUtils/CLI11/pull/1152 |
| 91 | +[#1155]: https://github.com/CLIUtils/CLI11/pull/1155 |
| 92 | +[#1158]: https://github.com/CLIUtils/CLI11/pull/1158 |
| 93 | +[#1160]: https://github.com/CLIUtils/CLI11/pull/1160 |
| 94 | +[#1161]: https://github.com/CLIUtils/CLI11/pull/1161 |
| 95 | +[#1162]: https://github.com/CLIUtils/CLI11/pull/1162 |
| 96 | +[#1164]: https://github.com/CLIUtils/CLI11/pull/1164 |
| 97 | +[#1167]: https://github.com/CLIUtils/CLI11/pull/1167 |
| 98 | +[#1170]: https://github.com/CLIUtils/CLI11/pull/1170 |
| 99 | +[#1172]: https://github.com/CLIUtils/CLI11/pull/1172 |
| 100 | +[#1173]: https://github.com/CLIUtils/CLI11/pull/1173 |
| 101 | +[#1178]: https://github.com/CLIUtils/CLI11/pull/1178 |
| 102 | +[#1180]: https://github.com/CLIUtils/CLI11/pull/1180 |
| 103 | +[#1181]: https://github.com/CLIUtils/CLI11/pull/1181 |
| 104 | +[#1182]: https://github.com/CLIUtils/CLI11/pull/1182 |
| 105 | +[#1185]: https://github.com/CLIUtils/CLI11/pull/1185 |
| 106 | +[#1186]: https://github.com/CLIUtils/CLI11/pull/1186 |
| 107 | +[#1187]: https://github.com/CLIUtils/CLI11/pull/1187 |
| 108 | +[#1192]: https://github.com/CLIUtils/CLI11/pull/1192 |
| 109 | +[#1196]: https://github.com/CLIUtils/CLI11/pull/1196 |
| 110 | +[#1199]: https://github.com/CLIUtils/CLI11/pull/1199 |
| 111 | +[#1203]: https://github.com/CLIUtils/CLI11/pull/1203 |
| 112 | +[#1206]: https://github.com/CLIUtils/CLI11/pull/1206 |
| 113 | +[#1218]: https://github.com/CLIUtils/CLI11/pull/1218 |
| 114 | +[#1225]: https://github.com/CLIUtils/CLI11/pull/1225 |
| 115 | +[#1226]: https://github.com/CLIUtils/CLI11/pull/1226 |
| 116 | +[#1229]: https://github.com/CLIUtils/CLI11/pull/1229 |
| 117 | + |
5 | 118 | ## Version 2.5: Help Formatter |
6 | 119 |
|
7 | | -This version add a new formatter with improved control capabilities and output |
8 | | -aligned with standards for help output. It also add a modifier to enable use of |
9 | | -non-standard option names. Along with several bug fixes for edge cases in string |
| 120 | +This version adds a new formatter with improved control capabilities and output |
| 121 | +aligned with standards for help output. It also adds a modifier to enable use of |
| 122 | +non-standard option names, along with several bug fixes for edge cases in string |
10 | 123 | and config file parsing. |
11 | 124 |
|
12 | | -- Better help formatter [#866][], this better aligns the help generation with |
13 | | - UNIX standard and allows use in help2man. [#1093][] |
14 | | -- Add mechanism to allow option groups to be hidden and all options be |
| 125 | +- Improved help formatter [#866][], better aligns help generation with UNIX |
| 126 | + standards and allows use in help2man. [#1093][] |
| 127 | +- Added mechanism to allow option groups to be hidden and all options to be |
15 | 128 | considered part of the parent for help display [#1039][] |
16 | | -- Add a modifier to allow non-standard single flag option names such as |
| 129 | +- Added a modifier to allow non-standard single flag option names such as |
17 | 130 | `-option`. [#1078][] |
18 | | -- Add modifier for subcommands to disable fallthrough which can resolve some |
| 131 | +- Added modifier for subcommands to disable fallthrough, which can resolve some |
19 | 132 | issues with positional arguments [#1073][] |
20 | | -- Add some polish to config file output removing some unnecessary output and add |
| 133 | +- Added polish to config file output, removing unnecessary output and adding |
21 | 134 | modifier to control output of default values [#1075][] |
22 | | -- Add the ability to specify pair/tuple defaults and improved parsing [#1081][] |
| 135 | +- Added ability to specify pair/tuple defaults and improved parsing [#1081][] |
23 | 136 | - Bugfix: Take the configurability of an option name into account when |
24 | 137 | determining naming conflicts [#1049][] |
25 | | -- Bugfix: Fix an issue where an extra subcommand header was being printed in the |
26 | | - output [#1058][] |
27 | | -- Bugfix: Add additional fuzzing tests and fixes for a bug in escape string |
28 | | - processing, and resolve inconsistencies in the handing of `{}` between command |
29 | | - line parsing and config file parsing. [#1060][] |
30 | | -- Bugfix: Improve handling of some ambiguities in vector input processing for |
31 | | - config files, specifically in the case of vector of vector inputs. [#1069][] |
32 | | -- Bugfix: Fix an issue in the handling of uint8_t enums, and some issues related |
33 | | - to single element tuples [#1087][] |
34 | | -- Bugfix: Fix an issue with binary strings containing a `\x` [#1097][] |
35 | | -- Bugfix: Move the help generation priority so it triggers before config file |
| 138 | +- Bugfix: Fixed an issue where an extra subcommand header was being printed in |
| 139 | + the output [#1058][] |
| 140 | +- Bugfix: Added additional fuzzing tests and fixes for a bug in escape string |
| 141 | + processing, and resolved inconsistencies in the handling of `{}` between |
| 142 | + command line parsing and config file parsing. [#1060][] |
| 143 | +- Bugfix: Improved handling of ambiguities in vector input processing for config |
| 144 | + files, specifically in the case of vector of vector inputs. [#1069][] |
| 145 | +- Bugfix: Fixed an issue in the handling of uint8_t enums, and issues related to |
| 146 | + single element tuples [#1087][] |
| 147 | +- Bugfix: Fixed an issue with binary strings containing a `\x` [#1097][] |
| 148 | +- Bugfix: Moved the help generation priority so it triggers before config file |
36 | 149 | processing [#1106][] |
37 | 150 | - Bugfix: Fixed an issue where max/min on positionals was not being respected |
38 | 151 | and optional positionals were being ignored [#1108][] |
39 | | -- Bugfix: Fix an issue with strings which started and ended with brackets being |
40 | | - misinterpreted as vectors. The parsing now has special handling of strings |
| 152 | +- Bugfix: Fixed an issue with strings which started and ended with brackets |
| 153 | + being misinterpreted as vectors. Parsing now has special handling of strings |
41 | 154 | which start with `[[` [#1110][] |
42 | | -- Bugfix: Fix some macros for support in C++26 related to wide string parsing |
| 155 | +- Bugfix: Fixed some macros for support in C++26 related to wide string parsing |
43 | 156 | [#1113][] |
44 | | -- Bugfix: Allow trailing spaces on numeric string conversions [#1115][] |
45 | | -- Docs: Update pymod.find_installation to find python in meson.build [#1076][] |
46 | | -- Docs: Add example for transform validators [#689][] |
47 | | -- Docs: Fix several spelling mistakes [#1101][] |
48 | | -- Backend: Update copyright dates to 2025 [#1112][] |
49 | | -- Backend: Update CMAKE minimum version to 3.10 [#1084][] |
| 157 | +- Bugfix: Allowed trailing spaces on numeric string conversions [#1115][] |
| 158 | +- Docs: Updated pymod.find_installation to find Python in meson.build [#1076][] |
| 159 | +- Docs: Added example for transform validators [#689][] |
| 160 | +- Docs: Fixed several spelling mistakes [#1101][] |
| 161 | +- Backend: Updated copyright dates to 2025 [#1112][] |
| 162 | +- Backend: Updated CMAKE minimum version to 3.10 [#1084][] |
50 | 163 |
|
51 | 164 | [#1039]: https://github.com/CLIUtils/CLI11/pull/1039 |
52 | 165 | [#1049]: https://github.com/CLIUtils/CLI11/pull/1049 |
@@ -79,6 +192,11 @@ strings, digit separators, string escape sequences,and dot notation. An initial |
79 | 192 | round of a fuzzer was added to testing which has caught several bugs related to |
80 | 193 | config file processing, and a few other edge cases not previously observed. |
81 | 194 |
|
| 195 | +NOTE: The fuzzer fixes have had some previously unrecognized changes to allowed |
| 196 | +positional names. Positional names with spaces are no longer allowed. This was |
| 197 | +not explicitly allowed but not disallowed either, and now it is no longer |
| 198 | +allowed as these options may be called in config file parsing. |
| 199 | + |
82 | 200 | - Add Unicode support and bug fixes [#804][], [#923][], [#876][], [#848][], |
83 | 201 | [#832][], [#987][] |
84 | 202 | - Match TOML standard for string and numerical entries, multiline strings |
|
0 commit comments