1.8. Release notes for version 7.4.2

The 7.4.2 release is a bugfix release. The changes relative to 7.4.1 are listed below.

1.8.1. Compiler

  • A bug in dependency analysis of type declarations in the presence of type families (#5826) has been fixed.

  • The "Heap exhausted" error message was truncating the reported heap size to 32 bits (#5838). This has now been fixed.

  • The register clobber list in the ARM runtime now includes extra registers (#5824).

  • A crash due to a buffer overflow during RTS argument processing (#5851) has been fixed.

  • A blocked STM computation inside unsafePerformIO or unsafeInterleaveIO would segfault when resuming after an asynchronous exception (#5866). This has now been fixed.

  • A race condition when creating directories during parallel builds (#5891) has been fixed.

  • Changed behavior of the --main-is flag so that it forces recompilation of fewer modules (#5878).

  • The wording of the help text for the -N flag has been improved (#5896).

  • Fixed command line options passed to clang, when used as the assembler (#5903).

  • Changed behavior of unrecognized flags (#5921). Any unrecognized argument starting with a '-' now produces an error, instead of being passed to the linker.

  • A bug in code generation on PowerPC (#5900) resulting in an invalid operand for a shift instruction has been fixed.

  • Updated LLVM backend to support the new "fence" instruction instead of the llvm.memory.barrier intrinsic (#5814).

  • ARM support in the RTS linker (#5839) has been implemented.

  • An RTS crash in threadStackOverflow (#5214) has been fixed.

  • Generating an occurence without a binding site within a Template Haskell splice now results in a sensible error message, instead of a compiler panic (#5999, #5971).

  • A bug where an exception generated in a TH splice would escape to the top level (#5976) has been fixed.

  • When using -fwarn-unsafe, GHC now reports unsafe language extensions.

  • The non-threaded RTS now avoids wakeups when the system is idle (#5991).

  • A bug causing a crash with a very small initial stack size (#5993) has been fixed.

  • A performance bug causing functions to lose the tail-recursive property after optimization (#5920, #5997) has been fixed.

  • hs_init can now be called with NULL pointers as arguments (#6006).

1.8.2. GHCi

  • Fixed bug (#5836) where GHCi would silently accept an import statement for a non-existing module.

  • Fixed bug (#5904) which caused GHCi to crash when a *-module was loaded twice.

  • The :edit command in GHCi now causes the current module to be automatically reloaded after exiting from the editor (#5343).

  • A GHCi bug (#5534) causing compiled modules not to be loaded correctly has been fixed.

  • A GHCi bug (#5979, #6007) where a failed import would cause successive imports to fail has been fixed.

1.8.3. Libraries

  • Fixed bug (#5872) in the default implementation of popCount in Data.Bits.

  • A potential race condition in Control.Concurrent.Chan (#5870) has been fixed.

  • An MVar bug which could cause deadlocks (#5943) has been fixed.

  • Fixed a bug in hGetBufSome (#5843) which was causing Data.ByteString.hGetSome to block on Windows in some situations.

  • Fixed crash while parsing numeric values in exponential notation (#5688).

1.8.4. Tools

  • hp2ps can now handle backslashes in identifiers correctly (#5800).

  • A haddock bug (#5989) where modules were being incorrectly inferred safe has been fixed.