Last call for merge requests for 8.0.2

Boespflug, Mathieu m at tweag.io
Tue Aug 30 18:05:22 UTC 2016


Depends how you look at it I guess. It's arguably a fix to addModFinalizer,
which never really worked for the use case it was intended since it was
first introduced. This function was added by the author of
language-c-inline, who wanted things like

cos :: Double -> Double
cos x = [c| cos($x) |]

to work by having a new C wrapper function for the quasiquote be generated
and written to disk at the end of the type checking phase. Doing it at the
end means all quasiquotes in the whole module can be dumped at once.
Problem is, the type environment was not available by then, so the user was
forced to provide an explicit type annotation to help with the code
generation, as is done in inline-c:

cos :: Double -> Double
cos x = [c| double { cos($double:x) } |]

>From GHC 7.8, types for locally bound variables weren't even available at
the quasiquotation site, for reasons. But it's perfectly safe to make them
available by the time all type checking is finished.

We could wait of course, but in the meantime this is completely holding up
the "inline" features of inline-java. Because for inline-java we decided
that the (redundant) type annotations such as the above were really too
verbose in the case of Java, and would require significant hacks to the
language-java parser, so we don't support them. That's why I for one am
keen to have addModFinalizer make into a release as soon as possible.

But I completely understand your risk aversion for a point release. Here's
some data to help you evaluate the risk: the patch is specific to TH
finalizers registered using addModFinalizer, a function that is currently
used by only one package out there at the moment: expandth (based on github
code search - short of being able to code search all of Hackage directly).

--
Mathieu Boespflug
Founder at http://tweag.io.

On 30 August 2016 at 17:59, Ben Gamari <ben at well-typed.com> wrote:

> Facundo Domínguez <facundo.dominguez at tweag.io> writes:
>
> > Hello Ben,
> >
> >   Could we have these patches added?
> >
> > http://git.haskell.org/ghc.git/commit/56f47d4a4e418235285d8b8cfe23bd
> e6473f17fc
> > http://git.haskell.org/ghc.git/commit/567dbd9bcb602accf3184b83050f29
> 82cbb7758b
> >
> > These allow reify to reach local variables when used with
> addModFinalizer.
> >
> Hmm, I'm not sure; #11832 is strictly speaking a feature request which
> we try to avoid merging in minor releases to avoid introducing bugs.
> Given that 8.2.1 isn't that far away (hopefully early 2017), how
> terrible would it be if we punted this?
>
> Cheers,
>
> - Ben
>
>
> _______________________________________________
> ghc-devs mailing list
> ghc-devs at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-devs/attachments/20160830/f427d505/attachment.html>


More information about the ghc-devs mailing list