
JRuby TODO
----------
$Id: TODO,v 1.30 2004/03/07 18:14:42 enebo Exp $

This document is somewhat out of date.  If you are new to jruby and want
to contribute, then go to our sourceforge web site and look for items
there.  In particular, look for items with '[intro]' in the summary.
These are tasks which do not require a large understanding of the
internal workings of jruby, which make them decent candidates for 
new jruby hackers.

If you are a developer and want to define new tasks, then you should:
1. Find or write a unit test which demonstrates a problem.  This is
generally a rubicon test, but in the case where no unit test exists
then you should make one for our builtin test suite (unless you have
the extra determination to submit it to rubicon -- which if it is a 
useful ruby testcase, that should be done).
2. If you cannot solve the problem right away or you do not have CVS 
commit access, then enter a bug on the sourceforge web site.  The bug
should include the unit test (or describe which test in rubicon).  If
you cannot easily make a unit test, then submit it anyways.

Items marked '-' are done and will be available in the next
release.

* Documentation
    * Write a FAQ
    * Write a short overview
    * Short users guide
    * Embedding API docs (first determine what that API *is*)
    * Convert docs to HTML (Docbook?)

* Evaluator
    * Replace lexer with a generated one
    * Frames
        - Overhaul Frame stacks
        * Binding
        * Continuation
    * Bytecode generation

* Parser
    * Create documentation on how to update the grammar
    * Allow parser to be built as part of the build process

* Java support
    * Loading inner classes with colliding names
    * Loading external libraries written in Java
    * Predictable way of dispatching on null
    * Subclassing Java classes
    * Dispatcher should prefer the narrower type if there are
      many types matching
    * Examine performance of the high level parts

* Thread support
    * Implement Mutex, ConditionVariable and Queue as native Java libs
    * Examine interactions with non-Ruby threads in the VM

* Usability
    * Simplify installation
    * Unify startup scripts

* Marshalling
    * Make bignum marshaling work for all bignum values

* Warnings

* Use ordinary error handling for syntax errors too

* Security
    * Complete taint and freeze support
    * Safe levels

* Use Antlr or other Java tool to generate parser

