4. Release notes for version 8.2.2

The significant changes to the various parts of the compiler are listed in the following sections. This is a patch-level release which contains numerous bug-fixes over 8.2.1.

4.1. Highlights

The highlights since the 8.0 release include:

  • Several important correctness issues fixing potential runtime crashes (Trac #13707, Trac #14346)
  • A correctness issue leading to undefined behavior in some programs making use of STM (Trac #14717)
  • A runtime system bug which may have manifested as a segmentation fault under low-memory conditions (Trac #14329)
  • ghc-pkg now works correctly ihn environments with misconfigured NFS mounts (Trac #13945)
  • GHC can now produce position-independent executables (Trac #13702)
  • Significantly improved type errors (Trac #11198, Trac #12373, Trac #13530, Trac #13610)

4.2. Full details

4.2.1. Package system

4.2.2. Language

4.2.3. Compiler

  • An implementation inconsistency leading to subtly typechecker panics with
    -j ⟨n⟩ has been fixed.
  • We now always link with libm. This fixes ld.gold on some platforms (e.g. NixOS) which demand that we declare all link dependencies.
  • We now link against libpthread instead of libthr on FreeBSD
  • Fix renamer bug triggered by typechecking hs-boot files containing orphan instances (Trac #14128)
  • The cost-center profiler’s event-log support now also supports breakdown by closure type (-hT, Trac #14096)
  • A bug resulting in Core Lint failures for some programs using -XStaticPointers in GHCi has been fixed (Trac #13481)
  • The compiler now robustly handles constraint wildcards which expand to large tuple constraints (i.e. wider than 63 constraints)
  • We now catch more inappropriate levity polymorphism (Trac #13929)
  • A bug leading to data constructor fields having incorrect strictness signatures has been fixed (Trac #14290)
  • An incorrect strictness signature for retry# which may result in undefined behavior at runtime has been fixed (Trac #14171)
  • A bug in the short-cut solver leading to an infinite in typechecking has been fixed (:ghc-tickets:`13943`)
  • The compiler no longer panics when faced with ByteArray# arguments in a foreign import
  • Over-zealous optimization of Foreign.Marshal.Alloc.allocBytes[Aligned] resulting in undefined behavior has been worked around (Trac #14346)

4.2.4. GHCi

  • GHCi now behaves correctly when Ctrl-C is pressed on Windows (Trac #14150)
  • GHCi now takes a -show-mods-loaded flag to reenable showing of names of modules loaded by :load (Trac #14427)

4.2.5. Build system

  • configure now probes ld.gold even if ld.lld is found yet
    determined to be unusable (Trac #14280)

4.2.6. Runtime system

  • Compact regions now support small pointer arrays (Trac #13860)
  • The RTS can now load DLLs with with an empty import table on 32-bit Windows (Trac #14081)
  • The -po flag now works; previously it existed but had no function.

4.2.7. hsc2hs

  • Version number 0.68.2

4.3. Libraries

4.3.1. array

  • Version number 0.5.2.0 (was 0.5.2.0)

4.3.2. base

See changelog.md in the base package for full release notes.

  • Version number 4.10.1.0 (was 4.10.0.0)
  • clearBit :: Natural -> Natural no longer bottoms (Trac #13203)
  • The file locking primitives provided by GHC.IO.Handle now use Linux open file descriptor locking if available.

4.3.3. binary

  • Version number 0.8.5.1 (was 0.8.5.1)

4.3.4. bytestring

  • Version number 0.10.8.2 (was 0.10.8.2)

4.3.5. Cabal

  • Version number 2.0.1.0 (was 2.0.0.2)

4.3.6. containers

  • Version number 0.5.10.2 (was 0.5.10.2)

4.3.7. deepseq

  • Version number 1.4.3.0 (was 1.4.3.0)

4.3.8. directory

  • Version number 1.3.0.2 (was 1.3.0.0)

4.3.9. filepath

  • Version number 1.4.1.2 (was 1.4.1.2)

4.3.10. ghc

  • Version number 8.2.2

4.3.11. ghc-boot

  • This is an internal package. Use with caution.

4.3.12. ghc-compact

The ghc-compact library provides an experimental API for placing immutable data structures into a contiguous memory region. Data in these regions is not traced during garbage collection and can be serialized to disk or over the network.

  • Version number 0.1.0.0 (was 0.1.0.0)

4.3.13. ghc-prim

  • Version number 0.5.1.0 (was 0.5.1.0)

4.3.14. hoopl

  • Version number 3.10.2.2 (was 3.10.2.2)

4.3.15. hpc

  • Version number 0.6.0.3 (was 0.6.0.3)

4.3.16. integer-gmp

  • Version number 1.0.1.0 (was 1.0.0.1)

4.3.17. process

  • Version number 1.6.1.0 (was 1.6.1.0)

4.3.18. template-haskell

  • Version 2.12.0.0 (was 2.12.0.0)

4.3.19. time

  • Version number 1.8.0.2 (was 1.8.0.2)

4.3.20. unix

  • Version number 2.7.2.2 (was 2.7.2.2)

4.3.21. Win32

  • Version number 2.5.4.1 (was 2.5.4.1)

4.4. Known bugs

None, happily.