If it merges ok, I’d be inclined to put this in.

·        We know it’ll help someone (Mathieu and colleages).

·        It (should) affect a new and as-yet little-used feature, so it’s 
unlikely to harm anyone.    (Of course, ANY change can have unexpected 
consequences.)

·        And you could regard it as a kind of bug-fix.

I think we could bend the rules here.

Simon

From: ghc-devs [mailto:[email protected]] On Behalf Of Boespflug, 
Mathieu
Sent: 30 August 2016 19:05
To: Ben Gamari <[email protected]>
Cc: GHC developers <[email protected]>
Subject: Re: Last call for merge requests for 8.0.2

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<https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2ftweag.io&data=01%7c01%7csimonpj%40microsoft.com%7cad4d06adb11c4cc9f1a408d3d10038a5%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=hMxE52Ftatu3waJaDsfVjEZeUNld8ier92n%2bTOyqOAA%3d>.

On 30 August 2016 at 17:59, Ben Gamari 
<[email protected]<mailto:[email protected]>> wrote:
Facundo Domínguez 
<[email protected]<mailto:[email protected]>> writes:

> Hello Ben,
>
>   Could we have these patches added?
>
> http://git.haskell.org/ghc.git/commit/56f47d4a4e418235285d8b8cfe23bde6473f17fc<https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2fgit.haskell.org%2fghc.git%2fcommit%2f56f47d4a4e418235285d8b8cfe23bde6473f17fc&data=01%7c01%7csimonpj%40microsoft.com%7cad4d06adb11c4cc9f1a408d3d10038a5%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=mrvqQEGkKEmitdQ8tIzeQMFgQ4BK8D5aDemG8%2f4cALg%3d>
> http://git.haskell.org/ghc.git/commit/567dbd9bcb602accf3184b83050f2982cbb7758b<https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2fgit.haskell.org%2fghc.git%2fcommit%2f567dbd9bcb602accf3184b83050f2982cbb7758b&data=01%7c01%7csimonpj%40microsoft.com%7cad4d06adb11c4cc9f1a408d3d10038a5%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=bJD1ibohX2hB2Da6HeL8J4hA0TsE193W6%2b8OVYisjoI%3d>
>
> 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
[email protected]<mailto:[email protected]>
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs<https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2fmail.haskell.org%2fcgi-bin%2fmailman%2flistinfo%2fghc-devs&data=01%7c01%7csimonpj%40microsoft.com%7cad4d06adb11c4cc9f1a408d3d10038a5%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=V5lt94aEjJCKJuVcnL8qglhDZytwINtKV4wKRIeR9zY%3d>

_______________________________________________
ghc-devs mailing list
[email protected]
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs

Reply via email to