
Hi Edward, While chatting with the ghc-ide folks recently I realized that it would be useful to be able to preserve Core such that compilation can be restarted (e.g. to be pushed down the bytecode pipeline to evaluate TH splices). As I recall this is precisely what you implemented in your "fat interface file" work. Do you recall what the state of this work was? Do you have a branch with last-known-good work? Do you recall any tricky questions that remained outstanding? Cheers, - Ben

Just to make sure we are aware of all the ongoing efforts. We've been
working on ebedding Core into interface files as well.
Josh has updated the Wiki page here
https://gitlab.haskell.org/ghc/ghc/-/wikis/Extensible-Interface-Files.
Cheers,
Moritz
On Wed, Oct 21, 2020 at 12:06 AM Ben Gamari
Hi Edward,
While chatting with the ghc-ide folks recently I realized that it would be useful to be able to preserve Core such that compilation can be restarted (e.g. to be pushed down the bytecode pipeline to evaluate TH splices).
As I recall this is precisely what you implemented in your "fat interface file" work. Do you recall what the state of this work was? Do you have a branch with last-known-good work? Do you recall any tricky questions that remained outstanding?
Cheers,
- Ben _______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs

Thanks Mortiz
That wiki page is about extensible interface files in general. It says nothing about specifically putting Core terms into interface files.
For the Core part, since GHC already puts Core into unfoldings, the simple thing is just to expose all unfoldings, no?
Simon
From: ghc-devs

Right, my understanding is that they are not sufficient however, as Michael
layed out here
https://gitlab.haskell.org/ghc/ghc/-/wikis/Core-interface-section#unfoldings
This should be linked together better. We'll improve this.
On Wed, Oct 21, 2020 at 5:56 PM Simon Peyton Jones
Thanks Mortiz
That wiki page is about extensible interface files in general. It says nothing about specifically putting Core terms into interface files.
For the Core part, since GHC already puts Core into unfoldings, the simple thing is just to expose all unfoldings, no?
Simon
*From:* ghc-devs
*On Behalf Of *Moritz Angermann *Sent:* 21 October 2020 10:36 *To:* Ben Gamari *Cc:* Edward Yang (ezyang@cs.stanford.edu) ; ghc-devs@haskell.org *Subject:* Re: Fat interface files? Just to make sure we are aware of all the ongoing efforts. We've been working on ebedding Core into interface files as well.
Josh has updated the Wiki page here https://gitlab.haskell.org/ghc/ghc/-/wikis/Extensible-Interface-Files https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgitlab.haskell.org%2Fghc%2Fghc%2F-%2Fwikis%2FExtensible-Interface-Files&data=04%7C01%7Csimonpj%40microsoft.com%7C644d055c20ed4377753c08d875a4cfa1%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637388698431720509%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C2000&sdata=5xMRK5FF7OKifyceURAEkcNzo6naUzvLkRWnsCto7pc%3D&reserved=0 .
Cheers,
Moritz
On Wed, Oct 21, 2020 at 12:06 AM Ben Gamari
wrote: Hi Edward,
While chatting with the ghc-ide folks recently I realized that it would be useful to be able to preserve Core such that compilation can be restarted (e.g. to be pushed down the bytecode pipeline to evaluate TH splices).
As I recall this is precisely what you implemented in your "fat interface file" work. Do you recall what the state of this work was? Do you have a branch with last-known-good work? Do you recall any tricky questions that remained outstanding?
Cheers,
- Ben _______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Fmail.haskell.org%2Fcgi-bin%2Fmailman%2Flistinfo%2Fghc-devs&data=04%7C01%7Csimonpj%40microsoft.com%7C644d055c20ed4377753c08d875a4cfa1%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637388698431720509%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C2000&sdata=ETWa%2BwN2LQyoi4NVDdNktv%2BUiQMfWvvj5rg5HdL24Tk%3D&reserved=0

