GHC releases and versions
Sylvain Henry
sylvain at haskus.fr
Fri May 28 14:48:10 UTC 2021
Hi devs,
We currently have 4 branches of GHC in flight: 8.10, 9.0, 9.2 and HEAD
Latest releases:
- 8.10.4: 2021/02/06
- 9.0.1: 2021/02/04
- 9.2.1-alpha2: 2021/04/23
Considering:
1) 8.10 branch should be stable but a lot of stuff has been merged for
8.10.5. To the point that 8.10.5 should probably be a "major release in
the 8.10 series".
2) 9.0.1 is the latest major release but it shouldn't be used before
9.0.2 is released because of bugs and regressions (9.0.2 branch contains
a fix for a critical bug in 9.0.1 [1] since March).
3) We might release 9.2.1 and 9.0.2 approximately at the same time which
will be quite confusing for users ("9.0.2 in the 9.0 series and 9.2.1 in
the 9.2 series").
4) The first major number is meaningless.
Proposition:
Switch to A.B.C[.D] version scheme where:
- A: major release ("series")
- B: major release in the A series if B>0 and C=0; beta release if B=0
- C: bugfix release for A.B (if C>0) or beta release number (if B=0)
- D: date when building in tree, not for releases
It might be clearer exposed like this:
showVersion = \case
[a,b,c,d] -> "Dev version of " ++ showVersion [a,b,c] ++ " built on "
++ show d
[a,0,c] -> "beta " ++ show c ++ " in series " ++ show a
[a,b,0] -> "Major release " ++ show [a,b] ++ " in series " ++ show a
[a,b,c] -> "Bugfix release " ++ show c ++ " for " ++ show [a,b]
_ -> undefined
> showVersion [9,0,1,20211028]
"Dev version of beta 1 in series 9 built on 20211028"
> showVersion [9,0,1]
"beta 1 in series 9"
> showVersion [9,0,2]
"beta 2 in series 9"
> showVersion [9,1,0]
"Major release [9,1] in series 9"
> showVersion [9,1,1]
"Bugfix release 1 for [9,1]"
> showVersion [9,2,0]
"Major release [9,2] in series 9"
> showVersion [10,1,0]
"Major release [10,1] in series 10"
Effects:
1) We could use C for bugfix versions which are to be released much
faster than major versions.
2) B would be used for the old series we maintain. We backport a lot
more stuff than before in older releases it seems, so it would be more
PVP compliant to bump a major version number.
3) A would be used for the usual 6-month major releases.
4) We could make major releases in the 8 series (e.g. 8.10.5 could be
released as 8.11.0)
5) We could advertise 9.0.1 as a beta (as everyone seems to consider .1
releases)
6) 9.2.1 final could be released either as 9.3 (next major in the 9
series if we just forget about 9.0.* and 9.2.*) or as 10.1.0 (first
major in the 10 series).
7) No difference anymore between even/odd version numbers (for reference
the current scheme is explained in [2])
Any thoughts?
Sylvain
[1] https://mail.haskell.org/pipermail/haskell-cafe/2021-March/133540.html
[2] https://gitlab.haskell.org/ghc/ghc/-/wikis/working-conventions/releases
More information about the ghc-devs
mailing list