Roadmap to compacting ModIface

Matthew Pickering matthewtpickering at gmail.com
Tue Mar 24 21:30:35 UTC 2020


The things which can't be compacted are

* Pinned objects
* Functions
* Mutable variables

It is only a hypothesis at the moment that compacting a ModIface will
help GC times in an IDE, but in order to try it we have to implement
this roadmap..

It is certainly true that the EPS can get very large for realistic
projects with hundreds of dependencies, and not traversing it during
GC could be a huge win.

Cheers,

Matt

On Tue, Mar 24, 2020 at 9:27 PM Simon Peyton Jones
<simonpj at microsoft.com> wrote:
>
> Thanks for writing this down Matthew.
>
> But I look at #17097 and I am baffled.  Why is that the right list of tasks?  Why do we need FastStrings backed by an unpinned ByteArray? (And similarly for each other bullet.)  What will the API look like if this project is successful?  Why do we want ModIfaces in a compact region?  To reduce residency?  Do we have data showing that this is a real issue in practice.
>
> I feel as if a wiki page to explain the problem and articulate the proposed solution would make it easier for outsiders to contribute.
>
> Thanks
>
> Simon
>
> |  -----Original Message-----
> |  From: ghc-devs <ghc-devs-bounces at haskell.org> On Behalf Of Matthew
> |  Pickering
> |  Sent: 24 March 2020 10:58
> |  To: GHC developers <ghc-devs at haskell.org>
> |  Subject: Roadmap to compacting ModIface
> |
> |  Hello all,
> |
> |  I have written down the remaining steps which need to be taken in
> |  order to compact a ModIface, which we hope will be useful for
> |  applications such as IDEs to reduce GC time.
> |
> |  https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgitlab.h
> |  askell.org%2Fghc%2Fghc%2Fissues%2F17097%23roadmap-to-compacting-a-
> |  modiface&data=02%7C01%7Csimonpj%40microsoft.com%7C5614bf7bb16847bf5bab
> |  08d7cfe23972%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C6372064428432732
> |  44&sdata=YWpD1VEj%2FF4JVrRRi9cdNzlZ%2BQqgfFeRZ40NXC1kI2o%3D&reserv
> |  ed=0
> |
> |  If there is anyone who wishes to help with this project then please
> |  ping me on IRC. So far this is joint work between myself and Daniel G.
> |
> |  The first step we need to take is to get 1675 merged which replaces
> |  the type backing a FastString from a ByteString to a ShortByteString
> |  (and hence from a pinned ByteArray to an unpinned ByteArray).
> |
> |  https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgitlab.h
> |  askell.org%2Fghc%2Fghc%2F-
> |  %2Fmerge_requests%2F1675&data=02%7C01%7Csimonpj%40microsoft.com%7C5614
> |  bf7bb16847bf5bab08d7cfe23972%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C
> |  637206442843273244&sdata=N7fLEXXhlSESuye9BiCFQo76UmQ4%2B6GSbegaQcef0Lc
> |  %3D&reserved=0
> |
> |  Cheers,
> |
> |  Matt
> |  _______________________________________________
> |  ghc-devs mailing list
> |  ghc-devs at haskell.org
> |  https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Fmail.hask
> |  ell.org%2Fcgi-bin%2Fmailman%2Flistinfo%2Fghc-
> |  devs&data=02%7C01%7Csimonpj%40microsoft.com%7C5614bf7bb16847bf5bab08d7
> |  cfe23972%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637206442843283238&a
> |  mp;sdata=a1gBw6q0tuSxuPaByJgR9Jq0Ksk5%2BsP0kzMhaxeVgzs%3D&reserved=0


More information about the ghc-devs mailing list