Scripts merged for easily loading and running GHC in GHCi, for fast development iterations

Hello GHC developers! Now that D4904 and D4986 are merged, if you have recently built GHC then you can use "./utils/ghc-in-ghci/run.sh -fobject-code" to load GHC into GHCi (throwing on a "-j8" helps too). For me, this makes development far more pleasant, as often I can make a change and try it out in only 15 or 20 seconds. Thanks to Csongor Kiss for writing the initial ghci script, and Matthew Pickering for posting about it to the mailinglist, as otherwise I probably wouldn't have known about it. I wrote a blog post about the topic on my new blog: http://www.mgsloan.com/posts/ghcinception/ Once D5015 is merged, the explicit "-fobject-code" won't be needed. Once https://ghc.haskell.org/trac/ghc/ticket/15454 is addressed, it might not be needed at all, leading to even faster loading ;) Happy ghci-ing! -Michael

Can you please update the wiki page?
https://ghc.haskell.org/trac/ghc/wiki/Building/InGhci
Matt
On Sun, Jul 29, 2018 at 6:18 AM, Michael Sloan
Hello GHC developers!
Now that D4904 and D4986 are merged, if you have recently built GHC then you can use "./utils/ghc-in-ghci/run.sh -fobject-code" to load GHC into GHCi (throwing on a "-j8" helps too). For me, this makes development far more pleasant, as often I can make a change and try it out in only 15 or 20 seconds. Thanks to Csongor Kiss for writing the initial ghci script, and Matthew Pickering for posting about it to the mailinglist, as otherwise I probably wouldn't have known about it.
I wrote a blog post about the topic on my new blog: http://www.mgsloan.com/posts/ghcinception/
Once D5015 is merged, the explicit "-fobject-code" won't be needed. Once https://ghc.haskell.org/trac/ghc/ticket/15454 is addressed, it might not be needed at all, leading to even faster loading ;)
Happy ghci-ing! -Michael _______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs

I added this to the wiki. It would be nice to have a wrapper similar to
`run.sh` but for starting ghcid, I believe.
--
Best wishes,
Artem
On Sun, 29 Jul 2018 at 10:41 Matthew Pickering
Can you please update the wiki page?
https://ghc.haskell.org/trac/ghc/wiki/Building/InGhci
Matt
On Sun, Jul 29, 2018 at 6:18 AM, Michael Sloan
wrote: Hello GHC developers!
Now that D4904 and D4986 are merged, if you have recently built GHC then you can use "./utils/ghc-in-ghci/run.sh -fobject-code" to load GHC into GHCi (throwing on a "-j8" helps too). For me, this makes development far more pleasant, as often I can make a change and try it out in only 15 or 20 seconds. Thanks to Csongor Kiss for writing the initial ghci script, and Matthew Pickering for posting about it to the mailinglist, as otherwise I probably wouldn't have known about it.
I wrote a blog post about the topic on my new blog: http://www.mgsloan.com/posts/ghcinception/
Once D5015 is merged, the explicit "-fobject-code" won't be needed. Once https://ghc.haskell.org/trac/ghc/ticket/15454 is addressed, it might not be needed at all, leading to even faster loading ;)
Happy ghci-ing! -Michael _______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs

Thanks a bunch for updating the wiki page, Artem! It was on my todo
list, but it's been a rather busy week. I've added an update
mentioning that it will be possible to run "ghcid" directly without
args once D5105 is merged.
On Mon, Aug 6, 2018 at 12:55 AM, Artem Pelenitsyn
I added this to the wiki. It would be nice to have a wrapper similar to `run.sh` but for starting ghcid, I believe.
-- Best wishes, Artem
On Sun, 29 Jul 2018 at 10:41 Matthew Pickering
wrote: Can you please update the wiki page?
https://ghc.haskell.org/trac/ghc/wiki/Building/InGhci
Matt
On Sun, Jul 29, 2018 at 6:18 AM, Michael Sloan
wrote: Hello GHC developers!
Now that D4904 and D4986 are merged, if you have recently built GHC then you can use "./utils/ghc-in-ghci/run.sh -fobject-code" to load GHC into GHCi (throwing on a "-j8" helps too). For me, this makes development far more pleasant, as often I can make a change and try it out in only 15 or 20 seconds. Thanks to Csongor Kiss for writing the initial ghci script, and Matthew Pickering for posting about it to the mailinglist, as otherwise I probably wouldn't have known about it.
I wrote a blog post about the topic on my new blog: http://www.mgsloan.com/posts/ghcinception/
Once D5015 is merged, the explicit "-fobject-code" won't be needed. Once https://ghc.haskell.org/trac/ghc/ticket/15454 is addressed, it might not be needed at all, leading to even faster loading ;)
Happy ghci-ing! -Michael _______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs

