RE: Landing Backpack in HEAD

2016-08-19 Thread Simon Peyton Jones via ghc-devs
I'm supportive of doing this, and am working with Edward on it. Yell if you 
object.

Simon

|  -Original Message-
|  From: ghc-devs [mailto:ghc-devs-boun...@haskell.org] On Behalf Of
|  Edward Z. Yang
|  Sent: 11 August 2016 20:07
|  To: ghc-devs <ghc-devs@haskell.org>
|  Subject: Landing Backpack in HEAD
|  
|  Hello friends,
|  
|  I'm hoping to land Backpack (the patch is two years in the making
|  now!) for GHC 8.2, even though 8.2 is intended to be a stabilization
|  and performance release.  In this email, I will make the case that the
|  Backpack patch is relatively self-contained and will not affect non-
|  Backpack users, and explain how you might be affected by the patch.
|  The most recent patchset can be found at
|  https://github.com/ezyang/ghc/tree/ghc-backpack ; look for "The
|  Backpack patch" in the commit log, since I plan on squashing these
|  commits before committing.
|  
|  OK, here is what is in the patchset that affects non-Backpack users:
|  
|  - The primary, overarching change is that there is now
|a distinction between "semantic" and "identity" modules.
|This solves a problem with hsig files:  suppose
|you have A.hsig which defines data T in package p.
|The resulting A.hi is most accurately identified
|as p[A=]:A; however, the Name for T should be .T,
|not p[A=]:A.T.  The former is an identity module
|(it *identifies* interfaces), whereas the latter is a semantic
|module (it is what is used in names).  Without Backpack,
|these two identities are always the same.  There are a number
|of places in the existing codepaths where we have to
|distinguish between the two concepts (sometimes you
|want semantic, sometimes you want identity); we DEFAULT
|to the identity module but I fix a few cases where
|semantic modules were desired instead.
|  
|  - UnitId is generalized to also record how a component
|is instantiated (a mapping from module names to modules.)
|Without Backpack this is blank and equivalent to the
|existing UnitId.
|  
|  - Packages has been refactored to also handle Backpack `-unit-id`
|flags, since we have to do some extra work to determine
|what inherited signatures merge where.
|  
|  - The patch REVERTS all of the old support we had for hsig
|files; -sig-of is no more.  spinda had mentioned that
|Liquid Haskell used this in some cases, and I'm looking
|at supporting *just* their particular use-case.
|  
|  - A new driver mode --backpack, which process test.bkp files.
|This mode is used PURELY for testing, and end users
|are not supposed to use it.  These all live in their own
|modules (BkpSyn, DriverBkp) except for some modest,
|convenient extensions to the lexer and parser to parse
|multiple modules at once.
|  
|  The patch also comes with rewritten typechecking support for hsig
|  files, and instantiating indefinite packages on the fly, but these are
|  all standalone pieces of functionality which are not tied to any
|  existing compiler infrastructure.
|  
|  Thanks,
|  Edward
|  ___
|  ghc-devs mailing list
|  ghc-devs@haskell.org
|  https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2fmail.h
|  askell.org%2fcgi-bin%2fmailman%2flistinfo%2fghc-
|  devs=02%7c01%7csimonpj%40microsoft.com%7c53ecc3a967e94989c6ea08d3
|  c21aba4a%7c72f988bf86f141af91ab2d7cd011db47%7c1%7c0%7c6360653924505858
|  34=M9gGg0DYYyLgiETs8bYGuxLlU7uVDJweyo5NeJB2bDM%3d
___
ghc-devs mailing list
ghc-devs@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs


Re: Landing Backpack in HEAD

2016-08-11 Thread Howard B. Golden via ghc-devs
Hi,

I created a stub Backpack entry in the Haskell wiki using the abstract of the 
paper.

Howard
___
ghc-devs mailing list
ghc-devs@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs


Landing Backpack in HEAD

2016-08-11 Thread Edward Z. Yang
Hello friends,

I'm hoping to land Backpack (the patch is two years in the making now!)
for GHC 8.2, even though 8.2 is intended to be a stabilization and
performance release.  In this email, I will make the case that the
Backpack patch is relatively self-contained and will not affect
non-Backpack users, and explain how you might be affected by the
patch.  The most recent patchset can be found at 
https://github.com/ezyang/ghc/tree/ghc-backpack ; look for "The Backpack patch" 
in the commit log, since I plan
on squashing these commits before committing.

OK, here is what is in the patchset that affects non-Backpack users:

- The primary, overarching change is that there is now
  a distinction between "semantic" and "identity" modules.
  This solves a problem with hsig files:  suppose
  you have A.hsig which defines data T in package p.
  The resulting A.hi is most accurately identified
  as p[A=]:A; however, the Name for T should be .T,
  not p[A=]:A.T.  The former is an identity module
  (it *identifies* interfaces), whereas the latter is a semantic
  module (it is what is used in names).  Without Backpack,
  these two identities are always the same.  There are a number
  of places in the existing codepaths where we have to
  distinguish between the two concepts (sometimes you
  want semantic, sometimes you want identity); we DEFAULT
  to the identity module but I fix a few cases where
  semantic modules were desired instead.

- UnitId is generalized to also record how a component
  is instantiated (a mapping from module names to modules.)
  Without Backpack this is blank and equivalent to the
  existing UnitId.

- Packages has been refactored to also handle Backpack `-unit-id`
  flags, since we have to do some extra work to determine
  what inherited signatures merge where.

- The patch REVERTS all of the old support we had for hsig
  files; -sig-of is no more.  spinda had mentioned that
  Liquid Haskell used this in some cases, and I'm looking
  at supporting *just* their particular use-case.

- A new driver mode --backpack, which process test.bkp files.
  This mode is used PURELY for testing, and end users
  are not supposed to use it.  These all live in their own
  modules (BkpSyn, DriverBkp) except for some modest,
  convenient extensions to the lexer and parser to parse
  multiple modules at once.

The patch also comes with rewritten typechecking support for hsig
files, and instantiating indefinite packages on the fly, but these
are all standalone pieces of functionality which are not tied
to any existing compiler infrastructure.

Thanks,
Edward
___
ghc-devs mailing list
ghc-devs@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs