Release Notes for v2.13.0
This release brings PowerShell completion support to usage, expanding shell coverage beyond Bash, Zsh, and Fish. PowerShell users can now generate native completions for their CLI tools with the same simple spec format. Additionally, a new usage lint command helps catch issues in your spec files before they become runtime problems.
Under the hood, this release includes performance improvements through smarter memory management and better error handling throughout the codebase. Several internal modernizations prepare the library for future Rust editions.
Highlights
-
PowerShell completion support — Generate tab completions for PowerShell alongside existing Bash, Zsh, and Fish support. See the completions documentation for usage details. (#431) by @jdx
-
New
usage lintcommand — Validate your spec files and catch common mistakes early. Runusage lintto check for issues before generating completions or documentation. (#430) by @jdx
Bug Fixes
-
Positional arguments now pass through to executed scripts — Previously, positional args could be dropped when running scripts through usage. They're now correctly forwarded. (#425) by @jdx
-
Better error messages for unsupported shells — Instead of crashing with an unhelpful panic, usage now provides clear error messages when you request completions for an unsupported shell. (#432) by @jdx
-
Safer path handling — Fixed potential crashes when working with unusual file paths by replacing unsafe unwrap chains with proper error handling. (#424) by @jdx
Performance
- Reduced memory allocations during parsing — Flag and argument keys now use
Arcinternally, reducing unnecessary string cloning when accessing parsed output. (#422) by @jdx