• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Change Log
2All notable changes to this project will be documented in this file.
3
4The format is based on [Keep a Changelog](http://keepachangelog.com/)
5and this project adheres to [Semantic Versioning](http://semver.org/).
6
7## 5.0.0 - 2022-11-24
8
9### Breaking Changes
10
11- Made `ArgPredicate` `non_exhaustive`
12- *(derive)* `Vec<Vec<T>>` types are now assuming to capture occurrences
13
14### Features
15
16- *(derive)* Group values by their occurrence with `Vec<Vec<T>>`
17
18<!-- next-header -->
19## [Unreleased] - ReleaseDate
20
21## [4.1.13] - 2023-03-18
22
23### Performance
24
25- Reduce repeated alloc calls when building a `Command`
26- Reduce duplicate dependencies for faster builds
27
28## [4.1.12] - 2023-03-18
29
30### Internal
31
32- *(derive)* Update to `syn` v2
33
34### Performance
35
36- *(derive)* Faster build times by dropping `proc-macro-error` dependency
37
38## [4.1.11] - 2023-03-17
39
40### Internal
41
42- Update `bitflags`
43
44## [4.1.10] - 2023-03-17
45
46### Fixes
47
48- *(help)* On Windows, avoid underlined text artifacts
49
50## [4.1.9] - 2023-03-16
51
52### Fixes
53
54- *(assert)* Improve the assert when using the wrong action with `get_count` / `get_flag`
55
56## [4.1.8] - 2023-02-27
57
58### Fixes
59
60- *(derive)* Don't `deny` lints on the users behalf
61
62## [4.1.7] - 2023-02-27
63
64### Fixes
65
66- *(derive)* Hide some nightly clippy warnings
67
68## [4.1.6] - 2023-02-15
69
70### Fixes
71
72- *(help)* Don't show long help for `--help` just because hidden possible values include a description
73
74## [4.1.5] - 2023-02-15
75
76### Fixes
77
78- *(help)* Don't show long help for `--help` just because a hidden arg has a possible value with a description
79
80## [4.1.4] - 2023-01-24
81
82### Fixes
83
84- *(help)* Respect `disable_colored_help` when using `arg_required_else_help`
85
86### Performance
87
88- Speed up compiling `arg!` macro
89
90## [4.1.3] - 2023-01-23
91
92### Fixes
93
94- *(error)* Improve suggested flag/value/subcommand when two share a long preifx
95- *(error)* When suggesting one of several subcommands, use the plural `subcommands`, rather than `subcommand`
96
97## [4.1.2] - 2023-01-23
98
99### Fixes
100
101- In documentation, refer to `get_flag`, rather than `get_one::<bool>`
102
103## [4.1.1] - 2023-01-14
104
105### Fixes
106
107- *(error)* Small softening attempt for "unexpected argument" error
108
109## [4.1.0] - 2023-01-13
110
111### Compatibility
112
113MSRV changed to 1.64.0
114
115For apps with custom `--help` and `--version` flags:
116- Descriptions for `--help` and `--version` changed
117
118When apps have errors imitating clap's error style:
119- Error message style was changed, including
120  - Moving away from "did you mean" to tips
121  - Leading letter is lower case
122  - "For more" added some punctuation
123
124### Features
125
126- `ArgMatches::get_occurrences` support for argument values to be grouped by their occurrence
127
128### Fixes
129
130- *(derive)* Allow `upgrade_from` when arguments / subcommands are explicitly marked as required
131- *(help)* Try be more clearer and succinct with `--help` and `--version` (also helps with overflow)
132- *(error)* Try to be more clearer and succinct with error messages
133- *(error)* Officially adopt [an error style guide](https://rustc-dev-guide.rust-lang.org/diagnostics.html#suggestion-style-guide)
134
135## [4.0.32] - 2022-12-22
136
137### Fixes
138
139- *(parser)* When overriding `required(true)`, consider args that conflict with its group
140
141## [4.0.31] - 2022-12-22
142
143### Performance
144
145- Speed up parsing when a lot of different flags are present (100 unique flags)
146
147## [4.0.30] - 2022-12-21
148
149### Fixes
150
151- *(error)* Improve error for `args_conflicts_with_subcommand`
152
153## [4.0.29] - 2022-11-29
154
155## [4.0.28] - 2022-11-29
156
157### Fixes
158
159- Fix wasm support which was broken in 4.0.27
160
161## [4.0.27] - 2022-11-24
162
163### Features
164
165- Have `Arg::value_parser` accept `Vec<impl Into<PossibleValue>>`
166- Implement `Display` and `FromStr` for `ColorChoice`
167
168### Fixes
169
170- Remove soundness issue by switching from `atty` to `is-terminal`
171
172## [4.0.26] - 2022-11-16
173
174### Fixes
175
176- *(error)* Fix typos in `ContextKind::as_str`
177
178## [4.0.25] - 2022-11-15
179
180### Features
181
182- *(error)* Report available subcommands when required subcommand is missing
183
184## [4.0.24] - 2022-11-14
185
186### Fixes
187
188- Avoid panic when printing an argument that isn't built
189
190## [4.0.23] - 2022-11-11
191
192### Fixes
193
194- Don't panic on reporting invalid-long errors when followed by invalid UTF8
195- *(help)* Clarified argument to `help` subcommand
196
197## [4.0.22] - 2022-11-07
198
199### Fixes
200
201- *(help)* Don't overflow into next-line-help early due to stale (pre-v4) padding calculations
202
203## [4.0.21] - 2022-11-07
204
205### Features
206
207- *(derive)* `long_about` and `long_help` attributes, without a value, force using doc comment (before it wouldn't be set if there wasn't anything different than the short help)
208
209## [4.0.20] - 2022-11-07
210
211### Fixes
212
213- *(derive)*  Allow defaulted value parser for '()' fields
214
215## [4.0.19] - 2022-11-04
216
217### Features
218
219- `ColorChoice` now implements `ValueEnum`
220
221## [4.0.18] - 2022-10-20
222
223### Fixes
224
225- *(derive)* Allow `#[command(skip)]` to also work with enum variants with a value
226
227## [4.0.17] - 2022-10-18
228
229### Fixes
230
231- Allow using `Arg::last(true)` with `Arg::value_hint(ValueHint::CommandWithArguments)`
232
233## [4.0.16] - 2022-10-18
234
235### Fixes
236
237- `Arg::exclusive(true)` should not be exclusive with the argument's own `ArgGroup`
238
239## [4.0.15] - 2022-10-13
240
241### Fixes
242
243- *(error)* Don't suggest `--` when it doesn't help
244- *(error)* Be more consistent in quoting, punctuation, and indentation in errors
245
246## [4.0.14] - 2022-10-12
247
248### Fixes
249
250- Only put `ArgGroup` in `ArgMatches` when explicitly specified, fixing derives handling of option-flattened fields (#4375)
251
252## [4.0.13] - 2022-10-11
253
254### Features
255
256- *(derive)* Allow `()` for fields to mean "don't read" (#4371)
257
258## [4.0.12] - 2022-10-10
259
260### Features
261
262- Added `TypedValueParser::try_map` for when adapting an existing `TypedValueParser` can fail
263- *(error)* Create errors like clap with `Error::new`, `Error::with_cmd`, and `Error::insert`
264
265## [4.0.11] - 2022-10-09
266
267### Fixes
268
269- *(help)* Fix wrapping calculations with ANSI escape codes
270
271## [4.0.10] - 2022-10-05
272
273### Features
274
275- *(derive)* Support `#[arg(flatten)]` on `Option` types (#4211, #4350)
276
277## [4.0.9] - 2022-10-03
278
279### Fixes
280
281- *(derive)* Process doc comments for `#[command(subcommand)]` like in clap v3
282
283## [4.0.8] - 2022-10-01
284
285### Fixes
286
287- *(derive)* Remove a low-value assert preventing defaulting `Help` and `Version` actions
288
289## [4.0.7] - 2022-09-30
290
291### Features
292
293- *(derive)* Populate implicit ArgGroup (#3165)
294
295### Fixes
296
297- *(derive)* Support `#[group(skip)]` on `Parser` derive
298- *(derive)* Tell users about implicit arg groups when running into group name conflicts
299- *(error)* Don't report unrelated groups in conflict or requires errors
300
301## [4.0.6] - 2022-09-30
302
303### Features
304
305- *(derive)* Support `#[group(skip)]` (#4279, #4301)
306
307## [4.0.5] - 2022-09-30
308
309## [4.0.4] - 2022-09-29
310
311### Fixes
312
313- *(error)* Specialize the self-conflict error to look like clap v3
314
315## [4.0.3] - 2022-09-29
316
317### Fixes
318
319- *(error)* Quote literals consistently
320- *(error)* Stylize escape (`--`) suggestions
321- *(error)* Format help flag as a literal
322
323## [4.0.2] - 2022-09-28
324
325### Fixes
326
327- *(parser)* `SetFalse` should conflict with itself like `SetTrue` and `Set`
328- *(parser)* Allow one-off overrides
329
330## [4.0.1] - 2022-09-28
331
332### Fixes
333
334- *(derive)* Ensure `#[clap(...)]` attribute still works
335
336## [4.0.0] - 2022-09-28
337
338### Highlights
339
340**`Arg::num_args(range)`**
341
342Clap has had several ways for controlling how many values will be captured without always being clear on how they interacted, including
343- `Arg::multiple_values(true)`
344- `Arg::number_of_values(4)`
345- `Arg::min_values(2)`
346- `Arg::max_values(20)`
347- `Arg::takes_value(true)`
348
349These have now all been collapsed into `Arg::num_args` which accepts both
350single values and ranges of values.  `num_args` controls how many raw arguments
351on the command line will be captured as values per occurrence and independent
352of value delimiters.
353
354See [Issue 2688](https://github.com/clap-rs/clap/issues/2688) for more background.
355
356**Polishing Help**
357
358Clap strives to give a polished CLI experience out of the box with little
359ceremony.  With some feedback that has accumulated over time, we took this
360release as an opportunity to re-evaluate our `--help` output to make sure it is
361meeting that goal.
362
363In doing this evaluation, we wanted to keep in mind:
364- Whether other CLIs had ideas that make sense to apply
365- Providing an experience that fits within the rest of applications and works across all shells
366
367Before:
368```
369git
370A fictional versioning CLI
371
372USAGE:
373    git <SUBCOMMAND>
374
375OPTIONS:
376    -h, --help    Print help information
377
378SUBCOMMANDS:
379    add      adds things
380    clone    Clones repos
381    help     Print this message or the help of the given subcommand(s)
382    push     pushes things
383    stash
384```
385
386After:
387```
388A fictional versioning CLI
389
390Usage: git <COMMAND>
391
392Commands:
393  clone  Clones repos
394  push   pushes things
395  add    adds things
396  stash
397  help   Print this message or the help of the given subcommand(s)
398
399Options:
400  -h, --help  Print help information
401```
402- name/version header was removed because we couldn't justify the space it occupied when
403  - Usage already includes the name
404  - `--version` is available for showing the same thing (if the program has a version set)
405- Usage was dropped to one line to save space
406- Focus is put on the subcommands
407- Headings are now Title case
408- The more general term "command" is used rather than being explicit about being "subcommands"
409- The output is more dense with the expectation that it won't affect legibility but will allow more content
410- We've moved to a more neutral palette for highlighting elements (not highlighted above)
411
412In talking to users, we found some that liked clap's `man`-like experience.
413When deviating from this, we are making the assumption that those are more
414power users and that the majority of users wouldn't look as favorably on being
415consistent with `man`.
416
417See [Issue 4132](https://github.com/clap-rs/clap/issues/4132) for more background.
418
419**More Dynamicism**
420
421Clap's API has focused on `&str` for performance but this can make
422dealing with owned data difficult, like `#[arg(default_value_t)]` generating a
423String from the default value.
424
425Additionally, to avoid `ArgMatches` from borrowing (and for some features we
426decided to forgo), clap took the `&str` argument IDs and hashed them.  This
427prevented us from providing a usable API for iterating over existing arguments.
428
429Now clap has switched to a string newtype that gives us the flexibility to
430decide whether to use `&'static str`, `Cow<'static, str>` for fast dynamic behavior, or
431`Box<str>` for dynamic behavior with small binary size.
432
433As an extension of that work, you can now call `ArgMatches::ids` to iterate
434over the arguments and groups that were found when parsing.  The newtype `Id`
435was used to prevent some classes of bugs and to make it easier to understand
436when opaque Ids are used vs user-visible strings.
437
438**Clearing Out Deprecations**
439
440Instead of doing all development on clap 4.0.0, we implemented a lot of new features during clap 3's development, deprecating the old API while introducing the new API, including:
441- Replacing the implicit behavior for args when parsing them with `ArgAction`
442- Replacing various one-off forms of value validation with the `ValueParser` API
443  - Allowing derives to automatically do the right thing for `PathBuf` (allowing invalid UTF-8)
444- Replacing `AppSettings` and `ArgSettings` enums with getters/setters
445- Clarifying terms and making them more consistent
446
447### Migrating
448
449Steps:
450
4510. [Upgrade to v3](https://github.com/clap-rs/clap/blob/v3-master/CHANGELOG.md#migrating) if you haven't already
4521. Add CLI tests (including example below), `-h` and `--help` output at a minimum (recommendation: [trycmd](https://docs.rs/trycmd/) for snapshot testing)
4532. *If using Builder API*: Explicitly set the `arg.action(ArgAction::...)` on each argument (`StoreValue` for options and `IncOccurrences` for flags)
4543. Run `cargo check --features clap/deprecated` and resolve all deprecation warnings
4554. Upgrade to v4
4565. Update feature flags
457  - *If `default-features = false`*, run `cargo add clap -F help,usage,error-context`
458  -  Run `cargo add clap -F wrap_help` unless you want to hard code line wraps
4596. Resolve compiler errors
4607. Resolve behavior changes (see "subtle changes" under BREAKING CHANGES)
4618. *At your leisure:* resolve new deprecation notices
462
463Example test (derive):
464```rust
465#[derive(clap::Parser)]
466struct Cli {
467    ...
468}
469
470#[test]
471fn verify_cli() {
472    use clap::CommandFactory;
473    Cli::command().debug_assert()
474}
475```
476
477Example test (builder):
478```rust
479fn cli() -> clap::Command {
480    ...
481}
482
483#[test]
484fn verify_cli() {
485    cli().debug_assert();
486}
487```
488
489Note: the idiomatic / recommended way of specifying different types of args in the Builder API has changed:
490
491Before
492```rust
493.arg(Arg::new("flag").long("flag"))  # --flag
494.arg(Arg::new("option").long("option").takes_value(true))  # --option <option>
495```
496After:
497```rust
498.arg(Arg::new("flag").long("flag").action(ArgAction::SetTrue))  # --flag
499.arg(Arg::new("option").long("option"))  # --option <option>
500```
501In particular, `num_args` (the replacement for `takes_value`) will default appropriately
502from the `ArgAction` and generally only needs to be set explicitly for the
503other `num_args` use cases.
504
505### Breaking Changes
506
507Subtle changes (i.e. compiler won't catch):
508
509- `arg!` now sets one of (#3795):
510  - `ArgAction::SetTrue`, requiring `ArgMatches::get_flag` instead of `ArgMatches::is_present`
511  - `ArgAction::Count`, requiring `ArgMatches::get_count` instead of `ArgMatches::occurrences_of`
512  - `ArgAction::Set`, requiring `ArgMatches::get_one` instead of `ArgMatches::value_of`
513  - `ArgAction::Append`, requiring `ArgMatches::get_many` instead of `ArgMatches::values_of`
514- `ArgAction::Set`, `ArgAction::SetTrue`, and `Arg::Action::SetFalse` now
515  conflict by default to be like `ArgAction::StoreValue` and
516  `ArgAction::IncOccurrences`, requiring `cmd.args_override_self(true)` to override instead (#4261)
517- By default, an `Arg`s default action is `ArgAction::Set`, rather than `ArgAction::IncOccurrence` to reduce confusing magic through consistency (#2687, #4032, see also #3977)
518- `mut_arg` can no longer be used to customize help and version arguments, instead disable them (`Command::disable_help_flag`, `Command::disable_version_flag`) and provide your own (#4056)
519- Removed lifetimes from `Command`, `Arg`, `ArgGroup`, and `PossibleValue`, assuming `'static`.  `string` feature flag will enable support for `String`s (#1041, #2150, #4223)
520- `arg!(--flag <value>)` is now optional, instead of required.  Add `.required(true)` at the end to restore the original behavior (#4206)
521- Added default feature flags, `help`, `usage` and `error-context`, requiring adding them back in if `default-features = false` (#4236)
522- *(parser)* Always fill in `""` argument for external subcommands to make it easier to distinguish them from built-in commands (#3263)
523- *(parser)* Short flags now have higher precedence than hyphen values with `Arg::allow_hyphen_values`, to be consistent with `Command::allow_hyphen_values` (#4187)
524- *(parser)* `Arg::value_terminator` must be its own argument on the CLI rather than being in a delimited list (#4025)
525- *(help)* Line wrapping of help is now behind the existing `wrap_help` feature flag, either enable it or hard code your wraps (#4258)
526- *(help)* Make `DeriveDisplayOrder` the default and removed the setting.  To sort help, set `next_display_order(None)` (#2808)
527- *(help)* Subcommand display order respects `Command::next_display_order` instead of `DeriveDisplayOrder` and using its own initial display order value (#2808)
528- *(help)* Subcommands are now listed before arguments.  To get the old behavior, see `Command::help_template` (#4132)
529- *(help)* Help headings are now title cased, making any user-provided help headings inconsistent.  To get the old behavior, see `Command::help_template`, `Arg::help_heading`, and `Command::subcommand_help_heading` (#4132)
530- *(help)* "Command" is used as the section heading for subcommands and `COMMAND` for the value name.  To get the old behavior, see  `Command::subcommand_help_heading` and `Arg::subcommand_value_name` (#4132, #4155)
531- *(help)* Whitespace in help output is now trimmed to ensure consistency regardless of how well a template matches the users needs. (#4132, #4156)
532- *(help)* name/version/author are removed by default from help output.  To get the old behavior, see `Command::help_template`. (#4132, #4160)
533- *(help)* Indentation for second-line usage changed. (#4132, #4188)
534- *(env)* Parse `--help` and `--version` like any `ArgAction::SetTrue` flag (#3776)
535- *(derive)* Leave `Arg::id` as `verbatim` casing, requiring updating of string references to other args like in `conflicts_with` or `requires` (#3282)
536- *(derive)* Doc comments for `ValueEnum` variants will now show up in `--help` (#3312)
537- *(derive)* When deriving `Args`, and `ArgGroup` is created using the type's name, reserving it for future use (#2621, #4209)
538- *(derive)* `next_help_heading` can now leak out of a `#[clap(flatten)]`, like all other command settings (#4222)
539
540Easier to catch changes:
541
542- Looking up a group in `ArgMatches` now returns the arg `Id`s, rather than the values to reduce overhead and offer more flexibility. (#4072)
543- Changed `Arg::number_of_values` (average-across-occurrences) to `Arg::num_args` (per-occurrence) (raw CLI args, not parsed values) (#2688, #4023)
544  - `num_args(0)` no longer implies `takes_value(true).multiple_values(true)` (#4023)
545  - `num_args(1)` no longer implies `multiple_values(true)` (#4023)
546  - Does not check default or env values, only what the user explicitly passes in (#4025)
547  - No longer terminates on delimited values (#4025)
548- Replace `Arg::min_values` (across all occurrences) with `Arg::num_args(N..)` (per occurrence) to reduce confusion over different value count APIs (#4023)
549- Replace `Arg::max_values` (across all occurrences) with `Arg::num_args(1..=M)` (per occurrence) to reduce confusion over different value count APIs  (#4023)
550- Replace `Arg::multiple_values(true)` with `Arg::num_args(1..)` and `Arg::multiple_values(false)` with `Arg::num_args(0)` to reduce confusion over different value count APIs  (#4023)
551- Replace `Arg::takes_value(true)` with `Arg::num_args(1)` and `Arg::takes_value(false)` with `Arg::num_args(0)` to reduce confusion over different value count APIs
552- Remove `Arg::require_value_delimiter`, either users could use `Arg::value_delimiter` or implement a custom parser with `TypedValueParser` as it was mostly to make `multiple_values(true)` act like `multiple_values(false)` and isn't needed anymore (#4026)
553- `Arg::new("help")` and `Arg::new("version")` no longer implicitly disable the
554  built-in flags and be copied to all subcommands, instead disable
555  the built-in flags (`Command::disable_help_flag`,
556  `Command::disable_version_flag`) and mark the custom flags as `global(true)`. (#4056)
557- `Arg::short('h')` no longer implicitly disables the short flag for help,
558  instead disable
559  the built-in flags (`Command::disable_help_flag`,
560  `Command::disable_version_flag`) provide your own `Arg::new("help").long("help").action(ArgAction::Help).global(true)`. (#4056)
561- `ArgAction::SetTrue` and `ArgAction::SetFalse` now prioritize `Arg::default_missing_value` over their standard behavior (#4000)
562- Changed `Arg::requires_ifs` and `Arg::default_value*_ifs*` to taking an `ArgPredicate`, removing ambiguity with `None` when accepting owned and borrowed types (#4084)
563- Removed `PartialEq` and `Eq` from `Command` so we could change external subcommands to use a `ValueParser` (#3990)
564- Various `Arg`, `Command`, and `ArgGroup` calls were switched from accepting `&[]` to `[]` via `IntoIterator` to be more flexible (#4072)
565- `Arg::short_aliases` and other builder functions that took `&[]` need the `&` dropped (#4081)
566- `ErrorKind` and `Result` moved into the `error` module
567- `ErrorKind::EmptyValue` replaced with `ErrorKind::InvalidValue` to remove an unnecessary special case (#3676, #3968)
568- `ErrorKind::UnrecognizedSubcommand` replaced with `ErrorKind::InvalidSubcommand` to remove an unnecessary special case (#3676)
569- Changed the default type of `allow_external_subcommands` from `String` to `OsString` as that is less likely to cause bugs in user applications (#3990)
570- *(help)* `Command::render_usage` now returns a `StyledStr` (#4248)
571- *(derive)* Changed the default for arguments from `parse` to `value_parser`, removing `parse` support (#3827, #3981)
572  - `#[clap(value_parser)]` and `#[clap(action)]` are now redundant
573- *(derive)* `subcommand_required(true).arg_required_else_help(true)` is set instead of `SubcommandRequiredElseHelp` to give more meaningful errors when subcommands are missing and to reduce redundancy (#3280)
574- *(derive)* Remove `arg_enum` attribute in favor of `value_enum` to match the new name (we didn't have support in v3 to mark it deprecated) (#4127)
575- *(parser)* Assert when the CLI looksup an unknown args when external subcommand support is enabled to help catch bugs (#3703)
576- *(assert)* Sometimes `Arg::default_missing_value` didn't require `num_args(0..=N)`, now it does (#4023)
577- *(assert)* Leading dashes in `Arg::long` are no longer allowed (#3691)
578- *(assert)* Disallow more `value_names` than `num_args` (#2695)
579- *(assert)* Always enforce that version is specified when the `ArgAction::Version` is used
580- *(assert)* Add missing `#[track_caller]`s to make it easier to debug asserts
581- *(assert)* Ensure `overrides_with` IDs are valid
582- *(assert)* Ensure no self-`overrides_with` now that Actions replace it
583- *(assert)* Ensure subcommand names are not duplicated
584- *(assert)* Assert on `mut_arg` receiving an invalid arg ID or `mut_subcommand` receiving an invalid command name
585
586### Compatibility
587
588MSRV is now 1.60.0
589
590Deprecated
591- `Arg::use_value_delimiter` in favor of `Arg::value_delimiter` to avoid having multiple ways of doing the same thing
592- `Arg::requires_all` in favor of `Arg::requires_ifs` now that it takes an `ArgPredicate` to avoid having multiple ways of doing the same thing
593- `Arg::number_of_values` in favor of `Arg::num_args` to clarify semantic differences
594- `default_value_os`, `default_values_os`, `default_value_if_os`, and `default_value_ifs_os` as the non `_os` variants now accept either a `str` or an `OsStr` (#4141)
595- `Arg::env_os` in favor of `Arg::env`
596- `Command::dont_collapse_args_in_usage` is now the default (#4151)
597- `Command::trailing_var_arg` in favor of `Arg::trailing_var_arg` to make it clearer which arg it is meant to apply to (#4187)
598- `Command::allow_hyphen_values` in favor of `Arg::allow_hyphen_values` to make it clearer which arg it is meant to apply to (#4187)
599- `Command::allow_negative_numbers` in favor of `Arg::allow_negative_numbers` to make it clearer which arg it is meant to apply to (#4187)
600- *(help)* Deprecated `Command::write_help` and `Command::write_long_help` in favor of `Command::render_help` and `Command::render_long_help` (#4248)
601- *(derive)* `structopt` and `clap` attributes in favor of the more specific `command`, `arg`, and `value` to open the door for [more features](https://github.com/clap-rs/clap/issues/1807) and [clarify relationship to the builder](https://github.com/clap-rs/clap/discussions/4090) (#1807, #4180)
602- *(derive)* `#[clap(value_parser)]` and `#[clap(action)]` defaulted attributes (its the default) (#3976)
603
604Behavior Changes
605- *(help)* With `wrap_help` feature, if the terminal size cannot be determined, `LINES` and `COLUMNS` variables are used (#4186)
606
607### Features
608
609- `Arg::num_args` now accepts ranges, allowing setting both the minimum and maximum number of values per occurrence (#2688, #4023)
610- Allow non-bool `value_parser`s for `ArgAction::SetTrue` / `ArgAction::SetFalse` (#4092)
611- Add `From<&OsStr>`, `From<OsString>`, `From<&str>`, and `From<String>` to `value_parser!` (#4257)
612- Allow resetting most builder methods
613- Can now pass runtime generated data to `Command`, `Arg`, `ArgGroup`, `PossibleValue`, etc without managing lifetimes with the `string` feature flag (#2150, #4223)
614- New default `error-context`, `help` and `usage` feature flags that can be turned off for smaller binaries (#4236)
615- Added `StyledStr::ansi()` to `Display` with ANSI escape codes (#4248)
616- *(error)* `Error::apply` for changing the formatter for dropping binary size (#4111)
617- *(error)* `Error::render`for formatting the error into a `StyledStr`
618- *(help)* Show `PossibleValue::help` in long help (`--help`) (#3312)
619- *(help)* New `{tab}` variable for `Command::help_template` (#4161)
620- *(help)* `Command::render_help` and `Command::render_long_help` for formatting the error into a `StyledStr` (#3873, #4248)
621- *(help)* `Command::render_usage` now returns a `StyledStr` (#4248)
622
623### Fixes
624
625- Verify `required` is not used with conditional required settings (#3660)
626- Replaced `cmd.allow_invalid_for_utf8_external_subcommands` with `cmd.external_subcommand_value_parser` (#3733)
627- `Arg::default_missing_value` now applies per occurrence rather than if a value is missing across all occurrences (#3998)
628- `arg!(--long [value])` to accept `0..=1` per occurrence rather than across all occurrences, making it safe to use with `ArgAction::Append` (#4001)
629- Allow `OsStr`s for `Arg::{required_if_eq,required_if_eq_any,required_if_eq_all}` (#4084)
630- *(help)* With `wrap_help` feature, if the terminal size cannot be determined, `LINES` and `COLUMNS` variables are used (#4186)
631- *(help)* Use `Command::display_name` in the help title rather than `Command::bin_name`
632- *(help)* Show when a flag is `ArgAction::Count` by adding an `...` (#4003)
633- *(help)* Use a more neutral palette for coloring (#4132, #4117)
634- *(help)* Don't rely on ALL CAPS for help headers (#4132, #4123)
635- *(help)* List subcommands first, focusing the emphasis on them (#4132, #4125)
636- *(help)* Do not include global args in `cmd help help` (#4131)
637- *(help)* Use `[positional]` in list when relevant (#4144)
638- *(help)* Show all `[positional]` in usage (#4151)
639- *(help)* Polish up subcommands by referring to them as commands (#4132, #4155)
640- *(help)* Trim extra whitespace to avoid artifacts from different uses of templates (#4132, #4156)
641- *(help)* Hint to the user the difference between `-h` / `--help` when applicable (#4132, #4159)
642- *(help)* Shorten help by eliding name/version/author (#4132, #4160)
643- *(help)* When short help is long enough to activate `next_line_help`, don't add blank lines (#4132, #4190)
644- *(help)* Make help output more dense (reducing horizontal whitespace) (#4132, #4192)
645- *(help)* Separate subcommand flags with "," like option flags (#4232, #4235)
646- *(help)* Quote the suggested help flag (#4220)
647- *(version)* Use `Command::display_name` rather than `Command::bin_name` (#3966)
648- *(parser)* Always fill in `""` argument for external subcommands (#3263)
649- *(parser)* Short flags now have higher precedence than hyphen values with `Arg::allow_hyphen_values`, like `Command::allow_hyphen_values` (#4187)
650- *(parser)* Prefer `InvalidSubcommand` over `UnknownArgument` in more cases (#4219)
651- *(derive)* Detect escaped external subcommands that look like built-in subcommands (#3703)
652- *(derive)* Leave `Arg::id` as `verbatim` casing (#3282)
653- *(derive)* Default to `#[clap(value_parser, action)]` instead of `#[clap(parse)]` (#3827)
654
655## [3.2.18] - 2022-08-29
656
657### Fixes
658
659- *(help)* `Command::print_help` now respects `Command::colored_help`
660- *(derive)* Improved error messages
661
662## [3.2.17] - 2022-08-12
663
664### Fixes
665
666- *(derive)* Expose `#[clap(id = ...)]` attribute to match Arg's latest API
667
668## [3.2.16] - 2022-07-30
669
670### Fixes
671
672- Ensure required arguments appear in errors when they are also members of a group (#4004)
673
674## [3.2.15] - 2022-07-25
675
676### Features
677
678- *(derive)* New `default_values_t` and `default_values_os_t` attributes
679
680## [3.2.14] - 2022-07-21
681
682### Fixes
683
684- A `multiple_values` positional followed by another positional now works with multiple flags
685
686## [3.2.13] - 2022-07-19
687
688### Documentation
689
690- Pulled in tutorials, cookbook, and derive reference into rustdoc
691
692## [3.2.12] - 2022-07-14
693
694### Fixes
695
696- Allow an arg to declare a conflict with a group
697
698## [3.2.11] - 2022-07-13
699
700### Features
701
702- Added `Arg::get_all_short_aliaes` and `Arg::get_all_aliases`
703
704## [3.2.10] - 2022-07-12
705
706### Fixes
707
708- Loosen lifetime on `Command::mut_subcommand`
709
710## [3.2.8] - 2022-06-30
711
712### Features
713
714- Added `Command::mut_subcommand` to mirror `Command::mut_arg`
715
716## [3.2.7] - 2022-06-28
717
718### Fixes
719
720- Global arguments should override env-sourced arguments
721
722## [3.2.6] - 2022-06-21
723
724### Fixes
725
726- Don't panic when parsing `--=`
727
728## [3.2.5] - 2022-06-15
729
730### Fixes
731
732- *(derive)* Fix regression with `#[clap(default_value_os_t ...)]` introduced in v3.2.3
733
734## [3.2.4] - 2022-06-14
735
736### Fixes
737
738- *(derive)* Provide more clearer deprecation messages for `#[clap(parse)]` attribute (#3832)
739
740## [3.2.3] - 2022-06-14
741
742### Fixes
743
744- Moved deprecations to be behind the `deprecated` Cargo.toml feature (#3830)
745  - For now, it is disabled by default though we are considering enabling it by
746    default as we release the next major version to help draw attention to the
747    deprecation migration path
748
749## [3.2.2] - 2022-06-14
750
751### Fixes
752
753- *(derive)* Improve the highlighted code for deprecation warnings
754
755**gated behind `unstable-v4`**
756- *(derive)* Default to `#[clap(value_parser, action)]` instead of `#[clap(parse)]` (#3827)
757
758## [3.2.1] - 2022-06-13
759
760## [3.2.0] - 2022-06-13
761
762### Compatibility
763
764MSRV is now 1.56.0 (#3732)
765
766Behavior
767- Defaults no longer satisfy `required` and its variants (#3793)
768- When misusing `ArgMatches::value_of` and friends, debug asserts were turned into panics
769
770Moving (old location deprecated)
771- `clap::{PossibleValue, ValueHint}` to `clap::builder::{PossibleValue, ValueHint}`
772- `clap::{Indices, OsValues, ValueSource, Values}` to `clap::parser::{Indices, OsValues, ValueSource, Values}`
773- `clap::ArgEnum` to `clap::ValueEnum` (#3799)
774
775Replaced
776- `Arg::allow_invalid_utf8` with `Arg::value_parser(value_parser!(PathBuf))` (#3753)
777- `Arg::validator` / `Arg::validator_os` with `Arg::value_parser` (#3753)
778- `Arg::validator_regex` with users providing their own `builder::TypedValueParser` (#3756)
779- `Arg::forbid_empty_values` with `builder::NonEmptyStringValueParser` / `builder::PathBufValueParser` (#3753)
780- `Arg::possible_values` with `Arg::value_parser([...])`, `builder::PossibleValuesParser`, or `builder::EnumValueParser` (#3753)
781- `Arg::max_occurrences` with `arg.action(ArgAction::Count).value_parser(value_parser!(u8).range(..N))` for flags (#3797)
782- `Arg::multiple_occurrences` with `ArgAction::Append` or `ArgAction::Count` though positionals will need `Arg::multiple_values` (#3772, #3797)
783- `Command::args_override_self` with `ArgAction::Set` (#2627, #3797)
784- `AppSettings::NoAutoVersion` with `ArgAction` or `Command::disable_version_flag` (#3800)
785- `AppSettings::NoHelpVersion` with `ArgAction` or `Command::disable_help_flag` / `Command::disable_help_subcommand` (#3800)
786- `ArgMatches::{value_of, value_of_os, value_of_os_lossy, value_of_t}` with `ArgMatches::{get_one,remove_one}` (#3753)
787- `ArgMatches::{values_of, values_of_os, values_of_os_lossy, values_of_t}` with `ArgMatches::{get_many,remove_many}` (#3753)
788- `ArgMatches::is_valid_arg` with `ArgMatches::{try_get_one,try_get_many}` (#3753)
789- `ArgMatches::occurrences_of` with `ArgMatches::value_source` or `ArgAction::Count` (#3797)
790- `ArgMatches::is_present` with `ArgMatches::contains_id` or `ArgAction::SetTrue` (#3797)
791- `ArgAction::StoreValue` with `ArgAction::Set` or `ArgAction::Append` (#3797)
792- `ArgAction::IncOccurrences` with `ArgAction::SetTrue` or `ArgAction::Count` (#3797)
793- *(derive)* `#[clap(parse(...))]` replaced with: (#3589, #3794)
794  - For default parsers (no `parse` attribute), deprecation warnings can be
795    silenced by opting into the new behavior by adding either `#[clap(action)]`
796    or `#[clap(value_parser)]` (ie requesting the default behavior for these
797    attributes).  Alternatively, the `unstable-v4` feature changes the default
798    away from `parse` to `action`/`value_parser`.
799  - For `#[clap(parse(from_flag))]` replaced with `#[clap(action = ArgAction::SetTrue)]` (#3794)
800  - For `#[clap(parse(from_occurrences))]` replaced with `#[clap(action = ArgAction::Count)]` though the field's type must be `u8` (#3794)
801  - For `#[clap(parse(from_os_str)]` for `PathBuf`, replace it with
802    `#[clap(value_parser)]` (as mentioned earlier this will call
803    `value_parser!(PathBuf)` which will auto-select the right `ValueParser`
804    automatically).
805  - For `#[clap(parse(try_from_str = ...)]`, replace it with `#[clap(value_parser = ...)]`
806  - For most other cases, a type implementing `TypedValueParser` will be needed and specify it with `#[clap(value_parser = ...)]`
807
808### Features
809
810- Parsed, typed arguments via `Arg::value_parser` / `ArgMatches::{get_one,get_many}` (#2683, #3732)
811  - Several built-in `TypedValueParser`s available with an API open for expansion
812  - `value_parser!(T)` macro for selecting a parser for a given type (#3732) and open to expansion via the `ValueParserFactory` trait (#3755)
813  - `[&str]` is implicitly a value parser for possible values
814  - All `ArgMatches` getters do not assume required arguments (#2505)
815  - Add `ArgMatches::remove_*` variants to transfer ownership
816  - Add `ArgMatches::try_*` variants to avoid panics for developer errors (#3621)
817  - Add a `get_raw` to access the underlying `OsStr`s
818  - `PathBuf` value parsers imply `ValueHint::AnyPath` for completions (#3732)
819- Explicit control over parsing via `Arg::action` (#3774)
820  - `ArgAction::StoreValue`: existing `takes_value(true)` behavior
821  - `ArgAction::IncOccurrences`: existing `takes_value(false)` behavior
822  - `ArgAction::Help`: existing `--help` behavior
823  - `ArgAction::Version`: existing `--version` behavior
824  - `ArgAction::Set`: Overwrite existing values (like `Arg::multiple_occurrences` mixed with `Command::args_override_self`) (#3777)
825  - `ArgAction::Append`: like `Arg::multiple_occurrences` (#3777)
826  - `ArgAction::SetTrue`: Treat `--flag` as `--flag=true` (#3775)
827    - Implies `Arg::default_value("false")` (#3786)
828    - Parses `Arg::env` via `Arg::value_parser`
829  - `ArgAction::SetFalse`: Treat `--flag` as `--flag=false` (#3775)
830    - Implies `Arg::default_value("true")` (#3786)
831    - Parses `Arg::env` via `Arg::value_parser`
832  - `ArgAction::Count`: Treat `--flag --flag --flag` as `--flag=1 --flag=2 --flag=3` (#3775)
833    - Implies `Arg::default_value("0")` (#3786)
834    - Parses `Arg::env` via `Arg::value_parser`
835- *(derive)* Opt-in to new `Arg::value_parser` / `Arg::action` with either `#[clap(value_parser)]` (#3589, #3742) / `#[clap(action)]` attributes (#3794)
836  - Default `ValueParser` is determined by `value_parser!` (#3199, #3496)
837  - Default `ArgAction` is determine by a hard-coded lookup on the type (#3794)
838- `Command::multicall` is now stable for busybox-like programs and REPLs (#2861, #3684)
839- `ArgMatches::{try_,}contains_id` for checking if there are values for an argument that mirrors the new `get_{one,many}` API
840
841### Fixes
842
843- Don't correct argument id in `default_value_ifs_os`(#3815)
844
845*parser*
846- Set `ArgMatches::value_source` and `ArgMatches::occurrences_of` for external subcommands (#3732)
847- Use value delimiter for `Arg::default_missing_values` (#3761, #3765)
848- Split`Arg::default_value` / `Arg::env` on value delimiters independent of whether `--` was used (#3765)
849- Allow applying defaults to flags (#3294, 3775)
850- Defaults no longer satisfy `required` and its variants (#3793)
851
852## [3.1.18] - 2022-05-10
853
854### Fixes
855
856- Fix deprecated `arg_enum!` for users migrating to clap3 (#3717)
857- Verify all `required_unless_present_all` arguments exist
858- Verify group members exist before processing group members (#3711)
859- *(help)* Use `...` when not enough `value_names` are supplied
860
861**gated behind `unstable-v4`**
862- Verify `required` is not used with conditional required settings (#3660)
863- Disallow more `value_names` than `number_of_values` (#2695)
864- *(parser)* Assert on unknown args when using external subcommands (#3703)
865- *(parser)* Always fill in `""` argument for external subcommands (#3263)
866- *(derive)* Detect escaped external subcommands that look like built-in subcommands (#3703)
867- *(derive)* Leave `Arg::id` as `verbatim` casing (#3282)
868
869## [3.1.17] - 2022-05-06
870
871### Fixes
872
873- Allow value names for `arg!` macro to have dashes when quoted, like longs
874
875## [3.1.16] - 2022-05-06
876
877### Fixes
878
879- *(parser)* `Arg::exclusive` overrides `Arg::required`, like other conflicts
880- *(error)* Don't duplicate arguments in usage
881- *(error)* Don't show hidden arguments in conflict error usage
882- *(help)* New `help_template` variable `{name}` to fix problems with `{bin}`
883- *(help)* Don't wrap URLs
884
885**gated behind `unstable-v4`**
886- Leading dashes in `Arg::long` are no longer allowed
887- *(help)* Use `Command::display_name` in the help title rather than `Command::bin_name`
888
889## [3.1.15] - 2022-05-02
890
891### Fixes
892
893- *(error)* Render actual usage for unrecognized subcommands
894- *(multicall)* Improve bad command error
895- *(multicall)* Always require a multicall command
896- *(multicall)* Disallow arguments on multicall parent command
897- *(multicall)* More consistent with rest of clap errors
898
899
900## [3.1.14] - 2022-05-01
901
902### Fixes
903
904- Panic when calling `Command::build` with a required positional argument nested several layers in subcommands
905
906## [3.1.13] - 2022-04-30
907
908### Fixes
909
910- Help subcommand and `Command::write_help` now report required arguments in usage in more circumstances
911- Unknown subcommand for help subcommand flag now reports an error with more context
912- More details reported when using `debug` feature
913- Allow disabling `color` feature with `debug` feature enabled
914
915## [3.1.12] - 2022-04-22
916
917### Fixes
918
919- Regression in 3.1.11 where the (output) streams were crossed
920
921## [3.1.11] - 2022-04-22
922
923### Fixes
924
925- Implied conflicts override `Arg::required`, making the behavior consistent with how we calculate conflicts for error reporting
926- Members of a mutually exclusive `ArgGroup`  override `Arg::required`, making the behavior consistent with how we calculate conflicts for error reporting
927- `Arg::overrides_with` always override `Arg::required`, not just when the parser processes an override
928
929## [3.1.10] - 2022-04-19
930
931### Features
932
933- Expose `Command::build` for custom help generation or other command introspection needs
934
935## [3.1.9] - 2022-04-15
936
937### Fixes
938
939- Pin the `clap_derive` version so a compatible version is always used with `clap`
940
941## [3.1.8] - 2022-04-01
942
943### Fixes
944
945- Add `Debug` impls to more types
946
947## [3.1.7] - 2022-03-31
948
949### Fixes
950
951- *(derive)* Abort, rather than ignore, when deriving `ArgEnum` with non-unit unskipped variants
952
953## [3.1.6] - 2022-03-07
954
955### Fixes
956
957- Don't panic when validating delimited defaults (#3541)
958- Make it clearer that `cargo` feature is needed
959- Documentation improvements
960
961## [3.1.5] - 2022-03-02
962
963### Fixes
964
965- Dependency upgrade
966
967## [3.1.4] - 2022-03-02
968
969### Features
970
971- *(help)* Show `PossibleValue::help` in long help (`--help`)  **(gated behind `unstable-v4`)** (#3312)
972
973## [3.1.3] - 2022-02-28
974
975### Fixes
976
977- Don't panic when validating delimited defaults (#3514)
978
979## [3.1.2] - 2022-02-23
980
981### Fixes
982
983- *(derive)* Allow other attribute with a subcommand that has subcommands
984
985### Documentation
986
987- *(examples)* List example topics
988- *(derive)* Clarify syntax and relation to builder API
989
990## [3.1.1] - 2022-02-21
991
992### Fixes
993
994- Track caller for `ArgMatches` assertions so the user more easily sees where they need to fix the call
995
996## [3.1.0] - 2022-02-16
997
998### Compatibility
999
1000Changes in behavior of note that are not guaranteed to be compatible across releases:
1001
1002- *(help)* `help` subcommand shows long help like `--help`, rather than short help (`-h`), deprecated `clap::AppSettings::UseLongFormatForHelpSubcommand` (#3440)
1003- *(help)* Pacman-style subcommands are now ordered the same as usage errors (#3470)
1004- *(help)* Pacman-style subcommands use standard alternate syntax in usage (#3470)
1005
1006### Deprecations
1007
1008- `clap::Command` is now preferred over `clap::App` (#3089 in #3472)
1009  - `clap::command!` is now preferred over `clap::app_from_crate` (#3089 in #3474)
1010  - `clap::CommandFactory::command` is now preferred over `clap::IntoApp::into_app` (#3089 in #3473)
1011- *(help)* `help` subcommand shows long help like `--help`, rather than short help (`-h`), deprecated `clap::AppSettings::UseLongFormatForHelpSubcommand` (#3440)
1012- *(error)* Deprecate `clap::AppSettings::WaitOnError`, leaving it to the user to implement
1013- *(validation)* `clap::Command::subcommand_required(true).arg_required_else_help(true)` is now preferred over `clap::AppSettings::SubcommandRequiredElseHelp` (#3280)
1014- *(builder)* `clap::AppSettings` are nearly all deprecated and replaced with builder methods and getters (#2717)
1015- *(builder)* `clap::ArgSettings` is deprecated and replaced with builder methods and getters (#2717)
1016- *(builder)* `clap::Arg::id` and `clap::ArgGroup::id` are now preferred over `clap::Arg::name` and `clap::ArgGroup::name` (#3335)
1017- *(help)* `clap::Command::next_help_heading` is now preferred over `clap::Command::help_heading` (#1807, #1553)
1018- *(error)* `clap::error::ErrorKind` is now preferred over `clap::ErrorKind` (#3395)
1019- *(error)* `clap::Error::kind()` is now preferred over `clap::Error::kind`
1020- *(error)* `clap::Error::context()` is now preferred over `clap::Error::info` (#2628)
1021
1022Note: All items deprecated in 3.0.0 are now hidden in the documentation. (#3458)
1023
1024### Features
1025
1026- *(matches)* Add `clap::ArgMatches::value_source` to determine what insert the value (#1345)
1027- *(help)* Override derived display order with `clap::Command::next_display_order` (#1807)
1028- *(error)* Show possible values when an argument doesn't have a value (#3320)
1029- *(error)* New `clap::Error::context` API to open the door for fully-custom error messages (#2628)
1030  - *(error)* `clap::error::ErrorKind` now implements `Display`
1031
1032### Fixes
1033
1034- *(builder)* Some functions were renamed for consistency and fixing spelling issues
1035- *(builder)* Allow `clap::Command::color` to override previous calls (#3449)
1036- *(parse)* Propagate globals with multiple subcommands (#3428)
1037- *(validation)* Give `ArgRequiredElseHelp` precedence over `SubcommandRequired` (#3456)
1038- *(validation)* Default values no longer count as "present" for conflicts, requires, `clap::Command::arg_required_else_help`, etc (#3076, #1264)
1039- *(assert)* Report invalid defaults (#3202)
1040- *(help)* Clarify how to handle `-h` conflicts (#3403)
1041- *(help)* Make it easier to debug the addition of help flags (#3425)
1042- *(help)* Pacman-style subcommands are now separated with spaces (#3470)
1043- *(help)* Pacman-style subcommands are now ordered the same as usage errors (#3470)
1044- *(help)* Pacman-style subcommands use standard alternate syntax in usage (#3470)
1045- *(error)* Be consistent in showing of required attributes between errors / usage (#3390)
1046- *(error)* Show user's order of possible values, like in `--help` (#1549)
1047- *(error)* Allow customizing error type in `clap::error::Result` (#3395)
1048
1049### Performance
1050
1051- *(error)* Reduced stack size of `clap::Error` (#3395)
1052
1053### Documentation
1054
1055- *(builder)* Correct data take accepted for `clap::Arg::validator`
1056- *(derive)* Clarify `parse` attribute
1057- *(tutorial)* Demonstrate custom parsing
1058- *(example)* Consistently list out required feature flags (#3448)
1059
1060## [3.0.14] - 2022-02-01
1061
1062### Features
1063
1064- Added `ArgMatches::args_present()` to check if any args are present
1065- Added `Error::kind()` as we work to deprecate direct member access for `Error`
1066- Added `App::get_version`
1067- Added `App::get_long_version`
1068- Added `App::get_author`
1069- Added `App::get_subcommand_help_heading`
1070- Added `App::get_subcommand_value_name`
1071- Added `App::get_after_help`
1072- Added `App::get_after_long_help`
1073
1074### Performance
1075
1076- Misc binary size reductions
1077
1078## [3.0.13] - 2022-01-26
1079
1080### Fixes
1081
1082- Show optional flag values wrapped in `[]`
1083
1084## [3.0.12] - 2022-01-24
1085
1086### Features
1087
1088- *(derive)* Support for `default_value_os_t`
1089
1090## [3.0.11] - 2022-01-24
1091
1092### Fixes
1093
1094- Ensure conflicts work when they target a group with a default value
1095
1096## [3.0.10] - 2022-01-18
1097
1098### Fixes
1099
1100- Resolve `panic!` from v3.0.8 when using `global_setting(PropagateVersion)`.
1101
1102## [3.0.9] - 2022-01-17
1103
1104### Features
1105
1106- Added `App::find_subcommand_mut`
1107
1108## [3.0.8] - 2022-01-17
1109
1110### Fixes
1111
1112- Respected `DisableColoredHelp` on `cmd help help`
1113- Provide a little more context when completing arguments for `cmd help`
1114- Provide more context for some asserts
1115- Small documentation improvements
1116
1117## [3.0.7] - 2022-01-12
1118
1119### Fixes
1120
1121- Shift more asserts from parsing to `App` building (ie will now run in `App::debug_assert`)
1122
1123**derive**
1124- Documentation fixes
1125
1126## [3.0.6] - 2022-01-10
1127
1128### Fixes
1129
1130**derive**
1131- Don't assume user does `use clap::ArgEnum` (#3277)
1132- Documentation fixes
1133
1134## [3.0.5] - 2022-01-05
1135
1136### Fixes
1137
1138- Provide hack to workaround [inability to detect external subcommands aliasing when escaped](https://github.com/clap-rs/clap/issues/3263) (#3264)
1139
1140**docs:**
1141- Cleaned up code blocks in tutorials (#3261)
1142- Clean up quotes in `ArgMatches` asserts
1143- List correct replacement for deprecated `Parser::from_clap` (#3257)
1144
1145## [3.0.4] - 2022-01-04
1146
1147### Features
1148
1149- For very limited cases, like `cargo`, expose `ArgMatches::is_valid_arg` to avoid panicing on undefined arguments
1150
1151## [3.0.3] - 2022-01-04
1152
1153### Fixes
1154
1155- Specify cause of debug assert failure
1156
1157## [3.0.2] - 2022-01-04
1158
1159### Fixes
1160
1161- Ignore `Last` when checking hyphen values (see #3249 for details)
1162- Help catch bugs with `#[must_use]`
1163
1164## [3.0.1] - 2022-01-03
1165
1166### Fixes
1167
1168- Don't panic when getting number of values (#3241)
1169- Don't warn when using `default_value_t` derive attribute with a `Subcommand` (#3245)
1170
1171Documentation
1172- Added `name` attribute to `ArgEnum` variant derive reference
1173
1174## [3.0.0] - 2021-12-31
1175
1176**Note:** clap v3 has been in development for several years and has changed
1177hands multiple times.  Unfortunately, our changelog might be incomplete,
1178whether in changes or their motivation.
1179
1180### Highlights
1181
1182A special thanks to the maintainers, contributors, beta users, and sponsors who
1183have helped along this journey, especially kbknapp.
1184
1185**[StructOpt](https://docs.rs/structopt/) Integration**
1186
1187[StructOpt](https://docs.rs/structopt/) provides a serde-like declarative
1188approach to defining your parser.  The main benefits we've seen so far from integrating are:
1189- Tighter feedback between the design of clap and the derives
1190- More universal traits.  Crates exist for common CLI patterns
1191  ([example](https://github.com/rust-cli/clap-verbosity-flag))
1192  and we've re-designed the `StructOpt` traits so crates built on clap3 can be
1193  reused not just with other derives but also people using the builder API.
1194  People can even hand implement these so people using the builder API won't
1195  have the pay the cost for derives.
1196
1197**Custom Help Headings**
1198
1199Previously, clap automatically grouped arguments in the help as either
1200`ARGS`, `FLAGS`, `OPTIONS`, and `SUBCOMMANDS`.
1201
1202You can now override the default group with `Arg::help_heading` and
1203`App::subcommand_help_heading`.  To apply a heading to a series of arguments,
1204you can set `App::help_heading`.
1205
1206**Deprecations**
1207
1208While a lot of deprecations have been added to clean up the API (overloaded
1209meaning of `Arg::multiple`) or make things more consistent, some particular
1210highlights are:
1211- `clap_app!` has been deprecated in favor of the builder API with `arg!` ([clap-rs/clap#2835](https://github.com/clap-rs/clap/issues/2835))
1212- `Arg::from_usage` has been deprecated in favor of `arg!` ([clap-rs/clap#3087](https://github.com/clap-rs/clap/issues/3087))
1213  - [Porting example](https://github.com/clap-rs/clap/commit/4c4a2b86a08ef9e2d63010aab4909dd5a013dfb0)
1214- The YAML API has been deprecated in favor the builder or derive APIs ([clap-rs/clap#3087](https://github.com/clap-rs/clap/issues/3087))
1215
1216### Migrating
1217
1218**From clap v2**
1219
12201. Add CLI tests, `-h` and `--help` output at a minimum (recommendation: [trycmd](https://docs.rs/trycmd/) for snapshot testing)
12212. Update your dependency
1222    1. *If you use `no-default-features`:* add the `std` feature
12233. Resolve compiler errors
12244. Resolve behavior changes
1225    1. Refactor your `App` creation to a function and add a test similar to the one below, resolving any of its assertions
1226    2. Look over the "subtle changes" under BREAKING CHANGES
1227    3. *If using builder:* test your application under various circumstances to see if `ArgMatches` asserts regarding `AllowInvalidUtf8`.
12285. *At your leisure:* resolve deprecation notices
1229
1230Example test:
1231```rust
1232fn app() -> clap::App<'static> {
1233    ...
1234}
1235
1236#[test]
1237fn verify_app() {
1238    app().debug_assert();
1239}
1240```
1241
1242**From structopt 0.3.25**
1243<a name="migrate-structopt"></a>
1244
12451. Add CLI tests, `-h` and `--help` output at a minimum (recommendation: [trycmd](https://docs.rs/trycmd/) for snapshot testing)
12462. Replace your dependency from `structopt = "..."` to `clap = { version = "3.0", features = ["derive"] }`
1247    1. *If you use `no-default-features`:* add the `std` feature
12483. Resolve compiler errors, including
1249    1. Update your `use` statements from `structopt` and `structopt::clap` to `clap`
12504. Resolve behavior changes
1251    1. Add a test similar to the one below, resolving any of its assertions
1252    2. Look over the "subtle changes" under BREAKING CHANGES
12535. *At your leisure:* resolve deprecation notices
1254
1255Example test:
1256```rust
1257#[derive(clap::StructOpt)]
1258struct Args {
1259    ...
1260}
1261
1262#[test]
1263fn verify_app() {
1264    use clap::IntoApp;
1265    Args::into_app().debug_assert()
1266}
1267```
1268
1269**From clap v3.0.0-beta.5**
1270
12711. Add CLI tests, `-h` and `--help` output at a minimum (recommendation: [trycmd](https://docs.rs/trycmd/) for snapshot testing)
12722. Update your dependency
1273    1. Add in `derive`, `env`, `cargo`, or `unicode` feature flags as needed
12743. Resolve compiler errors
1275    1. *If you use `yaml`, `clap_app!`, or usage parser:* revert any changes you made for clap3
1276    2. Change `Arg::about` `Arg::long_about` back to `help` and `long_help` and change `PossibleValue::about` to `help` ([clap-rs/clap#3075](https://github.com/clap-rs/clap/issues/3075))
1277    3. Change `AppSettings::HelpRequired` to `AppSettings::HelpExpected`
1278    4. Change `PossibleValue::hidden` to `PossibleValue::hide`
1279    5. Change `App::subcommand_placeholder` to `App::subcommand_value_name` / `App::subcommand_help_heading`
12804. Resolve behavior changes
1281    1. Add the above listed test appropriate for your application and resolve any problems it reports
1282    2. *If using `derive`:* see the structopt breaking changes section for `Vec` changes
1283    3. *If using builder:* test your application under various circumstances to see if `ArgMatches` asserts regarding `AllowInvalidUtf8`.
12845. *At your leisure:* resolve deprecation notices
1285
1286### BREAKING CHANGES
1287
1288**From clap 2**
1289
1290Subtle changes (i.e. compiler won't catch):
1291- `AppSettings::UnifiedHelpMessage` is now default behaviour
1292  - `{flags}` and `{unified}` will assert if present in `App::help_template`
1293  - See [clap-rs/clap#2807](https://github.com/clap-rs/clap/issues/2807)
1294- `AppSettings::EnableColoredHelp` is now the default behavior but can be
1295  opted-out with `AppSettings::DisableColoredHelp`
1296  ([clap-rs/clap#2806](https://github.com/clap-rs/clap/issues/2806))
1297- `App::override_usage` no longer implies a leading `\t`, allowing multi lined usages
1298- `Arg::require_equals` no longer implies `ArgSettings::ForbidEmptyValues` ([#2233](https://github.com/clap-rs/clap/issues/2233))
1299- `Arg::require_delimiter` no longer implies `ArgSettings::TakesValue` and `ArgSettings::UseValueDelimiter` ([#2233](https://github.com/clap-rs/clap/issues/2233))
1300- `Arg::env`, `Arg::env_os`, `Arg::last`, `Arg::require_equals`, `Arg::allow_hyphen_values`,
1301  `Arg::hide_possible_values`, `Arg::hide_default_value`, `Arg::hide_env_values`,
1302  `Arg::case_insensitive` and `Arg::multiple_values` no longer imply `ArgSettings::TakesValue` ([#2233](https://github.com/clap-rs/clap/issues/2233))
1303- `ArgMatches::is_present` no longer checks subcommand names
1304- Some env variable values are now considered false for flags, not just "not-present" ([clap-rs/clap#2539](https://github.com/clap-rs/clap/issues/2539))
1305- Changed `...`s meaning in usage parser.  Before, it always meant `multiple` which is still true for `--option [val]...`.  Now `[name]... --option [val]` results in `ArgSettings::MultipleOccurrences`.
1306- Usage exit code changed from `1` to `2` ([clap-rs/clap#1327](https://github.com/clap-rs/clap/issues/1327))
1307- Reject `--foo=bar` when `takes_value(false)` ([clap-rs/clap#1543](https://github.com/clap-rs/clap/issues/1543))
1308- No longer accept an arbitrary number of `-` for long arguments (`-----long`)
1309
1310Easier to catch changes:
1311- When using `no-default-features`, you now have to specify the `std` feature (reserved for future work)
1312- Gated env support behind `env` feature flag
1313  - Impacts `Arg::env`, `Arg::env_os`, `Arg::hide_env_values`, `ArgSettings::HideEnvValues`
1314  - See [clap-rs/clap#2694](https://github.com/clap-rs/clap/pull/2694)
1315- Gated crate information behind `cargo` feature flag
1316  - Impacts `crate_name!`, `crate_version!`, `crate_authors!`, `crate_description!`, `app_from_crate!`
1317- `AppSettings::StrictUtf8` is now default behaviour and asserts if
1318  `AppSettings::AllowInvalidUtf8ForExternalSubcommands` and
1319  `ArgSettings::AllowInvalidUtf8` and `ArgMatches::value_of_os` aren't used
1320  together
1321  - `AppSettings::AllowInvalidUtf8` has been removed
1322  - [clap-rs/clap#751](https://github.com/clap-rs/clap/issues/751)
1323- `Arg::short` and `Arg::value_delimiter` now take a `char` instead of a `&str`
1324- `ArgMatches` panics on unknown arguments
1325- Removed `VersionlessSubcommands`, making it the default (see [clap-rs/clap#2812](https://github.com/clap-rs/clap/issues/2812))
1326- Completion generation has been split out into [clap_complete](./clap_complete).
1327- Removed `ArgSettings::EmptyValues` in favor of `ArgSettings::ForbidEmptyValues`
1328- Validator signatures have been loosed:
1329  - `Arg::validator` now takes first argument as `Fn(&str) -> Result<O, E: ToString>` instead of
1330    `Fn(String) -> Result<(), String>`
1331  - `Arg::validator_os` now takes first argument as `Fn(&OsStr) -> Result<O, OsString>` instead of
1332    `Fn(&OsStr) -> Result<(), OsString>`
1333- `Arg::value_name` now sets, rather than appends (see [clap-rs/clap#2634](https://github.com/clap-rs/clap/issues/2634))
1334- Upgrade `yaml-rust` from 0.3 to 0.4
1335- Replaced `ArgGroup::from(BTreeMap)` to `ArgGroup::from(yaml)`
1336- Replaced `ArgMatches::usage` with `App::generate_usage`
1337- Replaced `Arg::settings` with `Arg::setting(Setting1 | Setting2)`
1338- `App` and `Arg` now need only one lifetime
1339- Removed deprecated `App::with_defaults`, replaced with `app_from_crate`
1340- Removed deprecated `AppSettings::PropagateGlobalValuesDown` (now the default)
1341- Some `App` functions, like `App::write_help` now take `&mut self` instead of `&self`
1342- `Error::message` is now private, use `Error::to_string`
1343- `Arg::default_value_if`, `Arg::default_value_if_os`, `Arg::default_value_ifs`,
1344  `Arg::default_value_ifs_os` now takes the default value parameter as an option ([clap-rs/clap#1406](https://github.com/clap-rs/clap/issues/1406))
1345- Changed `App::print_help` & `App::print_long_help` to now return `std::io::Result`
1346- Changed `App::write_help` & `App::write_long_help` to now return `std::io::Result`
1347- Changed `Arg::index`, `Arg::number_of_values`, `Arg::min_values`, `Arg::max_values` to taking `usize` instead of u64
1348- Changed `Error::info` to type `Vec<String>` instead of `Option<Vec<String>>`
1349- Changed `ArgMatches::subcommand` to now return `Option<(&str, &ArgMatches)>`
1350- Renamed `ErrorKind::MissingArgumentOrSubcommand` to `ErrorKind::DisplayHelpOnMissingArgumentOrSubcommand`
1351- Renamed `ErrorKind::HelpDisplayed` to `ErrorKind::DisplayHelp`
1352- Renamed `ErrorKind::VersionDisplayed` to `ErrorKind::DisplayVersion`
1353- Added `#[non_exhaustive]` to `clap::{ValueHint, ErrorKind, AppSettings, ArgSettings}` ([clap-rs/clap#3167](https://github.com/clap-rs/clap/pull/3167))
1354
1355**From structopt 0.3.25**
1356
1357- By default, the `App` isn't initialized with crate information anymore.  Now opt-in via `#[clap(author)]`, `#[clap(about)]`, `#[clap(version)]` ([clap-rs/clap#3034](https://github.com/clap-rs/clap/issues/3034))
1358- `#[clap(default_value)]` is replaced with `#[clap(default_value_t)]` ([clap-rs/clap#1694](https://github.com/clap-rs/clap/issues/1694))
1359- Subcommands nested under subcommands now needs a `#[clap(subcommand)]` attribute ([clap-rs/clap#2587](https://github.com/clap-rs/clap/pull/2587))
1360- `Vec<_>` and `Option<Vec<_>>` have changed from `multiple` to `multiple_occurrences`
1361
1362On top of the clap 2 changes
1363
1364### Performance
1365
1366**From clap 2**
1367
1368- Split out non-default `unicode` feature flag for faster builds and smaller binaries for ASCII-only CLIs.
1369- Split out non-default `env` feature flag  for faster builds and smaller binaries.
1370
1371### Features
1372
1373**From clap 2**
1374
1375- Integration of `structopt::StructOpt` via `clap::Parser` (requires `derive` feature flag)
1376- Custom help headings
1377  - `App::help_heading` (apply to all future args)
1378  - `Arg::help_heading` (apply to current arg)
1379  - `App::subcommand_help_heading` along with `App::subcommand_value_name` (apply to subcommands)
1380  - See [clap-rs/clap#805](https://github.com/clap-rs/clap/issues/805)
1381  - `AppSettings::UnifiedHelpMessage` is now default behaviour ([clap-rs/clap#2807](https://github.com/clap-rs/clap/issues/2807))
1382- Deriving of `ArgEnum` for generating `Arg::possible_values` (requires `derive` feature flag)
1383- Disable built-in help/version behavior with `AppSettings::NoAutoHelp` and `AppSettings::NoAutoVersion`
1384- Change an existing arg with new builder method `mut_arg` (particularly helpful for `--help` and `--version`)
1385- Provide extra context in long help messages (`--help`) with `before_long_help` and `after_long_help` ([clap-rs/clap#1903](https://github.com/clap-rs/clap/issues/1903))
1386- Detect missing help descriptions via debug asserts by enabling `AppSettings::HelpExpected`
1387- Aliases for short flags ([clap-rs/clap#1896](https://github.com/clap-rs/clap/issues/1896))
1388- Validate UTF-8 values, rather than panicing during `ArgMatches::value_of` thanks to `AppSettings::AllowInvalidUtf8ForExternalSubcommands` and `ArgSettings::AllowInvalidUtf8`
1389  - Debug builds will assert when the `ArgMatches` calls do not match the UTF-8 setting.
1390  - See [clap-rs/clap#751](https://github.com/clap-rs/clap/issues/751)
1391- `clap::PossibleValue` to allow
1392  - Hiding ([clap-rs/clap#2756](https://github.com/clap-rs/clap/issues/2756))
1393  - Completion help for possible values for args ([clap-rs/clap#2731](https://github.com/clap-rs/clap/issues/2731))
1394- Allow arguments to conflict with all others via `Arg::exclusive` ([clap-rs/clap#1583](https://github.com/clap-rs/clap/issues/1583))
1395- Validate arguments with a regex (required `regex` feature flag)
1396  - See [clap-rs/clap](https://github.com/clap-rs/clap/issues/1968)
1397- `Arg::default_missing_value` for cases like `--color[=<WHEN>]` ([clap-rs/clap#1587](https://github.com/clap-rs/clap/pull/1587))
1398- `clap::App::color` / `clap::ColorChoice` to specify color setting for the app
1399- Custom error reporting with `App::error`
1400- `App::debug_assert` test helper
1401- Replace `Arg::multiple(bool)` with `Arg::multiple_values` / `Arg::multiple_occurrences`
1402  - Positionals can be either
1403- Added support for flag subcommands like pacman ([clap-rs/clap#1361](https://github.com/clap-rs/clap/issues/1361))
1404- Partial parsing via `AppSettings::IgnoreErrors` ([clap-rs/clap#1880](https://github.com/clap-rs/clap/issues/1880))
1405- Enable `cmd help` to print long help (`--help` instead of `-h`) with `AppSettings::UseLongFormatForHelpSubcommand` ([clap-rs/clap#2435](https://github.com/clap-rs/clap/issues/2435))
1406- Allow long arg abbreviations like we do with subcommands via `AppSettings::InferLongArgs` ([clap-rs/clap#2435](https://github.com/clap-rs/clap/issues/2435))
1407- Detect subcommands among positional arguments with `AppSettings::SubcommandPrecedenceOverArg`
1408- Give completion scripts hints with `Arg::value_hint` ([clap-rs/clap#1793](https://github.com/clap-rs/clap/pull/1793))
1409- Allow unsetting defaults with
1410- `Arg::default_value_if`, `Arg::default_value_if_os`, `Arg::default_value_ifs`,
1411  `Arg::default_value_ifs_os` ([clap-rs/clap#1406](https://github.com/clap-rs/clap/issues/1406))
1412- Interpret some env variable values as `false` for flags, in addition to "not-present" ([clap-rs/clap#2539](https://github.com/clap-rs/clap/issues/2539))
1413  - `n`, `no`, `f`, `false`, `off`, `0`
1414- Added `arg!` macro for creating an `Arg` from a compile-time usage parser
1415
1416- *(Experimental)* Busybox-like multi-call support
1417  - See `AppSettings::Multicall` behind `unstable-multicall` feature flag
1418  - See [clap-rs/clap#1120](https://github.com/clap-rs/clap/issues/1120)
1419- *(Experimental)* Alias an argument to anything group of arguments
1420  - See `App::replace` behind `unstable-replace` feature flag
1421  - See [clap-rs#1603](https://github.com/clap-rs/clap/issues/1603)
1422- *(Experimental)* Grouping of multiple values within multiple occurrences
1423  - See `ArgMatches::grouped_values_of` behind `unstable-grouped` feature flag
1424  - See [clap-rs/clap#1026](https://github.com/clap-rs/clap/issues/1026)
1425
1426**From structopt 0.3.25**
1427
1428- Allow defaulting with native types via new `default_value_t [= <expr>]` attribute ([clap-rs/clap#1694](https://github.com/clap-rs/clap/issues/1694))
1429- New `update` API
1430- New `arg_enum` attribute for integrating with `ArgEnum` trait
1431
1432On top of the clap 2 changes
1433
1434### Fixes
1435
1436**From clap 2**
1437
1438- Correctly handle colored output on Windows
1439- Only generate version flags when `App::version`, `App::long_version` are set
1440  (see [clap-rs/clap#2812](https://github.com/clap-rs/clap/issues/2812))
1441- General completion script improvements
1442- Limited default help text wrapping to 100 when `wrap_help` feature is not enabled
1443- Be more specific than `Arg::multiple` with `Arg::multiple_values` and `Arg::multiple_occurrences`
1444- `app_from_crate!` defaults to separating multiple authors with `", "`
1445- Ensure all examples work
1446- `IgnoreCase` is now unicode aware (requires `unicode` feature flag)
1447- Always respect `ColorChoice::Never`, even if that means we skip colors in some cases
1448- `ArgMatches` panics on unknown arguments
1449- Gracefully handle empty `authors` field in `Cargo.toml` with `app_from_crate`
1450- Do not show `--help` in `cmd help` with `DisableHelpFlag` ([clap-rs/clap#3169](https://github.com/clap-rs/clap/pull/3169))
1451- Do not show `--help` in `cmd help help` that doesn't work ([clap-rs/clap#3169](https://github.com/clap-rs/clap/pull/3169))
1452
1453**From structopt 0.3.25**
1454
1455- Support `SubcommandsNegateReqs` by allowing required `Option<_>`s ([clap-rs/clap#2255](https://github.com/clap-rs/clap/issues/2255))
1456- Infer `AllowInvalidUtf8` based on parser ([clap-rs/clap#751](https://github.com/clap-rs/clap/issues/2255))
1457- Gracefully handle empty `authors` field in `Cargo.toml`
1458- Don't panic with `default_value_os` but treat it like `default_value` ([clap-rs/clap#3031](https://github.com/clap-rs/clap/issues/3031))
1459- When using `flatten` and `subcommand`, ensure our doc comment always overrides the nested container's doc comment, whether it has only `about` or `about` and `long_about` ([clap-rs/clap#3175](]https://github.com/clap-rs/clap/pull/3175))
1460
1461On top of the clap 2 changes
1462
1463### Minimum Required Rust
1464
1465- As of this release, `clap` requires `rustc 1.54.0` or greater.
1466
1467## [2.34.0] - 2021-11-30
1468
1469- Updates to Rust 2018 edition and bumps the MSRV to Rust 1.46
1470
1471## [2.33.4] - 2021-11-29
1472
1473### Bug Fixes
1474
1475* **prevents `panic`:**  swallows broken pipe errors on error output ([7a729bc4](https://github.com/kbknapp/clap-rs/commit/7a729bc4df2646b05f6bf15f001124cd39d076ce))
1476
1477## [2.33.3] - 2020-08-13
1478
1479### Improvements
1480
1481* Suppress deprecation warnings when using `crate_*` macros.
1482
1483## [2.33.2] - 2020-08-5
1484
1485#### Documentation
1486
1487* Fixed links to `2.x` examples. Now they point to the right place.
1488
1489## [2.33.1] - 2020-05-11
1490
1491### Bug Fixes
1492
1493* Windows: Prevent some panics when parsing invalid Unicode on Windows ([922c645](https://github.com/clap-rs/clap/commit/922c64508389170c9c77f1c8a4e597d14d3ed2f0), closes [#1905](https://github.com/clap-rs/clap/issues/1905))
1494
1495### Documentation
1496
1497*   fixes versions referenced in the README ([d307466a](https://github.com/kbknapp/clap-rs/commit/d307466af1013f172b8ec0252f01a473e2192d6b))
1498* **README.md:**
1499  *  cuts down the number of examples to reduce confusion ([6e508ee0](https://github.com/kbknapp/clap-rs/commit/6e508ee09e7153de4adf4e88b0aa6418a537dadd))
1500
1501### Improvements
1502
1503* **Deps:**  doesnt compile ansi_term on Windows since its not used ([b57ee946](https://github.com/kbknapp/clap-rs/commit/b57ee94609da3ddc897286cfba968f26ff961491), closes [#1155](https://github.com/kbknapp/clap-rs/issues/1155))
1504
1505### Minimum Required Rust
1506
1507* As of this release, `clap` requires `rustc 1.36.0` or greater.
1508
1509## [2.33.0] - 2019-04-06
1510
1511#### New Sponsor
1512
1513*   Stephen Oats is now a sponsor \o/ ([823457c0](https://github.com/clap-rs/clap/commit/823457c0ef5e994ed7080cf62addbfe1aa3b1833))
1514* **SPONSORS.md:**  fixes Josh Triplett's info in the sponsor document ([24cb5740](https://github.com/clap-rs/clap/commit/24cb574090a11159b48bba105d5ec2dfb0a20e4e))
1515
1516#### Features
1517
1518* **Completions:**  adds completion support for Elvish. ([e9d0562a](https://github.com/clap-rs/clap/commit/e9d0562a1dc5dfe731ed7c767e6cee0af08f0cf9))
1519* There is a new setting to disable automatic building of `--help` and `-h` flags (`AppSettings::DisableAutoHelp`)
1520
1521#### Improvements
1522
1523* **arg_matches.rs:**  add Debug implementations ([47192b7a](https://github.com/clap-rs/clap/commit/47192b7a2d84ec716b81ae4af621e008a8762dc9))
1524* **macros:**  Support shorthand syntax for ArgGroups ([df9095e7](https://github.com/clap-rs/clap/commit/df9095e75bb1e7896415251d0d4ffd8a0ebcd559))
1525
1526#### Documentation
1527
1528*   Refer to macOS rather than OSX. ([ab0d767f](https://github.com/clap-rs/clap/commit/ab0d767f3a5a57e2bbb97d0183c2ef63c8c77a6c))
1529* **README.md:**  use https for all links ([96a7639a](https://github.com/clap-rs/clap/commit/96a7639a36bcb184c3f45348986883115ef1ab3a))
1530
1531#### Bug Fixes
1532
1533*   add debug assertion for missing args in subcommand ArgGroup ([2699d9e5](https://github.com/clap-rs/clap/commit/2699d9e51e7eadc258ba64c4e347c5d1fef61343))
1534*   Restore compat with Rust 1.21 ([6b263de1](https://github.com/clap-rs/clap/commit/6b263de1d42ede692ec5ee55019ad2fc6386f92e))
1535*   Don't mention unused subcommands ([ef92e2b6](https://github.com/clap-rs/clap/commit/ef92e2b639ed305bdade4741f60fa85cb0101c5a))
1536* **OsValues:**  Add `ExactSizeIterator` implementation ([356c69e5](https://github.com/clap-rs/clap/commit/356c69e508fd25a9f0ea2d27bf80ae1d9a8d88f4))
1537* **arg_enum!:**
1538  *  Fix comma position for valid values. ([1f1f9ff3](https://github.com/clap-rs/clap/commit/1f1f9ff3fa38a43231ef8be9cfea89a32e53f518))
1539  *  Invalid expansions of some trailing-comma patterns ([7023184f](https://github.com/clap-rs/clap/commit/7023184fca04e852c270341548d6a16207d13862))
1540* **completions:**  improve correctness of completions when whitespace is involved ([5a08ff29](https://github.com/clap-rs/clap/commit/5a08ff295b2aa6ce29420df6252a0e3ff4441bdc))
1541* **help message:**  Unconditionally uses long description for subcommands ([6acc8b6a](https://github.com/clap-rs/clap/commit/6acc8b6a621a765cbf513450188000d943676a30), closes [#897](https://github.com/clap-rs/clap/issues/897))
1542* **macros:**  fixes broken pattern which prevented calling multi-argument Arg methods ([9e7a352e](https://github.com/clap-rs/clap/commit/9e7a352e13aaf8025d80f2bac5c47fb32528672b))
1543* **parser:**  Better interaction between AllowExternalSubcommands and SubcommandRequired ([9601c95a](https://github.com/clap-rs/clap/commit/9601c95a03d2b82bf265c328b4769238f1b79002))
1544
1545#### Minimum Required Rust
1546
1547* As of this release, `clap` requires `rustc 1.31.0` or greater.
1548
1549## v2.32.0 (2018-06-26)
1550
1551#### Minimum Required Rust
1552
1553* As of this release, `clap` requires `rustc 1.21.0` or greater.
1554
1555
1556#### Features
1557
1558* **Completions:**  adds completion support for Elvish. ([e9d0562a](https://github.com/clap-rs/clap/commit/e9d0562a1dc5dfe731ed7c767e6cee0af08f0cf9))
1559
1560#### Improvements
1561
1562* **macros:**  Support shorthand syntax for ArgGroups ([df9095e7](https://github.com/clap-rs/clap/commit/df9095e75bb1e7896415251d0d4ffd8a0ebcd559))
1563
1564#### Bug Fixes
1565
1566* **OsValues:**  Add `ExactSizeIterator` implementation ([356c69e5](https://github.com/clap-rs/clap/commit/356c69e508fd25a9f0ea2d27bf80ae1d9a8d88f4))
1567* **arg_enum!:**  Invalid expansions of some trailing-comma patterns ([7023184f](https://github.com/clap-rs/clap/commit/7023184fca04e852c270341548d6a16207d13862))
1568* **help message:**  Unconditionally uses long description for subcommands ([6acc8b6a](https://github.com/clap-rs/clap/commit/6acc8b6a621a765cbf513450188000d943676a30), closes [#897](https://github.com/clap-rs/clap/issues/897))
1569
1570#### Documentation
1571
1572*   Refer to macOS rather than OSX. ([ab0d767f](https://github.com/clap-rs/clap/commit/ab0d767f3a5a57e2bbb97d0183c2ef63c8c77a6c))
1573
1574
1575
1576## v2.31.2 (2018-03-19)
1577
1578#### Bug Fixes
1579
1580* **Fish Completions:**  fixes a bug that only allowed a single completion in in Fish Shell ([e8774a8](https://github.com/clap-rs/clap/pull/1214/commits/e8774a84ee4a319c888036e7c595ab46451d8e48), closes [#1212](https://github.com/clap-rs/clap/issues/1212))
1581* **AllowExternalSubcommands**: fixes a bug where external subcommands would be blocked by a similarly named subcommand (suggestions were getting in the way). ([a410e85](https://github.com/clap-rs/clap/pull/1215/commits/a410e855bcd82b05f9efa73fa8b9774dc8842c6b))
1582
1583#### Documentation
1584
1585* Fixes some typos in the `README.md` ([c8e685d7](https://github.com/clap-rs/clap/commit/c8e685d76adee2a3cc06cac6952ffcf6f9548089))
1586
1587## v2.31.1 (2018-03-06)
1588
1589
1590#### Improvements
1591
1592* **AllowMissingPositional:**  improves the ability of AllowMissingPositional to allow 'skipping' to the last positional arg with '--' ([df20e6e2](https://github.com/clap-rs/clap/commit/df20e6e24b4e782be0b423b484b9798e3e2efe2f))
1593
1594
1595## v2.31.0 (2018-03-04)
1596
1597
1598#### Features
1599
1600* **Arg Indices:**  adds the ability to query argument value indices ([f58d0576](https://github.com/clap-rs/clap/commit/f58d05767ec8133c8eb2de117cb642b9ae29ccbc))
1601* **Indices:**  implements an Indices<Item=&usize> iterator ([1e67be44](https://github.com/clap-rs/clap/commit/1e67be44f0ccf161cc84c4e6082382072e89c302))
1602* **Raw Args** adds a convenience function to `Arg` that allows implying all of `Arg::last` `Arg::allow_hyphen_values` and `Arg::multiple(true)` ([66a78f29](https://github.com/clap-rs/clap/commit/66a78f2972786f5fe7c07937a1ac23da2542afd2))
1603
1604#### Documentation
1605
1606*   Fix some typos and markdown issues. ([935ba0dd](https://github.com/clap-rs/clap/commit/935ba0dd547a69c3f636c5486795012019408794))
1607* **Arg Indices:**  adds the documentation for the arg index querying methods ([50bc0047](https://github.com/clap-rs/clap/commit/50bc00477afa64dc6cdc5de161d3de3ba1d105a7))
1608* **CONTRIBUTING.md:**  fix url to clippy upstream repo to point to https://github.com/rust-lang-nursery/rust-clippy instead of https://github.com/Manishearth/rust-clippy ([42407d7f](https://github.com/clap-rs/clap/commit/42407d7f21d794103cda61f49d2615aae0a4bcd9))
1609* **Values:**  improves the docs example of the Values iterator ([74075d65](https://github.com/clap-rs/clap/commit/74075d65e8db1ddb5e2a4558009a5729d749d1b6))
1610* Updates readme to hint that the `wrap_help` feature is a thing ([fc7ab227](https://github.com/clap-rs/clap/commit/66a78f2972786f5fe7c07937a1ac23da2542afd2))
1611
1612### Improvements
1613
1614*  Cargo.toml: use codegen-units = 1 in release and bench profiles ([19f425ea](https://github.com/clap-rs/clap/commit/66a78f2972786f5fe7c07937a1ac23da2542afd2))
1615*  Adds WASM support (clap now compiles on WASM!) ([689949e5](https://github.com/clap-rs/clap/commit/689949e57d390bb61bc69f3ed91f60a2105738d0))
1616*  Uses the short help tool-tip for PowerShell completion scripts ([ecda22ce](https://github.com/clap-rs/clap/commit/ecda22ce7210ce56d7b2d1a5445dd1b8a2959656))
1617
1618
1619## v2.30.0 (2018-02-13)
1620
1621#### Bug Fixes
1622
1623* **YAML:** Adds a missing conversion from  `Arg::last` when instantiating from a YAML file ([aab77c81a5](https://github.com/clap-rs/clap/pull/1175/commits/aab77c81a519b045f95946ae0dd3e850f9b93070), closes [#1160](https://github.com/clap-rs/clap/issues/1173))
1624
1625#### Improvements
1626
1627* **Bash Completions:**  instead of completing a generic option name, all bash completions fall back to file completions UNLESS `Arg::possible_values` was used ([872f02ae](https://github.com/clap-rs/clap/commit/872f02aea900ffa376850a279eb164645e1234fa))
1628* **Deps:**  No longer needlessly compiles `ansi_term` on Windows since its not used ([b57ee946](https://github.com/clap-rs/clap/commit/b57ee94609da3ddc897286cfba968f26ff961491), closes [#1155](https://github.com/clap-rs/clap/issues/1155))
1629* **Help Message:** changes the `[values: foo bar baz]` array to `[possible values: foo bar baz]` for consistency with the API ([414707e4e97](https://github.com/clap-rs/clap/pull/1176/commits/414707e4e979d07bfe555247e5d130c546673708), closes [#1160](https://github.com/clap-rs/clap/issues/1160))
1630
1631
1632## v2.29.4 (2018-02-06)
1633
1634
1635#### Bug Fixes
1636
1637* **Overrides Self:**  fixes a bug where options with multiple values couldn't ever have multiple values ([d95907cf](https://github.com/clap-rs/clap/commit/d95907cff6d011a901fe35fa00b0f4e18547a1fb))
1638
1639
1640
1641## v2.29.3 (2018-02-05)
1642
1643
1644#### Improvements
1645
1646* **Overrides:**  clap now supports arguments which override with themselves ([6c7a0010](https://github.com/clap-rs/clap/commit/6c7a001023ca1eac1cc6ffe6c936b4c4a2aa3c45), closes [#976](https://github.com/clap-rs/clap/issues/976))
1647
1648#### Bug Fixes
1649
1650* **Requirements:**  fixes an issue where conflicting args would still show up as required ([e06cefac](https://github.com/clap-rs/clap/commit/e06cefac97083838c0a4e1444dcad02a5c3f911e), closes [#1158](https://github.com/clap-rs/clap/issues/1158))
1651* Fixes a bug which disallows proper nesting of `--` ([73993fe](https://github.com/clap-rs/clap/commit/73993fe30d135f682e763ec93dcb0814ed518011), closes [#1161](https://github.com/clap-rs/clap/issues/1161))
1652
1653#### New Settings
1654
1655* **AllArgsOverrideSelf:**  adds a new convenience setting to allow all args to override themselves ([4670325d](https://github.com/clap-rs/clap/commit/4670325d1bf0369addec2ae2bcb56f1be054c924))
1656
1657
1658
1659## v2.29.2 (2018-01-16)
1660
1661
1662#### Features
1663
1664* **completions/zsh.rs:**
1665  *  Escape possible values for options ([25561dec](https://github.com/clap-rs/clap/commit/25561decf147d329b64634a14d9695673c2fc78f))
1666  *  Implement positional argument possible values completion ([f3b0afd2](https://github.com/clap-rs/clap/commit/f3b0afd2bef8b7be97162f8a7802ddf7603dff36))
1667  *  Complete positional arguments properly ([e39aeab8](https://github.com/clap-rs/clap/commit/e39aeab8487596046fbdbc6a226e5c8820585245))
1668
1669#### Bug Fixes
1670
1671* **completions/zsh.rs:**
1672  *  Add missing autoload for is-at-least ([a6522607](https://github.com/clap-rs/clap/commit/a652260795d1519f6ec2a7a09ccc1258499cad7b))
1673  *  Don't pass -S to _arguments if Zsh is too old ([16b4f143](https://github.com/clap-rs/clap/commit/16b4f143ff466b7ef18a267bc44ade0f9639109b))
1674  *  Maybe fix completions with mixed positionals and subcommands ([1146f0da](https://github.com/clap-rs/clap/commit/1146f0da154d6796fbfcb09db8efa3593cb0d898))
1675* **completions/zsh.zsh:**  Remove redundant code from output ([0e185b92](https://github.com/clap-rs/clap/commit/0e185b922ed1e0fd653de00b4cd8d567d72ff68e), closes [#1142](https://github.com/clap-rs/clap/issues/1142))
1676
1677
1678
1679### 2.29.1 (2018-01-09)
1680
1681
1682#### Documentation
1683
1684*   fixes broken links. ([56e734b8](https://github.com/clap-rs/clap/commit/56e734b839303d733d2e5baf7dac39bd7b97b8e4))
1685*   updates contributors list ([e1313a5a](https://github.com/clap-rs/clap/commit/e1313a5a0f69d8f4016f73b860a63af8318a6676))
1686
1687#### Performance
1688
1689*   further debloating by removing generics from error cases ([eb8d919e](https://github.com/clap-rs/clap/commit/eb8d919e6f3443db279ba0c902f15d76676c02dc))
1690*   debloats clap by deduplicating logic and refactors ([03e413d7](https://github.com/clap-rs/clap/commit/03e413d7175d35827cd7d8908d47dbae15a849a3))
1691
1692#### Bug Fixes
1693
1694*   fixes the ripgrep benchmark by adding a value to a flag that expects it ([d26ab2b9](https://github.com/clap-rs/clap/commit/d26ab2b97cf9c0ea675b440b7b0eaf6ac3ad01f4))
1695* **bash completion:**  Change the bash completion script code generation to support hyphens. ([ba7f1d18](https://github.com/clap-rs/clap/commit/ba7f1d18eba7a07ce7f57e0981986f66c994b639))
1696* **completions/zsh.rs:**  Fix completion of long option values ([46365cf8](https://github.com/clap-rs/clap/commit/46365cf8be5331ba04c895eb183e2f230b5aad51))
1697
1698
1699## 2.29.0 (2017-12-02)
1700
1701
1702#### API Additions
1703
1704* **Arg:**  adds Arg::hide_env_values(bool) which allows one to hide any current env values and display only the key in help messages ([fb41d062](https://github.com/clap-rs/clap/commit/fb41d062eedf37cb4f805c90adca29909bd197d7))
1705
1706
1707
1708## 2.28.0 (2017-11-28)
1709
1710The minimum required Rust is now 1.20. This was done to start using bitflags 1.0 and having >1.0 deps is a *very good* thing!
1711
1712#### Documentation
1713
1714*   changes the demo version to 2.28 to stay in sync ([ce6ca492](https://github.com/clap-rs/clap/commit/ce6ca492c7510ab6474075806360b96081b021a9))
1715*   Fix URL path to github hosted files ([ce72aada](https://github.com/clap-rs/clap/commit/ce72aada56a9581d4a6cb4bf9bdb861c3906f8df), closes [#1106](https://github.com/clap-rs/clap/issues/1106))
1716*   fix typo ([002b07fc](https://github.com/clap-rs/clap/commit/002b07fc98a1c85acb66296b1eec0b2aba906125))
1717* **README.md:**  updates the readme and pulls out some redundant sections ([db6caf86](https://github.com/clap-rs/clap/commit/db6caf8663747e679d2f4ed3bd127f33476754aa))
1718
1719#### Improvements
1720
1721*   adds '[SUBCOMMAND]' to usage strings with only AppSettings::AllowExternalSubcommands is used with no other subcommands ([e78bb757](https://github.com/clap-rs/clap/commit/e78bb757a3df16e82d539e450c06767a6bfcf859), closes [#1093](https://github.com/clap-rs/clap/issues/1093))
1722
1723#### API Additions
1724
1725*   Adds Arg::case_insensitive(bool) which allows matching Arg::possible_values without worrying about ASCII case ([1fec268e](https://github.com/clap-rs/clap/commit/1fec268e51736602e38e67c76266f439e2e0ef12), closes [#1118](https://github.com/clap-rs/clap/issues/1118))
1726*   Adds the traits to be used with the clap-derive crate to be able to use Custom Derive ([6f4c3412](https://github.com/clap-rs/clap/commit/6f4c3412415e882f5ca2cc3fbd6d4dce79440828))
1727
1728#### Bug Fixes
1729
1730*   Fixes a regression where --help couldn't be overridden ([a283d69f](https://github.com/clap-rs/clap/commit/a283d69fc08aa016ae1bf9ba010012abecc7ba69), closes [#1112](https://github.com/clap-rs/clap/issues/1112))
1731*   fixes a bug that allowed options to pass parsing when no value was provided ([2fb75821](https://github.com/clap-rs/clap/commit/2fb758219c7a60d639da67692e100b855a8165ac), closes [#1105](https://github.com/clap-rs/clap/issues/1105))
1732*   ignore PropagateGlobalValuesDown deprecation warning ([f61ce3f5](https://github.com/clap-rs/clap/commit/f61ce3f55fe65e16b3db0bd4facdc4575de22767), closes [#1086](https://github.com/clap-rs/clap/issues/1086))
1733
1734#### Deps
1735
1736*  Updates `bitflags` to 1.0
1737
1738
1739
1740## v2.27.1 (2017-10-24)
1741
1742
1743#### Bug Fixes
1744
1745* Adds `term_size` as an optional dependency (with feature `wrap_help`) to fix compile bug
1746
1747## v2.27.0 (2017-10-24)
1748
1749** This release raises the minimum required version of Rust to 1.18 **
1750
1751** This release also contains a very minor breaking change to fix a bug **
1752
1753The only CLIs affected will be those using unrestrained multiple values and subcommands where the
1754subcommand name can coincide with one of the multiple values.
1755
1756See the commit [0c223f54](https://github.com/clap-rs/clap/commit/0c223f54ed46da406bc8b43a5806e0b227863b31) for full details.
1757
1758
1759#### Bug Fixes
1760
1761*   Values from global args are now propagated UP and DOWN!
1762*   fixes a bug where using AppSettings::AllowHyphenValues would allow invalid arguments even when there is no way for them to be valid ([77ed4684](https://github.com/clap-rs/clap/commit/77ed46841fc0263d7aa32fcc5cc49ef703b37c04), closes [#1066](https://github.com/clap-rs/clap/issues/1066))
1763*   when an argument requires a value and that value happens to match a subcommand name, its parsed as a value ([0c223f54](https://github.com/clap-rs/clap/commit/0c223f54ed46da406bc8b43a5806e0b227863b31), closes [#1031](https://github.com/clap-rs/clap/issues/1031), breaks [#](https://github.com/clap-rs/clap/issues/), [#](https://github.com/clap-rs/clap/issues/))
1764*   fixes a bug that prevented number_of_values and default_values to be used together ([5eb342a9](https://github.com/clap-rs/clap/commit/5eb342a99dde07b0f011048efde3e283bc1110fc), closes [#1050](https://github.com/clap-rs/clap/issues/1050), [#1056](https://github.com/clap-rs/clap/issues/1056))
1765*   fixes a bug that didn't allow args with default values to have conflicts ([58b5b4be](https://github.com/clap-rs/clap/commit/58b5b4be315280888d50d9b15119b91a9028f050), closes [#1071](https://github.com/clap-rs/clap/issues/1071))
1766*   fixes a panic when using global args and calling App::get_matches_from_safe_borrow multiple times ([d86ec797](https://github.com/clap-rs/clap/commit/d86ec79742c77eb3f663fb30e225954515cf25bb), closes [#1076](https://github.com/clap-rs/clap/issues/1076))
1767*   fixes issues and potential regressions with global args values not being propagated properly or at all ([a43f9dd4](https://github.com/clap-rs/clap/commit/a43f9dd4aaf1864dd14a3c28dec89ccdd70c61e5), closes [#1010](https://github.com/clap-rs/clap/issues/1010), [#1061](https://github.com/clap-rs/clap/issues/1061), [#978](https://github.com/clap-rs/clap/issues/978))
1768*   fixes a bug where default values are not applied if the option supports zero values ([9c248cbf](https://github.com/clap-rs/clap/commit/9c248cbf7d8a825119bc387c23e9a1d1989682b0), closes [#1047](https://github.com/clap-rs/clap/issues/1047))
1769
1770#### Documentation
1771
1772*   adds additional blurbs about using multiples with subcommands ([03455b77](https://github.com/clap-rs/clap/commit/03455b7751a757e7b2f6ffaf2d16168539c99661))
1773*   updates the docs to reflect changes to global args and that global args values can now be propagated back up the stack ([ead076f0](https://github.com/clap-rs/clap/commit/ead076f03ada4c322bf3e34203925561ec496d87))
1774*   add html_root_url attribute ([e67a061b](https://github.com/clap-rs/clap/commit/e67a061bcf567c6518d6c2f58852e01f02764b22))
1775*   sync README version numbers with crate version ([5536361b](https://github.com/clap-rs/clap/commit/5536361bcda29887ed86bb68e43d0b603cbc423f))
1776
1777#### Improvements
1778
1779*   args that have require_delimiter(true) is now reflected in help and usage strings ([dce61699](https://github.com/clap-rs/clap/commit/dce616998ed9bd95e8ed3bec1f09a4883da47b85), closes [#1052](https://github.com/clap-rs/clap/issues/1052))
1780*   if all subcommands are hidden, the subcommands section of the help message is no longer displayed ([4ae7b046](https://github.com/clap-rs/clap/commit/4ae7b0464750bc07ec80ece38e43f003fdd1b8ae), closes [#1046](https://github.com/clap-rs/clap/issues/1046))
1781
1782#### Breaking Changes
1783
1784*   when an argument requires a value and that value happens to match a subcommand name, its parsed as a value ([0c223f54](https://github.com/clap-rs/clap/commit/0c223f54ed46da406bc8b43a5806e0b227863b31), closes [#1031](https://github.com/clap-rs/clap/issues/1031), breaks [#](https://github.com/clap-rs/clap/issues/), [#](https://github.com/clap-rs/clap/issues/))
1785
1786#### Deprecations
1787
1788* **AppSettings::PropagateGlobalValuesDown:**  this setting is no longer required to propagate values down or up ([2bb5ddce](https://github.com/clap-rs/clap/commit/2bb5ddcee61c791ca1aaca494fbeb4bd5e277488))
1789
1790
1791
1792## v2.26.2 (2017-09-14)
1793
1794
1795#### Improvements
1796
1797*   if all subcommands are hidden, the subcommands section of the help message is no longer displayed ([4ae7b046](https://github.com/clap-rs/clap/commit/4ae7b0464750bc07ec80ece38e43f003fdd1b8ae), closes [#1046](https://github.com/clap-rs/clap/issues/1046))
1798
1799#### Bug Fixes
1800
1801*   fixes a bug where default values are not applied if the option supports zero values ([9c248cbf](https://github.com/clap-rs/clap/commit/9c248cbf7d8a825119bc387c23e9a1d1989682b0), closes [#1047](https://github.com/clap-rs/clap/issues/1047))
1802
1803
1804
1805## v2.26.1 (2017-09-14)
1806
1807
1808#### Bug Fixes
1809
1810*   fixes using require_equals(true) and min_values(0) together ([10ae208f](https://github.com/clap-rs/clap/commit/10ae208f68518eff6e98166724065745f4083174), closes [#1044](https://github.com/clap-rs/clap/issues/1044))
1811*   escape special characters in zsh and fish completions ([87e019fc](https://github.com/clap-rs/clap/commit/87e019fc84ba6193a8c4ddc26c61eb99efffcd25))
1812*   avoid panic generating default help msg if term width set to 0 due to bug in textwrap 0.7.0 ([b3eadb0d](https://github.com/clap-rs/clap/commit/b3eadb0de516106db4e08f078ad32e8f6d6e7a57))
1813*   Change `who's` -> `whose` ([53c1ffe8](https://github.com/clap-rs/clap/commit/53c1ffe87f38b05d8804a0f7832412a952845349))
1814*   adds a debug assertion to ensure all args added to groups actually exist ([7ad123e2](https://github.com/clap-rs/clap/commit/7ad123e2c02577e3ca30f7e205181e896b157d11), closes [#917](https://github.com/clap-rs/clap/issues/917))
1815*   fixes a bug where args that allow values to start with a hyphen couldn't contain a double hyphen -- as a value ([ab2f4c9e](https://github.com/clap-rs/clap/commit/ab2f4c9e563e36ec739a4b55d5a5b76fdb9e9fa4), closes [#960](https://github.com/clap-rs/clap/issues/960))
1816*   fixes a bug where positional argument help text is misaligned ([54c16836](https://github.com/clap-rs/clap/commit/54c16836dea4651806a2cfad53146a83fa3abf21))
1817* **Help Message:**  fixes long_about not being usable ([a8257ea0](https://github.com/clap-rs/clap/commit/a8257ea0ffb812e552aca256c4a3d2aebfd8065b), closes [#1043](https://github.com/clap-rs/clap/issues/1043))
1818* **Suggestions:**  output for flag after subcommand ([434ea5ba](https://github.com/clap-rs/clap/commit/434ea5ba71395d8c1afcf88e69f0b0d8339b01a1))
1819
1820
1821
1822## v2.26.0 (2017-07-29)
1823
1824Minimum version of Rust is now v1.13.0 (Stable)
1825
1826
1827#### Improvements
1828
1829*   bumps unicode-segmentation to v1.2 ([cd7b40a2](https://github.com/clap-rs/clap/commit/cd7b40a21c77bae17ba453c5512cb82b7d1ce474))
1830
1831
1832#### Performance
1833
1834*   update textwrap to version 0.7.0 ([c2d4e637](https://github.com/clap-rs/clap/commit/c2d4e63756a6f070e38c16dff846e9b0a53d6f93))
1835
1836
1837
1838
1839## v2.25.1 (2017-07-21)
1840
1841#### Improvements
1842
1843* impl Default for Values + OsValues for any lifetime. ([fb7d6231f1](https://github.com/clap-rs/clap/commit/fb7d6231f13a2f79f411e62dca210b7dc9994c18))
1844
1845#### Documentation
1846
1847* Various documentation typos and grammar fixes
1848
1849## v2.25.0 (2017-06-20)
1850
1851
1852#### Features
1853
1854*   use textwrap crate for wrapping help texts ([b93870c1](https://github.com/clap-rs/clap/commit/b93870c10ae3bd90d233c586a33e086803117285))
1855
1856#### Improvements
1857
1858* **Suggestions:**  suggests to use flag after subcommand when applicable ([2671ca72](https://github.com/clap-rs/clap/commit/2671ca7260119d4311d21c4075466aafdd9da734))
1859* Bumps bitflags crate to v0.9
1860
1861#### Documentation
1862
1863*   Change `who's` -> `whose` ([53c1ffe8](https://github.com/clap-rs/clap/commit/53c1ffe87f38b05d8804a0f7832412a952845349))
1864
1865#### Documentation
1866
1867* **App::template:**  adds details about the necessity to use AppSettings::UnifiedHelpMessage when using {unified} tags in the help template ([cbea3d5a](https://github.com/clap-rs/clap/commit/cbea3d5acf3271a7a734498c4d99c709941c331e), closes [#949](https://github.com/clap-rs/clap/issues/949))
1868* **Arg::allow_hyphen_values:**  updates the docs to include warnings for allow_hyphen_values and multiple(true) used together ([f9b0d657](https://github.com/clap-rs/clap/commit/f9b0d657835d3f517f313d70962177dc30acf4a7))
1869* **README.md:**
1870  *  added a warning about using ~ deps ([821929b5](https://github.com/clap-rs/clap/commit/821929b51bd60213955705900a436c9a64fcb79f), closes [#964](https://github.com/clap-rs/clap/issues/964))
1871* **clap_app!:**  adds using the @group specifier to the macro docs ([826048cb](https://github.com/clap-rs/clap/commit/826048cb3cbc0280169303f1498ff0a2b7395883), closes [#932](https://github.com/clap-rs/clap/issues/932))
1872
1873
1874
1875## v2.24.2 (2017-05-15)
1876
1877
1878#### Bug Fixes
1879
1880*   adds a debug assertion to ensure all args added to groups actually exist ([14f6b8f3](https://github.com/clap-rs/clap/commit/14f6b8f3a2f6df73aeeec9c54a54909b1acfc158), closes [#917](https://github.com/clap-rs/clap/issues/917))
1881*   fixes a bug where args that allow values to start with a hyphen couldn't contain a double hyphen -- as a value ([ebf73a09](https://github.com/clap-rs/clap/commit/ebf73a09db6f3c03c19cdd76b1ba6113930e1643), closes [#960](https://github.com/clap-rs/clap/issues/960))
1882*   fixes a bug where positional argument help text is misaligned ([54c16836](https://github.com/clap-rs/clap/commit/54c16836dea4651806a2cfad53146a83fa3abf21))
1883
1884#### Documentation
1885
1886* **App::template:**  adds details about the necessity to use AppSettings::UnifiedHelpMessage when using {unified} tags in the help template ([cf569438](https://github.com/clap-rs/clap/commit/cf569438f309c199800bb8e46c9f140187de69d7), closes [#949](https://github.com/clap-rs/clap/issues/949))
1887* **Arg::allow_hyphen_values:**  updates the docs to include warnings for allow_hyphen_values and multiple(true) used together ([ded5a2f1](https://github.com/clap-rs/clap/commit/ded5a2f15474d4a5bd46a67b130ccb8b6781bd01))
1888* **clap_app!:**  adds using the @group specifier to the macro docs ([fe85fcb1](https://github.com/clap-rs/clap/commit/fe85fcb1772b61f13b20b7ea5290e2437a76190c), closes [#932](https://github.com/clap-rs/clap/issues/932))
1889
1890
1891
1892## v2.24.0 (2017-05-07)
1893
1894
1895#### Bug Fixes
1896
1897*   fixes a bug where args with last(true) and required(true) set were not being printed in the usage string ([3ac533fe](https://github.com/clap-rs/clap/commit/3ac533fedabf713943eedf006f830a5a486bbe80), closes [#944](https://github.com/clap-rs/clap/issues/944))
1898*   fixes a bug that was printing the arg name, instead of value name when Arg::last(true) was used ([e1fe8ac3](https://github.com/clap-rs/clap/commit/e1fe8ac3bc1f9cf4e36df0d881f8419755f1787b), closes [#940](https://github.com/clap-rs/clap/issues/940))
1899*   fixes a bug where flags were parsed as flags AND positional values when specific combinations of settings were used ([20f83292](https://github.com/clap-rs/clap/commit/20f83292d070038b8cee2a6b47e91f6b0a2f7871), closes [#946](https://github.com/clap-rs/clap/issues/946))
1900
1901
1902
1903## v2.24.0 (2017-05-05)
1904
1905
1906#### Documentation
1907
1908* **README.md:**  fix some typos ([fa34deac](https://github.com/clap-rs/clap/commit/fa34deac079f334c3af97bb7fb151880ba8887f8))
1909
1910#### API Additions
1911
1912* **Arg:**  add `default_value_os` ([d5ef8955](https://github.com/clap-rs/clap/commit/d5ef8955414b1587060f7218385256105b639c88))
1913* **arg_matches.rs:**  Added a Default implementation for Values and OsValues iterators. ([0a4384e3](https://github.com/clap-rs/clap/commit/0a4384e350eed74c2a4dc8964c203f21ac64897f))
1914
1915
1916## v2.23.2 (2017-04-19)
1917
1918
1919#### Bug Fixes
1920
1921* **PowerShell Completions:**  fixes a bug where powershells completions cant be used if no subcommands are defined ([a8bce558](https://github.com/clap-rs/clap/commit/a8bce55837dc4e0fb187dc93180884a40ae09c6f), closes [#931](https://github.com/clap-rs/clap/issues/931))
1922
1923#### Improvements
1924
1925*   bumps term_size to take advantage of better terminal dimension handling ([e05100b7](https://github.com/clap-rs/clap/commit/e05100b73d74066a90876bf38f952adf5e8ee422))
1926* **PowerShell Completions:**  massively dedups subcommand names in the generate script to make smaller scripts that are still functionally equiv ([85b0e1cc](https://github.com/clap-rs/clap/commit/85b0e1cc4b9755dda75a93d898d79bc38631552b))
1927
1928#### Documentation
1929
1930*   Fix a typo the minimum rust version required ([71dabba3](https://github.com/clap-rs/clap/commit/71dabba3ea0a17c88b0e2199c9d99f0acbf3bc17))
1931
1932## v2.23.1 (2017-04-05)
1933
1934
1935#### Bug Fixes
1936
1937*   fixes a missing newline character in the autogenerated help and version messages in some instances ([5ae9007d](https://github.com/clap-rs/clap/commit/5ae9007d984ae94ae2752df51bcbaeb0ec89bc15))
1938
1939
1940## v2.23.0 (2017-04-05)
1941
1942
1943#### API Additions
1944
1945* `App::long_about`
1946* `App::long_version`
1947* `App::print_long_help`
1948* `App::write_long_help`
1949* `App::print_long_version`
1950* `App::write_long_version`
1951* `Arg::long_help`
1952
1953#### Features
1954
1955*   allows distinguishing between short and long version messages (-V/short or --version/long) ([59272b06](https://github.com/clap-rs/clap/commit/59272b06cc213289dc604dbc694cb95d383a5d68))
1956*   allows distinguishing between short and long help with subcommands in the same manner as args ([6b371891](https://github.com/clap-rs/clap/commit/6b371891a1702173a849d1e95f9fecb168bf6fc4))
1957*   allows specifying a short help vs a long help (i.e. varying levels of detail depending on if -h or --help was used) ([ef1b24c3](https://github.com/clap-rs/clap/commit/ef1b24c3a0dff2f58c5e2e90880fbc2b69df20ee))
1958* **clap_app!:**  adds support for arg names with hyphens similar to longs with hyphens ([f7a88779](https://github.com/clap-rs/clap/commit/f7a8877978c8f90e6543d4f0d9600c086cf92cd7), closes [#869](https://github.com/clap-rs/clap/issues/869))
1959
1960#### Bug Fixes
1961
1962*   fixes a bug that wasn't allowing help and version to be properly overridden ([8b2ceb83](https://github.com/clap-rs/clap/commit/8b2ceb8368bcb70689fadf1c7f4b9549184926c1), closes [#922](https://github.com/clap-rs/clap/issues/922))
1963
1964#### Documentation
1965
1966* **clap_app!:**  documents the `--("some-arg")` method for using args with hyphens inside them ([bc08ef3e](https://github.com/clap-rs/clap/commit/bc08ef3e185393073d969d301989b6319c616c1f), closes [#919](https://github.com/clap-rs/clap/issues/919))
1967
1968
1969
1970## v2.22.2 (2017-03-30)
1971
1972
1973#### Bug Fixes
1974
1975* **Custom Usage Strings:**  fixes the usage string regression when using help templates ([0e4fd96d](https://github.com/clap-rs/clap/commit/0e4fd96d74280d306d09e60ac44f938a82321769))
1976
1977
1978
1979## v2.22.1 (2017-03-24)
1980
1981
1982#### Bug Fixes
1983
1984* **usage:**  fixes a big regression with custom usage strings ([2c41caba](https://github.com/clap-rs/clap/commit/2c41caba3c7d723a2894e315d04da796b0e97759))
1985
1986## v2.22.0 (2017-03-23)
1987
1988#### API Additions
1989
1990* **App::name:**  adds the ability to change the name of the App instance after creation ([d49e8292](https://github.com/clap-rs/clap/commit/d49e8292b026b06e2b70447cd9f08299f4fcba76), closes [#908](https://github.com/clap-rs/clap/issues/908))
1991* **Arg::hide_default_value:**  adds ability to hide the default value of an argument from the help string ([89e6ea86](https://github.com/clap-rs/clap/commit/89e6ea861e16a1ad56757ca12f6b32d02253e44a), closes [#902](https://github.com/clap-rs/clap/issues/902))
1992
1993
1994## v2.21.3 (2017-03-23)
1995
1996#### Bug Fixes
1997
1998* **yaml:**  adds support for loading author info from yaml ([e04c390c](https://github.com/clap-rs/clap/commit/e04c390c597a55fa27e724050342f16c42f1c5c9))
1999
2000
2001## v2.21.2 (2017-03-17)
2002
2003
2004#### Improvements
2005
2006*   add fish subcommand help support ([f8f68cf8](https://github.com/clap-rs/clap/commit/f8f68cf8251669aef4539a25a7c1166f0ac81ea6))
2007*   options that use `require_equals(true)` now display the equals sign in help messages, usage strings, and errors" ([c8eb0384](https://github.com/clap-rs/clap/commit/c8eb0384d394d2900ccdc1593099c97808a3fa05), closes [#903](https://github.com/clap-rs/clap/issues/903))
2008
2009
2010#### Bug Fixes
2011
2012*  setting the max term width now correctly propagates down through child subcommands
2013
2014
2015
2016## v2.21.1 (2017-03-12)
2017
2018
2019#### Bug Fixes
2020
2021* **ArgRequiredElseHelp:**  fixes the precedence of this error to prioritize over other error messages ([74b751ff](https://github.com/clap-rs/clap/commit/74b751ff2e3631e337b7946347c1119829a41c53), closes [#895](https://github.com/clap-rs/clap/issues/895))
2022* **Positionals:**  fixes some regression bugs resulting from old asserts in debug mode. ([9a3bc98e](https://github.com/clap-rs/clap/commit/9a3bc98e9b55e7514b74b73374c5ac8b6e5e0508), closes [#896](https://github.com/clap-rs/clap/issues/896))
2023
2024
2025
2026## v2.21.0 (2017-03-09)
2027
2028#### Performance
2029
2030*   doesn't run `arg_post_processing` on multiple values anymore ([ec516182](https://github.com/clap-rs/clap/commit/ec5161828729f6a53f0fccec8648f71697f01f78))
2031*   changes internal use of `VecMap` to `Vec` for matched values of `Arg`s ([22bf137a](https://github.com/clap-rs/clap/commit/22bf137ac581684c6ed460d2c3c640c503d62621))
2032*   vastly reduces the amount of cloning when adding non-global args minus when they're added from `App::args` which is forced to clone ([8da0303b](https://github.com/clap-rs/clap/commit/8da0303bc02db5fe047cfc0631a9da41d9dc60f7))
2033*   refactor to remove unneeded vectors and allocations and checks for significant performance increases ([0efa4119](https://github.com/clap-rs/clap/commit/0efa4119632f134fc5b8b9695b007dd94b76735d))
2034
2035#### Documentation
2036
2037*   Fix examples link in CONTRIBUTING.md ([60cf875d](https://github.com/clap-rs/clap/commit/60cf875d67a252e19bb85054be57696fac2c57a1))
2038
2039#### Improvements
2040
2041*   when `AppSettings::SubcommandsNegateReqs` and `ArgsNegateSubcommands` are used, a new more accurate double line usage string is shown ([50f02300](https://github.com/clap-rs/clap/commit/50f02300d81788817acefef0697e157e01b6ca32), closes [#871](https://github.com/clap-rs/clap/issues/871))
2042
2043#### API Additions
2044
2045* **Arg::last:**  adds the ability to mark a positional argument as 'last' which means it should be used with `--` syntax and can be accessed early ([6a7aea90](https://github.com/clap-rs/clap/commit/6a7aea9043b83badd9ab038b4ecc4c787716147e), closes [#888](https://github.com/clap-rs/clap/issues/888))
2046*   provides `default_value_os` and `default_value_if[s]_os` ([0f2a3782](https://github.com/clap-rs/clap/commit/0f2a378219a6930748d178ba350fe5925be5dad5), closes [#849](https://github.com/clap-rs/clap/issues/849))
2047*   provides `App::help_message` and `App::version_message` which allows one to override the auto-generated help/version flag associated help ([389c413](https://github.com/clap-rs/clap/commit/389c413b7023dccab8c76aa00577ea1d048e7a99), closes [#889](https://github.com/clap-rs/clap/issues/889))
2048
2049#### New Settings
2050
2051* **InferSubcommands:**  adds a setting to allow one to infer shortened subcommands or aliases (i.e. for subcommmand "test", "t", "te", or "tes" would be allowed assuming no other ambiguities) ([11602032](https://github.com/clap-rs/clap/commit/11602032f6ff05881e3adf130356e37d5e66e8f9), closes [#863](https://github.com/clap-rs/clap/issues/863))
2052
2053#### Bug Fixes
2054
2055*   doesn't print the argument sections in the help message if all args in that section are hidden ([ce5ee5f5](https://github.com/clap-rs/clap/commit/ce5ee5f5a76f838104aeddd01c8ec956dd347f50))
2056*   doesn't include the various [ARGS] [FLAGS] or [OPTIONS] if the only ones available are hidden ([7b4000af](https://github.com/clap-rs/clap/commit/7b4000af97637703645c5fb2ac8bb65bd546b95b), closes [#882](https://github.com/clap-rs/clap/issues/882))
2057*   now correctly shows subcommand as required in the usage string when AppSettings::SubcommandRequiredElseHelp is used ([8f0884c1](https://github.com/clap-rs/clap/commit/8f0884c1764983a49b45de52a1eddf8d721564d8))
2058*   fixes some memory leaks when an error is detected and clap exits ([8c2dd287](https://github.com/clap-rs/clap/commit/8c2dd28718262ace4ae0db98563809548e02a86b))
2059*   fixes a trait that's marked private accidentally, but should be crate internal public ([1ae21108](https://github.com/clap-rs/clap/commit/1ae21108015cea87e5360402e1747025116c7878))
2060* **Completions:**   fixes a bug that tried to propagate global args multiple times when generating multiple completion scripts ([5e9b9cf4](https://github.com/clap-rs/clap/commit/5e9b9cf4dd80fa66a624374fd04e6545635c1f94), closes [#846](https://github.com/clap-rs/clap/issues/846))
2061
2062#### Features
2063
2064* **Options:**  adds the ability to require the equals syntax with options --opt=val ([f002693d](https://github.com/clap-rs/clap/commit/f002693dec6a6959c4e9590cb7b7bfffd6d6e5bc), closes [#833](https://github.com/clap-rs/clap/issues/833))
2065
2066
2067
2068## v2.20.5 (2017-02-18)
2069
2070
2071#### Bug Fixes
2072
2073* **clap_app!:**   fixes a critical bug of a missing fragment specifier when using `!property` style tags. ([5635c1f94](https://github.com/clap-rs/clap/commit/5e9b9cf4dd80fa66a624374fd04e6545635c1f94))
2074
2075
2076## v2.20.4 (2017-02-15)
2077
2078
2079#### Bug Fixes
2080
2081* **Completions:**   fixes a bug that tried to propagate global args multiple times when generating multiple completion scripts ([5e9b9cf4](https://github.com/clap-rs/clap/commit/5e9b9cf4dd80fa66a624374fd04e6545635c1f94), closes [#846](https://github.com/clap-rs/clap/issues/846))
2082
2083#### Documentation
2084
2085*   Fix examples link in CONTRIBUTING.md ([60cf875d](https://github.com/clap-rs/clap/commit/60cf875d67a252e19bb85054be57696fac2c57a1))
2086
2087
2088## v2.20.3 (2017-02-03)
2089
2090
2091#### Documentation
2092
2093* **Macros:**  adds a warning about changing values in Cargo.toml not triggering a rebuild automatically ([112aea3e](https://github.com/clap-rs/clap/commit/112aea3e42ae9e0c0a2d33ebad89496dbdd95e5d), closes [#838](https://github.com/clap-rs/clap/issues/838))
2094
2095#### Bug Fixes
2096
2097*   fixes a println->debugln typo ([279aa62e](https://github.com/clap-rs/clap/commit/279aa62eaf08f56ce090ba16b937bc763cbb45be))
2098*   fixes bash completions for commands that have an underscore in the name ([7f5cfa72](https://github.com/clap-rs/clap/commit/7f5cfa724f0ac4e098f5fe466c903febddb2d994), closes [#581](https://github.com/clap-rs/clap/issues/581))
2099*   fixes a bug where ZSH completions would panic if the binary name had an underscore in it ([891a2a00](https://github.com/clap-rs/clap/commit/891a2a006f775e92c556dda48bb32fac9807c4fb), closes [#581](https://github.com/clap-rs/clap/issues/581))
2100*   allow final word to be wrapped in wrap_help ([564c5f0f](https://github.com/clap-rs/clap/commit/564c5f0f1730f4a2c1cdd128664f1a981c31dcd4), closes [#828](https://github.com/clap-rs/clap/issues/828))
2101* fixes a bug where global args weren't included in the generated completion scripts ([9a1e006e](https://github.com/clap-rs/clap/commit/9a1e006eb75ad5a6057ebd119aa90f7e06c0ace8), closes [#841](https://github.com/clap-rs/clap/issues/841))
2102
2103
2104
2105## v2.20.2 (2017-02-03)
2106
2107#### Bug Fixes
2108
2109*   fixes a critical bug where subcommand settings were being propagated too far ([74648c94](https://github.com/clap-rs/clap/commit/74648c94b893df542bfa5bb595e68c7bb8167e36), closes [#832](https://github.com/clap-rs/clap/issues/832))
2110
2111
2112#### Improvements
2113
2114*   adds ArgGroup::multiple to the supported YAML fields for building ArgGroups from YAML ([d8590037](https://github.com/clap-rs/clap/commit/d8590037ce07dafd8cd5b26928aa4a9fd3018288), closes [#840](https://github.com/clap-rs/clap/issues/840))
2115
2116## v2.20.1 (2017-01-31)
2117
2118#### Bug Fixes
2119
2120*   allow final word to be wrapped in wrap_help ([564c5f0f](https://github.com/clap-rs/clap/commit/564c5f0f1730f4a2c1cdd128664f1a981c31dcd4), closes [#828](https://github.com/clap-rs/clap/issues/828))
2121*   actually show character in debug output ([84d8c547](https://github.com/clap-rs/clap/commit/84d8c5476de95b7f37d61888bc4f13688b712434))
2122*   include final character in line length ([aff4ba18](https://github.com/clap-rs/clap/commit/aff4ba18da8147e1259b04b0bfbc1fcb5c78a3c0))
2123
2124#### Improvements
2125
2126*   updates libc and term_size deps for the libc version conflict ([6802ac4a](https://github.com/clap-rs/clap/commit/6802ac4a59c142cda9ec55ca0c45ae5cb9a6ab55))
2127
2128#### Documentation
2129
2130*   fix link from app_from_crate! to crate_authors! (#822) ([5b29be9b](https://github.com/clap-rs/clap/commit/5b29be9b073330ab1f7227cdd19fe4aab39d5dcb))
2131*   fix spelling of "guaranteed" ([4f30a65b](https://github.com/clap-rs/clap/commit/4f30a65b9c03eb09607eb91a929a6396637dc105))
2132
2133
2134#### New Settings
2135
2136* **ArgsNegateSubcommands:**  disables args being allowed between subcommands ([5e2af8c9](https://github.com/clap-rs/clap/commit/5e2af8c96adb5ab75fa2d1536237ebcb41869494), closes [#793](https://github.com/clap-rs/clap/issues/793))
2137* **DontCollapseArgsInUsage:** disables the collapsing of positional args into `[ARGS]` in the usage string  ([c2978afc](https://github.com/clap-rs/clap/commit/c2978afc61fb46d5263ab3b2d87ecde1c9ce1553), closes [#769](https://github.com/clap-rs/clap/issues/769))
2138* **DisableHelpSubcommand:**  disables building the `help` subcommand  ([a10fc859](https://github.com/clap-rs/clap/commit/a10fc859ee20159fbd9ff4337be59b76467a64f2))
2139* **AllowMissingPositional:**  allows one to implement `$ prog [optional] <required>` style CLIs where the second positional argument is required, but the first is optional ([1110fdc7](https://github.com/clap-rs/clap/commit/1110fdc7a345c108820dc45783a9bf893fa4c214), closes [#636](https://github.com/clap-rs/clap/issues/636))
2140* **PropagateGlobalValuesDown:**  automatically propagats global arg's values down through *used* subcommands ([985536c8](https://github.com/clap-rs/clap/commit/985536c8ebcc09af98aac835f42a8072ad58c262), closes [#694](https://github.com/clap-rs/clap/issues/694))
2141
2142#### API Additions
2143
2144##### Arg
2145
2146* **Arg::value_terminator:**  adds the ability to terminate multiple values with a given string or char ([be64ce0c](https://github.com/clap-rs/clap/commit/be64ce0c373efc106384baca3f487ea99fe7b8cf), closes [#782](https://github.com/clap-rs/clap/issues/782))
2147* **Arg::default_value_if[s]:**  adds new methods for *conditional* default values (such as a particular value from another argument was used) ([eb4010e7](https://github.com/clap-rs/clap/commit/eb4010e7b21724447ef837db11ac441915728f22))
2148* **Arg::requires_if[s]:**  adds the ability to *conditionally* require additional args (such as if a particular value was used) ([198449d6](https://github.com/clap-rs/clap/commit/198449d64393c265f0bc327aaeac23ec4bb97226))
2149* **Arg::required_if[s]:**  adds the ability for an arg to be *conditionally* required (i.e. "arg X is only required if arg Y was used with value Z") ([ee9cfddf](https://github.com/clap-rs/clap/commit/ee9cfddf345a6b5ae2af42ba72aa5c89e2ca7f59))
2150* **Arg::validator_os:**  adds ability to validate values which may contain invalid UTF-8 ([47232498](https://github.com/clap-rs/clap/commit/47232498a813db4f3366ccd3e9faf0bff56433a4))
2151
2152##### Macros
2153
2154* **crate_description!:** Uses the `Cargo.toml` description field to fill in the `App::about` method at compile time ([4d9a82db](https://github.com/clap-rs/clap/commit/4d9a82db8e875e9b64a9c2a5c6e22c25afc1279d), closes [#778](https://github.com/clap-rs/clap/issues/778))
2155* **crate_name!:** Uses the `Cargo.toml` name field to fill in the `App::new` method at compile time ([4d9a82db](https://github.com/clap-rs/clap/commit/4d9a82db8e875e9b64a9c2a5c6e22c25afc1279d), closes [#778](https://github.com/clap-rs/clap/issues/778))
2156* **app_from_crate!:** Combines `crate_version!`, `crate_name!`, `crate_description!`, and `crate_authors!` into a single macro call to build a default `App` instance from the `Cargo.toml` fields ([4d9a82db](https://github.com/clap-rs/clap/commit/4d9a82db8e875e9b64a9c2a5c6e22c25afc1279d), closes [#778](https://github.com/clap-rs/clap/issues/778))
2157
2158
2159#### Features
2160
2161* **no_cargo:**  adds a `no_cargo` feature to disable Cargo-env-var-dependent macros for those *not* using `cargo` to build their crates (#786) ([6fdd2f9d](https://github.com/clap-rs/clap/commit/6fdd2f9d693aaf1118fc61bd362273950703f43d))
2162
2163#### Bug Fixes
2164
2165* **Options:**  fixes a critical bug where options weren't forced to have a value ([5a5f2b1e](https://github.com/clap-rs/clap/commit/5a5f2b1e9f598a0d0280ef3e98abbbba2bc41132), closes [#665](https://github.com/clap-rs/clap/issues/665))
2166*   fixes a bug where calling the help of a subcommand wasn't ignoring required args of parent commands ([d3d34a2b](https://github.com/clap-rs/clap/commit/d3d34a2b51ef31004055b0ab574f766d801c3adf), closes [#789](https://github.com/clap-rs/clap/issues/789))
2167* **Help Subcommand:**  fixes a bug where the help subcommand couldn't be overridden ([d34ec3e0](https://github.com/clap-rs/clap/commit/d34ec3e032d03e402d8e87af9b2942fe2819b2da), closes [#787](https://github.com/clap-rs/clap/issues/787))
2168* **Low Index Multiples:**  fixes a bug which caused combinations of LowIndexMultiples and `Arg::allow_hyphen_values` to fail parsing ([26c670ca](https://github.com/clap-rs/clap/commit/26c670ca16d2c80dc26d5c1ce83380ace6357318))
2169
2170#### Improvements
2171
2172* **Default Values:**  improves the error message when default values are involved ([1f33de54](https://github.com/clap-rs/clap/commit/1f33de545036e7fd2f80faba251fca009bd519b8), closes [#774](https://github.com/clap-rs/clap/issues/774))
2173* **YAML:**  adds conditional requirements and conditional default values to YAML ([9a4df327](https://github.com/clap-rs/clap/commit/9a4df327893486adb5558ffefba790c634ccdc6e), closes [#764](https://github.com/clap-rs/clap/issues/764))
2174*  Support `--("some-arg-name")` syntax for defining long arg names when using `clap_app!` macro ([f41ec962](https://github.com/clap-rs/clap/commit/f41ec962c243a5ffff8b1be1ae2ad63970d3d1d4))
2175*  Support `("some app name")` syntax for defining app names when using `clap_app!` macro ([9895b671](https://github.com/clap-rs/clap/commit/9895b671cff784f35cf56abcd8270f7c2ba09699), closes [#759](https://github.com/clap-rs/clap/issues/759))
2176* **Help Wrapping:**  long app names (with spaces), authors, and descriptions are now wrapped appropriately ([ad4691b7](https://github.com/clap-rs/clap/commit/ad4691b71a63e951ace346318238d8834e04ad8a), closes [#777](https://github.com/clap-rs/clap/issues/777))
2177
2178
2179#### Documentation
2180
2181* **Conditional Default Values:**  fixes the failing doc tests of Arg::default_value_ifs ([4ef09101](https://github.com/clap-rs/clap/commit/4ef091019c083b4db1a0c13f1c1e95ac363259f2))
2182* **Conditional Requirements:**  adds docs for Arg::requires_ifs ([7f296e29](https://github.com/clap-rs/clap/commit/7f296e29db7d9036e76e5dbcc9c8b20dfe7b25bd))
2183* **README.md:**  fix some typos ([f22c21b4](https://github.com/clap-rs/clap/commit/f22c21b422d5b287d1a1ac183a379ee02eebf54f))
2184* **src/app/mod.rs:**  fix some typos ([5c9b0d47](https://github.com/clap-rs/clap/commit/5c9b0d47ca78dea285c5b9dec79063d24c3e451a))
2185
2186## v2.19.3 (2016-12-28)
2187
2188
2189#### Bug Fixes
2190
2191*   fixes a bug where calling the help of a subcommand wasn't ignoring required args of parent commands ([a0ee4993](https://github.com/clap-rs/clap/commit/a0ee4993015ea97b06b5bc9f378d8bcb18f1c51c), closes [#789](https://github.com/clap-rs/clap/issues/789))
2192
2193
2194
2195## v2.19.2 (2016-12-08)
2196
2197#### Bug Fixes
2198
2199* **ZSH Completions:**  escapes square brackets in ZSH completions ([7e17d5a3](https://github.com/clap-rs/clap/commit/7e17d5a36b2cc2cc77e7b15796b14d639ed3cbf7), closes [#771](https://github.com/clap-rs/clap/issues/771))
2200
2201#### Documentation
2202
2203* **Examples:**  adds subcommand examples ([0e0f3354](https://github.com/clap-rs/clap/commit/0e0f33547a6901425afc1d9fbe19f7ae3832d9a4), closes [#766](https://github.com/clap-rs/clap/issues/766))
2204* **README.md:**  adds guidance on when to use ~ in version pinning, and clarifies breaking change policy ([591eaefc](https://github.com/clap-rs/clap/commit/591eaefc7319142ba921130e502bb0729feed907), closes [#765](https://github.com/clap-rs/clap/issues/765))
2205
2206
2207
2208## v2.19.1 (2016-12-01)
2209
2210
2211#### Bug Fixes
2212
2213* **Help Messages:**  fixes help message alignment when specific settings are used on options ([cd94b318](https://github.com/clap-rs/clap/commit/cd94b3188d63b63295a319e90e826bca46befcd2), closes [#760](https://github.com/clap-rs/clap/issues/760))
2214
2215#### Improvements
2216
2217* **Bash Completion:**  allows bash completion to fall back to traditional bash completion upon no matching completing function ([b1b16d56](https://github.com/clap-rs/clap/commit/b1b16d56d8fddf819bdbe24b3724bb6a9f3fa613)))
2218
2219
2220## v2.19.0 (2016-11-21)
2221
2222#### Features
2223
2224*   allows specifying AllowLeadingHyphen style values, but only for specific args vice command wide ([c0d70feb](https://github.com/clap-rs/clap/commit/c0d70febad9996a77a54107054daf1914c50d4ef), closes [#742](https://github.com/clap-rs/clap/issues/742))
2225
2226#### Bug Fixes
2227
2228* **Required Unless:**  fixes a bug where having required_unless set doesn't work when conflicts are also set ([d20331b6](https://github.com/clap-rs/clap/commit/d20331b6f7940ac3a4e919999f8bb4780875125d), closes [#753](https://github.com/clap-rs/clap/issues/753))
2229* **ZSH Completions:**  fixes an issue where zsh completions caused panics if there were no subcommands ([49e7cdab](https://github.com/clap-rs/clap/commit/49e7cdab76dd1ccc07221e360f07808ec62648aa), closes [#754](https://github.com/clap-rs/clap/issues/754))
2230
2231#### Improvements
2232
2233* **Validators:**  improves the error messages for validators ([65eb3385](https://github.com/clap-rs/clap/commit/65eb33859d3ff53e7d3277f02a9d3fd9038a9dfb), closes [#744](https://github.com/clap-rs/clap/issues/744))
2234
2235#### Documentation
2236
2237*   updates the docs landing page ([01e1e33f](https://github.com/clap-rs/clap/commit/01e1e33f377934099a4a725fab5cd6c5ff50eaa2))
2238*   adds the macro version back to the readme ([45eb9bf1](https://github.com/clap-rs/clap/commit/45eb9bf130329c3f3853aba0342c2fe3c64ff80f))
2239*   fix broken docs links ([808e7cee](https://github.com/clap-rs/clap/commit/808e7ceeb86d4a319bdc270f51c23a64621dbfb3))
2240* **Compatibility Policy:**  adds an official compatibility policy to ([760d66dc](https://github.com/clap-rs/clap/commit/760d66dc17310b357f257776624151da933cd25d), closes [#740](https://github.com/clap-rs/clap/issues/740))
2241* **Contributing:**  updates the readme to improve the readability and contributing sections ([eb51316c](https://github.com/clap-rs/clap/commit/eb51316cdfdc7258d287ba13b67ef2f42bd2b8f6))
2242
2243## v2.18.0 (2016-11-05)
2244
2245
2246#### Features
2247
2248* **Completions:**  adds completion support for PowerShell. ([cff82c88](https://github.com/clap-rs/clap/commit/cff82c880e21064fca63351507b80350df6caadf), closes [#729](https://github.com/clap-rs/clap/issues/729))
2249
2250
2251
2252## v2.17.1 (2016-11-02)
2253
2254
2255#### Bug Fixes
2256
2257* **Low Index Multiples:**  fixes a bug where using low index multiples was propagated to subcommands ([33924e88](https://github.com/clap-rs/clap/commit/33924e884461983c4e6b5ea1330fecc769a4ade7), closes [#725](https://github.com/clap-rs/clap/issues/725))
2258
2259
2260
2261## v2.17.0 (2016-11-01)
2262
2263
2264#### Features
2265
2266* **Positional Args:**  allows specifying the second to last positional argument as multiple(true) ([1ced2a74](https://github.com/clap-rs/clap/commit/1ced2a7433ea8937a1b260ea65d708f32ca7c95e), closes [#725](https://github.com/clap-rs/clap/issues/725))
2267
2268
2269
2270## v2.16.4 (2016-10-31)
2271
2272
2273#### Improvements
2274
2275* **Error Output:**  conflicting errors are now symmetrical, meaning more consistent and less confusing ([3d37001d](https://github.com/clap-rs/clap/commit/3d37001d1dc647d73cc597ff172f1072d4beb80d), closes [#718](https://github.com/clap-rs/clap/issues/718))
2276
2277#### Documentation
2278
2279*   Fix typo in example `13a_enum_values_automatic` ([c22fbc07](https://github.com/clap-rs/clap/commit/c22fbc07356e556ffb5d1a79ec04597d149b915e))
2280* **README.md:**  fixes failing yaml example (#715) ([21fba9e6](https://github.com/clap-rs/clap/commit/21fba9e6cd8c163012999cd0ce271ec8780c5695))
2281
2282#### Bug Fixes
2283
2284* **ZSH Completions:**  fixes bug that caused panic on subcommands with aliases ([5c70e1a0](https://github.com/clap-rs/clap/commit/5c70e1a01bc977e44c10015d18bb8e215c32dfc8), closes [#714](https://github.com/clap-rs/clap/issues/714))
2285* **debug:**  fixes the debug feature (#716) ([6c11ccf4](https://github.com/clap-rs/clap/commit/6c11ccf443d46258d51f7cda33fbcc81e7fe8e90))
2286
2287
2288
2289## v2.16.3 (2016-10-28)
2290
2291
2292#### Bug Fixes
2293
2294*   Derive display order after propagation ([9cb6facf](https://github.com/clap-rs/clap/commit/9cb6facf507aff7cddd124b8c29714d2b0e7bd13), closes [#706](https://github.com/clap-rs/clap/issues/706))
2295* **yaml-example:**  inconsistent args ([847f7199](https://github.com/clap-rs/clap/commit/847f7199219ead5065561d91d64780d99ae4b587))
2296
2297
2298
2299## v2.16.2 (2016-10-25)
2300
2301
2302#### Bug Fixes
2303
2304* **Fish Completions:**  fixes a bug where single quotes are not escaped ([780b4a18](https://github.com/clap-rs/clap/commit/780b4a18281b6f7f7071e1b9db2290fae653c406), closes [#704](https://github.com/clap-rs/clap/issues/704))
2305
2306
2307## v2.16.1 (2016-10-24)
2308
2309
2310#### Bug Fixes
2311
2312* **Help Message:**  fixes a regression bug where args with multiple(true) threw off alignment ([ebddac79](https://github.com/clap-rs/clap/commit/ebddac791f3ceac193d5ad833b4b734b9643a7af), closes [#702](https://github.com/clap-rs/clap/issues/702))
2313
2314
2315
2316## v2.16.0 (2016-10-23)
2317
2318
2319#### Features
2320
2321* **Completions:**  adds ZSH completion support ([3e36b0ba](https://github.com/clap-rs/clap/commit/3e36b0bac491d3f6194aee14604caf7be26b3d56), closes [#699](https://github.com/clap-rs/clap/issues/699))
2322
2323
2324
2325## v2.15.0 (2016-10-21)
2326
2327
2328#### Features
2329
2330* **AppSettings:**  adds new setting `AppSettings::AllowNegativeNumbers` ([ab064546](https://github.com/clap-rs/clap/commit/ab06454677fb6aa9b9f804644fcca2168b1eaee3), closes [#696](https://github.com/clap-rs/clap/issues/696))
2331
2332#### Documentation
2333
2334* **app/settings.rs:**  moves variants to roughly alphabetical order ([9ed4d4d7](https://github.com/clap-rs/clap/commit/9ed4d4d7957a23357aef60081e45639ab9e3905f))
2335
2336
2337## v2.14.1 (2016-10-20)
2338
2339
2340#### Documentation
2341
2342*   Improve documentation around features ([4ee85b95](https://github.com/clap-rs/clap/commit/4ee85b95d2d16708a016a3ba4e6e2c93b89b7fad))
2343*   reword docs for ErrorKind and app::Settings ([3ccde7a4](https://github.com/clap-rs/clap/commit/3ccde7a4b8f7a2ea8b916a5415c04a8ff4b5cb7a))
2344*   fix tests that fail when the "suggestions" feature is disabled ([996fc381](https://github.com/clap-rs/clap/commit/996fc381763a48d125c7ea8a58fed057fd0b4ac6))
2345*   fix the OsString-using doc-tests ([af9e1a39](https://github.com/clap-rs/clap/commit/af9e1a393ce6cdda46a03c8a4f48df222b015a24))
2346*   tag non-rust code blocks as such instead of ignoring them ([0ba9f4b1](https://github.com/clap-rs/clap/commit/0ba9f4b123f281952581b6dec948f7e51dd22890))
2347* **ErrorKind:**  improve some errors about subcommands ([9f6217a4](https://github.com/clap-rs/clap/commit/9f6217a424da823343d7b801b9c350dee3cd1906))
2348* **yaml:**  make sure the doc-tests don't fail before "missing file" ([8c0f5551](https://github.com/clap-rs/clap/commit/8c0f55516f4910c78c9f8a2bdbd822729574f95b))
2349
2350#### Improvements
2351
2352*   Stabilize clap_app! ([cd516006](https://github.com/clap-rs/clap/commit/cd516006e35c37b005f329338560a0a53d1f3e00))
2353* **with_defaults:**  Deprecate App::with_defaults() ([26085409](https://github.com/clap-rs/clap/commit/2608540940c8bb66e517b65706bc7dea55510682), closes [#638](https://github.com/clap-rs/clap/issues/638))
2354
2355#### Bug Fixes
2356
2357*   fixes a bug that made determining when to auto-wrap long help messages inconsistent ([468baadb](https://github.com/clap-rs/clap/commit/468baadb8398fc1d37897b0c49374aef4cf97dca), closes [#688](https://github.com/clap-rs/clap/issues/688))
2358* **Completions:**  fish completions for nested subcommands ([a61eaf8a](https://github.com/clap-rs/clap/commit/a61eaf8aade76cfe90ccc0f7125751ebf60e3254))
2359* **features:**  Make lints not enable other nightly-requiring features ([835f75e3](https://github.com/clap-rs/clap/commit/835f75e3ba20999117363ed9f916464d777f36ef))
2360
2361
2362
2363## v2.14.0 (2016-10-05)
2364
2365
2366#### Features
2367
2368* **arg_aliases:**  Ability to alias arguments ([33b5f6ef](https://github.com/clap-rs/clap/commit/33b5f6ef2c9612ecabb31f96b824793e46bfd3dd), closes [#669](https://github.com/clap-rs/clap/issues/669))
2369* **flag_aliases:**  Ability to alias flags ([40d6dac9](https://github.com/clap-rs/clap/commit/40d6dac973927dded6ab423481634ef47ee7bfd7))
2370
2371#### Bug Fixes
2372
2373* **UsageParser:**  Handle non-ascii names / options. ([1d6a7c6e](https://github.com/clap-rs/clap/commit/1d6a7c6e7e6aadc527346aa822f19d8587f714f3), closes [#664](https://github.com/clap-rs/clap/issues/664))
2374
2375#### Documentation
2376
2377*   typo ([bac417fa](https://github.com/clap-rs/clap/commit/bac417fa1cea3d32308334c7cccfcf54546cd9d8))
2378
2379
2380## v2.13.0 (2016-09-18)
2381
2382
2383#### Documentation
2384
2385*   updates README.md with new website information and updated video tutorials info ([0c19c580](https://github.com/clap-rs/clap/commit/0c19c580cf50f1b82ff32f70b36708ae2bcac132))
2386*   updates the docs about removing implicit value_delimiter(true) ([c81bc722](https://github.com/clap-rs/clap/commit/c81bc722ebb8a86d22be89b5aec98df9fe222a08))
2387* **Default Values:**  adds better examples on using default values ([57a8d9ab](https://github.com/clap-rs/clap/commit/57a8d9abb2f973c235a8a14f8fc031673d7a7460), closes [#418](https://github.com/clap-rs/clap/issues/418))
2388
2389#### Bug Fixes
2390
2391* **Value Delimiters:**  fixes the confusion around implicitly setting value delimiters. (default is now `false`) ([09d4d0a9](https://github.com/clap-rs/clap/commit/09d4d0a9038d7ce2df55c2aec95e16f36189fcee), closes [#666](https://github.com/clap-rs/clap/issues/666))
2392
2393
2394
2395## v2.12.1 (2016-09-13)
2396
2397
2398#### Bug Fixes
2399
2400* **Help Wrapping:**  fixes a regression-bug where the old {n} newline char stopped working ([92ac353b](https://github.com/clap-rs/clap/commit/92ac353b48b7caa2511ad2a046d94da93c236cf6), closes [#661](https://github.com/clap-rs/clap/issues/661))
2401
2402
2403
2404## v2.12.0 (2016-09-13)
2405
2406
2407#### Features
2408
2409* **Help:**  adds ability to hide the possible values on a per argument basis ([9151ef73](https://github.com/clap-rs/clap/commit/9151ef739871f2e74910c342299c0de196b95dec), closes [#640](https://github.com/clap-rs/clap/issues/640))
2410* **help:**  allow for limiting detected terminal width ([a43e28af](https://github.com/clap-rs/clap/commit/a43e28af85c9a9deaedd5ef735f4f13008daab29), closes [#653](https://github.com/clap-rs/clap/issues/653))
2411
2412#### Documentation
2413
2414* **Help Wrapping:**  removes the verbage about using `'{n}'` to insert newlines in help text ([c5a2b352](https://github.com/clap-rs/clap/commit/c5a2b352ca600f5b802290ad945731066cd53611))
2415* **Value Delimiters:**  updates the docs for the Arg::multiple method WRT value delimiters and default settings ([f9d17a06](https://github.com/clap-rs/clap/commit/f9d17a060aa53f10d0a6e1a7eed5d989d1a59533))
2416* **appsettings:**  Document AppSetting::DisableVersion ([94501965](https://github.com/clap-rs/clap/commit/945019654d2ca67eb2b1d6014fdf80b84d528d30), closes [#589](https://github.com/clap-rs/clap/issues/589))
2417
2418#### Bug Fixes
2419
2420* **AllowLeadingHyphen:**  fixes a bug where valid args aren't recognized with this setting ([a9699e4d](https://github.com/clap-rs/clap/commit/a9699e4d7cdc9a06e73b845933ff1fe6d76f016a), closes [#588](https://github.com/clap-rs/clap/issues/588))
2421
2422#### Improvements
2423
2424* **Help Wrapping:**
2425  *  clap now ignores hard newlines in help messages and properly re-aligns text, but still wraps if the term width is too small ([c7678523](https://github.com/clap-rs/clap/commit/c76785239fd42adc8ca04f9202b6fec615aa9f14), closes [#617](https://github.com/clap-rs/clap/issues/617))
2426  *  makes some minor changes to when next line help is automatically used ([01cae799](https://github.com/clap-rs/clap/commit/01cae7990a33167ac35103fb36c811b4fe6eb98f))
2427* **Value Delimiters:**  changes the default value delimiter rules ([f9e69254](https://github.com/clap-rs/clap/commit/f9e692548e8c94de15f909432de301407d6bb834), closes [#655](https://github.com/clap-rs/clap/issues/655))
2428* **YAML:**  supports setting Arg::require_delimiter from YAML ([b9b55a39](https://github.com/clap-rs/clap/commit/b9b55a39dfebcdbdc05dca2692927e503db50816))
2429
2430#### Performance
2431
2432* **help:**  fix redundant contains() checks ([a8afed74](https://github.com/clap-rs/clap/commit/a8afed7428bf0733f8e93bb11ad6c00d9e970fcc))
2433
2434
2435
2436## v2.11.3 (2016-09-07)
2437
2438
2439#### Documentation
2440
2441* **Help Wrapping:**  removes the verbage about using `'{n}'` to insert newlines in help text ([c5a2b352](https://github.com/clap-rs/clap/commit/c5a2b352ca600f5b802290ad945731066cd53611))
2442
2443#### Improvements
2444
2445* **Help Wrapping:**
2446  *  clap now ignores hard newlines in help messages and properly re-aligns text, but still wraps if the term width is too small ([c7678523](https://github.com/clap-rs/clap/commit/c76785239fd42adc8ca04f9202b6fec615aa9f14), closes [#617](https://github.com/clap-rs/clap/issues/617))
2447  *  makes some minor changes to when next line help is automatically used ([01cae799](https://github.com/clap-rs/clap/commit/01cae7990a33167ac35103fb36c811b4fe6eb98f))
2448* **YAML:**  supports setting Arg::require_delimiter from YAML ([b9b55a39](https://github.com/clap-rs/clap/commit/b9b55a39dfebcdbdc05dca2692927e503db50816))
2449
2450
2451
2452
2453## v2.11.2 (2016-09-06)
2454
2455#### Improvements
2456
2457* **Help Wrapping:**  makes some minor changes to when next line help is automatically used ([5658b117](https://github.com/clap-rs/clap/commit/5658b117aec3e03adff9c8c52a4c4bc1fcb4e1ff))
2458
2459
2460## v2.11.1 (2016-09-05)
2461
2462
2463#### Bug Fixes
2464
2465* **Settings:**  fixes an issue where settings weren't propagated down through grandchild subcommands ([b3efc107](https://github.com/clap-rs/clap/commit/b3efc107515d78517b20798ff3890b8a2b04498e), closes [#638](https://github.com/clap-rs/clap/issues/638))
2466
2467#### Features
2468
2469* **Errors:**  Errors with custom description ([58512f2f](https://github.com/clap-rs/clap/commit/58512f2fcb430745f1ee6ee8f1c67f62dc216c73))
2470
2471#### Improvements
2472
2473* **help:**  use term_size instead of home-grown solution ([fc7327e9](https://github.com/clap-rs/clap/commit/fc7327e9dcf4258ef2baebf0a8714d9c0622855b))
2474
2475
2476
2477## v2.11.0 (2016-08-28)
2478
2479
2480#### Bug Fixes
2481
2482* **Groups:**  fixes some usage strings that contain both args in groups and ones that conflict with each other ([3d782def](https://github.com/clap-rs/clap/commit/3d782def57725e2de26ca5a5bc5cc2e40ddebefb), closes [#616](https://github.com/clap-rs/clap/issues/616))
2483
2484#### Documentation
2485
2486*   moves docs to docs.rs ([03209d5e](https://github.com/clap-rs/clap/commit/03209d5e1300906f00bafec1869c2047a92e5071), closes [#634](https://github.com/clap-rs/clap/issues/634))
2487
2488#### Improvements
2489
2490* **Completions:**  uses standard conventions for bash completion files, namely '{bin}.bash-completion' ([27f5bbfb](https://github.com/clap-rs/clap/commit/27f5bbfbcc9474c2f57c2b92b1feb898ae46ee70), closes [#567](https://github.com/clap-rs/clap/issues/567))
2491* **Help:**  automatically moves help text to the next line and wraps when term width is determined to be too small, or help text is too long ([150964c4](https://github.com/clap-rs/clap/commit/150964c4e7124d54476c9d9b4b3f2406f0fd00e5), closes [#597](https://github.com/clap-rs/clap/issues/597))
2492* **YAML Errors:**  vastly improves error messages when using YAML ([f43b7c65](https://github.com/clap-rs/clap/commit/f43b7c65941c53adc0616b8646a21dc255862eb2), closes [#574](https://github.com/clap-rs/clap/issues/574))
2493
2494#### Features
2495
2496*   adds App::with_defaults to automatically use crate_authors! and crate_version! macros ([5520bb01](https://github.com/clap-rs/clap/commit/5520bb012c127dfd299fd55699443c744d8dcd5b), closes [#600](https://github.com/clap-rs/clap/issues/600))
2497
2498
2499
2500## v2.10.4 (2016-08-25)
2501
2502
2503#### Bug Fixes
2504
2505* **Help Wrapping:**  fixes a bug where help is wrapped incorrectly and causing a panic with some non-English characters ([d0b442c7](https://github.com/clap-rs/clap/commit/d0b442c7beeecac9764406bc3bd171ced0b8825e), closes [#626](https://github.com/clap-rs/clap/issues/626))
2506
2507
2508
2509## v2.10.3 (2016-08-25)
2510
2511#### Features
2512
2513* **Help:**  adds new short hand way to use source formatting and ignore term width in help messages ([7dfdaf20](https://github.com/clap-rs/clap/commit/7dfdaf200ebb5c431351a045b48f5e0f0d3f31db), closes [#625](https://github.com/clap-rs/clap/issues/625))
2514
2515#### Documentation
2516
2517* **Term Width:**  adds details about set_term_width(0) ([00b8205d](https://github.com/clap-rs/clap/commit/00b8205d22639d1b54b9c453c55c785aace52cb2))
2518
2519#### Bug Fixes
2520
2521* **Unicode:**  fixes two bugs where non-English characters were stripped or caused a panic with help wrapping ([763a5c92](https://github.com/clap-rs/clap/commit/763a5c920e23efc74d190af0cb8b5dd714b2d67a), closes [#626](https://github.com/clap-rs/clap/issues/626))
2522
2523
2524
2525## v2.10.2 (2016-08-22)
2526
2527
2528#### Bug Fixes
2529
2530*   fixes a bug where the help is printed twice ([a643fb28](https://github.com/clap-rs/clap/commit/a643fb283acd9905dc727c4579c5c9fa2ceaa7e7), closes [#623](https://github.com/clap-rs/clap/issues/623))
2531
2532
2533
2534## v2.10.1 (2016-08-21)
2535
2536
2537#### Bug Fixes
2538
2539* **Help Subcommand:**  fixes misleading usage string when using multi-level subcommmands ([e203515e](https://github.com/clap-rs/clap/commit/e203515e3ac495b405dbba4f78fb6af148fd282e), closes [#618](https://github.com/clap-rs/clap/issues/618))
2540
2541#### Features
2542
2543* **YAML:**  allows using lists or single values with arg declarations ([9ade2cd4](https://github.com/clap-rs/clap/commit/9ade2cd4b268d6d7fe828319ce6a523c641b9c38), closes [#614](https://github.com/clap-rs/clap/issues/614), [#613](https://github.com/clap-rs/clap/issues/613))
2544
2545
2546
2547## v2.10.0 (2016-07-29)
2548
2549
2550#### Features
2551
2552* **Completions:**  one can generate a basic fish completions script at compile time ([1979d2f2](https://github.com/clap-rs/clap/commit/1979d2f2f3216e57d02a97e624a8a8f6cf867ed9))
2553
2554#### Bug Fixes
2555
2556* **parser:**  preserve external subcommand name ([875df243](https://github.com/clap-rs/clap/commit/875df24316c266920a073c13bbefbf546bc1f635))
2557
2558#### Breaking Changes
2559
2560* **parser:**  preserve external subcommand name ([875df243](https://github.com/clap-rs/clap/commit/875df24316c266920a073c13bbefbf546bc1f635))
2561
2562#### Documentation
2563
2564* **YAML:**  fixes example 17's incorrect reference to arg_groups instead of groups ([b6c99e13](https://github.com/clap-rs/clap/commit/b6c99e1377f918e78c16c8faced70a71607da931), closes [#601](https://github.com/clap-rs/clap/issues/601))
2565
2566
2567
2568### 2.9.3 (2016-07-24)
2569
2570
2571#### Bug Fixes
2572
2573*   fixes bug where only first arg in list of required_unless_one is recognized ([1fc3b55b](https://github.com/clap-rs/clap/commit/1fc3b55bd6c8653b02e7c4253749c6b77737d2ac), closes [#575](https://github.com/clap-rs/clap/issues/575))
2574* **Settings:**  fixes typo subcommandsrequired->subcommandrequired ([fc72cdf5](https://github.com/clap-rs/clap/commit/fc72cdf591d30f5d9375d0b5cc2a2ff3e812f9f6), closes [#593](https://github.com/clap-rs/clap/issues/593))
2575
2576#### Features
2577
2578* **Completions:**  adds the ability to generate completions to io::Write object ([9f62cf73](https://github.com/clap-rs/clap/commit/9f62cf7378ba5acb5ce8c5bac89b4aa60c30755f))
2579* **Settings:**  Add unset_setting and unset_settings fns to App (#598) ([0ceba231](https://github.com/clap-rs/clap/commit/0ceba231c6767cd6d88fdb1feeeea41deadf77ff), closes [#590](https://github.com/clap-rs/clap/issues/590))
2580
2581
2582### 2.9.2 (2016-07-03)
2583
2584
2585#### Documentation
2586
2587* **Completions:**  fixes the formatting of the Cargo.toml excerpt in the completions example ([722f2607](https://github.com/clap-rs/clap/commit/722f2607beaef56b6a0e433db5fd09492d9f028c))
2588
2589#### Bug Fixes
2590
2591* **Completions:**  fixes bug where --help and --version short weren't added to the completion list ([e9f2438e](https://github.com/clap-rs/clap/commit/e9f2438e2ce99af0ae570a2eaf541fc7f55b771b), closes [#536](https://github.com/clap-rs/clap/issues/536))
2592
2593
2594
2595### 2.9.1 (2016-07-02)
2596
2597
2598#### Improvements
2599
2600* **Completions:**  allows multiple completions to be built by namespacing with bin name ([57484b2d](https://github.com/clap-rs/clap/commit/57484b2daeaac01c1026e8c84efc8bf099e0eb31))
2601
2602
2603## v2.9.0 (2016-07-01)
2604
2605
2606#### Documentation
2607
2608* **Completions:**
2609  *  fixes some errors in the completion docs ([9b359bf0](https://github.com/clap-rs/clap/commit/9b359bf06255d3dad8f489308044b60a9d1e6a87))
2610  *  adds documentation for completion scripts ([c6c519e4](https://github.com/clap-rs/clap/commit/c6c519e40efd6c4533a9ef5efe8e74fd150391b7))
2611
2612#### Features
2613
2614* **Completions:**
2615  *  one can now generate a bash completions script at compile time! ([e75b6c7b](https://github.com/clap-rs/clap/commit/e75b6c7b75f729afb9eb1d2a2faf61dca7674634), closes [#376](https://github.com/clap-rs/clap/issues/376))
2616  *  completions now include aliases to subcommands, including all subcommand options ([0ab9f840](https://github.com/clap-rs/clap/commit/0ab9f84052a8cf65b5551657f46c0c270841e634), closes [#556](https://github.com/clap-rs/clap/issues/556))
2617  *  completions now continue completing even after first completion ([18fc2e5b](https://github.com/clap-rs/clap/commit/18fc2e5b5af63bf54a94b72cec5e1223d49f4806))
2618  *  allows matching on possible values in options ([89cc2026](https://github.com/clap-rs/clap/commit/89cc2026ba9ac69cf44c5254360bbf99236d4f89), closes [#557](https://github.com/clap-rs/clap/issues/557))
2619
2620#### Bug Fixes
2621
2622* **AllowLeadingHyphen:**  fixes an issue where  isn't ignored like it should be with this setting ([96c24c9a](https://github.com/clap-rs/clap/commit/96c24c9a8fa1f85e06138d3cdd133e51659e19d2), closes [#558](https://github.com/clap-rs/clap/issues/558))
2623
2624## v2.8.0 (2016-06-30)
2625
2626
2627#### Features
2628
2629* **Arg:**  adds new setting `Arg::require_delimiter` which requires val delimiter to parse multiple values ([920b5595](https://github.com/clap-rs/clap/commit/920b5595ed72abfb501ce054ab536067d8df2a66))
2630
2631#### Bug Fixes
2632
2633*   Declare term::Winsize as repr(C) ([5d663d90](https://github.com/clap-rs/clap/commit/5d663d905c9829ce6e7a164f1f0896cdd70236dd))
2634
2635#### Documentation
2636
2637* **Arg:**  adds docs for ([49af4e38](https://github.com/clap-rs/clap/commit/49af4e38a5dae2ab0a7fc3b4147e2c053d532484))
2638
2639
2640
2641## v2.7.1 (2016-06-29)
2642
2643
2644#### Bug Fixes
2645
2646* **Options:**
2647  *  options with multiple values and using delimiters no longer parse additional values after a trailing space ([cdc500bd](https://github.com/clap-rs/clap/commit/cdc500bdde6abe238c36ade406ddafc2bafff583))
2648  *  using options with multiple values and with an = no longer parse args after the trailing space as values ([290f61d0](https://github.com/clap-rs/clap/commit/290f61d07177413cf082ada55526d83405f6d011))
2649
2650
2651
2652## v2.7.0 (2016-06-28)
2653
2654
2655#### Documentation
2656
2657*   fix typos ([43b3d40b](https://github.com/clap-rs/clap/commit/43b3d40b8c38b1571da75af86b5088be96cccec2))
2658* **ArgGroup:**  vastly improves ArgGroup docs by adding better examples ([9e5f4f5d](https://github.com/clap-rs/clap/commit/9e5f4f5d734d630bca5535c3a0aa4fd4f9db3e39), closes [#534](https://github.com/clap-rs/clap/issues/534))
2659
2660#### Features
2661
2662* **ArgGroup:**  one can now specify groups which require AT LEAST one of the args ([33689acc](https://github.com/clap-rs/clap/commit/33689acc689b217a8c0ee439f1b1225590c38355), closes [#533](https://github.com/clap-rs/clap/issues/533))
2663
2664#### Bug Fixes
2665
2666* **App:**  using `App::print_help` now prints the same as would have been printed by `--help` or the like ([e84cc018](https://github.com/clap-rs/clap/commit/e84cc01836bbe0527e97de6db9889bd9e0fd6ba1), closes [#536](https://github.com/clap-rs/clap/issues/536))
2667* **Help:**
2668  *  prevents invoking <cmd> help help and displaying incorrect help message ([e3d2893f](https://github.com/clap-rs/clap/commit/e3d2893f377942a2d4cf3c6ff04524d0346e6fdb), closes [#538](https://github.com/clap-rs/clap/issues/538))
2669  *  subcommand help messages requested via <cmd> help <sub> now correctly match <cmd> <sub> --help ([08ad1cff](https://github.com/clap-rs/clap/commit/08ad1cff4fec57224ea957a2891a057b323c01bc), closes [#539](https://github.com/clap-rs/clap/issues/539))
2670
2671#### Improvements
2672
2673* **ArgGroup:**  Add multiple ArgGroups per Arg ([902e182f](https://github.com/clap-rs/clap/commit/902e182f7a58aff11ff01e0a452abcdbdb2262aa), closes [#426](https://github.com/clap-rs/clap/issues/426))
2674* **Usage Strings:**  `[FLAGS]` and `[ARGS]` are no longer blindly added to usage strings ([9b2e45b1](https://github.com/clap-rs/clap/commit/9b2e45b170aff567b038d8b3368880b6046c10c6), closes [#537](https://github.com/clap-rs/clap/issues/537))
2675* **arg_enum!:**  allows using meta items like repr(C) with arg_enum!s ([edf9b233](https://github.com/clap-rs/clap/commit/edf9b2331c17a2cbcc13f961add4c55c2778e773), closes [#543](https://github.com/clap-rs/clap/issues/543))
2676
2677
2678
2679## v2.6.0 (2016-06-14)
2680
2681
2682#### Improvements
2683
2684*   removes extra newline from help output ([86e61d19](https://github.com/clap-rs/clap/commit/86e61d19a748fb9870fcf1175308984e51ca1115))
2685*   allows printing version to any io::Write object ([921f5f79](https://github.com/clap-rs/clap/commit/921f5f7916597f1d028cd4a65bfe76a01c801724))
2686*   removes extra newline when printing version ([7e2e2cbb](https://github.com/clap-rs/clap/commit/7e2e2cbb4a8a0f050bb8072a376f742fc54b8589))
2687* **Aliases:**  improves readability of asliases in help messages ([ca511de7](https://github.com/clap-rs/clap/commit/ca511de71f5b8c2ac419f1b188658e8c63b67846), closes [#526](https://github.com/clap-rs/clap/issues/526), [#529](https://github.com/clap-rs/clap/issues/529))
2688* **Usage Strings:**  improves the default usage string when only a single positional arg is present ([ec86f2da](https://github.com/clap-rs/clap/commit/ec86f2dada1545a63fc72355e22fcdc4c466c215), closes [#518](https://github.com/clap-rs/clap/issues/518))
2689
2690#### Features
2691
2692* **Help:**  allows wrapping at specified term width (Even on Windows!) ([1761dc0d](https://github.com/clap-rs/clap/commit/1761dc0d27d0d621229d792be40c36fbf65c3014), closes [#451](https://github.com/clap-rs/clap/issues/451))
2693* **Settings:**
2694  *  adds new setting to stop delimiting values with -- or TrailingVarArg ([fc3e0f5a](https://github.com/clap-rs/clap/commit/fc3e0f5afda6d24cdb3c4676614beebe13e1e870), closes [#511](https://github.com/clap-rs/clap/issues/511))
2695  *  one can now set an AppSetting which is propagated down through child subcommands ([e2341835](https://github.com/clap-rs/clap/commit/e23418351a3b98bf08dfd7744bc14377c70d59ee), closes [#519](https://github.com/clap-rs/clap/issues/519))
2696* **Subcommands:**  adds support for visible aliases ([7b10e7f8](https://github.com/clap-rs/clap/commit/7b10e7f8937a07fdb8d16a6d8df79ce78d080cd3), closes [#522](https://github.com/clap-rs/clap/issues/522))
2697
2698#### Bug Fixes
2699
2700*   fixes bug where args are printed out of order with templates ([05abb534](https://github.com/clap-rs/clap/commit/05abb534864764102031a0d402e64ac65867aa87))
2701*   fixes bug where one can't override version or help flags ([90d7d6a2](https://github.com/clap-rs/clap/commit/90d7d6a2ea8240122dd9bf8d82d3c4f5ebb5c703), closes [#514](https://github.com/clap-rs/clap/issues/514))
2702*   fixes issue where before_help wasn't printed ([b3faff60](https://github.com/clap-rs/clap/commit/b3faff6030f76a23f26afcfa6a90169002ed7106))
2703* **Help:**  `App::before_help` and `App::after_help` now correctly wrap ([1f4da767](https://github.com/clap-rs/clap/commit/1f4da7676e6e71aa8dda799f3eeefad105a47819), closes [#516](https://github.com/clap-rs/clap/issues/516))
2704* **Settings:**  fixes bug where new color settings couldn't be converted from strs ([706a7c11](https://github.com/clap-rs/clap/commit/706a7c11b0900be594de6d5a3121938eff197602))
2705* **Subcommands:**  subcommands with aliases now display help of the aliased subcommand ([5354d14b](https://github.com/clap-rs/clap/commit/5354d14b51f189885ba110e01e6b76cca3752992), closes [#521](https://github.com/clap-rs/clap/issues/521))
2706* **Windows:**  fixes a failing windows build ([01e7dfd6](https://github.com/clap-rs/clap/commit/01e7dfd6c07228c0be6695b3c7bf9370d82860d4))
2707* **YAML:**  adds missing YAML methods for App and Arg ([e468faf3](https://github.com/clap-rs/clap/commit/e468faf3f05950fd9f72d84b69aa2061e91c6c64), closes [#528](https://github.com/clap-rs/clap/issues/528))
2708
2709
2710
2711## v2.5.2 (2016-05-31)
2712
2713
2714#### Improvements
2715
2716*   removes extra newline from help output ([86e61d19](https://github.com/clap-rs/clap/commit/86e61d19a748fb9870fcf1175308984e51ca1115))
2717*   allows printing version to any io::Write object ([921f5f79](https://github.com/clap-rs/clap/commit/921f5f7916597f1d028cd4a65bfe76a01c801724))
2718*   removes extra newline when printing version ([7e2e2cbb](https://github.com/clap-rs/clap/commit/7e2e2cbb4a8a0f050bb8072a376f742fc54b8589))
2719
2720#### Bug Fixes
2721
2722*   fixes bug where args are printed out of order with templates ([3935431d](https://github.com/clap-rs/clap/commit/3935431d5633f577c0826ae2142794b301f4b8ca))
2723*   fixes bug where one can't override version or help flags ([90d7d6a2](https://github.com/clap-rs/clap/commit/90d7d6a2ea8240122dd9bf8d82d3c4f5ebb5c703), closes [#514](https://github.com/clap-rs/clap/issues/514))
2724*   fixes issue where before_help wasn't printed ([b3faff60](https://github.com/clap-rs/clap/commit/b3faff6030f76a23f26afcfa6a90169002ed7106))
2725
2726#### Documentation
2727
2728*   inter-links all types and pages ([3312893d](https://github.com/clap-rs/clap/commit/3312893ddaef3f44d68d8d26ed3d08010be50d97), closes [#505](https://github.com/clap-rs/clap/issues/505))
2729*   makes all publicly available types viewable in docs ([52ca6505](https://github.com/clap-rs/clap/commit/52ca6505b4fec7b5c2d53d160c072d395eb21da6))
2730
2731## v2.5.1 (2016-05-11)
2732
2733
2734#### Bug Fixes
2735
2736* **Subcommand Aliases**: fixes lifetime issue when setting multiple aliases at once ([ac42f6cf0](https://github.com/clap-rs/clap/commit/ac42f6cf0de6c4920f703807d63061803930b18d))
2737
2738## v2.5.0 (2016-05-10)
2739
2740
2741#### Improvements
2742
2743* **SubCommand Aliases:**  adds feature to yaml configs too ([69592195](https://github.com/clap-rs/clap/commit/695921954dde46dfd483399dcdef482c9dd7f34a))
2744
2745#### Features
2746
2747* **SubCommands:**  adds support for subcommand aliases ([66b4dea6](https://github.com/clap-rs/clap/commit/66b4dea65c44d8f77ff522238a9237aed1bcab6d), closes [#469](https://github.com/clap-rs/clap/issues/469))
2748
2749
2750## v2.4.3 (2016-05-10)
2751
2752
2753#### Bug Fixes
2754
2755* **Usage Strings:**
2756  *  now properly dedups args that are also in groups ([3ca0947c](https://github.com/clap-rs/clap/commit/3ca0947c166b4f8525752255e3a4fa6565eb9689), closes [#498](https://github.com/clap-rs/clap/issues/498))
2757  *  removes duplicate groups from usage strings ([f574fb8a](https://github.com/clap-rs/clap/commit/f574fb8a7cde4d4a2fa4c4481d59be2d0f135427))
2758
2759#### Improvements
2760
2761* **Groups:**  formats positional args in groups in a better way ([fef11154](https://github.com/clap-rs/clap/commit/fef11154fb7430d1cbf04a672aabb366e456a368))
2762* **Help:**
2763  *  moves positionals to standard <> formatting ([03dfe5ce](https://github.com/clap-rs/clap/commit/03dfe5ceff1d63f172788ff688567ddad9fe119b))
2764  *  default help subcommand string has been shortened ([5b7fe8e4](https://github.com/clap-rs/clap/commit/5b7fe8e4161e43ab19e2e5fcf55fbe46791134e9), closes [#494](https://github.com/clap-rs/clap/issues/494))
2765
2766## v2.4.3 (2016-05-10)
2767
2768* Ghost Release
2769
2770## v2.4.3 (2016-05-10)
2771
2772* Ghost Release
2773
2774## v2.4.0 (2016-05-02)
2775
2776
2777#### Features
2778
2779* **Help:**  adds support for displaying info before help message ([29fbfa3b](https://github.com/clap-rs/clap/commit/29fbfa3b963f2f3ca7704bf5d3e1201531baa373))
2780* **Required:**  adds allowing args that are required unless certain args are present ([af1f7916](https://github.com/clap-rs/clap/commit/af1f79168390ea7da4074d0d9777de458ea64971))
2781
2782#### Documentation
2783
2784*   hides formatting from docs ([cb708093](https://github.com/clap-rs/clap/commit/cb708093a7cd057f08c98b7bd1ed54c2db86ae7e))
2785* **required_unless:**  adds docs and examples for required_unless ([ca727b52](https://github.com/clap-rs/clap/commit/ca727b52423b9883acd88b2f227b2711bc144573))
2786
2787#### Bug Fixes
2788
2789* **Required Args:**  fixes issue where missing required args are sometimes duplicated in error messages ([3beebd81](https://github.com/clap-rs/clap/commit/3beebd81e7bc2faa4115ac109cf570e512c5477f), closes [#492](https://github.com/clap-rs/clap/issues/492))
2790
2791
2792## v2.3.0 (2016-04-18)
2793
2794
2795#### Improvements
2796
2797* **macros.rs:**  Added write_nspaces macro (a new version of write_spaces) ([9d757e86](https://github.com/clap-rs/clap/commit/9d757e8678e334e5a740ac750c76a9ed4e785cba))
2798* **parser.rs:**
2799  *  Provide a way to create a usage string without the USAGE: title ([a91d378b](https://github.com/clap-rs/clap/commit/a91d378ba0c91b5796457f8c6e881b13226ab735))
2800  *  Make Parser's create_usage public allowing to have function outside the parser to generate the help ([d51945f8](https://github.com/clap-rs/clap/commit/d51945f8b82ebb0963f4f40b384a9e8335783091))
2801  *  Expose Parser's flags, opts and positionals argument as iterators ([9b23e7ee](https://github.com/clap-rs/clap/commit/9b23e7ee40e51f7a823644c4496be955dc6c9d3a))
2802* **src/args:**  Exposes argument display order by introducing a new Trait ([1321630e](https://github.com/clap-rs/clap/commit/1321630ef56955f152c73376d4d85cceb0bb4a12))
2803* **srs/args:**  Added longest_filter to AnyArg trait ([65b3f667](https://github.com/clap-rs/clap/commit/65b3f667532685f854c699ddd264d326599cf7e5))
2804
2805#### Features
2806
2807* **Authors Macro:**  adds a crate_authors macro ([38fb59ab](https://github.com/clap-rs/clap/commit/38fb59abf480eb2b6feca269097412f8b00b5b54), closes [#447](https://github.com/clap-rs/clap/issues/447))
2808* **HELP:**
2809  *  implements optional colored help messages ([abc8f669](https://github.com/clap-rs/clap/commit/abc8f669c3c8193ffc3a3b0ac6c3ac2198794d4f), closes [#483](https://github.com/clap-rs/clap/issues/483))
2810  *  Add a Templated Help system. ([81e121ed](https://github.com/clap-rs/clap/commit/81e121edd616f7285593f11120c63bcccae0d23e))
2811
2812#### Bug Fixes
2813
2814* **HELP:**  Adjust Help to semantic changes introduced in 6933b84 ([8d23806b](https://github.com/clap-rs/clap/commit/8d23806bd67530ad412c34a1dcdcb1435555573d))
2815
2816## v2.2.6 (2016-04-11)
2817
2818#### Bug Fixes
2819
2820* **Arg Groups**: fixes bug where arg name isn't printed properly ([3019a685](https://github.com/clap-rs/clap/commit/3019a685eee747ccbe6be09ad5dddce0b1d1d4db), closes [#476](https://github.com/clap-rs/clap/issues/476))
2821
2822
2823## v2.2.5 (2016-04-03)
2824
2825
2826#### Bug Fixes
2827
2828* **Empty Values:**  fixes bug where empty values weren't stored ([885d166f](https://github.com/clap-rs/clap/commit/885d166f04eb3fb581898ae5818c6c8032e5a686), closes [#470](https://github.com/clap-rs/clap/issues/470))
2829* **Help Message:**  fixes bug where arg name is printed twice ([71acf1d5](https://github.com/clap-rs/clap/commit/71acf1d576946658b8bbdb5ae79e6716c43a030f), closes [#472](https://github.com/clap-rs/clap/issues/472))
2830
2831
2832## v2.2.4 (2016-03-30)
2833
2834
2835#### Bug Fixes
2836
2837*   fixes compiling with debug cargo feature ([d4b55450](https://github.com/clap-rs/clap/commit/d4b554509928031ac0808076178075bb21f8c1da))
2838* **Empty Values:**  fixes bug where empty values weren't stored ([885d166f](https://github.com/clap-rs/clap/commit/885d166f04eb3fb581898ae5818c6c8032e5a686), closes [#470](https://github.com/clap-rs/clap/issues/470))
2839
2840
2841
2842## v2.2.3 (2016-03-28)
2843
2844
2845#### Bug Fixes
2846
2847* **Help Subcommand:**  fixes issue where help and version flags weren't properly displayed ([205b07bf](https://github.com/clap-rs/clap/commit/205b07bf2e6547851f1290f8cd6b169145e144f1), closes [#466](https://github.com/clap-rs/clap/issues/466))
2848
2849## v2.2.2 (2016-03-27)
2850
2851
2852#### Bug Fixes
2853
2854* **Help Message:**  fixes bug with wrapping in the middle of a unicode sequence ([05365ddc](https://github.com/clap-rs/clap/commit/05365ddcc252e4b49e7a75e199d6001a430bd84d), closes [#456](https://github.com/clap-rs/clap/issues/456))
2855* **Usage Strings:**  fixes small bug where -- would appear needlessly in usage strings ([6933b849](https://github.com/clap-rs/clap/commit/6933b8491c2a7e28cdb61b47dcf10caf33c2f78a), closes [#461](https://github.com/clap-rs/clap/issues/461))
2856
2857
2858### 2.2.1 (2016-03-16)
2859
2860
2861#### Features
2862
2863* **Help Message:**  wraps and aligns the help message of subcommands ([813d75d0](https://github.com/clap-rs/clap/commit/813d75d06fbf077c65762608c0fa5e941cfc393c), closes [#452](https://github.com/clap-rs/clap/issues/452))
2864
2865#### Bug Fixes
2866
2867* **Help Message:**  fixes a bug where small terminal sizes causing a loop ([1d73b035](https://github.com/clap-rs/clap/commit/1d73b0355236923aeaf6799abc759762ded7e1d0), closes [#453](https://github.com/clap-rs/clap/issues/453))
2868
2869
2870## v2.2.0 (2016-03-15)
2871
2872
2873#### Features
2874
2875* **Help Message:**  can auto wrap and aligning help text to term width ([e36af026](https://github.com/clap-rs/clap/commit/e36af0266635f23e85e951b9088d561e9a5d1bf6), closes [#428](https://github.com/clap-rs/clap/issues/428))
2876* **Help Subcommand:**  adds support passing additional subcommands to help subcommand ([2c12757b](https://github.com/clap-rs/clap/commit/2c12757bbdf34ce481f3446c074e24c09c2e60fd), closes [#416](https://github.com/clap-rs/clap/issues/416))
2877* **Opts and Flags:**  adds support for custom ordering in help messages ([9803b51e](https://github.com/clap-rs/clap/commit/9803b51e799904c0befaac457418ee766ccc1ab9))
2878* **Settings:**  adds support for automatically deriving custom display order of args ([ad86e433](https://github.com/clap-rs/clap/commit/ad86e43334c4f70e86909689a088fb87e26ff95a), closes [#444](https://github.com/clap-rs/clap/issues/444))
2879* **Subcommands:**  adds support for custom ordering in help messages ([7d2a2ed4](https://github.com/clap-rs/clap/commit/7d2a2ed413f5517d45988eef0765cdcd663b6372), closes [#442](https://github.com/clap-rs/clap/issues/442))
2880
2881#### Bug Fixes
2882
2883* **From Usage:**  fixes a bug where adding empty lines weren't ignored ([c5c58c86](https://github.com/clap-rs/clap/commit/c5c58c86b9c503d8de19da356a5a5cffb59fbe84))
2884
2885#### Documentation
2886
2887* **Groups:**  explains required ArgGroups better ([4ff0205b](https://github.com/clap-rs/clap/commit/4ff0205b85a45151b59bbaf090a89df13438380f), closes [#439](https://github.com/clap-rs/clap/issues/439))
2888
2889## v2.1.2 (2016-02-24)
2890
2891#### Bug Fixes
2892
2893* **Nightly:**  fixes failing nightly build ([d752c170](https://github.com/clap-rs/clap/commit/d752c17029598b19037710f204b7943f0830ae75), closes [#434](https://github.com/clap-rs/clap/issues/434))
2894
2895
2896## v2.1.1 (2016-02-19)
2897
2898
2899#### Documentation
2900
2901* **AppSettings:**  clarifies that AppSettings do not propagate ([3c8db0e9](https://github.com/clap-rs/clap/commit/3c8db0e9be1d24edaad364359513cbb02abb4186), closes [#429](https://github.com/clap-rs/clap/issues/429))
2902* **Arg Examples:**  adds better examples ([1e79cccc](https://github.com/clap-rs/clap/commit/1e79cccc12937bc0e7cd2aad8e404410798e9fff))
2903
2904#### Improvements
2905
2906* **Help:**  adds setting for next line help by arg ([066df748](https://github.com/clap-rs/clap/commit/066df7486e684cf50a8479a356a12ba972c34ce1), closes [#427](https://github.com/clap-rs/clap/issues/427))
2907
2908
2909## v2.1.0 (2016-02-10)
2910
2911
2912#### Features
2913
2914* **Default Values:**  adds support for default values in args ([73211952](https://github.com/clap-rs/clap/commit/73211952964a79d97b434dd567e6d7d34be7feb5), closes [#418](https://github.com/clap-rs/clap/issues/418))
2915
2916#### Documentation
2917
2918* **Default Values:**  adds better examples and notes for default values ([9facd74f](https://github.com/clap-rs/clap/commit/9facd74f843ef3807c5d35259558a344e6c25905))
2919
2920
2921## v2.0.6 (2016-02-09)
2922
2923
2924#### Improvements
2925
2926* **Positional Arguments:**  now displays value name if appropriate ([f0a99916](https://github.com/clap-rs/clap/commit/f0a99916c59ce675515c6dcdfe9a40b130510908), closes [#420](https://github.com/clap-rs/clap/issues/420))
2927
2928
2929## v2.0.5 (2016-02-05)
2930
2931
2932#### Bug Fixes
2933
2934* **Multiple Values:**  fixes bug where number_of_values wasn't respected ([72c387da](https://github.com/clap-rs/clap/commit/72c387da0bb8a6f526f863770f08bb8ca0d3de03))
2935
2936
2937## v2.0.4 (2016-02-04)
2938
2939
2940#### Bug Fixes
2941
2942*   adds support for building ArgGroups from standalone YAML ([fcbc7e12](https://github.com/clap-rs/clap/commit/fcbc7e12f5d7b023b8f30cba8cad28a01cf6cd26))
2943*   Stop lonely hyphens from causing panic ([85b11468](https://github.com/clap-rs/clap/commit/85b11468b0189d5cc15f1cfac5db40d17a0077dc), closes [#410](https://github.com/clap-rs/clap/issues/410))
2944* **AppSettings:**  fixes bug where subcmds didn't receive parent ver ([a62e4527](https://github.com/clap-rs/clap/commit/a62e452754b3b0e3ac9a15aa8b5330636229ead1))
2945
2946## v2.0.3 (2016-02-02)
2947
2948
2949#### Improvements
2950
2951* **values:**  adds support for up to u64::max values per arg ([c7abf7d7](https://github.com/clap-rs/clap/commit/c7abf7d7611e317b0d31d97632e3d2e13570947c))
2952* **occurrences:**  Allow for more than 256 occurrences of an argument. ([3731ddb3](https://github.com/clap-rs/clap/commit/3731ddb361163f3d6b86844362871e48c80fa530))
2953
2954#### Features
2955
2956* **AppSettings:**  adds HidePossibleValuesInHelp to skip writing those values ([cdee7a0e](https://github.com/clap-rs/clap/commit/cdee7a0eb2beeec723cb98acfacf03bf629c1da3))
2957
2958#### Bug Fixes
2959
2960* **value_t_or_exit:**  fixes typo which causes value_t_or_exit to return a Result ([ee96baff](https://github.com/clap-rs/clap/commit/ee96baffd306cb8d20ddc5575cf739bb1a6354e8))
2961
2962
2963## v2.0.2 (2016-01-31)
2964
2965
2966#### Improvements
2967
2968* **arg_enum:**  enum declared with arg_enum returns [&'static str; #] instead of Vec ([9c4b8a1a](https://github.com/clap-rs/clap/commit/9c4b8a1a6b12949222f17d1074578ad7676b9c0d))
2969
2970#### Bug Fixes
2971
2972*   clap_app! should be gated by unstable, not nightly feature ([0c8b84af](https://github.com/clap-rs/clap/commit/0c8b84af6161d5baf683688eafc00874846f83fa))
2973* **SubCommands:**  fixed where subcmds weren't recognized after mult args ([c19c17a8](https://github.com/clap-rs/clap/commit/c19c17a8850602990e24347aeb4427cf43316223), closes [#405](https://github.com/clap-rs/clap/issues/405))
2974* **Usage Parser:**  fixes a bug where literal single quotes weren't allowed in help strings ([0bcc7120](https://github.com/clap-rs/clap/commit/0bcc71206478074769e311479b34a9f74fe80f5c), closes [#406](https://github.com/clap-rs/clap/issues/406))
2975
2976
2977## v2.0.1 (2016-01-30)
2978
2979
2980#### Bug Fixes
2981
2982*   fixes cargo features to NOT require nightly with unstable features ([dcbcc60c](https://github.com/clap-rs/clap/commit/dcbcc60c9ba17894be636472ea4b07a82d86a9db), closes [#402](https://github.com/clap-rs/clap/issues/402))
2983
2984
2985## v2.0.0 (2016-01-28)
2986
2987
2988#### Improvements
2989
2990* **From Usage:**  vastly improves the usage parser ([fa3a2f86](https://github.com/clap-rs/clap/commit/fa3a2f86bd674c5eb07128c95098fab7d1437247), closes [#350](https://github.com/clap-rs/clap/issues/350))
2991
2992#### Features
2993
2994*   adds support for external subcommands ([177fe5cc](https://github.com/clap-rs/clap/commit/177fe5cce745c2164a8e38c23be4c4460d2d7211), closes [#372](https://github.com/clap-rs/clap/issues/372))
2995*   adds support values with a leading hyphen ([e4d429b9](https://github.com/clap-rs/clap/commit/e4d429b9d52e95197bd0b572d59efacecf305a59), closes [#385](https://github.com/clap-rs/clap/issues/385))
2996*   adds support for turning off the value delimiter ([508db850](https://github.com/clap-rs/clap/commit/508db850a87c2e251cf6b6ddead9ad56b29f9e57), closes [#352](https://github.com/clap-rs/clap/issues/352))
2997*   adds support changing the value delimiter ([dafeae8a](https://github.com/clap-rs/clap/commit/dafeae8a526162640f6a68da434370c64d190889), closes [#353](https://github.com/clap-rs/clap/issues/353))
2998*   adds support for comma separated values ([e69da6af](https://github.com/clap-rs/clap/commit/e69da6afcd2fe48a3c458ca031db40997f860eda), closes [#348](https://github.com/clap-rs/clap/issues/348))
2999*   adds support with options with optional values ([4555736c](https://github.com/clap-rs/clap/commit/4555736cad01441dcde4ea84a285227e0844c16e), closes [#367](https://github.com/clap-rs/clap/issues/367))
3000* **UTF-8:**  adds support for invalid utf8 in values ([c5c59dec](https://github.com/clap-rs/clap/commit/c5c59dec0bc33b86b2e99d30741336f17ec84282), closes [#269](https://github.com/clap-rs/clap/issues/269))
3001* **v2:**  implementing the base of 2.x ([a3536054](https://github.com/clap-rs/clap/commit/a3536054512ba833533dc56615ce3663d884381c))
3002
3003#### Bug Fixes
3004
3005*   fixes nightly build with new lints ([17599195](https://github.com/clap-rs/clap/commit/175991956c37dc83ba9c49396e927a1cb65c5b11))
3006*   fixes Windows build for 2x release ([674c9b48](https://github.com/clap-rs/clap/commit/674c9b48c7c92079cb180cc650a9e39f34781c32), closes [#392](https://github.com/clap-rs/clap/issues/392))
3007*   fixes yaml build for 2x base ([adceae64](https://github.com/clap-rs/clap/commit/adceae64c8556d00ab715677377b216f9f468ad7))
3008
3009#### Documentation
3010
3011*   updates examples for 2x release ([1303b360](https://github.com/clap-rs/clap/commit/1303b3607468f362ab1b452d5614c1a064dc69b4), closes [#394](https://github.com/clap-rs/clap/issues/394))
3012*   updates examples for 2x release ([0a011f31](https://github.com/clap-rs/clap/commit/0a011f3142aec338d388a6c8bfe22fa7036021bb), closes [#394](https://github.com/clap-rs/clap/issues/394))
3013*   updates documentation for v2 release ([8d51724e](https://github.com/clap-rs/clap/commit/8d51724ef73dfde5bb94fb9466bc5463a1cc1502))
3014*   updating docs for 2x release ([576d0e0e](https://github.com/clap-rs/clap/commit/576d0e0e2c7b8f386589179bbf7419b93abacf1c))
3015* **README.md:**
3016  *  updates readme for v2 release ([acaba01a](https://github.com/clap-rs/clap/commit/acaba01a353c12144b9cd9a3ce447400691849b0), closes [#393](https://github.com/clap-rs/clap/issues/393))
3017  *  fix typo and make documentation conspicuous ([07b9f614](https://github.com/clap-rs/clap/commit/07b9f61495d927f69f7abe6c0d85253f0f4e6107))
3018
3019#### BREAKING CHANGES
3020
3021* **Fewer lifetimes! Yay!**
3022 * `App<'a, 'b, 'c, 'd, 'e, 'f>` => `App<'a, 'b>`
3023 * `Arg<'a, 'b, 'c, 'd, 'e, 'f>` => `Arg<'a, 'b>`
3024 * `ArgMatches<'a, 'b>` => `ArgMatches<'a>`
3025* **Simply Renamed**
3026 * `App::arg_group` => `App::group`
3027 * `App::arg_groups` => `App::groups`
3028 * `ArgGroup::add` => `ArgGroup::arg`
3029 * `ArgGroup::add_all` => `ArgGroup::args`
3030 * `ClapError` => `Error`
3031  * struct field `ClapError::error_type` => `Error::kind`
3032 * `ClapResult` => `Result`
3033 * `ClapErrorType` => `ErrorKind`
3034* **Removed Deprecated Functions and Methods**
3035 * `App::subcommands_negate_reqs`
3036 * `App::subcommand_required`
3037 * `App::arg_required_else_help`
3038 * `App::global_version(bool)`
3039 * `App::versionless_subcommands`
3040 * `App::unified_help_messages`
3041 * `App::wait_on_error`
3042 * `App::subcommand_required_else_help`
3043 * `SubCommand::new`
3044 * `App::error_on_no_subcommand`
3045 * `Arg::new`
3046 * `Arg::mutually_excludes`
3047 * `Arg::mutually_excludes_all`
3048 * `Arg::mutually_overrides_with`
3049 * `simple_enum!`
3050* **Renamed Error Variants**
3051 * `InvalidUnicode` => `InvalidUtf8`
3052 * `InvalidArgument` => `UnknownArgument`
3053* **Usage Parser**
3054 * Value names can now be specified inline, i.e. `-o, --option <FILE> <FILE2> 'some option which takes two files'`
3055 * **There is now a priority of order to determine the name** - This is perhaps the biggest breaking change. See the documentation for full details. Prior to this change, the value name took precedence. **Ensure your args are using the proper names (i.e. typically the long or short and NOT the value name) throughout the code**
3056* `ArgMatches::values_of` returns an `Values` now which implements `Iterator` (should not break any code)
3057* `crate_version!` returns `&'static str` instead of `String`
3058* Using the `clap_app!` macro requires compiling with the `unstable` feature because the syntax could change slightly in the future
3059
3060
3061## v1.5.5 (2016-01-04)
3062
3063
3064#### Bug Fixes
3065
3066*   fixes an issue where invalid short args didn't cause an error ([c9bf7e44](https://github.com/clap-rs/clap/commit/c9bf7e4440bd2f9b524ea955311d433c40a7d1e0))
3067*   prints the name in version and help instead of binary name ([8f3817f6](https://github.com/clap-rs/clap/commit/8f3817f665c0cab6726bc16c56a53b6a61e44448), closes [#368](https://github.com/clap-rs/clap/issues/368))
3068*   fixes an intentional panic issue discovered via clippy ([ea83a3d4](https://github.com/clap-rs/clap/commit/ea83a3d421ea8856d4cac763942834d108b71406))
3069
3070
3071## v1.5.4 (2015-12-18)
3072
3073
3074#### Examples
3075
3076* **17_yaml:**  conditinonally compile 17_yaml example ([575de089](https://github.com/clap-rs/clap/commit/575de089a3e240c398cb10e6cf5a5c6b68662c01))
3077
3078#### Improvements
3079
3080*   clippy improvements ([99cdebc2](https://github.com/clap-rs/clap/commit/99cdebc23da3a45a165f14b27bebeb2ed828a2ce))
3081
3082#### Bug Fixes
3083
3084
3085* **errors:**  return correct error type in WrongNumValues error builder ([5ba8ba9d](https://github.com/clap-rs/clap/commit/5ba8ba9dcccdfa74dd1c44260e64b359bbb36be6))
3086*   ArgRequiredElseHelp setting now takes precedence over missing required args ([faad83fb](https://github.com/clap-rs/clap/commit/faad83fbef6752f3093b6e98fca09a9449b830f4), closes [#362](https://github.com/clap-rs/clap/issues/362))
3087
3088
3089## v1.5.3 (2015-11-20)
3090
3091
3092#### Bug Fixes
3093
3094* **Errors:**  fixes some instances when errors are missing a final newline ([c4d2b171](https://github.com/clap-rs/clap/commit/c4d2b1711994479ad64ee52b6b49d2ceccbf2118))
3095
3096
3097
3098
3099## v1.5.2 (2015-11-14)
3100
3101
3102#### Bug Fixes
3103
3104* **Errors:**  fixes a compiling bug when built on Windows or without the color feature ([a35f7634](https://github.com/clap-rs/clap/commit/a35f76346fe6ecc88dda6a1eb13627186e7ce185))
3105
3106
3107
3108## v1.5.1 (2015-11-13)
3109
3110
3111#### Bug Fixes
3112
3113* **Required Args:**  fixes a bug where required args are not correctly accounted for ([f03b88a9](https://github.com/clap-rs/clap/commit/f03b88a9766b331a63879bcd747687f2e5a2661b), closes [#343](https://github.com/clap-rs/clap/issues/343))
3114
3115
3116
3117## v1.5.0 (2015-11-13)
3118
3119
3120#### Bug Fixes
3121
3122*   fixes a bug with required positional args in usage strings ([c6858f78](https://github.com/clap-rs/clap/commit/c6858f78755f8e860204323c828c8355a066dc83))
3123
3124#### Documentation
3125
3126* **FAQ:**  updates readme with slight changes to FAQ ([a4ef0fab](https://github.com/clap-rs/clap/commit/a4ef0fab73c8dc68f1b138965d1340459c113398))
3127
3128#### Improvements
3129
3130*   massive errors overhaul ([cdc29175](https://github.com/clap-rs/clap/commit/cdc29175bc9c53e5b4aec86cbc04c1743154dae6))
3131* **ArgMatcher:**  huge refactor and deduplication of code ([8988853f](https://github.com/clap-rs/clap/commit/8988853fb8825e8f841fde349834cc12cdbad081))
3132* **Errors:**  errors have been vastly improved ([e59bc0c1](https://github.com/clap-rs/clap/commit/e59bc0c16046db156a88ba71a037db05028e995c))
3133* **Traits:**  refactoring some configuration into traits ([5800cdec](https://github.com/clap-rs/clap/commit/5800cdec6dce3def4242b9f7bd136308afb19685))
3134
3135#### Performance
3136
3137* **App:**
3138  *  more BTreeMap->Vec, Opts and SubCmds ([bc4495b3](https://github.com/clap-rs/clap/commit/bc4495b32ec752b6c4b29719e831c043ef2a26ce))
3139  *  changes flags BTreeMap->Vec ([d357640f](https://github.com/clap-rs/clap/commit/d357640fab55e5964fe83efc3c771e53aa3222fd))
3140  *  removed unneeded BTreeMap ([78971fd6](https://github.com/clap-rs/clap/commit/78971fd68d7dc5c8e6811b4520cdc54e4188f733))
3141  *  changes BTreeMap to VecMap in some instances ([64b921d0](https://github.com/clap-rs/clap/commit/64b921d087fdd03775c95ba0bcf65d3f5d36f812))
3142  *  removed excess clones ([ec0089d4](https://github.com/clap-rs/clap/commit/ec0089d42ed715d293fb668d3a90b0db0aa3ec39))
3143
3144
3145
3146## v1.4.7 (2015-11-03)
3147
3148
3149#### Documentation
3150
3151*   Clarify behavior of Arg::multiple with options. ([434f497a](https://github.com/clap-rs/clap/commit/434f497ab6d831f8145cf09278c97ca6ee6c6fe7))
3152*   Fix typos and improve grammar. ([c1f66b5d](https://github.com/clap-rs/clap/commit/c1f66b5de7b5269fbf8760a005ef8c645edd3229))
3153
3154#### Bug Fixes
3155
3156* **Error Status:**  fixes bug where --help and --version return non-zero exit code ([89b51fdf](https://github.com/clap-rs/clap/commit/89b51fdf8b1ab67607567344e2317ff1a757cb12))
3157
3158
3159
3160## v1.4.6 (2015-10-29)
3161
3162
3163#### Features
3164
3165*   allows parsing without a binary name for daemons and interactive CLIs ([aff89d57](https://github.com/clap-rs/clap/commit/aff89d579b5b85c3dc81b64f16d5865299ec39a2), closes [#318](https://github.com/clap-rs/clap/issues/318))
3166
3167#### Bug Fixes
3168
3169* **Errors:**  tones down quoting in some error messages ([34ce59ed](https://github.com/clap-rs/clap/commit/34ce59ede53bfa2eef722c74881cdba7419fd9c7), closes [#309](https://github.com/clap-rs/clap/issues/309))
3170* **Help and Version:**  only builds help and version once ([e3be87cf](https://github.com/clap-rs/clap/commit/e3be87cfc095fc41c9811adcdc6d2b079f237d5e))
3171* **Option Args:**  fixes bug with args and multiple values ([c9a9548a](https://github.com/clap-rs/clap/commit/c9a9548a8f96cef8a3dd9a980948325fbbc1b91b), closes [#323](https://github.com/clap-rs/clap/issues/323))
3172* **POSIX Overrides:**  fixes bug where required args are overridden ([40ed2b50](https://github.com/clap-rs/clap/commit/40ed2b50c3a9fe88bfdbaa43cef9fd6493ecaa8e))
3173* **Safe Matches:**  using 'safe' forms of the get_matches family no longer exit the process ([c47025dc](https://github.com/clap-rs/clap/commit/c47025dca2b3305dea0a0acfdd741b09af0c0d05), closes [#256](https://github.com/clap-rs/clap/issues/256))
3174* **Versionless SubCommands:**  fixes a bug where the -V flag was needlessly built ([27df8b9d](https://github.com/clap-rs/clap/commit/27df8b9d98d13709dad3929a009f40ebff089a1a), closes [#329](https://github.com/clap-rs/clap/issues/329))
3175
3176#### Documentation
3177
3178*   adds comparison in readme ([1a8bf31e](https://github.com/clap-rs/clap/commit/1a8bf31e7a6b87ce48a66af2cde1645b2dd5bc95), closes [#325](https://github.com/clap-rs/clap/issues/325))
3179
3180
3181
3182## v1.4.5 (2015-10-06)
3183
3184
3185#### Bug Fixes
3186
3187*   fixes crash on invalid arg error ([c78ce128](https://github.com/clap-rs/clap/commit/c78ce128ebbe7b8f730815f8176c29d76f4ade8c))
3188
3189
3190
3191## v1.4.4 (2015-10-06)
3192
3193
3194#### Documentation
3195
3196*   clean up some formatting ([b7df92d7](https://github.com/clap-rs/clap/commit/b7df92d7ea25835701dd22ddff984b9749f48a00))
3197*   move the crate-level docs to top of the lib.rs file ([d7233bf1](https://github.com/clap-rs/clap/commit/d7233bf122dbf80ba8fc79e5641be2df8af10e7a))
3198*   changes doc comments to rustdoc comments ([34b601be](https://github.com/clap-rs/clap/commit/34b601be5fdde76c1a0859385b359b96d66b8732))
3199*   fixes panic in 14_groups example ([945b00a0](https://github.com/clap-rs/clap/commit/945b00a0c27714b63bdca48d003fe205fcfdc578), closes [#295](https://github.com/clap-rs/clap/issues/295))
3200*   avoid suggesting star dependencies. ([d33228f4](https://github.com/clap-rs/clap/commit/d33228f40b5fefb84cf3dd51546bfb340dcd9f5a))
3201* **Rustdoc:**  adds portions of the readme to main rustdoc page ([6f9ee181](https://github.com/clap-rs/clap/commit/6f9ee181e69d90bd4206290e59d6f3f1e8f0cbb2), closes [#293](https://github.com/clap-rs/clap/issues/293))
3202
3203#### Bug Fixes
3204
3205*   grammar error in some conflicting option errors ([e73b07e1](https://github.com/clap-rs/clap/commit/e73b07e19474323ad2260da66abbf6a6d4ecbd4f))
3206* **Unified Help:**  sorts both flags and options as a unified category ([2a223dad](https://github.com/clap-rs/clap/commit/2a223dad82901fa2e74baad3bfc4c7b94509300f))
3207* **Usage:**  fixes a bug where required args aren't filtered properly ([72b453dc](https://github.com/clap-rs/clap/commit/72b453dc170af3050bb123d35364f6da77fc06d7), closes [#277](https://github.com/clap-rs/clap/issues/277))
3208* **Usage Strings:**  fixes a bug ordering of elements in usage strings ([aaf0d6fe](https://github.com/clap-rs/clap/commit/aaf0d6fe7aa2403e76096c16204d254a9ee61ee2), closes [#298](https://github.com/clap-rs/clap/issues/298))
3209
3210#### Features
3211
3212*   supports -aValue style options ([0e3733e4](https://github.com/clap-rs/clap/commit/0e3733e4fec2015c2d566a51432dcd92cb69cad3))
3213* **Trailing VarArg:**  adds opt-in setting for final arg being vararg ([27018b18](https://github.com/clap-rs/clap/commit/27018b1821a4bcd5235cfe92abe71b3c99efc24d), closes [#278](https://github.com/clap-rs/clap/issues/278))
3214
3215
3216
3217## v1.4.3 (2015-09-30)
3218
3219
3220#### Features
3221
3222*   allows accessing arg values by group name ([c92a4b9e](https://github.com/clap-rs/clap/commit/c92a4b9eff2d679957f61c0c41ff404b40d38a91))
3223
3224#### Documentation
3225
3226*   use links to examples instead of plain text ([bb4fe237](https://github.com/clap-rs/clap/commit/bb4fe237858535627271465147add537e4556b43))
3227
3228#### Bug Fixes
3229
3230* **Help Message:**  required args no longer double list in usage ([1412e639](https://github.com/clap-rs/clap/commit/1412e639e0a79df84936d1101a837f90077d1c83), closes [#277](https://github.com/clap-rs/clap/issues/277))
3231* **Possible Values:**  possible value validation is restored ([f121ae74](https://github.com/clap-rs/clap/commit/f121ae749f8f4bfe754ef2e8a6dfc286504b5b75), closes [#287](https://github.com/clap-rs/clap/issues/287))
3232
3233
3234
3235## v1.4.2 (2015-09-23)
3236
3237
3238#### Bug Fixes
3239
3240* **Conflicts:**  fixes bug with conflicts not removing required args ([e17fcec5](https://github.com/clap-rs/clap/commit/e17fcec53b3216ad047a13dddc6f740473fad1a1), closes [#271](https://github.com/clap-rs/clap/issues/271))
3241
3242
3243
3244## v1.4.1 (2015-09-22)
3245
3246
3247#### Examples
3248
3249*   add clap_app quick example ([4ba6249c](https://github.com/clap-rs/clap/commit/4ba6249c3cf4d2e083370d1fe4dcc7025282c28a))
3250
3251#### Features
3252
3253* **Unicode:**  allows non-panicking on invalid unicode characters ([c5bf7ddc](https://github.com/clap-rs/clap/commit/c5bf7ddc8cfb876ec928a5aaf5591232bbb32e5d))
3254
3255#### Documentation
3256
3257*   properly names Examples section for rustdoc ([87ba5445](https://github.com/clap-rs/clap/commit/87ba54451d7ec7b1c9b9ef134f90bbe39e6fac69))
3258*   fixes various typos and spelling ([f85640f9](https://github.com/clap-rs/clap/commit/f85640f9f6d8fd3821a40e9b8b7a34fabb789d02))
3259* **Arg:**  unhides fields of the Arg struct ([931aea88](https://github.com/clap-rs/clap/commit/931aea88427edf43a3da90d5a500c1ff2b2c3614))
3260
3261#### Bug Fixes
3262
3263*   flush the buffer in App::print_version() ([cbc42a37](https://github.com/clap-rs/clap/commit/cbc42a37d212d84d22b1777d08e584ff191934e7))
3264*   Macro benchmarks ([13712da1](https://github.com/clap-rs/clap/commit/13712da1d36dc7614eec3a10ad488257ba615751))
3265
3266
3267
3268## v1.4.0 (2015-09-09)
3269
3270
3271#### Features
3272
3273*   allows printing help message by library consumers ([56b95f32](https://github.com/clap-rs/clap/commit/56b95f320875c62dda82cb91b29059671e120ed1))
3274*   allows defining hidden args and subcmds ([2cab4d03](https://github.com/clap-rs/clap/commit/2cab4d0334ea3c2439a1d4bfca5bf9905c7ea9ac), closes [#231](https://github.com/clap-rs/clap/issues/231))
3275*   Builder macro to assist with App/Arg/Group/SubCommand building ([443841b0](https://github.com/clap-rs/clap/commit/443841b012a8d795cd5c2bd69ae6e23ef9b16477))
3276* **Errors:**  allows consumers to write to stderr and exit on error ([1e6403b6](https://github.com/clap-rs/clap/commit/1e6403b6a863574fa3cb6946b1fb58f034e8664c))
3277
3278
3279
3280## v1.3.2 (2015-09-08)
3281
3282
3283#### Documentation
3284
3285*   fixed ErrorKind docs ([dd057843](https://github.com/clap-rs/clap/commit/dd05784327fa070eb6ce5ce89a8507e011d8db94))
3286* **ErrorKind:**  changed examples content ([b9ca2616](https://github.com/clap-rs/clap/commit/b9ca261634b89613bbf3d98fd74d55cefbb31a8c))
3287
3288#### Bug Fixes
3289
3290*   fixes a bug where the help subcommand wasn't overridable ([94003db4](https://github.com/clap-rs/clap/commit/94003db4b5eebe552ca337521c1c001295822745))
3291
3292#### Features
3293
3294*   adds ability not consume self when parsing matches and/or exit on help ([94003db4](https://github.com/clap-rs/clap/commit/94003db4b5eebe552ca337521c1c001295822745))
3295* **App:**  Added ability for users to handle errors themselves ([934e6fbb](https://github.com/clap-rs/clap/commit/934e6fbb643b2385efc23444fe6fce31494dc288))
3296
3297
3298
3299## v1.3.1 (2015-09-04)
3300
3301
3302#### Examples
3303
3304* **17_yaml:**  fixed example ([9b848622](https://github.com/clap-rs/clap/commit/9b848622296c8c5c7b9a39b93ddd41f51df790b5))
3305
3306#### Performance
3307
3308*   changes ArgGroup HashSets to Vec ([3cb4a48e](https://github.com/clap-rs/clap/commit/3cb4a48ebd15c20692f4f3a2a924284dc7fd5e10))
3309*   changes BTreeSet for Vec in some instances ([baab2e3f](https://github.com/clap-rs/clap/commit/baab2e3f4060e811abee14b1654cbcd5cf3b5fea))
3310
3311
3312
3313## v1.3.0 (2015-09-01)
3314
3315
3316#### Features
3317
3318* **YAML:**  allows building a CLI from YAML files ([86cf4c45](https://github.com/clap-rs/clap/commit/86cf4c45626a36b8115446952f9069f73c1debc3))
3319* **ArgGroups:**  adds support for building ArgGroups from yaml ([ecf88665](https://github.com/clap-rs/clap/commit/ecf88665cbff367018b29161a1b75d44a212707d))
3320* **Subcommands:**  adds support for subcommands from yaml ([e415cf78](https://github.com/clap-rs/clap/commit/e415cf78ba916052d118a8648deba2b9c16b1530))
3321
3322#### Documentation
3323
3324* **YAML:**  adds examples for using YAML to build a CLI ([ab41d7f3](https://github.com/clap-rs/clap/commit/ab41d7f38219544750e6e1426076dc498073191b))
3325* **Args from YAML:**  fixes doc examples ([19b348a1](https://github.com/clap-rs/clap/commit/19b348a10050404cd93888dbbbe4f396681b67d0))
3326* **Examples:**  adds better usage examples instead of having unused variables ([8cbacd88](https://github.com/clap-rs/clap/commit/8cbacd8883004fe71a8ea036ec4391c7dd8efe94))
3327
3328#### Examples
3329
3330*   Add AppSettings example ([12705079](https://github.com/clap-rs/clap/commit/12705079ca96a709b4dd94f7ddd20a833b26838c))
3331
3332#### Bug Fixes
3333
3334* **Unified Help Messages:**  fixes a crash from this setting and no opts ([169ffec1](https://github.com/clap-rs/clap/commit/169ffec1003d58d105d7ef2585b3425e57980000), closes [#210](https://github.com/clap-rs/clap/issues/210))
3335
3336
3337
3338## v1.2.5 (2015-08-27)
3339
3340
3341#### Examples
3342
3343*   add custom validator example ([b9997d1f](https://github.com/clap-rs/clap/commit/b9997d1fca74d4d8f93971f2a01bdf9798f913d5))
3344*   fix indentation ([d4f1b740](https://github.com/clap-rs/clap/commit/d4f1b740ede410fd2528b9ecd89592c2fd8b1e20))
3345
3346#### Features
3347
3348* **Args:**  allows opts and args to define a name for help and usage msgs ([ad962ec4](https://github.com/clap-rs/clap/commit/ad962ec478da999c7dba0afdb84c266f4d09b1bd))
3349
3350
3351
3352## v1.2.4 (2015-08-26)
3353
3354
3355#### Bug Fixes
3356
3357* **Possible Values:**  fixes a bug where suggestions aren't made when using --long=value format ([3d5e9a6c](https://github.com/clap-rs/clap/commit/3d5e9a6cedb26668839b481c9978e2fbbab8be6f), closes [#192](https://github.com/clap-rs/clap/issues/192))
3358
3359
3360
3361## v1.2.3 (2015-08-24)
3362
3363
3364#### Bug Fixes
3365
3366* **App, Args:**  fixed subcommand reqs negation ([b41afa8c](https://github.com/clap-rs/clap/commit/b41afa8c3ded3d1be12f7a2f8ea06cc44afc9458), closes [#188](https://github.com/clap-rs/clap/issues/188))
3367
3368
3369
3370## v1.2.2 (2015-08-23)
3371
3372
3373#### Bug Fixes
3374
3375*   fixed confusing error message, also added test for it ([fc7a31a7](https://github.com/clap-rs/clap/commit/fc7a31a745efbf1768ee2c62cd3bb72bfe30c708))
3376* **App:**  fixed requirmets overriding ([9c135eb7](https://github.com/clap-rs/clap/commit/9c135eb790fa16183e5bdb2009ddc3cf9e25f99f))
3377
3378
3379
3380## v1.2.1 (2015-08-20)
3381
3382
3383#### Documentation
3384
3385* **README.md:**  updates for new features ([16cf9245](https://github.com/clap-rs/clap/commit/16cf9245fb5fc4cf6face898e358368bf9961cbb))
3386
3387#### Features
3388
3389*   implements posix compatible conflicts for long args ([8c2d48ac](https://github.com/clap-rs/clap/commit/8c2d48acf5473feebd721a9049a9c9b7051e70f9))
3390*   added overrides to support conflicts in POSIX compatible manner ([0b916a00](https://github.com/clap-rs/clap/commit/0b916a00de26f6941538f6bc5f3365fa302083c1))
3391* **Args:**  allows defining POSIX compatible argument conflicts ([d715646e](https://github.com/clap-rs/clap/commit/d715646e69759ccd95e01f49b04f489827ecf502))
3392
3393#### Bug Fixes
3394
3395*   fixed links in cargo and license buttons ([6d9837ad](https://github.com/clap-rs/clap/commit/6d9837ad9a9e006117cd7372fdc60f9a3889c7e2))
3396
3397#### Performance
3398
3399* **Args and Apps:**  changes HashSet->Vec in some instances for increased performance ([d0c3b379](https://github.com/clap-rs/clap/commit/d0c3b379700757e0a9b0c40af709f8af1f5b4949))
3400
3401
3402
3403## v1.2.0 (2015-08-15)
3404
3405
3406#### Bug Fixes
3407
3408*   fixed misspell and enum name ([7df170d7](https://github.com/clap-rs/clap/commit/7df170d7f4ecff06608317655d1e0c4298f62076))
3409*   fixed use for clap crate ([dc3ada73](https://github.com/clap-rs/clap/commit/dc3ada738667d4b689678f79d14251ee82004ece))
3410
3411#### Documentation
3412
3413*   updates docs for new features ([03496547](https://github.com/clap-rs/clap/commit/034965471782d872ca495045b58d34b31807c5b1))
3414*   fixed docs for previous changes ([ade36778](https://github.com/clap-rs/clap/commit/ade367780c366425de462506d256e0f554ed3b9c))
3415
3416#### Improvements
3417
3418* **AppSettings:**  adds ability to add multiple settings at once ([4a00e251](https://github.com/clap-rs/clap/commit/4a00e2510d0ca8d095d5257d51691ba3b61c1374))
3419
3420#### Features
3421
3422*   Replace application level settings with enum variants ([618dc4e2](https://github.com/clap-rs/clap/commit/618dc4e2c205bf26bc43146164e65eb1f6b920ed))
3423* **Args:**  allows for custom argument value validations to be defined ([84ae2ddb](https://github.com/clap-rs/clap/commit/84ae2ddbceda34b5cbda98a6959edaa52fde2e1a), closes [#170](https://github.com/clap-rs/clap/issues/170))
3424
3425
3426
3427## v1.1.6 (2015-08-01)
3428
3429
3430#### Bug Fixes
3431
3432*   fixes two bugs in App when printing newlines in help and subcommands required error ([d63c0136](https://github.com/clap-rs/clap/commit/d63c0136310db9dd2b1c7b4745938311601d8938))
3433
3434
3435
3436## v1.1.5 (2015-07-29)
3437
3438#### Performance
3439
3440*   removes some unneeded allocations ([93e915df](https://github.com/clap-rs/clap/commit/93e915dfe300f7b7d6209ca93323c6a46f89a8c1))
3441
3442## v1.1.4 (2015-07-20)
3443
3444
3445#### Improvements
3446
3447* **Usage Strings**  displays a [--] when it may be helpful ([86c3be85](https://github.com/clap-rs/clap/commit/86c3be85fb6f77f83b5a6d2df40ae60937486984))
3448
3449#### Bug Fixes
3450
3451* **Macros**  fixes a typo in a macro generated error message ([c9195c5f](https://github.com/clap-rs/clap/commit/c9195c5f92abb8cd6a37b4f4fbb2f1fee2a8e368))
3452* **Type Errors**  fixes formatting of error output when failed type parsing ([fe5d95c6](https://github.com/clap-rs/clap/commit/fe5d95c64f3296e6eddcbec0cb8b86659800145f))
3453
3454
3455
3456## v1.1.3 (2015-07-18)
3457
3458
3459#### Documentation
3460
3461*   updates README.md to include lack of color support on Windows ([52f81e17](https://github.com/clap-rs/clap/commit/52f81e17377b18d2bd0f34693b642b7f358998ee))
3462
3463#### Bug Fixes
3464
3465*   fixes formatting bug which prevented compiling on windows ([9cb5dceb](https://github.com/clap-rs/clap/commit/9cb5dceb3e5fe5e0e7b24619ff77e5040672b723), closes [#163](https://github.com/clap-rs/clap/issues/163))
3466
3467
3468
3469## v1.1.2 (2015-07-17)
3470
3471
3472#### Bug Fixes
3473
3474*   fixes a bug when parsing multiple {n} newlines inside help strings ([6d214b54](https://github.com/clap-rs/clap/commit/6d214b549a9b7e189a94e5fa2b7c92cc333ca637))
3475
3476
3477
3478## v1.1.1 (2015-07-17)
3479
3480
3481#### Bug Fixes
3482
3483*   fixes a logic bug and allows setting Arg::number_of_values() < 2 ([42b6d1fc](https://github.com/clap-rs/clap/commit/42b6d1fc3c519c92dfb3af15276e7d3b635e6cfe), closes [#161](https://github.com/clap-rs/clap/issues/161))
3484
3485
3486
3487## v1.1.0 (2015-07-16)
3488
3489
3490#### Features
3491
3492*   allows creating unified help messages, a la docopt or getopts ([52bcd892](https://github.com/clap-rs/clap/commit/52bcd892ea51564ce463bc5865acd64f8fe91cb1), closes [#158](https://github.com/clap-rs/clap/issues/158))
3493*   allows stating all subcommands should *not* have --version flags ([336c476f](https://github.com/clap-rs/clap/commit/336c476f631d512b54ac56fdca6f29ebdc2c00c5), closes [#156](https://github.com/clap-rs/clap/issues/156))
3494*   allows setting version number to auto-propagate through subcommands ([bc66d3c6](https://github.com/clap-rs/clap/commit/bc66d3c6deedeca62463fff95369ab1cfcdd366b), closes [#157](https://github.com/clap-rs/clap/issues/157))
3495
3496#### Improvements
3497
3498* **Help Strings**  properly aligns and handles newlines in long help strings ([f9800a29](https://github.com/clap-rs/clap/commit/f9800a29696dd2cc0b0284bf693b3011831e556f), closes [#145](https://github.com/clap-rs/clap/issues/145))
3499
3500
3501#### Performance
3502
3503* **Help Messages**  big performance improvements when printing help messages ([52bcd892](https://github.com/clap-rs/clap/commit/52bcd892ea51564ce463bc5865acd64f8fe91cb1))
3504
3505#### Documentation
3506
3507*   updates readme with new features ([8232f7bb](https://github.com/clap-rs/clap/commit/8232f7bb52e88862bc13c3d4f99ee4f56cfe4bc0))
3508*   fix incorrect code example for `App::subcommand_required` ([8889689d](https://github.com/clap-rs/clap/commit/8889689dc6336ccc45b2c9f2cf8e2e483a639e93))
3509
3510
3511## v1.0.3 (2015-07-11)
3512
3513
3514#### Improvements
3515
3516* **Errors**  writes errors to stderr ([cc76ab8c](https://github.com/clap-rs/clap/commit/cc76ab8c2b77c67b42f4717ded530df7806142cf), closes [#154](https://github.com/clap-rs/clap/issues/154))
3517
3518#### Documentation
3519
3520* **README.md**  updates example help message to new format ([0aca29bd](https://github.com/clap-rs/clap/commit/0aca29bd5d6d1a4e9971bdc88d946ffa58606efa))
3521
3522
3523
3524## v1.0.2 (2015-07-09)
3525
3526
3527#### Improvements
3528
3529* **Usage**  re-orders optional arguments and required to natural standard ([dc7e1fce](https://github.com/clap-rs/clap/commit/dc7e1fcea5c85d317018fb201d2a9262249131b4), closes [#147](https://github.com/clap-rs/clap/issues/147))
3530
3531
3532
3533## v1.0.1 (2015-07-08)
3534
3535
3536#### Bug Fixes
3537
3538*   allows empty values when using --long='' syntax ([083f82d3](https://github.com/clap-rs/clap/commit/083f82d333b69720a6ef30074875310921d964d1), closes [#151](https://github.com/clap-rs/clap/issues/151))
3539
3540
3541
3542## v1.0.0 (2015-07-08)
3543
3544
3545#### Documentation
3546
3547* **README.md**  adds new features to what's new list ([938f7f01](https://github.com/clap-rs/clap/commit/938f7f01340f521969376cf4e2e3d9436bca21f7))
3548* **README.md**  use with_name for subcommands ([28b7e316](https://github.com/clap-rs/clap/commit/28b7e3161fb772e5309042648fe8c3a420645bac))
3549
3550#### Features
3551
3552*   args can now be parsed from arbitrary locations, not just std::env::args() ([75312528](https://github.com/clap-rs/clap/commit/753125282b1b9bfff875f1557ce27610edcc59e1))
3553
3554
3555
3556## v1.0.0-beta (2015-06-30)
3557
3558
3559#### Features
3560
3561*   allows waiting for user input on error ([d0da3bdd](https://github.com/clap-rs/clap/commit/d0da3bdd9d1871541907ea9c645322a74d260e07), closes [#140](https://github.com/clap-rs/clap/issues/140))
3562* **Help**  allows one to fully override the auto-generated help message ([26d5ae3e](https://github.com/clap-rs/clap/commit/26d5ae3e330d1e150811d5b60b2b01a8f8df854e), closes [#141](https://github.com/clap-rs/clap/issues/141))
3563
3564#### Documentation
3565
3566*   adds "whats new" section to readme ([ff149a29](https://github.com/clap-rs/clap/commit/ff149a29dd9e179865e6d577cd7dc87c54f8f95c))
3567
3568#### Improvements
3569
3570*   removes deprecated functions in prep for 1.0 ([274484df](https://github.com/clap-rs/clap/commit/274484dfd08fff4859cefd7e9bef3b73d3a9cb5f))
3571
3572
3573
3574## v0.11.0 (2015-06-17) - BREAKING CHANGE
3575
3576
3577#### Documentation
3578
3579*   updates docs to new version flag defaults ([ebf442eb](https://github.com/clap-rs/clap/commit/ebf442ebebbcd2ec6bfe2c06566c9d362bccb112))
3580
3581#### Features
3582
3583* **Help and Version**  default short for version is now `-V` but can be overridden (only breaks manual documentation) (**BREAKING CHANGE** [eb1d9320](https://github.com/clap-rs/clap/commit/eb1d9320c509c1e4e57d7c7959da82bcfe06ada0))
3584
3585
3586
3587## v0.10.5 (2015-06-06)
3588
3589
3590#### Bug Fixes
3591
3592* **Global Args**  global arguments propagate fully now ([1f377960](https://github.com/clap-rs/clap/commit/1f377960a48c82f54ca5f39eb56bcb393140b046), closes [#137](https://github.com/clap-rs/clap/issues/137))
3593
3594
3595
3596## v0.10.4 (2015-06-06)
3597
3598
3599#### Bug Fixes
3600
3601* **Global Args**  global arguments propagate fully now ([8f2c0160](https://github.com/clap-rs/clap/commit/8f2c0160c8d844daef375a33dbaec7d89de00a00), closes [#137](https://github.com/clap-rs/clap/issues/137))
3602
3603
3604
3605## v0.10.3 (2015-05-31)
3606
3607
3608#### Bug Fixes
3609
3610* **Global Args**  fixes a bug where globals only transfer to one subcommand ([a37842ee](https://github.com/clap-rs/clap/commit/a37842eec1ee3162b86fdbda23420b221cdb1e3b), closes [#135](https://github.com/clap-rs/clap/issues/135))
3611
3612
3613
3614## v0.10.2 (2015-05-30)
3615
3616
3617#### Improvements
3618
3619* **Binary Names**  allows users to override the system determined bin name ([2191fe94](https://github.com/clap-rs/clap/commit/2191fe94bda35771383b52872fb7f5421b178be1), closes [#134](https://github.com/clap-rs/clap/issues/134))
3620
3621#### Documentation
3622
3623*   adds contributing guidelines ([6f76bd0a](https://github.com/clap-rs/clap/commit/6f76bd0a07e8b7419b391243ab2d6687cd8a9c5f))
3624
3625
3626
3627## v0.10.1 (2015-05-26)
3628
3629
3630#### Features
3631
3632*   can now specify that an app or subcommand should display help on no args or subcommands ([29ca7b2f](https://github.com/clap-rs/clap/commit/29ca7b2f74376ca0cdb9d8ee3bfa99f7640cc404), closes [#133](https://github.com/clap-rs/clap/issues/133))
3633
3634
3635
3636## v0.10.0 (2015-05-23)
3637
3638
3639#### Features
3640
3641* **Global Args**  allows args that propagate down to child commands ([2bcc6137](https://github.com/clap-rs/clap/commit/2bcc6137a83cb07757771a0afea953e68e692f0b), closes [#131](https://github.com/clap-rs/clap/issues/131))
3642
3643#### Improvements
3644
3645* **Colors**  implements more structured colored output ([d6c3ed54](https://github.com/clap-rs/clap/commit/d6c3ed54d21cf7b40d9f130d4280ff5448522fc5), closes [#129](https://github.com/clap-rs/clap/issues/129))
3646
3647#### Deprecations
3648
3649* **SubCommand/App**  several methods and functions for stable release ([28b73855](https://github.com/clap-rs/clap/commit/28b73855523ad170544afdb20665db98702fbe70))
3650
3651#### Documentation
3652
3653*   updates for deprecations and new features ([743eefe8](https://github.com/clap-rs/clap/commit/743eefe8dd40c1260065ce086d572e9e9358bc4c))
3654
3655
3656
3657## v0.9.2 (2015-05-20)
3658
3659
3660#### Bug Fixes
3661
3662* **help**  allows parent requirements to be ignored with help and version ([52218cc1](https://github.com/clap-rs/clap/commit/52218cc1fdb06a42456c964d98cc2c7ac3432412), closes [#124](https://github.com/clap-rs/clap/issues/124))
3663
3664
3665
3666## v0.9.1 (2015-05-18)
3667
3668
3669#### Bug Fixes
3670
3671* **help**  fixes a bug where requirements are included as program name in help and version ([08ba3f25](https://github.com/clap-rs/clap/commit/08ba3f25cf38b149229ba8b9cb37a5804fe6b789))
3672
3673
3674
3675## v0.9.0 (2015-05-17)
3676
3677
3678#### Improvements
3679
3680* **usage**  usage strings now include parent command requirements ([dd8f21c7](https://github.com/clap-rs/clap/commit/dd8f21c7c15cde348fdcf44fa7c205f0e98d2e4a), closes [#125](https://github.com/clap-rs/clap/issues/125))
3681* **args**  allows consumer of clap to decide if empty values are allowed or not ([ab4ec609](https://github.com/clap-rs/clap/commit/ab4ec609ccf692b9b72cccef5c9f74f5577e360d), closes [#122](https://github.com/clap-rs/clap/issues/122))
3682
3683#### Features
3684
3685* **subcommands**
3686  *  allows optionally specifying that no subcommand is an error ([7554f238](https://github.com/clap-rs/clap/commit/7554f238fd3afdd60b7e4dcf00ff4a9eccf842c1), closes [#126](https://github.com/clap-rs/clap/issues/126))
3687  *  subcommands can optionally negate parent requirements ([4a4229f5](https://github.com/clap-rs/clap/commit/4a4229f500e21c350e1ef78dd09ef27559653288), closes [#123](https://github.com/clap-rs/clap/issues/123))
3688
3689
3690
3691## v0.8.6 (2015-05-17)
3692
3693
3694#### Bug Fixes
3695
3696* **args**  `-` can now be parsed as a value for an argument ([bc12e78e](https://github.com/clap-rs/clap/commit/bc12e78eadd7eaf9d008a8469fdd2dfd7990cb5d), closes [#121](https://github.com/clap-rs/clap/issues/121))
3697
3698
3699
3700## v0.8.5 (2015-05-15)
3701
3702
3703#### Bug Fixes
3704
3705* **macros**  makes macro errors consistent with others ([0c264a8c](https://github.com/clap-rs/clap/commit/0c264a8ca57ec1cfdcb74dae79145d766cdc9b97), closes [#118](https://github.com/clap-rs/clap/issues/118))
3706
3707#### Features
3708
3709* **macros**
3710  *  arg_enum! and simple_enum! provide a Vec<&str> of variant names ([30fa87ba](https://github.com/clap-rs/clap/commit/30fa87ba4e0f3189351d8f4f78b72e616a30d0bd), closes [#119](https://github.com/clap-rs/clap/issues/119))
3711  *  arg_enum! and simple_enum! auto-implement Display ([d1219f0d](https://github.com/clap-rs/clap/commit/d1219f0d1371d872061bd0718057eca4ef47b739), closes [#120](https://github.com/clap-rs/clap/issues/120))
3712
3713
3714
3715## v0.8.4 (2015-05-12)
3716
3717
3718#### Bug Fixes
3719
3720* **suggestions**  --help and --version now get suggestions ([d2b3b1fa](https://github.com/clap-rs/clap/commit/d2b3b1faa0bdc1c5d2350cc4635aba81e02e9d96), closes [#116](https://github.com/clap-rs/clap/issues/116))
3721
3722
3723
3724## v0.8.3 (2015-05-10)
3725
3726
3727#### Bug Fixes
3728
3729* **usage**  groups unfold their members in usage strings ([55d15582](https://github.com/clap-rs/clap/commit/55d155827ea4a6b077a83669701e797ce1ad68f4), closes [#114](https://github.com/clap-rs/clap/issues/114))
3730
3731#### Performance
3732
3733* **usage**  removes unneeded allocations ([fd53cd18](https://github.com/clap-rs/clap/commit/fd53cd188555f5c3dc8bc341c5d7eb04b761a70f))
3734
3735
3736
3737## v0.8.2 (2015-05-08)
3738
3739
3740#### Bug Fixes
3741
3742* **usage strings**  positional arguments are presented in index order ([eb0e374e](https://github.com/clap-rs/clap/commit/eb0e374ecf952f1eefbc73113f21e0705936e40b), closes [#112](https://github.com/clap-rs/clap/issues/112))
3743
3744
3745
3746## v0.8.1 (2015-05-06)
3747
3748
3749#### Bug Fixes
3750
3751* **subcommands**  stops parsing multiple values when subcommands are found ([fc79017e](https://github.com/clap-rs/clap/commit/fc79017eced04fd41cc1801331e5054df41fac17), closes [#109](https://github.com/clap-rs/clap/issues/109))
3752
3753#### Improvements
3754
3755* **color**  reduces color in error messages ([aab44cca](https://github.com/clap-rs/clap/commit/aab44cca6352f47e280c296e50c535f5d752dd46), closes [#110](https://github.com/clap-rs/clap/issues/110))
3756* **suggestions**  adds suggested arguments to usage strings ([99447414](https://github.com/clap-rs/clap/commit/994474146e9fb8b701af773a52da71553d74d4b7))
3757
3758
3759
3760## v0.8.0 (2015-05-06)
3761
3762
3763#### Bug Fixes
3764
3765* **did-you-mean**  for review ([0535cfb0](https://github.com/clap-rs/clap/commit/0535cfb0c711331568b4de8080eeef80bd254b68))
3766* **Positional**  positionals were ignored if they matched a subcmd, even after '--' ([90e7b081](https://github.com/clap-rs/clap/commit/90e7b0818741668b47cbe3becd029bab588e3553))
3767* **help**  fixes bug where space between arg and help is too long ([632fb115](https://github.com/clap-rs/clap/commit/632fb11514c504999ea86bdce47cdd34f8ebf646))
3768
3769#### Features
3770
3771* **from_usage**  adds ability to add value names or num of vals in usage string ([3d581976](https://github.com/clap-rs/clap/commit/3d58197674ed7886ca315efb76e411608a327501), closes [#98](https://github.com/clap-rs/clap/issues/98))
3772* **did-you-mean**
3773  *  gate it behind 'suggestions' ([c0e38351](https://github.com/clap-rs/clap/commit/c0e383515d01bdd5ca459af9c2f7e2cf49e2488b))
3774  *  for possible values ([1cc2deb2](https://github.com/clap-rs/clap/commit/1cc2deb29158e0e4e8b434e4ce26b3d819301a7d))
3775  *  for long flags (i.e. --long) ([52a0b850](https://github.com/clap-rs/clap/commit/52a0b8505c99354bdf5fd1cd256cf41197ac2d81))
3776  *  for subcommands ([06e869b5](https://github.com/clap-rs/clap/commit/06e869b5180258047ed3c60ba099de818dd25fff))
3777* **Flags**  adds suggestions functionality ([8745071c](https://github.com/clap-rs/clap/commit/8745071c3257dd327c497013516f12a823df9530))
3778* **errors**  colorizes output red on error ([f8b26b13](https://github.com/clap-rs/clap/commit/f8b26b13da82ba3ba9a932d3d1ab4ea45d1ab036))
3779
3780#### Improvements
3781
3782* **arg_enum**  allows ascii case insensitivity for enum variants ([b249f965](https://github.com/clap-rs/clap/commit/b249f9657c6921c004764bd80d13ebca81585eec), closes [#104](https://github.com/clap-rs/clap/issues/104))
3783* **clap-test**  simplified `make test` invocation ([d17dcb29](https://github.com/clap-rs/clap/commit/d17dcb2920637a1f58c61c596b7bd362fd53047c))
3784
3785#### Documentation
3786
3787* **README**  adds details about optional and new features ([960389de](https://github.com/clap-rs/clap/commit/960389de02c9872aaee9adabe86987f71f986e39))
3788* **clap**  fix typos caught by codespell ([8891d929](https://github.com/clap-rs/clap/commit/8891d92917aa1a069cca67272be41b99e548356e))
3789* **from_usage**  explains new usage strings with multiple values ([05476fc6](https://github.com/clap-rs/clap/commit/05476fc61cd1e5f4a4e750d258c878732a3a9c64))
3790
3791
3792
3793## v0.7.6 (2015-05-05)
3794
3795
3796#### Improvements
3797
3798* **Options**  adds number of values to options in help/usage ([c1c993c4](https://github.com/clap-rs/clap/commit/c1c993c419d18e35c443785053d8de9a2ef88073))
3799
3800#### Features
3801
3802* **from_usage**  adds ability to add value names or num of vals in usage string ([ad55748c](https://github.com/clap-rs/clap/commit/ad55748c265cf27935c7b210307d2040b6a09125), closes [#98](https://github.com/clap-rs/clap/issues/98))
3803
3804#### Bug Fixes
3805
3806* **MultipleValues**  properly distinguishes between multiple values and multiple occurrences ([dd2a7564](https://github.com/clap-rs/clap/commit/dd2a75640ca68a91b973faad15f04df891356cef), closes [#99](https://github.com/clap-rs/clap/issues/99))
3807* **help**  fixes tab alignment with multiple values ([847001ff](https://github.com/clap-rs/clap/commit/847001ff6d8f4d9518e810fefb8edf746dd0f31e))
3808
3809#### Documentation
3810
3811* **from_usage**  explains new usage strings with multiple values ([5a3a42df](https://github.com/clap-rs/clap/commit/5a3a42dfa3a783537f88dedc0fd5f0edcb8ea372))
3812
3813
3814
3815## v0.7.5 (2015-05-04)
3816
3817
3818#### Bug Fixes
3819
3820* **Options**  fixes bug where options with no value don't error out ([a1fb94be](https://github.com/clap-rs/clap/commit/a1fb94be53141572ffd97aad037295d4ffec82d0))
3821
3822
3823
3824## v0.7.4 (2015-05-03)
3825
3826
3827#### Bug Fixes
3828
3829* **Options**  fixes a bug where option arguments in succession get their values skipped ([f66334d0](https://github.com/clap-rs/clap/commit/f66334d0ce984e2b56e5c19abb1dd536fae9342a))
3830
3831
3832
3833## v0.7.3 (2015-05-03)
3834
3835
3836#### Bug Fixes
3837
3838* **RequiredValues**  fixes a bug where missing values are parsed as missing arguments ([93c4a723](https://github.com/clap-rs/clap/commit/93c4a7231ba1a08152648598f7aa4503ea82e4de))
3839
3840#### Improvements
3841
3842* **ErrorMessages**  improves error messages and corrections ([a29c3983](https://github.com/clap-rs/clap/commit/a29c3983c4229906655a29146ec15a0e46dd942d))
3843* **ArgGroups**  improves requirement and confliction support for groups ([c236dc5f](https://github.com/clap-rs/clap/commit/c236dc5ff475110d2a1b80e62903f80296163ad3))
3844
3845
3846
3847## v0.7.2 (2015-05-03)
3848
3849
3850#### Bug Fixes
3851
3852* **RequiredArgs**  fixes bug where required-by-default arguments are not listed in usage ([12aea961](https://github.com/clap-rs/clap/commit/12aea9612d290845ba86515c240aeeb0a21198db), closes [#96](https://github.com/clap-rs/clap/issues/96))
3853
3854
3855
3856## v0.7.1 (2015-05-01)
3857
3858
3859#### Bug Fixes
3860
3861* **MultipleValues**  stops evaluating values if the max or exact number of values was reached ([86d92c9f](https://github.com/clap-rs/clap/commit/86d92c9fdbf9f422442e9562977bbaf268dbbae1))
3862
3863
3864
3865## v0.7.0 (2015-04-30) - BREAKING CHANGE
3866
3867
3868#### Bug Fixes
3869
3870* **from_usage**  removes bug where usage strings have no help text ([ad4e5451](https://github.com/clap-rs/clap/commit/ad4e54510739aeabf75f0da3278fb0952db531b3), closes [#83](https://github.com/clap-rs/clap/issues/83))
3871
3872#### Features
3873
3874* **MultipleValues**
3875  *  add support for minimum and maximum number of values ([53f6b8c9](https://github.com/clap-rs/clap/commit/53f6b8c9d8dc408b4fa9f833fc3a63683873c42f))
3876  *  adds support limited number and named values ([ae09f05e](https://github.com/clap-rs/clap/commit/ae09f05e92251c1b39a83d372736fcc7b504e432))
3877  *  implement shorthand for options with multiple values ([6669f0a9](https://github.com/clap-rs/clap/commit/6669f0a9687d4f668523145d7bd5c007d1eb59a8))
3878* **arg**  allow other types besides Vec for multiple value settings (**BREAKING CHANGE** [0cc2f698](https://github.com/clap-rs/clap/commit/0cc2f69839b9b1db5d06330771b494783049a88e), closes [#87](https://github.com/clap-rs/clap/issues/87))
3879* **usage**  implement smart usage strings on errors ([d77048ef](https://github.com/clap-rs/clap/commit/d77048efb1e595ffe831f1a2bea2f2700db53b9f), closes [#88](https://github.com/clap-rs/clap/issues/88))
3880
3881
3882
3883## v0.6.9 (2015-04-29)
3884
3885
3886#### Bug Fixes
3887
3888* **from_usage**  removes bug where usage strings have no help text ([ad4e5451](https://github.com/clap-rs/clap/commit/ad4e54510739aeabf75f0da3278fb0952db531b3), closes [#83](https://github.com/clap-rs/clap/issues/83))
3889
3890
3891
3892## 0.6.8 (2015-04-27)
3893
3894
3895#### Bug Fixes
3896
3897* **help**  change long help --long=long -> --long <long> ([1e25abfc](https://github.com/clap-rs/clap/commit/1e25abfc36679ab89eae71bf98ced4de81992d00))
3898* **RequiredArgs**  required by default args should no longer be required when their exclusions are present ([4bb4c3cc](https://github.com/clap-rs/clap/commit/4bb4c3cc076b49e86720e882bf8c489877199f2d))
3899
3900#### Features
3901
3902* **ArgGroups**  add ability to create arg groups ([09eb4d98](https://github.com/clap-rs/clap/commit/09eb4d9893af40c347e50e2b717e1adef552357d))
3903
3904
3905
3906## v0.6.7 (2015-04-22)
3907
3908
3909#### Bug Fixes
3910
3911* **from_usage**  fix bug causing args to not be required ([b76129e9](https://github.com/clap-rs/clap/commit/b76129e9b71a63365d5c77a7f57b58dbd1e94d49))
3912
3913#### Features
3914
3915* **apps**  add ability to display additional help info after auto-gen'ed help msg ([65cc259e](https://github.com/clap-rs/clap/commit/65cc259e4559cbe3653c865ec0c4b1e42a389b07))
3916
3917
3918
3919## v0.6.6 (2015-04-19)
3920
3921
3922#### Bug Fixes
3923
3924* **from_usage**  tabs and spaces should be treated equally ([4fd44181](https://github.com/clap-rs/clap/commit/4fd44181d55d8eb88caab1e625231cfa3129e347))
3925
3926#### Features
3927
3928* **macros.rs**  add macro to get version from Cargo.toml ([c630969a](https://github.com/clap-rs/clap/commit/c630969aa3bbd386379219cae27ba1305b117f3e))
3929
3930
3931
3932## v0.6.5 (2015-04-19)
3933
3934
3935#### Bug Fixes
3936
3937* **macros.rs**  fix use statements for trait impls ([86e4075e](https://github.com/clap-rs/clap/commit/86e4075eb111937c8a7bdb344e866e350429f042))
3938
3939
3940
3941## v0.6.4 (2015-04-17)
3942
3943
3944#### Features
3945
3946* **macros**  add ability to create enums pub or priv with derives ([2c499f80](https://github.com/clap-rs/clap/commit/2c499f8015a199827cdf1fa3ec4f6f171722f8c7))
3947
3948
3949
3950## v0.6.3 (2015-04-16)
3951
3952
3953#### Features
3954
3955* **macros**  add macro to create custom enums to use as types ([fb672aff](https://github.com/clap-rs/clap/commit/fb672aff561c29db2e343d6c607138f141aca8b6))
3956
3957
3958
3959## v0.6.2 (2015-04-14)
3960
3961
3962#### Features
3963
3964* **macros**
3965  *  add ability to get multiple typed values or exit ([0b87251f](https://github.com/clap-rs/clap/commit/0b87251fc088234bee51c323c2b652d7254f7a59))
3966  *  add ability to get a typed multiple values ([e243fe38](https://github.com/clap-rs/clap/commit/e243fe38ddbbf845a46c0b9baebaac3778c80927))
3967  *  add convenience macro to get a typed value or exit ([4b7cd3ea](https://github.com/clap-rs/clap/commit/4b7cd3ea4947780d9daa39f3e1ddab53ad4c7fef))
3968  *  add convenience macro to get a typed value ([8752700f](https://github.com/clap-rs/clap/commit/8752700fbb30e89ee68adbce24489ae9a24d33a9))
3969
3970
3971
3972## v0.6.1 (2015-04-13)
3973
3974
3975#### Bug Fixes
3976
3977* **from_usage**  trim all whitespace before parsing ([91d29045](https://github.com/clap-rs/clap/commit/91d2904599bd602deef2e515dfc65dc2863bdea0))
3978
3979
3980
3981## v0.6.0 (2015-04-13)
3982
3983
3984#### Bug Fixes
3985
3986* **tests**  fix failing doc tests ([3710cd69](https://github.com/clap-rs/clap/commit/3710cd69162f87221a62464f63437c1ce843ad3c))
3987
3988#### Features
3989
3990* **app**  add support for building args from usage strings ([d5d48bcf](https://github.com/clap-rs/clap/commit/d5d48bcf463a4e494ef758836bd69a4c220bbbb5))
3991* **args**  add ability to create basic arguments from a usage string ([ab409a8f](https://github.com/clap-rs/clap/commit/ab409a8f1db9e37cc70200f6f4a84a162692e618))
3992
3993
3994
3995## v0.5.14 (2015-04-10)
3996
3997
3998#### Bug Fixes
3999
4000* **usage**
4001  *  remove unneeded space ([51372789](https://github.com/clap-rs/clap/commit/5137278942121bc2593ce6e5dc224ec2682549e6))
4002  *  remove warning about unused variables ([ba817b9d](https://github.com/clap-rs/clap/commit/ba817b9d815e37320650973f1bea0e7af3030fd7))
4003
4004#### Features
4005
4006* **usage**  add ability to get usage string for subcommands too ([3636afc4](https://github.com/clap-rs/clap/commit/3636afc401c2caa966efb5b1869ef4f1ed3384aa))
4007
4008
4009
4010## v0.5.13 (2015-04-09)
4011
4012
4013#### Features
4014
4015* **SubCommands**  add method to get name and subcommand matches together ([64e53928](https://github.com/clap-rs/clap/commit/64e539280e23e567cf5de393b346eb0ca20e7eb5))
4016* **ArgMatches**  add method to get default usage string ([02462150](https://github.com/clap-rs/clap/commit/02462150ca750bdc7012627d7e8d96379d494d7f))
4017
4018
4019
4020## v0.5.12 (2015-04-08)
4021
4022
4023#### Features
4024
4025* **help**  sort arguments by name so as to not display a random order ([f4b2bf57](https://github.com/clap-rs/clap/commit/f4b2bf5767386013069fb74862e6e938dacf44d2))
4026
4027
4028
4029## v0.5.11 (2015-04-08)
4030
4031
4032#### Bug Fixes
4033
4034* **flags**  fix bug not allowing users to specify -v or -h ([90e72cff](https://github.com/clap-rs/clap/commit/90e72cffdee321b79eea7a2207119533540062b4))
4035
4036
4037
4038## v0.5.10 (2015-04-08)
4039
4040
4041#### Bug Fixes
4042
4043* **help**  fix spacing when option argument has not long version ([ca17fa49](https://github.com/clap-rs/clap/commit/ca17fa494b68e92da83ee364bf64b0687006824b))
4044
4045
4046
4047## v0.5.9 (2015-04-08)
4048
4049
4050#### Bug Fixes
4051
4052* **positional args**  all previous positional args become required when a latter one is required ([c14c3f31](https://github.com/clap-rs/clap/commit/c14c3f31fd557c165570b60911d8ee483d89d6eb), closes [#50](https://github.com/clap-rs/clap/issues/50))
4053* **clap**  remove unstable features for Rust 1.0 ([9abdb438](https://github.com/clap-rs/clap/commit/9abdb438e36e364d41550e7f5d44ebcaa8ee6b10))
4054* **args**  improve error messages for arguments with mutual exclusions ([18dbcf37](https://github.com/clap-rs/clap/commit/18dbcf37024daf2b76ca099a6f118b53827aa339), closes [#51](https://github.com/clap-rs/clap/issues/51))
4055
4056
4057
4058## v0.5.8 (2015-04-08)
4059
4060
4061#### Bug Fixes
4062
4063* **option args**  fix bug in getting the wrong number of occurrences for options ([82ad6ad7](https://github.com/clap-rs/clap/commit/82ad6ad77539cf9f9a03b78db466f575ebd972cc))
4064* **help**  fix formatting for option arguments with no long ([e8691004](https://github.com/clap-rs/clap/commit/e869100423d93fa3acff03c4620cbcc0d0e790a1))
4065* **flags**  add assertion to catch flags with specific value sets ([a0a2a40f](https://github.com/clap-rs/clap/commit/a0a2a40fed57f7c5ad9d68970d090e9856306c7d), closes [#52](https://github.com/clap-rs/clap/issues/52))
4066* **args**  improve error messages for arguments with mutual exclusions ([bff945fc](https://github.com/clap-rs/clap/commit/bff945fc5d03bba4266533340adcffb002508d1b), closes [#51](https://github.com/clap-rs/clap/issues/51))
4067* **tests**  add missing .takes_value(true) to option2 ([bdb0e88f](https://github.com/clap-rs/clap/commit/bdb0e88f696c8595c3def3bfb0e52d538c7be085))
4068* **positional args**  all previous positional args become required when a latter one is required ([343d47dc](https://github.com/clap-rs/clap/commit/343d47dcbf83786a45c0d0f01b27fd9dd76725de), closes [#50](https://github.com/clap-rs/clap/issues/50))
4069
4070
4071
4072## v0.5.7 (2015-04-08)
4073
4074
4075#### Bug Fixes
4076
4077* **args**  fix bug in arguments who are required and mutually exclusive ([6ceb88a5](https://github.com/clap-rs/clap/commit/6ceb88a594caae825605abc1cdad95204996bf29))
4078
4079
4080
4081## v0.5.6 (2015-04-08)
4082
4083
4084#### Bug Fixes
4085
4086* **help**  fix formatting of help and usage ([28691b52](https://github.com/clap-rs/clap/commit/28691b52f67e65c599e10e4ea2a0f6f9765a06b8))
4087
4088
4089
4090## v0.5.5 (2015-04-08)
4091
4092
4093#### Bug Fixes
4094
4095* **help**  fix formatting of help for flags and options ([6ec10115](https://github.com/clap-rs/clap/commit/6ec1011563a746f0578a93b76d45e63878e0f9a8))
4096
4097
4098
4099## v0.5.4 (2015-04-08)
4100
4101
4102#### Features
4103
4104* **help**  add '...' to indicate multiple values supported ([297ddba7](https://github.com/clap-rs/clap/commit/297ddba77000e2228762ab0eca50b480f7467386))
4105
4106
4107
4108## v0.5.3 (2015-04-08)
4109
4110
4111#### Features
4112
4113* **positionals**
4114  *  add assertions for positional args with multiple vals ([b7fa72d4](https://github.com/clap-rs/clap/commit/b7fa72d40f18806ec2042dd67a518401c2cf5681))
4115  *  add support for multiple values ([80784009](https://github.com/clap-rs/clap/commit/807840094109fbf90b348039ae22669ef27889ba))
4116
4117
4118
4119## v0.5.2 (2015-04-08)
4120
4121
4122#### Bug Fixes
4123
4124* **apps**  allow use of hyphens in application and subcommand names ([da549dcb](https://github.com/clap-rs/clap/commit/da549dcb6c7e0d773044ab17829744483a8b0f7f))
4125
4126
4127
4128## v0.5.1 (2015-04-08)
4129
4130
4131#### Bug Fixes
4132
4133* **args**  determine if the only arguments allowed are also required ([0a09eb36](https://github.com/clap-rs/clap/commit/0a09eb365ced9a03faf8ed24f083ef730acc90e8))
4134
4135
4136
4137## v0.5.0 (2015-04-08)
4138
4139
4140#### Features
4141
4142* **args**  add support for a specific set of allowed values on options or positional arguments ([270eb889](https://github.com/clap-rs/clap/commit/270eb88925b6dc2881bff1f31ee344f085d31809))
4143
4144
4145
4146## v0.4.18 (2015-04-08)
4147
4148
4149#### Bug Fixes
4150
4151* **usage**  display required args in usage, even if only required by others ([1b7316d4](https://github.com/clap-rs/clap/commit/1b7316d4a8df70b0aa584ccbfd33f68966ad2a54))
4152
4153#### Features
4154
4155* **subcommands**  properly list subcommands in help and usage ([4ee02344](https://github.com/clap-rs/clap/commit/4ee023442abc3dba54b68138006a52b714adf331))
4156
4157
4158
4159## v0.4.17 (2015-04-08)
4160
4161
4162#### Bug Fixes
4163
4164* **tests**  remove cargo test from claptests makefile ([1cf73817](https://github.com/clap-rs/clap/commit/1cf73817d6fb1dccb5b6a23b46c2efa8b567ad62))
4165
4166
4167
4168## v0.4.16 (2015-04-08)
4169
4170
4171#### Bug Fixes
4172
4173* **option**  fix bug with option occurrence values ([9af52e93](https://github.com/clap-rs/clap/commit/9af52e93cef9e17ac9974963f132013d0b97b946))
4174* **tests**  fix testing script bug and formatting ([d8f03a55](https://github.com/clap-rs/clap/commit/d8f03a55c4f74d126710ee06aad5a667246a8001))
4175
4176#### Features
4177
4178* **arg**  allow lifetimes other than 'static in arguments ([9e8c1fb9](https://github.com/clap-rs/clap/commit/9e8c1fb9406f8448873ca58bab07fe905f1551e5))
4179
4180<!-- next-url -->
4181[Unreleased]: https://github.com/clap-rs/clap/compare/v4.1.13...HEAD
4182[4.1.13]: https://github.com/clap-rs/clap/compare/v4.1.12...v4.1.13
4183[4.1.12]: https://github.com/clap-rs/clap/compare/v4.1.11...v4.1.12
4184[4.1.11]: https://github.com/clap-rs/clap/compare/v4.1.10...v4.1.11
4185[4.1.10]: https://github.com/clap-rs/clap/compare/v4.1.9...v4.1.10
4186[4.1.9]: https://github.com/clap-rs/clap/compare/v4.1.8...v4.1.9
4187[4.1.8]: https://github.com/clap-rs/clap/compare/v4.1.7...v4.1.8
4188[4.1.7]: https://github.com/clap-rs/clap/compare/v4.1.6...v4.1.7
4189[4.1.6]: https://github.com/clap-rs/clap/compare/v4.1.5...v4.1.6
4190[4.1.5]: https://github.com/clap-rs/clap/compare/v4.1.4...v4.1.5
4191[4.1.4]: https://github.com/clap-rs/clap/compare/v4.1.3...v4.1.4
4192[4.1.3]: https://github.com/clap-rs/clap/compare/v4.1.2...v4.1.3
4193[4.1.2]: https://github.com/clap-rs/clap/compare/v4.1.1...v4.1.2
4194[4.1.1]: https://github.com/clap-rs/clap/compare/v4.1.0...v4.1.1
4195[4.1.0]: https://github.com/clap-rs/clap/compare/v4.0.32...v4.1.0
4196[4.0.32]: https://github.com/clap-rs/clap/compare/v4.0.31...v4.0.32
4197[4.0.31]: https://github.com/clap-rs/clap/compare/v4.0.30...v4.0.31
4198[4.0.30]: https://github.com/clap-rs/clap/compare/v4.0.29...v4.0.30
4199[4.0.29]: https://github.com/clap-rs/clap/compare/v4.0.28...v4.0.29
4200[4.0.28]: https://github.com/clap-rs/clap/compare/v4.0.27...v4.0.28
4201[4.0.27]: https://github.com/clap-rs/clap/compare/v4.0.26...v4.0.27
4202[4.0.26]: https://github.com/clap-rs/clap/compare/v4.0.25...v4.0.26
4203[4.0.25]: https://github.com/clap-rs/clap/compare/v4.0.24...v4.0.25
4204[4.0.24]: https://github.com/clap-rs/clap/compare/v4.0.23...v4.0.24
4205[4.0.23]: https://github.com/clap-rs/clap/compare/v4.0.22...v4.0.23
4206[4.0.22]: https://github.com/clap-rs/clap/compare/v4.0.21...v4.0.22
4207[4.0.21]: https://github.com/clap-rs/clap/compare/v4.0.20...v4.0.21
4208[4.0.20]: https://github.com/clap-rs/clap/compare/v4.0.19...v4.0.20
4209[4.0.19]: https://github.com/clap-rs/clap/compare/v4.0.18...v4.0.19
4210[4.0.18]: https://github.com/clap-rs/clap/compare/v4.0.17...v4.0.18
4211[4.0.17]: https://github.com/clap-rs/clap/compare/v4.0.16...v4.0.17
4212[4.0.16]: https://github.com/clap-rs/clap/compare/v4.0.15...v4.0.16
4213[4.0.15]: https://github.com/clap-rs/clap/compare/v4.0.14...v4.0.15
4214[4.0.14]: https://github.com/clap-rs/clap/compare/v4.0.13...v4.0.14
4215[4.0.13]: https://github.com/clap-rs/clap/compare/v4.0.12...v4.0.13
4216[4.0.12]: https://github.com/clap-rs/clap/compare/v4.0.11...v4.0.12
4217[4.0.11]: https://github.com/clap-rs/clap/compare/v4.0.10...v4.0.11
4218[4.0.10]: https://github.com/clap-rs/clap/compare/v4.0.9...v4.0.10
4219[4.0.9]: https://github.com/clap-rs/clap/compare/v4.0.8...v4.0.9
4220[4.0.8]: https://github.com/clap-rs/clap/compare/v4.0.7...v4.0.8
4221[4.0.7]: https://github.com/clap-rs/clap/compare/v4.0.6...v4.0.7
4222[4.0.6]: https://github.com/clap-rs/clap/compare/v4.0.5...v4.0.6
4223[4.0.5]: https://github.com/clap-rs/clap/compare/v4.0.4...v4.0.5
4224[4.0.4]: https://github.com/clap-rs/clap/compare/v4.0.3...v4.0.4
4225[4.0.3]: https://github.com/clap-rs/clap/compare/v4.0.2...v4.0.3
4226[4.0.2]: https://github.com/clap-rs/clap/compare/v4.0.1...v4.0.2
4227[4.0.1]: https://github.com/clap-rs/clap/compare/v4.0.0...v4.0.1
4228[4.0.0]: https://github.com/clap-rs/clap/compare/v3.2.18...v4.0.0
4229[3.2.18]: https://github.com/clap-rs/clap/compare/v3.2.17...v3.2.18
4230[3.2.17]: https://github.com/clap-rs/clap/compare/v3.2.16...v3.2.17
4231[3.2.16]: https://github.com/clap-rs/clap/compare/v3.2.15...v3.2.16
4232[3.2.15]: https://github.com/clap-rs/clap/compare/v3.2.14...v3.2.15
4233[3.2.14]: https://github.com/clap-rs/clap/compare/v3.2.13...v3.2.14
4234[3.2.13]: https://github.com/clap-rs/clap/compare/v3.2.12...v3.2.13
4235[3.2.12]: https://github.com/clap-rs/clap/compare/v3.2.11...v3.2.12
4236[3.2.11]: https://github.com/clap-rs/clap/compare/v3.2.10...v3.2.11
4237[3.2.10]: https://github.com/clap-rs/clap/compare/v3.2.8...v3.2.10
4238[3.2.8]: https://github.com/clap-rs/clap/compare/v3.2.7...v3.2.8
4239[3.2.7]: https://github.com/clap-rs/clap/compare/v3.2.6...v3.2.7
4240[3.2.6]: https://github.com/clap-rs/clap/compare/v3.2.5...v3.2.6
4241[3.2.5]: https://github.com/clap-rs/clap/compare/v3.2.4...v3.2.5
4242[3.2.4]: https://github.com/clap-rs/clap/compare/v3.2.3...v3.2.4
4243[3.2.3]: https://github.com/clap-rs/clap/compare/v3.2.2...v3.2.3
4244[3.2.2]: https://github.com/clap-rs/clap/compare/v3.2.1...v3.2.2
4245[3.2.1]: https://github.com/clap-rs/clap/compare/v3.2.0...v3.2.1
4246[3.2.0]: https://github.com/clap-rs/clap/compare/v3.1.18...v3.2.0
4247[3.1.18]: https://github.com/clap-rs/clap/compare/v3.1.17...v3.1.18
4248[3.1.17]: https://github.com/clap-rs/clap/compare/v3.1.16...v3.1.17
4249[3.1.16]: https://github.com/clap-rs/clap/compare/v3.1.15...v3.1.16
4250[3.1.15]: https://github.com/clap-rs/clap/compare/v3.1.14...v3.1.15
4251[3.1.14]: https://github.com/clap-rs/clap/compare/v3.1.13...v3.1.14
4252[3.1.13]: https://github.com/clap-rs/clap/compare/v3.1.12...v3.1.13
4253[3.1.12]: https://github.com/clap-rs/clap/compare/v3.1.11...v3.1.12
4254[3.1.11]: https://github.com/clap-rs/clap/compare/v3.1.10...v3.1.11
4255[3.1.10]: https://github.com/clap-rs/clap/compare/v3.1.9...v3.1.10
4256[3.1.9]: https://github.com/clap-rs/clap/compare/v3.1.8...v3.1.9
4257[3.1.8]: https://github.com/clap-rs/clap/compare/v3.1.7...v3.1.8
4258[3.1.7]: https://github.com/clap-rs/clap/compare/v3.1.6...v3.1.7
4259[3.1.6]: https://github.com/clap-rs/clap/compare/v3.1.5...v3.1.6
4260[3.1.5]: https://github.com/clap-rs/clap/compare/v3.1.4...v3.1.5
4261[3.1.4]: https://github.com/clap-rs/clap/compare/v3.1.3...v3.1.4
4262[3.1.3]: https://github.com/clap-rs/clap/compare/v3.1.2...v3.1.3
4263[3.1.2]: https://github.com/clap-rs/clap/compare/v3.1.1...v3.1.2
4264[3.1.1]: https://github.com/clap-rs/clap/compare/v3.1.0...v3.1.1
4265[3.1.0]: https://github.com/clap-rs/clap/compare/v3.0.14...v3.1.0
4266[3.0.14]: https://github.com/clap-rs/clap/compare/v3.0.13...v3.0.14
4267[3.0.13]: https://github.com/clap-rs/clap/compare/v3.0.12...v3.0.13
4268[3.0.12]: https://github.com/clap-rs/clap/compare/v3.0.11...v3.0.12
4269[3.0.11]: https://github.com/clap-rs/clap/compare/v3.0.10...v3.0.11
4270[3.0.10]: https://github.com/clap-rs/clap/compare/v3.0.9...v3.0.10
4271[3.0.9]: https://github.com/clap-rs/clap/compare/v3.0.8...v3.0.9
4272[3.0.8]: https://github.com/clap-rs/clap/compare/v3.0.7...v3.0.8
4273[3.0.7]: https://github.com/clap-rs/clap/compare/v3.0.6...v3.0.7
4274[3.0.6]: https://github.com/clap-rs/clap/compare/v3.0.5...v3.0.6
4275[3.0.5]: https://github.com/clap-rs/clap/compare/v3.0.4...v3.0.5
4276[3.0.4]: https://github.com/clap-rs/clap/compare/v3.0.3...v3.0.4
4277[3.0.3]: https://github.com/clap-rs/clap/compare/v3.0.2...v3.0.3
4278[3.0.2]: https://github.com/clap-rs/clap/compare/v3.0.1...v3.0.2
4279[3.0.1]: https://github.com/clap-rs/clap/compare/v3.0.0...v3.0.1
4280[3.0.0]: https://github.com/clap-rs/clap/compare/v2.34.0...v3.0.0
4281[2.34.0]: https://github.com/clap-rs/clap/compare/v2.33.4...v2.34.0
4282[2.33.4]: https://github.com/clap-rs/clap/compare/v2.33.3...v2.33.4
4283[2.33.3]: https://github.com/clap-rs/clap/compare/v2.33.2...v2.33.3
4284[2.33.2]: https://github.com/clap-rs/clap/compare/v2.33.1...v2.33.2
4285[2.33.1]: https://github.com/clap-rs/clap/compare/v2.33.0...v2.33.1
4286[2.33.0]: https://github.com/clap-rs/clap/compare/v2.32.0...v2.33.0
4287