[Development] Adding support for version number comparisons
kreios4004 at gmail.com
Fri May 9 18:36:08 CEST 2014
I have been working on adding a class to QtCore (QVersion) to support
storing version numbers, convert to/from QString, and having comparison
operators. My goal was to provide an API to assist in the following use
- Plugin loading where there are multiple versions on the same system.
- File format validation.
- Executing an already installed command line application where the
behavior is dependent on the called application's version.
- Performing software installations and updates.
- QMake support for version number comparisons.
Please share other potential use cases where this might be useful.
I am not restring the use of this class for just Qt's needs and that is
where a lot of discussion about functionality has come up. You can see the
progress for this patch at https://codereview.qt-project.org/82170.
The current implementation supports 0 to N numerical segments and a QString
suffix. Currently, the restrictions for numerical segments are that they
cannot be negative. The restrictions for the suffix are that it cannot
start with a number and it cannot contain any white space. Beyond that,
there are some things that need to be defined:
1. What level of support for Semantic Versioning 2.0.0 (
http://www.semver.org) should be supported?
2. What semantics should be used for version comparisons? Numerical
segments are more clearly defined but when introducing a non-null suffix,
many different methods are being proposed.
1. Should suffixes be compared purely lexicographically? Case
sensitive or insensitive?
1. e.g. "1.0-beta11" < "1.0-beta2" < "1.0-Beta2"
2. Should numerical portions in a suffix be pulled out compared
1. e.g. "1.0-beta2" < "1.0-beta11"
3. Should the suffix be checked for key words to assist in
4. Should there be a special case where single character suffixes
have a higher precedent to multi-character suffixes?
1. e.g. "1.0alpha" < "1.0" < "1.0a"
3. Are there any other versioning semantics that should be supported?
The biggest question of all, should this even be included in QtCore?
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Development