TODO Virtual Machine & JS API ============================= * Write tests for the built-in File object. * js_interp_reinit(): restore the interpreter to the same state where it was after the js_create_interp() call. Or, js_clone_interp() to create a clone of a running interpreter. Or, speedup the compiler definition: on-demand, something else? * src/regexp.h file: #define regcomp my_regcomp #define regexec my_regexec #define regfree my_regfree * Cleanup the error message and error code passing in the JSIOStream interface. * compilation / configuration - `--with-*' options to enable / disable features like: crc32, regexp, compiler, getcwd, popen * There are still some memory leaks that occur when the dynamic memory allocation fails and we have some previously allocated stuffs on stack variables. Find a nice solution for this. * Dynamic stack expansion in case of stack overflow and shrinking when the stack usage is less that some fraction of the stack space. * System methods: readln(), printf() * object Function implement * object Date methods: parse, getTimezoneOffset, UTC constructor with 1 argument * object Object properties: constructor methods: toString Check that all built-in objects implement toString(). The other methods and all properties are currently unimplemented. * Added the flags JS_ATTRIB_READONLY, JS_ATTRIB_DONTENUM, etc. for the object properties. * Built-ins Allow users to overwrite the default methods. Basicly, we have all that is needed for this. I just want to think this one for a while, because the default __proto__ lookup will slow the built-in method dispatching. * String.format() might be handy * byte-code operands - `load_array' and `store_array' to work with built-in objects with integer array indexes - `nth' to work with built-in objects - cmp_{eq,ne}: object OP string/number * operand delete_property: support for the with-chains * RegExp.multiline property * String.{,un}pack(): implement all missing type specifiers * allow user-defined global methods for the JavaScript extension * Tcl extension * Garbage collection should be re-implemented. Incremental? Generational? Maybe, maybe not. * Garbage collection (slot recycling) for constants. The current implementation leaks the constant slots when functions (and therefore the constants) are freed. * tests for built-in objects and methods. Do this at the same time when the documentation is updated. * byte-code operand profiling shows the following facts: operand #hits relative hits ---------------------------------------- store_property 1048 21.38 load_property 741 15.12 call_method 531 10.83 store_local 272 5.55 ... maybe the implementation of the object properties could be optimized