- Version Number Format
- Version Rules
- Significance of Versions
Each Extension has a version number. This Extension version number is visible to the end-user, and is completely independent of any contained package version numbers.
Each Extension also contains multiple packages. Every package has its own package version, usually defined in the package.cm file. These package version numbers are never visible to the end-user.
Version Number Format
Extension Version Number Format
The major number is incremented when there is a significant code change, often introducing many new features and fixes.
The minor number is incremented when we have several features and fixes to be released, but not enough to be considered a major change in the state of the Extension.
The revision number is incremented when minor changes are introduced.
The build number is mostly used to distinguish between the builds created leading up to a release.
If the major, minor, or revision numbers are updated, the users will get automatic updates to the latest version.
Package Version Number Format
Package version numbers are almost identical to Extension version numbers, except that they lack the build number.
Version rules are based on the programming interfaces of the packages contained within an Extension. Interface changes help determine what version number updates are required.
Extension Version Rules
The rules for Extension versions are as follows:
- Strictly additive changes do not require any version update.
- All non-additive changes require at least a revision update. (184.108.40.206 -> 220.127.116.11)
- Adding packages is considered additive and does not require any version update.
- Removing packages also requires at least a revision update. (18.104.22.168 -> 22.214.171.124)
Package Version Rules
The rules for package versions are as follows:
- Strictly additive changes require at least a revision update. (1.0.0 -> 1.0.1)
- All non-additive changes requires at least a minor update. (1.0.0 -> 1.1.0)
Significance of Versions
What is the reason for having version numbers? For one, it marks a specific state that an Extension or package was released. We can break down the life of an Extension into a timeline with these version numbers acting as points/indicators.
Package versions may not seem so important, as they are not even visible to the user and provides no information to them. However, to a developer, package versions can be a vital tool for handling load code. We are able to add load code that compares the current package version, as well as the package version saved within the drawing. This allows developers to fix drawings that have specific package versions while skipping any other drawings.