+==== Documentation ====
+
+Documentation for the External Core format lives under docs/ext-core in the
+GHC tree. If you are building from HEAD, do not rely on the version of the
+External Core documentation that lives in haskell.org -- it is obsolete!
+
+==== Notes ====
+
+The checker should work on most programs. Bugs (and infelicities)
+I'm aware of:
+
+1. There's some weirdness involving funny character literals. This can
+ be fixed by writing a new lexer for chars rather than using Parsec's
+ built-in charLiteral lexer. But I haven't done that.
+
+2. The test driver attempts to find module dependencies automatically,
+ but it's slow. You can turn it off with the "-n" flag to the driver,
+ and specify all dependencies on the command line (you have to include
+ standard library dependencies too.)
+ * It would help to cache dependency info for standard libraries
+ in a file, or something, but that's future work.
+
+3. To avoid implementing some of the I/O primitives and foreign calls,
+ I use a gross hack involving replacing certain standard library
+ modules with simplified versions (found under lib/) that depend on
+ fake "primops" that the Core interpreter implements. This makes it
+ difficult (if not impossible) to load optimized versions of standard
+ libraries right now. Fixing this is future work too.
+
+Typechecking all the GHC libraries eats about a gig of heap and takes a
+long time. I blame Parsec. (Someone who was bored, or understood happy
+better than I do, could update the old happy parser, which is still in the
+repo.)
+
+The interpreter is also memory-hungry, but works for small programs
+that only do simple I/O (e.g., putStrLn is okay; not much more than that)
+and don't use Doubles or arrays. For example: exp3_8, gen_regexps, queens,
+primes, rfib, tak, wheel-sieve1, and wheel-sieve2, if modified so as not
+to take input or arguments.
+
+==== Building ====
+
+To run the checker and interpreter, you need to generate External Core
+for all the base, integer and ghc-prim libraries. This can be done by
+adding "-fext-core" to the GhcLibHcOpts in your build.mk file, then
+running "make" under libraries/.