For 2011-08-17 (a test whether commiting has become possible as well):

	- incorporate all RFEs for BSF 2.4

	- possibly create a JSR-223-adapter for BSF 2.4 (there are engines for BSF 2.4 for which no JSR-223 engines exist; in addition it may buy time for deployments that have a mix of BSF 2.4 and JSR-223)


-------------------------- cut here (from 2006) ------------------------------
For 2006-09-25 the TODO list would consist at least from the following items:

        - add new BSF engines for BSF 2.4

        - create a new BSF 3.0 which complies to JSR-223 (which is part of Java 1.6),
          some features being

          - BSF 3.0 will be available as FOSS for earlier version of Java

          - BSF 3.0 may get an internal adapter for employing the numerous BSF 2.4
            engines transparently

          - ...


Rony G. Flatscher, 2006-09-25



------------------------------ cut here (from 2003) -----------------------------
The following TODO list stems from 2003 and has not been updated anymore and
has partially been obsoleted:

TODO list for BSF 2.3.0-1:

    use a discovery mechanism like JAXP in place of Languages.properties

    break out messages for both runtime and debugging into properties files

    work out a better procedure for obtaining language jarfiles
    Maven/Ibiblio and replacement of CVS with Subversion are possibilities

    improve doc generation and distribution

    provide/incorporate patches for Jasper 4.0.x, 4.1.x, and 5.x.

TODO list for BSF 2.4.0:

    work on improving BSF global scope, e.g.:
        public Boolean variableExists()
        public Object getVariableValue()
        public void setVariableValue()
        ...

TODO list for BSF 3.0.0:

    address debug support for multiple languages (JSR-045?)
------------------------------ cut here (from 2003) -----------------------------



