🛠️🐜 Antkeeper superbuild with dependencies included https://antkeeper.com
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

113 lines
3.7 KiB

2 years ago
2 years ago
  1. # Changelog
  2. This is the changelog for `cxxopts`, a C++11 library for parsing command line
  3. options. The project adheres to semantic versioning.
  4. ## 3.0
  5. ### Changed
  6. * Only search for a C++ compiler in CMakeLists.txt.
  7. * Allow for exceptions to be disabled.
  8. * Fix duplicate default options when there is a short and long option.
  9. * Add `CXXOPTS_NO_EXCEPTIONS` to disable exceptions.
  10. * Fix char parsing for space and check for length.
  11. * Change argument type in `Options::parse` from `char**` to `const char**`.
  12. * Refactor parser to not change its arguments.
  13. * `ParseResult` doesn't depend on a reference to the parser.
  14. * Fixed several warnings and code quality issues.
  15. * Improved formatting for help descriptions.
  16. * Improve integer parsing.
  17. ### Added
  18. * A list of unmatched arguments is available in `ParseResult`.
  19. * Support single letter options with argument attached.
  20. * Use <optional> if it is present.
  21. ### Bug Fixes
  22. * Fix missing option name in exception.
  23. ## 2.2
  24. ### Changed
  25. * Allow integers to have leading zeroes.
  26. * Build the tests by default.
  27. * Don't check for container when showing positional help.
  28. ### Added
  29. * Iterator inputs to `parse_positional`.
  30. * Throw an exception if the option in `parse_positional` doesn't exist.
  31. * Parse a delimited list in a single argument for vector options.
  32. * Add an option to disable implicit value on booleans.
  33. ### Bug Fixes
  34. * Fix a warning about possible loss of data.
  35. * Fix version numbering in CMakeLists.txt
  36. * Remove unused declaration of the undefined `ParseResult::get_option`.
  37. * Throw on invalid option syntax when beginning with a `-`.
  38. * Throw in `as` when option wasn't present.
  39. * Fix catching exceptions by reference.
  40. * Fix out of bounds errors parsing integers.
  41. ## 2.1.1
  42. ### Bug Fixes
  43. * Revert the change adding `const` type for `argv`, because most users expect
  44. to pass a non-const `argv` from `main`.
  45. ## 2.1
  46. ### Changed
  47. * Options with implicit arguments now require the `--option=value` form if
  48. they are to be specified with an option. This is to remove the ambiguity
  49. when a positional argument could follow an option with an implicit value.
  50. For example, `--foo value`, where `foo` has an implicit value, will be
  51. parsed as `--foo=implicit` and a positional argument `value`.
  52. * Boolean values are no longer special, but are just an option with a default
  53. and implicit value.
  54. ### Added
  55. * Added support for `std::optional` as a storage type.
  56. * Allow the help string to be customised.
  57. * Use `const` for the type in the `argv` parameter, since the contents of the
  58. arguments is never modified.
  59. ### Bug Fixes
  60. * Building against GCC 4.9 was broken due to overly strict shadow warnings.
  61. * Fixed an ambiguous overload in the `parse_positional` function when an
  62. `initializer_list` was directly passed.
  63. * Fixed precedence in the Boolean value regex.
  64. ## 2.0
  65. ### Changed
  66. * `Options::parse` returns a ParseResult rather than storing the parse
  67. result internally.
  68. * Options with default values now get counted as appearing once if they
  69. were not specified by the user.
  70. ### Added
  71. * A new `ParseResult` object that is the immutable result of parsing. It
  72. responds to the same `count` and `operator[]` as `Options` of 1.x did.
  73. * The function `ParseResult::arguments` returns a vector of the parsed
  74. arguments to iterate through in the order they were provided.
  75. * The symbol `cxxopts::version` for the version of the library.
  76. * Booleans can be specified with various strings and explicitly set false.
  77. ## 1.x
  78. The 1.x series was the first major version of the library, with release numbers
  79. starting to follow semantic versioning, after 0.x being unstable. It never had
  80. a changelog maintained for it. Releases mostly contained bug fixes, with the
  81. occasional feature added.