[GHC] #14769: The RecompBecause [TH] check is not resume-build-safe
GHC
ghc-devs at haskell.org
Tue Feb 27 14:11:09 UTC 2018
#14769: The RecompBecause [TH] check is not resume-build-safe
-------------------------------------+-------------------------------------
Reporter: nh2 | Owner: (none)
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 8.2.2
Resolution: | Keywords:
Operating System: Unknown/Multiple | Architecture:
Type of failure: Incorrect result | Unknown/Multiple
at runtime | Test Case:
Blocked By: | Blocking:
Related Tickets: #481 | Differential Rev(s):
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by nh2):
Yes, that scheme lacks "stability" against some use cases. Most
prominently, adding a new module and importing it, thus turning e.g. `[1
of 3]` into `[2 of 4]`, will have us end up with different uniques and
thus different `.o` files and different binaries (and the benefit of
reduced `[TH]` compilations is lost for such changes).
But the scheme should still solve the most common use cases:
* A from-scratch build using the same code and same compiler would result
in byte-identical outputs
* Resuming a `--make` (`-j`) build after merely touching a file or
changing a comment would result in byte-identical outputs
* Resuming a `--make` (`-j`) build after changing the code in a module
will would result in only the `.o` for that module to change (plus
potentially some inlining sites if `-O` is on); `.o` files that were
recompiled because of `[TH]` that generate identical `.o` outputs will
allow for the identical-.o-file-`[TH]`-avoidance you proposed above
The first point will allow us to get byte-reproducible binaries ala
Debian's "reproducible builds"; until now due to Unique nondeterminism,
this wasn't possible even under guaranteed input control and stopping-the-
system-time sandboxes, as Nix does it.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14769#comment:9>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list