ghci and unfoldings?

Simon Peyton Jones simonpj at microsoft.com
Wed Jan 20 15:46:25 UTC 2016


Ah….It seems that to get unfoldings exposed in the module you are compiling you need both

·         -fno-omit-interface-pragmas

·         -fexpose-all-unfoldings

And GHCi and –O0 both imply –fomit-interface-pragmas.

To see the unfoldings on imported functions  you need –fno-ignore-interface pragmas.

Arguably –fexpose-all-unfoldings should override –fomit-interface-pragmas, which it doesn’t at the moment.  Open a ticket if you think that would be useful and important.  I can give guidance about the places.

Simon


From: conal.elliott at gmail.com [mailto:conal.elliott at gmail.com] On Behalf Of Conal Elliott
Sent: 18 January 2016 17:47
To: Simon Peyton Jones <simonpj at microsoft.com>
Cc: Edward Z. Yang <ezyang at mit.edu>; Andrew Farmer <afarmer at ittc.ku.edu>; ghc-devs at haskell.org
Subject: Re: ghci and unfoldings?

That's the flag I would expect. It doesn't seem to help or hinder availability of unfoldings in GHCi. Do you think it should?
And Happy Birthday, Simon!
Warmly, - Conal

On Monday, January 18, 2016, Simon Peyton Jones <simonpj at microsoft.com<mailto:simonpj at microsoft.com>> wrote:
Or -fexpose-all-unfoldings?

Simon

|  -----Original Message-----
|  From: ghc-devs [mailto:ghc-devs-bounces at haskell.org] On Behalf Of
|  Edward Z. Yang
|  Sent: 18 January 2016 06:37
|  To: Conal Elliott <conal at conal.net<mailto:conal at conal.net>>
|  Cc: Andrew Farmer <afarmer at ittc.ku.edu<mailto:afarmer at ittc.ku.edu>>; ghc-devs at haskell.org<mailto:ghc-devs at haskell.org>
|  Subject: Re: ghci and unfoldings?
|
|  Does passing -fobject-code solve your problem?
|
|  Edward
|
|  Excerpts from Conal Elliott's message of 2016-01-17 22:18:49 -0800:
|  > Hi Brandon. Thanks for the reply. I’m not sure that it addresses
|  what
|  > I was trying to ask. GHCi *does* invoke plugins and even reloads
|  those
|  > plugins dynamically when their source code changes. So in this sense
|  > ghci does enable optimization, even if it doesn’t perform much
|  > optimization on its own. And of course plugins and unfolding are not
|  just about optimization.
|  >
|  > I’m not looking for ghci to do optimization, but rather to enable me
|  > to more easily develop my GHC plugins. It’s *almost* there already.
|  I
|  > just need access to unfoldings from other modules for my plugin’s
|  use.
|  >
|  > For context, I’m rebuilding my Haskell-to-hardware compiler
|  > <https://github.com/conal/talk-2015-haskell-to-hardware>, which
|  relies
|  > on giving a non-standard but principled interpretation of Haskell
|  > programs via a conversion through the language of cartesian closed
|  categories (CCCs).
|  > The first back-end is hardware generation (e.g., via Verilog), and I
|  > have plans for several other CCC-based interpretations.
|  >
|  > In addition to facilitating my plugin development, hosting in ghci
|  > will make it much more pleasant for others to *use* the plugin
|  during
|  > exploratory programming, just as with ghci use in general. With
|  access
|  > to unfoldings, users will be able to generate circuit diagrams and
|  > Verilog like those in my compiler talk immediately and directly from
|  > within ghci. I also intend to make a GPU back-end for fast
|  interactive
|  > graphics etc, which would be much more fun in ghci than with batch
|  compilation.
|  > I hope this explanation clarifies my goals and motivation. I hope
|  > there’s a way to access unfoldings from ghci currently or with a
|  small
|  > amount of effort.
|  >
|  > Regards, - Conal
|  >
|  > On Sun, Jan 17, 2016 at 7:00 PM, Brandon Allbery
|  <allbery.b at gmail.com<mailto:allbery.b at gmail.com>>
|  > wrote:
|  >
|  > > On Sun, Jan 17, 2016 at 9:40 PM, Conal Elliott <conal at conal.net<mailto:conal at conal.net>>
|  wrote:
|  > >
|  > >> I'm developing a GHC plugin (using HERMIT), and I'd like to use
|  > >> ghci to speed up development. I'm able to do so, except that my
|  > >> plugin critically needs access to unfoldings, which appear to be
|  > >> unavailable in ghci. A little experimenting with ghc shows me
|  that
|  > >> "-O" is the key, but "-O" is incompatible with "--interactive"
|  (as
|  > >> in ghci). Is there any way to persuade ghci to make unfoldings
|  available?
|  > >
|  > >
|  > > I think unfoldings are only done as part of optimization, and the
|  > > bytecode backend doesn't support optimization at all.
|  > >
|  > > --
|  > > brandon s allbery kf8nh                               sine nomine
|  > > associates
|  > > allbery.b at gmail.com<mailto:allbery.b at gmail.com>
|  > > ballbery at sinenomine.net<mailto:ballbery at sinenomine.net>
|  > > unix, openafs, kerberos, infrastructure, xmonad
|  > >
|  https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2fsine
|  > >
|  nomine.net<https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2fnomine.net&data=01%7c01%7csimonpj%40064d.mgd.microsoft.com%7cb669a024c5b84ab83f3008d3202f635e%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=7lx6Ayz03bCdiHv1O0TkKOrwNQNFYRUhHRCZR%2bAEPmg%3d>&data=01%7c01%7csimonpj%40064d.mgd.microsoft.com<https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2f40064d.mgd.microsoft.com&data=01%7c01%7csimonpj%40064d.mgd.microsoft.com%7cb669a024c5b84ab83f3008d3202f635e%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=nLmnL5PxzSjH%2bo8TnPLfoWgC0ySSaNIYXxfY6gKBGLA%3d>%7cbaf2ef5
|  > >
|  5f8af447b42e608d31fd1cec1%7c72f988bf86f141af91ab2d7cd011db47%7c1&sda
|  > > ta=qMNmL5LmkgMp0ebkr6SzPQIwhySqOicZgEdW%2fhe6Q%2b0%3d
|  > >
|  _______________________________________________
|  ghc-devs mailing list
|  ghc-devs at haskell.org<mailto:ghc-devs at haskell.org>
|  https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2fmail.h
|  askell.org<https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2faskell.org&data=01%7c01%7csimonpj%40064d.mgd.microsoft.com%7cb669a024c5b84ab83f3008d3202f635e%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=0GhykVs2C40ykmJwU2Yrq2D4kxV4hd%2bAtVoV%2b%2bMptPo%3d>%2fcgi-bin%2fmailman%2flistinfo%2fghc-
|  devs%0a&data=01%7c01%7csimonpj%40064d.mgd.microsoft.com<https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2f40064d.mgd.microsoft.com&data=01%7c01%7csimonpj%40064d.mgd.microsoft.com%7cb669a024c5b84ab83f3008d3202f635e%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=nLmnL5PxzSjH%2bo8TnPLfoWgC0ySSaNIYXxfY6gKBGLA%3d>%7cbaf2ef55f8af
|  447b42e608d31fd1cec1%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=veoz
|  Ab6M7N9jZaJZ9tgXZ%2fI8jq7U%2b4YM1FcSXvqTcaw%3d
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-devs/attachments/20160120/5657e080/attachment-0001.html>


More information about the ghc-devs mailing list