Write a Blog >>
ICFP 2016
Sun 18 - Sat 24 September 2016 Nara, Japan
Sat 24 Sep 2016 14:25 - 14:50 at Conference Room 1 - The Engineering of GHC

Compilation with GHC was non-deterministic prior to version 8.0.2. Compiling with the same flags, sources, and environment could produce incompatible binary objects.

Non-deterministic compilation causes several problems. Non-deterministic interface files result in slower incremental builds because of unnecessary recompilation. Distributed build systems, such as Buck or Bazel, cannot reliably cache non-deterministic object files, negating the primary benefit of distributed compilation. Non-determinism results in unstable symbol names, making code hot-swapping difficult. Non-deterministic output forces packagers of binary distributions such as Debian to waste resources recompiling after a trivial change and also makes it impossible to verify if a binary was built from the given code.

During the past couple of months I tested GHC for non-determinism on itself and Stackage, developed a non-determinism test suite, and systematically audited GHC’s internals to ensure that compilation is deterministic in GHC 8.0.2. In this talk I will discuss the causes of non-determinism, how I addressed them, and how we can keep GHC deterministic going forward.

Sat 24 Sep

Displayed time zone: Osaka, Sapporo, Tokyo change

14:00 - 14:50
The Engineering of GHCHIW at Conference Room 1
14:00
25m
Talk
Pita: Tools for making GHC fast again
HIW
Ben Gamari Well-Typed LLP
14:25
25m
Talk
GHC Determinism
HIW
Bartosz Nitka Facebook