Release notes for version 7.10.1 The significant changes to the various parts of the compiler are listed in the following sections. There have also been numerous bug fixes and performance improvements over the 7.8 branch. Highlights The highlights, since the 7.8 branch, are: TODO FIXME Full details Language Added support for binary integer literals Simplified rules for implicit quantification. In previous versions of GHC, it was possible to use the => arrow to quantify over type variables in data and type declarations without a forall quantifier. For example, data Fun = Fun (Ord a => a -> b) was identical to data Fun = Fun (forall a b. Ord a => a -> b), while data Fun = Fun (a -> b) caused a not-in-scope error. This implicit quantification is now deprecated, and variables in higher-rank constructors should be quantified with forall regardless of whether a class context is present or not. GHC 7.10 raises a warning (controlled by , enabled by default) and GHC 7.12 will raise an error. See examples in GHC documentation. The change also applies to Template Haskell splices such as [t|Ord a => a|], which should be written as [t|forall a. Ord a => a|]. Compiler GHC now checks that all the language extensions required for the inferred type signatures are explicitly enabled. This means that if any of the type signatures inferred in your program requires some language extension you will need to enable it. The motivation is that adding a missing type signature inferred by GHC should yield a program that typechecks. Previously this was not the case. This is a breaking change. Code that used to compile in the past might fail with an error message requiring some particular language extension (most likely , or ). GHCi TODO FIXME Template Haskell TODO FIXME Runtime system TODO FIXME Build system ghc-pkg now respects and when modifying packages (e.g. changing exposed/trust flag or unregistering). Previously, ghc-pkg would ignore these flags and modify whichever package it found first on the database stack. To recover the old behavior, simply omit these flags. ghc-pkg accepts a flag which allows a user to override the location of the user package database. Unlike databases specified using , a user package database configured this way respects the flag. Package system TODO: cover module renaming, thinning, re-export etc ghc-pkg (and ghc) have dropped support for single-file style package databases. Since version 6.12, ghc-pkg has defaulted to a new database format (using a directory of files, one per package plus a binary cache). This change will not affect programs and scripts that use ghc-pkg init to create package databases. This will affect scripts that create package databases using tricks like echo "[]" > package.conf Such scripts will need to be modified to use ghc-pkg init, and to delete databases by directory removal, rather than simple file delete. Libraries array Version number XXXXX (was 0.5.0.0) base Version number XXXXX (was 4.7.0.0) bin-package-db This is an internal package, and should not be used. binary Version number XXXXX (was 0.7.1.0) bytestring Version number XXXXX (was 0.10.4.0) Cabal Version number XXXXX (was 1.18.1.3) containers Version number XXXXX (was 0.5.4.0) deepseq Version number XXXXX (was 1.3.0.2) directory Version number XXXXX (was 1.2.0.2) filepath Version number XXXXX (was 1.3.0.2) ghc Many internal functions in GHC related to package IDs have been renamed to refer to package keys, e.g. PackageId is now PackageKey, the wired-in names such as primPackageId are now primPackageKey, etc. This reflects a distinction that we are now making: a package ID is, as before, the user-visible ID from Cabal foo-1.0; a package key is now a compiler-internal entity used for generating linking symbols, and may not correspond at all to the package ID. In particular, there may be multiple package keys per package ID. The ghc library no longer depends on the Cabal library. This means that users of the ghc library are no longer forced to use the same version of Cabal as ghc did. It also means that Cabal is freed up to be able to depend on packages that ghc does not want to depend on (which for example may enable improvements to Cabal's parsing infrastructure). ghc-prim Version number XXXXX (was 0.3.1.0) haskell98 Version number XXXXX (was 2.0.0.3) haskell2010 Version number XXXXX (was 1.1.1.1) hoopl Version number XXXXX (was 3.10.0.0) hpc Version number XXXXX (was 0.6.0.1) integer-gmp Version number XXXXX (was 0.5.1.0) old-locale Version number XXXXX (was 1.0.0.6) old-time Version number XXXXX (was 1.1.0.2) process Version number XXXXX (was 1.2.0.0) template-haskell Version number XXXXX (was 2.9.0.0) time Version number XXXXX (was 1.4.1) unix Version number XXXXX (was 2.7.0.0) Win32 Version number XXXXX (was 2.3.0.1) Known bugs TODO FIXME