Specialising NOINLINE functions

Carter Schonwald carter.schonwald at gmail.com
Sat May 7 15:18:52 UTC 2022


There even was a ghc branch with partial work towards implementing this as
part of fgaz’s gsoc.

I’m happy to help out if any spare cycles are needed to work through the
details

On Fri, May 6, 2022 at 5:26 AM Simon Peyton Jones <
simon.peytonjones at gmail.com> wrote:

> There is a (stale) ghc-proposal for that,
>> https://github.com/ghc-proposals/ghc-proposals/pull/357
>>
>
> So there is!  Thank you.
>
> Gergo: would you like to take over this proposal, revise it if necessary
> in the light of the comments, and submit it?
>
> Simon
>
> On Fri, 6 May 2022 at 10:08, Oleg Grenrus <oleg.grenrus at iki.fi> wrote:
>
>> There is a (stale) ghc-proposal for that,
>> https://github.com/ghc-proposals/ghc-proposals/pull/357
>>
>> - Oleg
>>
>> On 6.5.2022 12.04, Simon Peyton Jones wrote:
>> > Dear devs
>> >
>> > At the moment the INLINEABLE pragma means "capture my right-hand side,
>> > regardless of how big it is, so that it can be type-class-specialised,
>> > including in other modules".  But it /also /says "feel free to inline
>> me".
>> >
>> > Some users (eg Gergo) want to say NOINLINE on some functions. But for
>> > these they'd still like to generate type-class-specialised versions.
>> > After all, if we aren't going to inline them, specialising is the next
>> > best thing.
>> >
>> > But we have no way to say both "specialise me" and "don't inline me",
>> > because you can't say both INLINEABLE and NOINLINE.  (That would look
>> > silly.)
>> >
>> > I think we should probably just bite the bullet and add a
>> > SPECIALISABLE pragma, /orthogonal to INLINE/NOINLNE/, which say
>> > "capture my right-hand side, regardless of how big it is, so that it
>> > can be type-class-specialised, including in other modules".  It
>> > behaves exactly like INLINEABLE except that  you can specify it along
>> > with INLINE/NOINLINE.
>> >
>> > Any thoughts?  Do you think this needs a GHC proposal?
>> >
>> > See #21036 <
>> https://gitlab.haskell.org/ghc/ghc/-/issues/21036#note_407930>
>> >
>> >
>> > Simon
>> >
>> > _______________________________________________
>> > ghc-devs mailing list
>> > ghc-devs at haskell.org
>> > http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
>> _______________________________________________
>> ghc-devs mailing list
>> ghc-devs at haskell.org
>> http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
>>
> _______________________________________________
> 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/20220507/c35d56fb/attachment.html>


More information about the ghc-devs mailing list