Changes between Version 13 and Version 14 of GhcPapers


Ignore:
Timestamp:
Jul 15, 2014 2:24:21 PM (5 years ago)
Author:
jstolarek
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • GhcPapers

    v13 v14  
    1 == Papers related to GHC ==
    2 
    3 Here we've collected together lots of documentation and papers that
    4 generally describe stuff we've implemented in GHC.
    5 
    6 Many of these papers are old.  For more up-to-date ones look on:
    7  * [http://research.microsoft.com/~simonpj Simon PJ's home page]
    8  * [http://research.microsoft.com/~simonpj/papers Simon PJ's papers page]
    9  * [http://www.haskell.org/~simonmar/ Simon Marlow's home page]
    10 
    11 All docs are gzipped A4 Postscript unless otherwise specified.
    12 
    13  * [http://www.haskell.org/ghc/docs/latest/html/ext-core/core.pdf An External Representation for the GHC Core Language].  This document describes the syntax of GHC Core (.hcr) files, which can be used to feed GHC intermediate code to other (non-GHC) back-end processors.
    14 
    15  * [http://www.haskell.org/ghc/docs/papers/hep.ps.gz Haskell Execution Platform] design document.  This document describes the design for an integrated compiler/interpreter API for executing Haskell programs, which forms the heart of the combined Hugs/GHC system.
    16 
    17 == Language design ==
    18 
    19  * [1999] [http://www.haskell.org/ghc/docs/papers/except_ps.gz A semantics for imprecise exceptions] describes how exceptions work in GHC.  A follow-up paper is [http://research.microsoft.com/~simonpj/Papers/imprecise-exn-sem.htm Imprecise Exceptions, Co-Inductively]
    20 
    21  * [1999] [http://research.microsoft.com/~simonpj/Papers/records.htm Lightweight Extensible Records for Haskell].  This design is not implemented.
    22 
    23  * [2000] [http://research.microsoft.com/~simonpj/Papers/derive.htm Derivable Type Classes].  Fully implemented in GHC.
    24 
    25  * [2000] [http://research.microsoft.com/~simonpj/Papers/pat.htm Pattern Guards and Transformational Patterns].  This isn't implemented, but a related idea, called [wiki:ViewPatterns view patterns] is.
    26 
    27  * [1991] [http://www.haskell.org/ghc/docs/papers/unboxed-values.ps.gz Unboxed Values as First-Class Citizens].   Fully implemented.
    28 
    29 == Types and typechecking ==
    30 
    31  *  [1994] GHC's typechecker implementation is described in the paper [http://research.microsoft.com/~simonpj/Papers/classhask.ps.gz  Type classes in Haskell], CV Hall, K Hammond, SL Peyton Jones, and PL Wadler, European Symposium On Programming, LNCS 788, Springer Verlag, pp.  241-256, April 1994.
    32 
    33  * [1998] The UsageSP analysis is described in Keith Wansbrough and Simon Peyton Jones, [http://www.cl.cam.ac.uk/users/kw217/research/phd/usptr-10pt.ps.gz Once Upon a Polymorphic Type], Technical Report TR-1998-19, Department of Computing Science, University of Glasgow, 1998.  Conference version [http://www.cl.cam.ac.uk/users/kw217/research/phd/popl99-usage.ps.gz Once Upon a Polymorphic Type], in The Twenty-sixth ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, January 20-22, 1999, San Antonio, Texas.  This work isn't in GHC.
    34 
    35 == The innards of the complier ==
    36 
    37  * [http://research.microsoft.com/en-us/um/people/simonpj/papers/spineless-tagless-gmachine.ps.gz#26pub=34  Implementing lazy functional languages on stock hardware: the Spineless Tagless G-Machine].  This paper describes the execution model used by GHC.  It is most relevant to GHC up to version 3.xx---in version 4 we made some changes which are described in the [http://www.haskell.org/ghc/docs/papers/run-time-system.ps.gz RTS document].
    38 
    39  * [2002] [http://www.research.microsoft.com/~simonpj/Papers/inlining/index.htm Secrets of the GHC inliner] is still highly relevant; it is still a more-or-less accurate description of GHC's "simplifier".
    40 
    41  * [1993] [http://www.haskell.org/ghc/docs/papers/grasp-jfit.ps.gz The Glasgow Haskell Compiler - a Technical Overview] - from 1992, not entirely relevant any more.
    42 
    43  * [http://www.haskell.org/ghc/docs/papers/extendGHC.ps.gz Adding an Optimisation Pass to the Glasgow Haskell Compiler] (Olaf Chitil).  Somewhat out of date.
    44 
    45 == Runtime system ==
    46 
    47  * [http://www.haskell.org/ghc/docs/papers/run-time-system.ps.gz Run-time System document].  This document (is supposed to) describe the new run-time system in GHC 4.xx.  Be warned that the implementation and this document are evolving in parallel, so they might not be quite in sync.
    48 
    49  * [2000] [http://research.microsoft.com/~simonpj/Papers/inc-gc.htm Non-stop Haskell] the workings of an incremental garbage collecton.  Not included in GHC, so far.
    50 
    51  * [1999] [http://www.haskell.org/ghc/docs/papers/new-rts.ps.gz The New GHC/Hugs Runtime System]---a summary of the [http://www.haskell.org/ghc/docs/papers/run-time-system.ps.gz RTS document].
    52 
    53 == The awkward squad: I/O, concurrency, exceptions, and foreign functions ==
    54 
    55  * [http://www.haskell.org/ghc/docs/papers/threads.ps.gz The Concurrent Haskell Foreign Function Interface].  This document is a draft Haskell addendum that describes GHC's approach to concurrency and its interaction with the FFI and OS threads.
    56 
    57  * [2001] [http://www.haskell.org/~simonmar/papers/async.ps.gz Asynchronous Exceptions in Haskell].  The ideas here are fully implemented in GHC. 
    58 
    59  * [1996] [http://www.haskell.org/ghc/docs/papers/concurrent-haskell.ps.gz Concurrent Haskell]. The original paper about Concurrent Haskell, fully implemented.
    60 
    61  * [1993] [http://www.haskell.org/ghc/docs/papers/imperative.ps.gz Imperative Functional Programming]. The original introduction of monads for I/O and state in Haskell, this paper won a 10-year impact award for POPL. A follow-up paper is [http://www.haskell.org/ghc/docs/papers/lazy-functional-state-threads.ps.gz Lazy Functional State Threads]
    62 
    63 == Profiling ==
    64 
    65  * [http://www.haskell.org/ghc/docs/papers/profiling.ps.gz Time and Space Profiling for non-strict, higher-order functional programs].  Fully implemented.
    66 
    67 
     1Contents of this page has been merged with the [wiki:ReadingList GHC reading list].