I've been considering sneaking in the Core into the iface as `mi_rules` with specially chosen names and activation `NeverActive`. The benefit of this is that we can hijack the compilation pipeline, but still remain compatible with versions of GHC going quite a while back. On 20/10/21 18:03, Moritz Angermann wrote:
Right, my understanding is that they are not sufficient however, as Michael layed out here https://gitlab.haskell.org/ghc/ghc/-/wikis/Core-interface-section#unfoldings
This should be linked together better. We'll improve this.
On Wed, Oct 21, 2020 at 5:56 PM Simon Peyton Jones
wrote: Thanks Mortiz
That wiki page is about extensible interface files in general. It says nothing about specifically putting Core terms into interface files.
For the Core part, since GHC already puts Core into unfoldings, the simple thing is just to expose all unfoldings, no?
Simon
*From:* ghc-devs
*On Behalf Of *Moritz Angermann *Sent:* 21 October 2020 10:36 *To:* Ben Gamari *Cc:* Edward Yang (ezyang@cs.stanford.edu) ; ghc-devs@haskell.org *Subject:* Re: Fat interface files? Just to make sure we are aware of all the ongoing efforts. We've been working on ebedding Core into interface files as well.
Josh has updated the Wiki page here https://gitlab.haskell.org/ghc/ghc/-/wikis/Extensible-Interface-Files https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgitlab.haskell.org%2Fghc%2Fghc%2F-%2Fwikis%2FExtensible-Interface-Files&data=04%7C01%7Csimonpj%40microsoft.com%7C644d055c20ed4377753c08d875a4cfa1%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637388698431720509%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C2000&sdata=5xMRK5FF7OKifyceURAEkcNzo6naUzvLkRWnsCto7pc%3D&reserved=0 .
Cheers,
Moritz
On Wed, Oct 21, 2020 at 12:06 AM Ben Gamari
wrote: Hi Edward,
While chatting with the ghc-ide folks recently I realized that it would be useful to be able to preserve Core such that compilation can be restarted (e.g. to be pushed down the bytecode pipeline to evaluate TH splices).
As I recall this is precisely what you implemented in your "fat interface file" work. Do you recall what the state of this work was? Do you have a branch with last-known-good work? Do you recall any tricky questions that remained outstanding?
Cheers,
- Ben _______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Fmail.haskell.org%2Fcgi-bin%2Fmailman%2Flistinfo%2Fghc-devs&data=04%7C01%7Csimonpj%40microsoft.com%7C644d055c20ed4377753c08d875a4cfa1%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637388698431720509%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C2000&sdata=ETWa%2BwN2LQyoi4NVDdNktv%2BUiQMfWvvj5rg5HdL24Tk%3D&reserved=0

I found the branch here: https://github.com/ezyang/ghc/commit/13615ca4e4bf759f323de22a3d182b06c4050f3... On 20/10/20 12:06, Ben Gamari wrote:
Hi Edward,
While chatting with the ghc-ide folks recently I realized that it would be useful to be able to preserve Core such that compilation can be restarted (e.g. to be pushed down the bytecode pipeline to evaluate TH splices).
As I recall this is precisely what you implemented in your "fat interface file" work. Do you recall what the state of this work was? Do you have a branch with last-known-good work? Do you recall any tricky questions that remained outstanding?
Cheers,
- Ben

Hi Ben, sorry about the late response. It looks like you've found https://gitlab.haskell.org/ghc/ghc/-/issues/10871 which I think pretty comprehensively discusses the issue as it is. Given the elapsed time it would probably make sense to reimplement from scratch; I don't recall this being too difficult to do. HAs anything else come up in the meantime? Edward Excerpts from Ben Gamari's message of 2020-10-20 12:06:03 -0400:
Hi Edward,
While chatting with the ghc-ide folks recently I realized that it would be useful to be able to preserve Core such that compilation can be restarted (e.g. to be pushed down the bytecode pipeline to evaluate TH splices).
As I recall this is precisely what you implemented in your "fat interface file" work. Do you recall what the state of this work was? Do you have a branch with last-known-good work? Do you recall any tricky questions that remained outstanding?
Cheers,
- Ben
participants (5)
-
Ben Gamari
-
Edward Z. Yang
-
Moritz Angermann
-
Simon Peyton Jones
-
Zubin Duggal