Now that [D5015] is merged (thanks, monoidal!), -fobject-code no
longer needs to be provided manually. This also means that you can
run [ghcid] directly in the root of the repo without any arguments. I
have updated https://ghc.haskell.org/trac/ghc/wiki/Building/InGhci to
use the simpler invocations.
[D5015]: https://phabricator.haskell.org/D5015
[ghcid]: https://github.com/ndmitchell/ghcid
On Mon, Aug 6, 2018 at 1:03 AM, Michael Sloan
Thanks a bunch for updating the wiki page, Artem! It was on my todo list, but it's been a rather busy week. I've added an update mentioning that it will be possible to run "ghcid" directly without args once D5105 is merged.
On Mon, Aug 6, 2018 at 12:55 AM, Artem Pelenitsyn
wrote: I added this to the wiki. It would be nice to have a wrapper similar to `run.sh` but for starting ghcid, I believe.
-- Best wishes, Artem
On Sun, 29 Jul 2018 at 10:41 Matthew Pickering
wrote: Can you please update the wiki page?
https://ghc.haskell.org/trac/ghc/wiki/Building/InGhci
Matt
On Sun, Jul 29, 2018 at 6:18 AM, Michael Sloan
wrote: Hello GHC developers!
Now that D4904 and D4986 are merged, if you have recently built GHC then you can use "./utils/ghc-in-ghci/run.sh -fobject-code" to load GHC into GHCi (throwing on a "-j8" helps too). For me, this makes development far more pleasant, as often I can make a change and try it out in only 15 or 20 seconds. Thanks to Csongor Kiss for writing the initial ghci script, and Matthew Pickering for posting about it to the mailinglist, as otherwise I probably wouldn't have known about it.
I wrote a blog post about the topic on my new blog: http://www.mgsloan.com/posts/ghcinception/
Once D5015 is merged, the explicit "-fobject-code" won't be needed. Once https://ghc.haskell.org/trac/ghc/ticket/15454 is addressed, it might not be needed at all, leading to even faster loading ;)
Happy ghci-ing! -Michael _______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs

In practice, how much memory does this use?
I find that with 4gb of memory that it is unusable and hard to kill.
Perhaps we should add some sort of warning to the page about this.
Cheers
Matt
On Wed, Aug 8, 2018 at 11:12 PM, Michael Sloan
Now that [D5015] is merged (thanks, monoidal!), -fobject-code no longer needs to be provided manually. This also means that you can run [ghcid] directly in the root of the repo without any arguments. I have updated https://ghc.haskell.org/trac/ghc/wiki/Building/InGhci to use the simpler invocations.
[D5015]: https://phabricator.haskell.org/D5015 [ghcid]: https://github.com/ndmitchell/ghcid
On Mon, Aug 6, 2018 at 1:03 AM, Michael Sloan
wrote: Thanks a bunch for updating the wiki page, Artem! It was on my todo list, but it's been a rather busy week. I've added an update mentioning that it will be possible to run "ghcid" directly without args once D5105 is merged.
On Mon, Aug 6, 2018 at 12:55 AM, Artem Pelenitsyn
wrote: I added this to the wiki. It would be nice to have a wrapper similar to `run.sh` but for starting ghcid, I believe.
-- Best wishes, Artem
On Sun, 29 Jul 2018 at 10:41 Matthew Pickering
wrote: Can you please update the wiki page?
https://ghc.haskell.org/trac/ghc/wiki/Building/InGhci
Matt
On Sun, Jul 29, 2018 at 6:18 AM, Michael Sloan
wrote: Hello GHC developers!
Now that D4904 and D4986 are merged, if you have recently built GHC then you can use "./utils/ghc-in-ghci/run.sh -fobject-code" to load GHC into GHCi (throwing on a "-j8" helps too). For me, this makes development far more pleasant, as often I can make a change and try it out in only 15 or 20 seconds. Thanks to Csongor Kiss for writing the initial ghci script, and Matthew Pickering for posting about it to the mailinglist, as otherwise I probably wouldn't have known about it.
I wrote a blog post about the topic on my new blog: http://www.mgsloan.com/posts/ghcinception/
Once D5015 is merged, the explicit "-fobject-code" won't be needed. Once https://ghc.haskell.org/trac/ghc/ticket/15454 is addressed, it might not be needed at all, leading to even faster loading ;)
Happy ghci-ing! -Michael _______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs

