# Version scheme A Stack package or executable may have a version with three or four components: `X.Y.Z` or `X.Y.Z.A`. ## Development or stable versions * Versions with an _even_ `Y` component are development versions (the `master` branch) * Versions with an _odd_ `Y` component are stable versions (the `stable` branch, or in a `rc/vX.Y` release candidate branch for not-yet-released versions) ## Unreleased or released versions * Versions with an _even_ `Z` component are unreleased versions (including release candidates) * Versions with an _odd_ `Z` component are released versions * Except for the `release` branch, all branches must have an even `Z` component * Except for the `release`, `stable` and `rc/vX.Y` release candidate branches, all branches will have a `0` `Z` component ## Use of a fourth component * Release candidate binaries will be released with an odd `A` component * Hackage-only dependency compatibility patch releases add a `A` component (e.g. `v2.5.1.1`, in the `release` branch) * Pre-release unstable binaries will be released with the date as the `A` component (e.g. `3.6.0.20241228`) ## Examples * `3.5.0.0`: `v3.5.*` series pre-release branch (`rc/v3.5` branch) * `3.5.0.1`: first release candidate for first release of `v3.5.*` series (`rc/v3.5` branch) * `3.5.0.2`: continuing development on pre-release branch * `3.5.0.3`: second release candidate for first release of `v3.5.*` series (`rc/v3.5` branch) * `3.5.1`: first release of the `3.5.*` series (`release` branch) * `3.5.2.1`: first release candidate for second release of `3.5.*` series (`rc/v3.5` branch) * `3.5.3`: second release of `3.5.*` series (`release` branch) * `3.5.3.1`: first Hackage-only patch of `3.5.3` (`release` branch) * `3.5.3.2`: second Hackage-only patch of `3.5.3` (`release` branch) * `3.6.0`: unstable development code (`master` branch) * `3.6.0.20241228`: pre-release snapshot of unstable version (`master` branch)