- big things to implement:
  * standard library (started)
  * conditional compilation

- other stuff
  * string literals should be concatenated (e.g "he" "llo" should be "hello")
  * think about unicode strings
  * warning enable/disable flags
  * maybe some more general flag interface?
  * add compiler switch to turn null-checking off
  * assert
  * in .gi file:
    void foo_bar(string, int) extern_c "some_foo_bar_baz";
  * location of garbage collector should be read from */runtime/
  * fix prototypes

- things that are known to be broken
  * having variable named the same in nested scopes, when the variables
    goes to the closure
  * floats in unions
  * complex pattern matching with exhaustive warnings

- typechecker:
  * implement full flagged type reconstruction

- possible optimizations:
  * if function doesn't pass its closure anywhere, we could allocate closure
    with alloca (or even simply put closure as variable on the stack), 
    which would be *a lot* faster. Similarly for passing lambda expressions
    just up the call stack
  * try blocks could be stored in continuous fragment of memory, as they
    are added and removed in a LIFO way.
  * when calling top-level functions, not all arguments needs to be of
    pointer size (because auxiliary function needs to be generated anyway,
    if we want to use it as functional value), this is especially nice 
    to floats

- cleanups:


# $Id: TODO,v 1.11 2002/05/27 15:08:33 malekith Exp $
# vim:tw=75
