As of GHC version 6.8, we have adopted the following policy for numbering GHC versions:
Stable branches are numbered
, where
x
.y
y
is even.
Releases on the stable branch
are numbered x
.y
, where
x
.y
.z
z
(>= 1) is the patchlevel number.
Patchlevels are bug-fix releases only, and never
change the programmer interface to any system-supplied code.
However, if you install a new patchlevel over an old one you
will need to recompile any code that was compiled against the
old libraries.
The value of __GLASGOW_HASKELL__
(see Section 4.12.3, “Options affecting the C pre-processor”) for a major release
is the integer x
.y
.z
xyy
(if
y
is a single digit, then a leading zero
is added, so for example in version 6.8.2 of GHC we would have
__GLASGOW_HASKELL__==608
).
We may make snapshot releases of the current stable branch available for download, and the latest sources are available from the git repositories.
Stable snapshot releases are named
.
where x
.y
.z
.YYYYMMDD
is the date of the sources
from which the snapshot was built, and YYYYMMDD
is the next release to be made on that branch.
For example, x
.y
.z+1
6.8.1.20040225
would be a
snapshot of the 6.8
branch during the development
of 6.8.2
.
The value of __GLASGOW_HASKELL__
for a snapshot release is the integer
xyy
. You should never write any
conditional code which tests for this value, however: since
interfaces change on a day-to-day basis, and we don't have
finer granularity in the values of
__GLASGOW_HASKELL__
, you should only
conditionally compile using predicates which test whether
__GLASGOW_HASKELL__
is equal to, later
than, or earlier than a given major release.
We may make snapshot releases of the HEAD available for download, and the latest sources are available from the git repositories.
Unstable snapshot releases are named
.
where x
.y
.YYYYMMDD
is the date of the sources
from which the snapshot was built.
For example, YYYYMMDD
6.7.20040225
would be a
snapshot of the HEAD before the creation of the
6.8
branch.
The value of __GLASGOW_HASKELL__
for a snapshot release is the integer
xyy
. You should never write any
conditional code which tests for this value, however: since
interfaces change on a day-to-day basis, and we don't have
finer granularity in the values of
__GLASGOW_HASKELL__
, you should only
conditionally compile using predicates which test whether
__GLASGOW_HASKELL__
is equal to, later
than, or earlier than a given major release.
The version number of your copy of GHC can be found by
invoking ghc
with the
--version
flag (see Section 4.6, “Verbosity options”).