TODO
----

- Tail-optimize try_io ... catch_io.

+ Move xmalloc() and xrealloc() into malloc.c

+ Abort at configure time when lex or yacc is not found

- Make compiler, assembler and linker automatically detect which is the main
  module, looking at global definition of "main".

+ Move has_extension() and replace_extension() into common/command_line.?, 
  since they are commonly used while managing the command line.

- Write an Emacs major mode for epsilon (epsilonlex and epsilonyacc seem much
  harder to manage, consisting in mixtures of two different languages).

+ Before the meta-compiler is ready, I should retarget the existing epsilonc
  (written in C) to the eAM, and throw away the LVM.

- Implement the eAM support for floats

+ eAM linker, with automatic dependency-tracking.

+ eAM garbage collector (Boehm can be used initially)
- Make the eAM garbage collector mark in parallel on SMPs. It should be easy.
- Make the eAM garbage collector incremental. Not so hard.

+- (Finish) epsilonlex

- epsilonyacc

- Meta-interpreter (also without semantic checks, initially)

- Rewrite epsilonc in epsilon (meta-compiler) and throw away the
  current epsilonc (written in C) 

- epsilonmake (same idea as gnatmake)

- Optimizer

+- Monad-based I/O system

- ...