Good point, I have added a note about it to the wiki page. Surprising
that it would be hard to kill. Do you have swap setup?
For me it takes ~2.7GB initially and 3.5GB after the first reload. In
the past I've seen it get all the way up to 9GB so there may be some
memory leakage.
I have 40GB of ram in my laptop, so I don't notice this much. I
highly recommend investing in more memory if it's within your
financial means. The productivity boon of being able to use GHCi on
large projects, or run multiple concurrent docker containers or VMs,
is huge.
A bit off topic, but sometimes folks are surprised that I spend
hundreds of dollars on keyboards like the kinesis advantage 2 (which
is fantastic, btw) or the keyboard.io (really nice too!). My answer
is that if I'm using some equipment many hours per day, the cost
amortizes out. I ask myself "Would I pay 3 cents to use this keyboard
for an hour?", in the case of those keyboards, my answer is an
emphatic YES! I apply similar reasoning to my main computer hardware,
though people are used to that being $$$ vs the surprise of $350
keyboards.
-Michael
On Wed, Aug 8, 2018 at 3:31 PM, Matthew Pickering
In practice, how much memory does this use?
I find that with 4gb of memory that it is unusable and hard to kill. Perhaps we should add some sort of warning to the page about this.
Cheers
Matt
On Wed, Aug 8, 2018 at 11:12 PM, Michael Sloan
wrote: Now that [D5015] is merged (thanks, monoidal!), -fobject-code no longer needs to be provided manually. This also means that you can run [ghcid] directly in the root of the repo without any arguments. I have updated https://ghc.haskell.org/trac/ghc/wiki/Building/InGhci to use the simpler invocations.
[D5015]: https://phabricator.haskell.org/D5015 [ghcid]: https://github.com/ndmitchell/ghcid
On Mon, Aug 6, 2018 at 1:03 AM, Michael Sloan
wrote: Thanks a bunch for updating the wiki page, Artem! It was on my todo list, but it's been a rather busy week. I've added an update mentioning that it will be possible to run "ghcid" directly without args once D5105 is merged.
On Mon, Aug 6, 2018 at 12:55 AM, Artem Pelenitsyn
wrote: I added this to the wiki. It would be nice to have a wrapper similar to `run.sh` but for starting ghcid, I believe.
-- Best wishes, Artem
On Sun, 29 Jul 2018 at 10:41 Matthew Pickering
wrote: Can you please update the wiki page?
https://ghc.haskell.org/trac/ghc/wiki/Building/InGhci
Matt
On Sun, Jul 29, 2018 at 6:18 AM, Michael Sloan
wrote: Hello GHC developers!
Now that D4904 and D4986 are merged, if you have recently built GHC then you can use "./utils/ghc-in-ghci/run.sh -fobject-code" to load GHC into GHCi (throwing on a "-j8" helps too). For me, this makes development far more pleasant, as often I can make a change and try it out in only 15 or 20 seconds. Thanks to Csongor Kiss for writing the initial ghci script, and Matthew Pickering for posting about it to the mailinglist, as otherwise I probably wouldn't have known about it.
I wrote a blog post about the topic on my new blog: http://www.mgsloan.com/posts/ghcinception/
Once D5015 is merged, the explicit "-fobject-code" won't be needed. Once https://ghc.haskell.org/trac/ghc/ticket/15454 is addressed, it might not be needed at all, leading to even faster loading ;)
Happy ghci-ing! -Michael _______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs

