1.6. Release notes for version 7.10.2

The 7.10.2 release is a bugfix release, with over 70+ bug fixes relative to 7.10.1. The major fixes are listed below. For the full list with more detail, see the GHC 7.10.2 milestone on our bug tracker.

1.6.1. GHC

  • The source location of a function's caller can now be made available to the callee as an implicit parameter. This will enable better location information in runtime errors (e.g. from error and partial functions like head). For more details see Section 7.13.4.5, “Special implicit parameters”.

  • A bug in the typechecker which could result in strange, inconsistent reduction of type families has been fixed (issue #10488).

  • A variety of fixes of the new API annotations support.

  • A bug which caused GHC to generate bad DWARF unwinding information has been fixed (issue #10236).

  • DWARF support should now work on Windows/MinGW (#10468).

  • A bug which caused GHC's libffi.so library to be built with executable stacks on some platforms has been fixed (issue #10208).

  • A bus error on SPARC machines caused by misaligned data accesses in the RTS has been fixed.

  • A bug which caused the simplifier to produce code which segfaulted at runtime has been fixed (issue #10538).

  • A type-system bug which could allow a user to write unsafeCoerce has been fixed (issue #9858).

  • A bug which caused GHC to generate incorrect hyperlinks to documentation in Haddock has been fixed (#10206).

  • A bug in the typechecker which allowed erroneous programs using Coercible to typecheck has been fixed (issue #10285).

  • An issue which could cause the "Call Arity" analysis to perform poorly in general has been fixed (issue #10293).

  • Several dozen bugs in the new API annotations work have been fixed (issues #10395, #10363, #10358, #10357, #10315, #10314, #10312, and many more).

  • A regression which could cause the typechecker fail to properly simplify type-level terms has been fixed (issue #10321).

  • A bug which caused programs compiled with -flate-dmd-anal to crash at runtime has been fixed (issue #10288).

  • A bug which caused ARM/Linux binaries to be built with executable stacks has been fixed (issue #10369).

  • Several bugs in GHC's cross compilation support using LLVM have been fixed (#10275).

  • Several bugs in GHC's support for AArch64 have been fixed (such as issue #10264).

  • The SMP runtime and GHCi are now enabled on AArch64 (issue #10525).

  • A bug in the code which caused GHC to emit invalid C code when porting to a new platform has been fixed (issue #10518).

  • A bug which could cause GHC to generate incorrect code at runtime (generating an infinite loop exception) has been fixed (issue #10218).

  • Several performance-related issues inside GHC have been fixed. As a result, you should see improved compilation times and memory usage (issues #10397, #10370, #10422).

  • A bug which could cause GHCi to crash if exceptions were raised in the :cmd command has been fixed.

  • A bug in the event manager which could cause 'multi-shot' event registrations to only fire once has been fixed (issue #10317).

  • Support for PowerPC relocations has been added (issue #10402).

  • A lurking bug in the code generator which could cause incorrect assembly code to be generated due to register aliasing issues has been fixed (issue #10521).

  • A bug in the runtime system which could cause a deadlock when scheduling garbage collections has been fixed (issue #10545).

  • A bug which could cause compiled programs to loop forever when glibc's iconv implementation (gconv) wasn't available has been fixed, so these programs will now terminate with an error. As a result of this change, however, GHC compiled programs now also specifically recognize ASCII encodings, and can function without iconv in these cases. This allows statically compiled programs to exist inside an initramfs, for example (issues #10298, #7695).

1.6.2. Libraries

1.6.2.1. base

  • Version number 4.8.1.0 (was 4.8.0.0)

  • The Lifetime datatype (and its constructors) are now exported from GHC.Event.

1.6.2.2. binary

  • Version number 0.7.5.0 (was 0.7.3.0)

1.6.2.3. Cabal

  • Version number 1.22.4.0 (was 1.22.2.0).

1.6.2.4. ghc

  • Several new constructors have been added to the AnnKeywordId datatype, in order to fix several problem with GHC's new support for API annotations (this should not regress or effect any clients of the GHC API not using these new features).

  • The source location functionality above required an breaking change to the GHC API. Namely, the SrcSpans of CtLoc and TcLclEnv are now RealSrcSpans. While usually API changes like this are avoided in bugfix releases, it was decided that the benefits offered by the source location functionality outweighed the cost of a small change to this rarely-used interface.

1.6.3. Known bugs

  • For issues dealing with language changes, please see the GHC 7.10 Migration Guide on the GHC wiki.

  • A bug in the simplifier which can cause it to totally fail to compile certain programs that get 'very large' at compile time is known (issue #10527).

  • GHC's LLVM backend does not support LLVM 3.4 (issue #9929).

  • On Mac OS X, the -threaded Garbage Collector currently suffers from a large performance penalty due to a lack of system-specific optimization (issue #7602).

  • GHCi fails to appropriately load .dyn_o files (issue #8736).

  • Not all cases of non-terminating type-level computation (with both recursive type families and recursive newtypes) are caught. This means that GHC might hang, but it should do so only when the program is ill-typed (due to non-terminating type-level features). The bugs are reported as #7788 and #10139. There also remain certain obscure scenarios where the solver for Coercible instances is known to be still incomplete. See comments in #10079.