CORE LANGUAGE FEATURES CORE COMMANDS - [onleave] command, executing something as soon as the current procedure returns. With no arguments it returns the script set, with one appends the onleave script. There should be a way to reset. OTHER COMMANDS NOT IN TCL BUT THAT SHOULD BE IN JIM - Set commands: [lunion], [lintersect], and [ldifference] EXTENSIONS - OOP system - Cryptography: hash functions, block ciphers, strim ciphers, PRNGs. - Tuplespace extension (http://wiki.tcl.tk/3947) (using sqlite as backend) - Zlib - Gdlib - CGI (interface compatible with ncgi, but possibly written in C for speed) SPEED OPTIMIZATIONS - Experiment with better ways to do literal sharing. * Currently literal sharing is completely removed. Can it be made efficient? What is the cost vs. benefit? - Organize the 'script' object so that a single data structure is used for a full command, and interpolation is done using an 'interpolation token type' like JIM_TT_VAR and so on. This way there is no need to run the array of integer objects with the command structure. Also should help for better cache usage. IMPLEMENTATION ISSUES - Objects lazy free. - Rewrite all the commands accepting a set of options to use Jim_GetEnum(). - Every time an extension is loaded Jim should put the dlopen() (or win32 equivalent) handle in a list inside the interpreter structure. When the interpreter is freed all this handles should be closed with dlclose(). - *AssocData() function should allow to specify a delProc C function like in the Tcl API. When the interpreter is destroyed all the delProc functions should be called to free the memory before to free the interpreter. REFERENCES SYSTEM - Unify ref/getref/setref/collect/finalize under an unique [ref] command. - Add a 'call' attribute to references in order to call a given procedure if the name of a reference is used as command name. RANDOM THINGS TO DO ASAP - .jimrc loading, using the ENV variable