If you're working on e.g. ARM, you may not have a lot of say in how much
RAM you can put into it.
On Wed, Aug 8, 2018 at 6:54 PM Michael Sloan
Good point, I have added a note about it to the wiki page. Surprising that it would be hard to kill. Do you have swap setup?
For me it takes ~2.7GB initially and 3.5GB after the first reload. In the past I've seen it get all the way up to 9GB so there may be some memory leakage.
I have 40GB of ram in my laptop, so I don't notice this much. I highly recommend investing in more memory if it's within your financial means. The productivity boon of being able to use GHCi on large projects, or run multiple concurrent docker containers or VMs, is huge.
A bit off topic, but sometimes folks are surprised that I spend hundreds of dollars on keyboards like the kinesis advantage 2 (which is fantastic, btw) or the keyboard.io (really nice too!). My answer is that if I'm using some equipment many hours per day, the cost amortizes out. I ask myself "Would I pay 3 cents to use this keyboard for an hour?", in the case of those keyboards, my answer is an emphatic YES! I apply similar reasoning to my main computer hardware, though people are used to that being $$$ vs the surprise of $350 keyboards.
-Michael
In practice, how much memory does this use?
I find that with 4gb of memory that it is unusable and hard to kill. Perhaps we should add some sort of warning to the page about this.
Cheers
Matt
On Wed, Aug 8, 2018 at 11:12 PM, Michael Sloan
wrote: Now that [D5015] is merged (thanks, monoidal!), -fobject-code no longer needs to be provided manually. This also means that you can run [ghcid] directly in the root of the repo without any arguments. I have updated https://ghc.haskell.org/trac/ghc/wiki/Building/InGhci to use the simpler invocations.
[D5015]: https://phabricator.haskell.org/D5015 [ghcid]: https://github.com/ndmitchell/ghcid
On Mon, Aug 6, 2018 at 1:03 AM, Michael Sloan
wrote: Thanks a bunch for updating the wiki page, Artem! It was on my todo list, but it's been a rather busy week. I've added an update mentioning that it will be possible to run "ghcid" directly without args once D5105 is merged.
On Mon, Aug 6, 2018 at 12:55 AM, Artem Pelenitsyn
wrote: I added this to the wiki. It would be nice to have a wrapper similar to `run.sh` but for starting ghcid, I believe.
-- Best wishes, Artem
On Sun, 29 Jul 2018 at 10:41 Matthew Pickering < matthewtpickering@gmail.com> wrote:
Can you please update the wiki page?
https://ghc.haskell.org/trac/ghc/wiki/Building/InGhci
Matt
On Sun, Jul 29, 2018 at 6:18 AM, Michael Sloan
wrote:
> Hello GHC developers! > > Now that D4904 and D4986 are merged, if you have recently built GHC > then you can use "./utils/ghc-in-ghci/run.sh -fobject-code" to load > GHC into GHCi (throwing on a "-j8" helps too). For me, this makes > development far more pleasant, as often I can make a change and
> out in only 15 or 20 seconds. Thanks to Csongor Kiss for writing
> initial ghci script, and Matthew Pickering for posting about it to
On Wed, Aug 8, 2018 at 3:31 PM, Matthew Pickering
wrote: try it the the > mailinglist, as otherwise I probably wouldn't have known about it. > > I wrote a blog post about the topic on my new blog: > http://www.mgsloan.com/posts/ghcinception/ > > Once D5015 is merged, the explicit "-fobject-code" won't be needed. > Once https://ghc.haskell.org/trac/ghc/ticket/15454 is addressed, it > might not be needed at all, leading to even faster loading ;) > > Happy ghci-ing! > -Michael > _______________________________________________ > ghc-devs mailing list > ghc-devs@haskell.org > http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs _______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
-- brandon s allbery kf8nh allbery.b@gmail.com
participants (4)
-
Artem Pelenitsyn
-
Brandon Allbery
-
Matthew Pickering
-
Michael Sloan