[Haskell-cafe] ANN: extcore 1.0

Tim Chevalier catamorphism at gmail.com
Thu Jan 13 20:45:56 CET 2011


I've recently released version 1.0 of extcore, a library for
processing code in GHC's text-based External Core format. extcore
includes a parser, prettyprinter, typechecker, and interpreter for
External Core, as well as modules for computing module dependencies
and combining multiple Core modules into a single module. The library
was originally written by Andrew Tolmach and was part of the GHC
distribution. After becoming its maintainer, about a year ago I moved
the library to Hackage. Since in the past year, the library has
acquired some users but has received no fatal bug reports, I thought
it was time for a 1.0 release.

You might be interested in using this library if you're a compiler or
tool writer who wants to write a tool that processes the output of
GHC's front-end and simplifier -- that is, code in the Core
intermediate language, a typed functional language in which many of
Haskell's features have been desugared into a polymorphically typed
lambda-calculus (extended with type coercions, as are necessary to
support type system features such as GADTs). Such tools might include
alternative back-ends or new program transformations. Using the
extcore library allows tool writers to experiment with implementing
new compiler features without modifying GHC itself. While the GHC API
is also a route to adding new stages to the GHC pipeline, using
extcore has the advantage that External Core is well-specified (read
on) and less subject to change than GHC's internal Core format. The
library has been tested on External Core produced by GHC 6.10.* and
GHC 6.12.*. It has not yet been tested on External Core produced by
GHC 7.*.

Documentation for the External Core format itself lives at
http://www.haskell.org/ghc/docs/latest/html/ext-core/core.pdf - but
documentation for the library is limited, and I would welcome
documentation or other patches. Currently the best source of
documentation for the library is the README file, found in the
distribution. To get the distribution, please visit
http://hackage.haskell.org/package/extcore or cabal install extcore.

Please direct replies to glasgow-haskell-users at haskell.org, with me
CCed. Please make sure not to reply to haskell at haskell.org.

Tim Chevalier

Tim Chevalier * http://cs.pdx.edu/~tjc/ * Often in error, never in doubt
"an intelligent person fights for lost causes,realizing that others
are merely effects" -- E.E. Cummings

More information about the Haskell-Cafe mailing list