NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #2884 most downloaded on crates.io
Minimalist pedantic command line parser
Last release 7 months ago
28 Feb 2026
Release timing varies
gaps range from 3 months to 2.2 years
Nearly every release is documented
notes for 6 of 6 stable releases
Nothing withdrawn
no release was ever pulled
5 years old
6 releases · first in 2021
One column per quarter.
Add Parser::set_short_equals() to opt out of the nonstandard -o=value syntax.
New:
Parser::set_short_equals() to opt out of the nonstandard -o=value syntax. (#24)Support the wasm32-wasip2 target. Previous releases failed to build.
New:
wasm32-wasip2 target. Previous releases failed to build.Changes:
String::from_utf8_lossy().New:
wasm32-wasip2 target.Changes:
This release adds a new preferred way to cast OsString into String ( .string()? ) and makes raw argument processing more flexible.
This release adds a new preferred way to cast OsString into String (.string()?) and makes raw argument processing more flexible.
Almost no programs should need changes to keep working, but .string()? makes it easier to use lexopt with other error types like anyhow's and using it is therefore recommended.
New:
ValueExt::string() as the preferred method for converting from OsString into String. Unlike OsString::into_string() it has a normal error type so it's compatible with catch-all error types like anyhow::Error. (#10)
into_string()? will stay supported for the time being.RawArgs::as_slice() for unlimited lookahead. (#15)Parser::try_raw_args() to get raw arguments without consuming any arguments in case of failure.Parser now implements Clone, Send, and Sync. Its Debug output now shows the remaining arguments.Changes:
Parser, instead of during parsing. This breaks certain clever code that inspects the state of the iterator, but RawArgs::as_slice() may provide an alternative. (If you don't know what this means then you aren't affected.) (#16)Parser::values() no longer consumes any arguments if you don't use the iterator.RawArgs::peek() now takes &self instead of &mut self.Add Parser::raw_args() for collecting raw unparsed arguments.
While this release is not strictly backward-compatible it should break very few programs.
While this release is not strictly backward-compatible it should break very few programs.
New:
Parser::values() for options with multiple arguments.Parser::optional_value() for options with optional arguments.Parser::from_iter() to construct from an iterator that includes the binary name. (#5)Parser::value() to collect all remaining arguments.Changes:
= as a separator for short options (as in -o=value). (#18)Error::UnexpectedValue.option a String instead of an Option<String>.Bug fixes:
bin_name in Parser's Debug output.Small documentation tweaks
Your coding agent can read these notes before it upgrades. Set up the MCP server →