Omer,

In particular the EPS contains the PackageIfaceTable which contains a
map of modules to ModIface for external packages. This can end up
containing a lot of ModIfaces in a big project.

In every `HomeModInfo` there is also a `ModIface` which can be
compacted in order to save GC traversal.

ModIface is also chosen because it's possible serialise/deserialise
and hence more likely to be easily compactable, ModDetails will
contain too much stuff which can't be compacted, just looking now the
`TypeEnv` could certainly not be compated.

Cheers,

Matt

On Wed, Mar 25, 2020 at 10:06 AM Ömer Sinan Ağacan <omeraga...@gmail.com> wrote:
>
> How is ModIface used by IDEs exactly? I'd expect IDEs to use ModDetails, not
> ModIface.
>
> They're basically two different representations of the same thing (a module
> interface), but ModIface is more focused on serialization and deseriazliation
> (the type is designed to make that easy) and ModDetails is what GHC is using 
> to
> e.g. type check an imported module.
>
> For example, In batch mode we add ModDetails to the module graph, not 
> ModIface,
> because that's what we use to compile downstream.
>
> (In one-shot mode GHC makes ModDetails for imported modules after reading the
> interfaces using IfaceToCore.typecheckIface)
>
> Ömer
>
> Matthew Pickering <matthewtpicker...@gmail.com>, 25 Mar 2020 Çar,
> 00:31 tarihinde şunu yazdı:
> >
> > 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
> > <simo...@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-boun...@haskell.org> On Behalf Of Matthew
> > > |  Pickering
> > > |  Sent: 24 March 2020 10:58
> > > |  To: GHC developers <ghc-devs@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&amp;data=02%7C01%7Csimonpj%40microsoft.com%7C5614bf7bb16847bf5bab
> > > |  
> > > 08d7cfe23972%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C6372064428432732
> > > |  
> > > 44&amp;sdata=YWpD1VEj%2FF4JVrRRi9cdNzlZ%2BQqgfFeRZ40NXC1kI2o%3D&amp;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&amp;data=02%7C01%7Csimonpj%40microsoft.com%7C5614
> > > |  
> > > bf7bb16847bf5bab08d7cfe23972%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C
> > > |  
> > > 637206442843273244&amp;sdata=N7fLEXXhlSESuye9BiCFQo76UmQ4%2B6GSbegaQcef0Lc
> > > |  %3D&amp;reserved=0
> > > |
> > > |  Cheers,
> > > |
> > > |  Matt
> > > |  _______________________________________________
> > > |  ghc-devs mailing list
> > > |  ghc-devs@haskell.org
> > > |  
> > > https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Fmail.hask
> > > |  ell.org%2Fcgi-bin%2Fmailman%2Flistinfo%2Fghc-
> > > |  
> > > devs&amp;data=02%7C01%7Csimonpj%40microsoft.com%7C5614bf7bb16847bf5bab08d7
> > > |  
> > > cfe23972%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637206442843283238&a
> > > |  
> > > mp;sdata=a1gBw6q0tuSxuPaByJgR9Jq0Ksk5%2BsP0kzMhaxeVgzs%3D&amp;reserved=0
> > _______________________________________________
> > 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

Reply via email to