RE: [GHC] #11160: New exhaustiveness checker breaks ghcirun004
No let’s not revert. But: · Please put a list of the tickets (there are several) on the wiki page (where is the wiki page?) o perf/compiler/T783 o #11163: perf/compiler/T5642 o · Let’s have a flag to skip overlap testing so that there is always a workaround · Are you happy to continue to work on these perf issues? Simon From: George Karachalias [mailto:george.karachalias@gmail.com] Sent: 04 December 2015 09:41 To: Simon Peyton Jones <simonpj@microsoft.com> Subject: Re: [GHC] #11160: New exhaustiveness checker breaks ghcirun004 Simon, On Fri, Dec 4, 2015 at 10:34 AM, GHC <ghc-devs@haskell.org<mailto:ghc-devs@haskell.org>> wrote: Comment (by simonpj): Very fast response thank you. Your commit message is very informative. Did you include the same information in a `Note` in the code, so that we don't lose the information here? I haven't yet but I can. Actually, I wanted to ask you something. At the moment I pass all the normal tests but I fail some performance tests. They do compile but there is a deviation from the expected and HEAD is broken. For the additional expressive power I expected some more memory and time. For example, for perf/compiler/T783.hs which has 500 guards in a single function definition I take ~5 sec to compile but the deviation in allocated bytes is 753%, compared to what the "expected" is. I feel terrible since we are really close to the freeze and I think I am stalling everyone. I know of no good way to reduce memory consumption without losing substantial expressivity. Do you think I shall revert? George -- things you own end up owning you
Simon Peyton Jones <simonpj@microsoft.com> writes:
No let’s not revert. But:
· Please put a list of the tickets (there are several) on the wiki page (where is the wiki page?)
o perf/compiler/T783
o #11163: perf/compiler/T5642
o
· Let’s have a flag to skip overlap testing so that there is always a workaround
Indeed, given that there appear to be relatively few (and, moreover, fairly pathological) programs that send things astray this should be a fine workaround for 8.0. While you introduce the flag be sure to add a mention in the documentation: * Update the note in `docs/user_guide/bugs.rst` to reflect the current state of the pattern match check. * Add a point to `bugs.rst` to describe the performance issue and the workaround. Describe, if you can, some heuristics that users might use to determine whether skipping overlap testing might be necessary for their program. * A note in `docs/user_guide/using-warnings.rst` describing the new flag, linking to the description of the performance issue in `bugs.rst` * Add a description of the flag to `utils/mkUserGuidePart/Options/Warnings.hs` Also, perhaps we could handle future work via the usual Phabricator route? While we sometimes do deviate from Phabricator for larger patches like the original exhaustiveness checker merge, typically all other patches are processed through Phabricator, which offers the advantage that we can easily see in advance whether things will break.
From: George Karachalias [mailto:george.karachalias@gmail.com] Sent: 04 December 2015 09:41 To: Simon Peyton Jones <simonpj@microsoft.com> Subject: Re: [GHC] #11160: New exhaustiveness checker breaks ghcirun004
I feel terrible since we are really close to the freeze and I think I am stalling everyone.
Don't fret too much, it happens. Moreover, I deserve a large portion of the blame as I neglected to mention the existence of our validation script. Regardless things are pretty much back to normal at this point; life goes on... Cheers, - Ben
participants (2)
-
Ben Gamari -
Simon Peyton Jones