Future Argparser versions will add several new features and address known issues. The following sections shall give an overview over them. Beforehand, we'll discuss the release policy for the Argparser and list the release notes.
The Argparser uses semantic versioning (SemVer) for the releases, i.e., version numbers given by major version, minor version, and patch, separated by dots. There is only one supported minor version at a time (for bugfixes) to reduce developer burden, with new versions being released in strictly monotonic succession, regarding their version numbers.
Besides the SemVer version numbers, each version is assigned a codename (because why not?). Since the Argparser evolved from a very early command-line argument parser used in an analysis pipeline for Placentalia (an infraclass of mammals, precisely, the extant Eutheria), the codenames are placental mammals' species names. The major versions determine the taxonomic order, the minor version is given by the genus, and the patch version by the species name, in alphabetic order (as far as possible, i.e., as long as there are species names beginning with the respective letter). For the first major series of releases, we use rodent names. So the first Argparser release, v1.0.0, is codenamed "Acomys airensis".
The following table lists all versions released so far:
Tab. 6: List of Argparser releases.
| Version number | Codename | Release date |
|---|---|---|
v1.3.2 |
Dasyprocta fuliginosa | 2026-03-25 |
v1.3.1 |
Dasyprocta coibae | 2026-03-18 |
v1.3.0 |
Dasyprocta azarae | 2025-11-20 |
v1.2.1 |
Callospermophilus madrensis | 2025-11-04 |
v1.2.0 |
Callospermophilus lateralis | 2025-10-01 |
v1.1.2 |
Biswamoyopterus laoensis | 2025-09-22 |
v1.1.1 |
Biswamoyopterus gaoligongensis | 2025-09-17 |
v1.1.0 |
Biswamoyopterus biswasi | 2025-09-11 |
v1.0.1 |
Acomys cahirinus | 2025-09-05 |
v1.0.0 |
Acomys airensis | 2025-09-02 |
You can obtain the version number of your Argparser copy by querying argparser --version:
$ argparser --version
Version: argparser v1.3.2 "Dasyprocta fuliginosa"In the spirit of SemVer, you can then gauge the need to update to a newer Argparser version by comparing the version numbers of your copy and the latest release.
Bugfixes (increment of patch version) should be released immediately once it is confirmed that they actually fix the bug, while new features are added on a longer timescale (increment of minor version). Breaking changes (increment of major version) are kept unreleased for the longest time, trying to accumulate several changes to release them altogether. However, if a pending change severely hinders the Argparser's further development, the breaking change will be released sooner.
Breaking changes in the sense of SemVer only apply to modifications to the code that are expected or proven to change the Argparser's behavior in a way that can be seen by your script when normally running the Argparser. That is, a breaking change may be the modification of an environment variable's default value or an alteration of the output generated when ARGPARSER_WRITE_ARGS is set to true. In contrast, at least for now, the Argparser's internal state is completely hidden from a normal Argparser call. While it is possible to use the functions for your own purpose (by setting ARGPARSER_UNSET_FUNCTIONS to false), any change is considered an implementation detail, as long as the Argparser's output remains unchanged. The help, usage, version, error, and warning messages are intended for human view, and not to be parsed by scripts. Consequently, their structure and contents may change at any time.
Likewise, changes to the tests, comparison scripts, and documentation are not considered for assessing changes as breaking and may occur at any point. In other words, SemVer only applies to the Argparser exectutable, while all other files are just distributed with it under the same version number.
To simplify the transition to newer Argparser versions, it is expected to have scripts in the repository that try to flag changed behavior for your script, whenever breaking changes are made. Whether it may be possible to automatically upgrade your code to comply with the new features, strongly depends on the changes' complexity and can't be judged, here.
v1.3.2"Dasyprocta fuliginosa"v1.3.1"Dasyprocta coibae"v1.3.0"Dasyprocta azarae"v1.2.1"Callospermophilus madrensis"v1.2.0"Callospermophilus lateralis"v1.1.2"Biswamoyopterus laoensis"v1.1.1"Biswamoyopterus gaoligongensis"v1.1.0"Biswamoyopterus biswasi"v1.0.1"Acomys cahirinus"v1.0.0"Acomys airensis"
This is the third Shell Argparser release in the 1.3.x series, and the tenth in the 1.x series. This patch release comprises the following changes:
- Bug fixes:
- A bug was fixed where the Argparser environment variables would be reset to their default values in the process of bootstrapping even without errors, there.
- Other improvements:
- The error messages pertaining the choice values for colors and styles now use the
ARGPARSER_ARG_DELIMITER_2environment variable as delimiting character between the choice values. This reflects the behavior for all other choice values.
- The error messages pertaining the choice values for colors and styles now use the
Codename: "Dasyprocta fuliginosa" (Black agouti)
Release date: 2026-03-25
This is the second Shell Argparser release in the 1.3.x series, and the ninth in the 1.x series. This patch release comprises the following changes:
- Bug fixes:
- A bug was fixed where a (missing) translation key resulted in an infinite recursion when translating the dedicated warning message.
- A bug was fixed where error messages might not be correctly printed upon encountering bootstrapping issues due to unset or wrongly set Argparser environment variables.
- Other improvements:
- The documentation has been slightly improved.
Codename: "Dasyprocta coibae" (Coiban agouti)
Release date: 2026-03-18
This is the first Shell Argparser release in the 1.3.x series, and the eighth in the 1.x series. This minor release comprises the following changes:
- New features:
- The colorization and stylization feature has been greatly expanded, now using an optional style file (the
ARGPARSER_STYLE_FILE). By this, elements within messages can be individually stylized, instead of only the entire message. - The Argparser now supports background and bright ANSI colors. Since these colors aren't supported by all terminals, you need to opt into them with an
ARGPARSER_STYLE_FILE. - Messages can now be output with a frame with caption, where both can even be colored. Since this feature involves Unicode characters, you need to opt into it with an
ARGPARSER_STYLE_FILE. - As a result of the much more colored default output when writing to a terminal, the Argparser now supports the
NO_COLORenvironment variable to adhere to the informal no-color standard. By this, the colorization can be globally disabled, but also re-enabled selectively for the Argparser by turning onARGPARSER_USE_STYLES.
- The colorization and stylization feature has been greatly expanded, now using an optional style file (the
- Deprecations:
ARGPARSER_USE_STYLES_IN_FILEShas been renamed toARGPARSER_USE_STYLESwith more options. The old name is still supported, but will be removed inv2.0.0.ARGPARSER_HELP_STYLE,ARGPARSER_USAGE_STYLE,ARGPARSER_VERSION_STYLE,ARGPARSER_ERROR_STYLE, andARGPARSER_WARNING_STYLEare deprecated. Use anARGPARSER_STYLE_FILEinstead. The environment variables are still supported, with a marginally different visual appearance due to the message part stylization, but will be removed inv2.0.0.
- Other improvements:
- The arguments definition creation now has Readline mode enabled for the prompts. This allows you to edit your input using the arrow keys, and much more.
- Choice value ranges aren't expanded (resolved) anymore for printing, yielding clearer and terser messages.
- Overlong error and warning messages (those exceeding
ARGPARSER_MAX_WIDTH) are now line-wrapped. The usage message now yields columnar output when being overlong in row-like orientation. - The line-wrapping algorithm now supports multiple levels of delimiters for wrapping, improving the visual appearance of—mainly—help messages.
- The argument lookup has been sped up, yielding ca. 15 % higher performance for the entire parsing sequence.
- The ANSI escape codes for the same style specification are now concatenated, yielding smaller files (when writing the styles to files).
- The Argparser options are now grouped in the help message.
- There is a new summary file, listing the release notes. These are now also included in the documentation.
- The test suite has been expanded.
Codename: "Dasyprocta azarae" (Azara's agouti)
Release date: 2025-11-20
This is the second Shell Argparser release in the 1.2.x series, and the seventh in the 1.x series. This patch release comprises the following changes:
- Bug fixes:
- A bug was fixed where empty colors and styles could be given without error upon style checking.
- A bug was fixed where a translation key used a duplicate name in the translation file, overriding the correct error message.
- A bug was fixed where empty columns weren't dropped when creating the arguments definition.
- Other improvements:
- The documentation has been slightly improved.
Codename: "Callospermophilus madrensis" (Sierra Madre ground squirrel)
Release date: 2025-11-04
This is the first Shell Argparser release in the 1.2.x series, and the sixth in the 1.x series. This minor release comprises the following changes:
- New features:
- Positional and keyword arguments can now be intermixed on the command line (enabled by the
--allow-arg-intermixingflag). - It's now possible to selectively show/hide headings in the help message by doubling the include character.
- Positional and keyword arguments can now be intermixed on the command line (enabled by the
- Bug fixes:
- A bug was fixed in the release preparation script where the most recent Argparser version would not be given in the first place of the release table in the documentation.
Codename: "Callospermophilus lateralis" (Golden-mantled ground squirrel)
Release date: 2025-10-01
This is the third Shell Argparser release in the 1.1.x series, and the fifth in the 1.x series. This patch release comprises the following changes:
- Bug fixes:
- A bug was fixed where non-flags were usable as flags when they're also given with value.
Codename: "Biswamoyopterus laoensis" (Laotian giant flying squirrel)
Release date: 2025-09-22
This is the second Shell Argparser release in the 1.1.x series, and the fourth in the 1.x series. This patch release comprises the following changes:
- Bug fixes:
- A bug was fixed where arguments with a
+argument count could be used as flags (without values). - A bug was fixed where a new version number replaced the previous versions instead of being added to the list in the issue template for bug reports.
- A bug was fixed where arguments with a
- Other improvements:
- The usability of the release preparation script has been improved, allowing the version numbers to start with a
v.
- The usability of the release preparation script has been improved, allowing the version numbers to start with a
Codename: "Biswamoyopterus gaoligongensis" (Mount Gaoligong flying squirrel)
Release date: 2025-09-17
This is the first Shell Argparser release in the 1.1.x series, and the third in the 1.x series. This minor release comprises the following changes:
- New features:
- There is a new debug mode (enabled by the
--debugflag). - The arguments definition can now be created from user input (by the
--create-arg-defflag).
- There is a new debug mode (enabled by the
- Other improvements:
- The Argparser's command-line parsing has been changed from self-sourcing to linear function calls, simplifying the code structure.
- The
nounsetandpipefailshell options are now disabled within the Argparser and don't propagate to its functions, anymore. - The documentation has been slightly improved.
Codename: "Biswamoyopterus biswasi" (Namdapha flying squirrel)
Release date: 2025-09-11
This is the second Shell Argparser release in the 1.0.x series, and the second in the 1.x series. This patch release comprises the following changes:
- Bug fixes:
- A bug was fixed where some arguments could be omitted from the help message when using very narrow columns.
- Other improvements:
- The CI now actually run the tests, instead of failing to find the test files.
- There is a new script to simplify the preparation of releases.
- The documentation has been slightly improved.
Codename: "Acomys cahirinus" (Cairo spiny mouse)
Release date: 2025-09-05
This is the initial Shell Argparser release, the first in the 1.0.x series, and the first in the 1.x series. This major release comprises the following features:
- positional and keyword (option) arguments
- short and long option names
- default and choice values
- type checking
- deprecation notes
- argument assignment as variables
- help, usage, version, error, and warning messages
- localization, currently for US English and German
Codename: "Acomys airensis" (Western Saharan spiny mouse)
Release date: 2025-09-02
The following features are considered for addition in a future version. If you miss one, feel free to open an issue to propose it. Note that the feature descriptions are rather open-ended collections of rough idea sketches, instead of precise milestones, so any idea may change, once a better way has been found. Further, the implementation likelihood only means how desirable a feature seems for the Argparser, not when it will be implemented.
- Description: Sometimes, multiple arguments may only be given together, or the existence of one argument mandates the existence of another one, which on itself could also be given alone. Secondly, options may contradict each other, like
--verboseand--quiet, and so can only be given in an exclusive fashion on the command line. To enable this behavior, it is likely necessary to introduce another array showing the relations these arguments have. For example, some syntax likevar_a | var_bmay show contravalence (XOR) for mandatory arguments or exclusion (NAND) for optional arguments. This relation would set both arguments as mutually exclusive. Other operators, like<-for a prependency or<->for a biconditional, will need to be introduced for the aforementioned cases. However, in order to specify a minimal and clear syntax which facilitates application in scripts, and to find an optimal way of parsing, more exploratory trial work needs to be done. - Implementation likelihood: High.
- Description: Besides command-line arguments, many programs are also configurable using environment variables and configuration files. Notably, even the Argparser itself supports them for its own options, so exposing the respective parts can provide this functionality also to Argparser-employing scripts.
- Implementation likelihood: High.
- Description: On certain platforms, long options may be given with only one hyphen, sometimes exclusively, sometimes as an alternative to two hyphens. Even programs like GNU
findact like this. However, there is a natural ambiguity whether an argument with one hyphen is a single-hyphen long option or a set of concatenated (merged) short options. Allowing single-hyphen long options would require a far more complex parsing step, when an argument with one hyphen is interpreted as long option, as long as one with this name exists, or as a set of short options, else (if allowed at all). - Implementation likelihood: Medium.
- Description: Currently, for an
ARGPARSER_USAGE_FILE, only the@Allinclude directive is supported. Should there be demand to provide more fine-grained control, more directives could be added. - Implementation likelihood: Medium.
- Description: Usually, a version message indicates the script's license, or at least gives a note about the lack of warranty for functionality of free software. The Argparser instead only gives the script's name (the
ARGPARSER_SCRIPT_NAME) and the version number (theARGPARSER_VERSION_NUMBER). Adding the dummy text for the warranty is easy, but would mean that any script employing the Argparser would indentify itself as free software. This would also hold for the (highly discouraged) proprietary software that may use the Argparser, thus misleading the users. Therefore, some environment variable may be needed to control the addition.
Moreover, it could be even deemed useful to add a-l,--licenseflag to the default options, which would output anARGPARSER_LICENSE_FILE's contents, showing the exact license—or just its name? - Implementation likelihood: Medium.
- Description: When typing long option names on the command line, without wanting or being allowed to abbreviate the names, hitting
TABcould auto-complete the option name using programmable completion. However, the complexity and benefits of such a feature still need to be figured out. - Implementation likelihood: Medium/Low.
- Description: POSIX allows very few constructs for argument parsing, like no long options. Since there are perfectly suitable alternatives for this simple parsing, and the Argparser aims at a way more sophisticated command-line interface, opt-in POSIX compliance seems unnecessary for now.
- Implementation likelihood: Low.
- Description: On certain platforms, options are given with other prefixes, like
/on DOS-like systems. The Argparser targets Unix-like platforms, and allowing other characters would require a massive change to the codebase. Further, plus signs are used as tokens for flag negation, so for using them as regular prefixes, the hyphen would take their role. More importantly, there is no such equivalent for the forward slash—a backslash would feel most natural, but would collide with the path separator on DOS-like platforms. Considering the massive efforts needed to implement this, it is unlikely to ever be done. - Implementation likelihood: Almost zero.
Currently none.
Upon developing the Argparser, breaking changes are inevitable. Obeying SemVer, the following breaking changes are currently under way:
- Deprecations with removal in
v2.0.0:ARGPARSER_USE_STYLES_IN_FILEShas been replaced byARGPARSER_USE_STYLESinv1.3.0, which now also offers disabling message stylizations for terminals or both terminals and files. The old behavior ofARGPARSER_USE_STYLES_IN_FILES(withtrueandfalseas possible values) can be accessed by settingARGPARSER_USE_STYLEStoalways(true) ortty(false), respectively.ARGPARSER_HELP_STYLE,ARGPARSER_USAGE_STYLE,ARGPARSER_VERSION_STYLE,ARGPARSER_ERROR_STYLE, andARGPARSER_WARNING_STYLEhave been superseded by more fine-grained stylization possibilities inv1.3.0, optionally using anARGPARSER_STYLE_FILE. Even though the environment variables only affect the visual appearance of the help, usage, version, error, and warning messages, which are excluded from SemVer, keeping them active untilv2.0.0does little or no harm. While deprecated, they can still be set and will override the default styles and the style file's styles.
Due to how the new styles are implemented, the visual output is not entirely identical, but close to the previous workings. Particularly, theARGPARSER_SCRIPT_NAMEis needed in all five message types, but set via the same message key (script_name). Thus, when either ofARGPARSER_HELP_STYLE,ARGPARSER_USAGE_STYLE,ARGPARSER_VERSION_STYLE,ARGPARSER_ERROR_STYLE, orARGPARSER_WARNING_STYLE, in this order, is set, its style definition overrides the latter ones' for the script name. Further, the help style overrides the usage style, if both are given, since they also share all message keys.