diff --git a/src/lsi/TODO b/src/lsi/TODO new file mode 100644 index 0000000..eb279e0 --- /dev/null +++ b/src/lsi/TODO @@ -0,0 +1,78 @@ +ABI spec file + - script to create suitable declaration files + - check ABI version on load + - ABI converter program? + +File load + - properly malloc area and do a block read when loading a file + - allow for multiple code areas to be loaded + - implement mechanism for checking validity of program counter + against multiple code areas, with fast case where within the same + area as the last check. + - implement function to load new file, from within lightscript + - implement function to unload file / code area, from within lightscript + +Thread control + - implement mechanism to kill threads from within lightscript + - implement mechanism to enumerate running threads + - implement mechanism to get a thread ID when spawning a thread + - implement mechanism for a thread to get its own ID + +Language features + - some kind of thread scope storage, other than function-local variables + - possibly a heap of some sort + - some kind of inter-thread communication which doesn't rely on global + variables and wait channels. Possibly some kind of queue implementation, + perhaps tied to thread ID. + - perhaps consider some kind of object-oriented features? + - possibly, model objects as threads. consider some mechanism for making + "method calls" - ie directing a thread to execute a function. This could + be as simple as a queue and dispatcher model. + - improved and better defined syntax and semantics + - arrays + +Compiler features + - better type analysis + - intermediate code + - attributes on nodes to hold information such as type information + - data flow analysis + - liveness analysis + - optimisation + - better code generation + - simplify code generator + +Interpreter + - command console + - ability to launch threads + - ability to issue commands + - Priorities + - Pre-emptive scheduling + - Locking/synchronisation primitives + +Debugger + - breakpoints + - watchpoints + - single-step + - concurrency model + +Future pipedreams + - implement plugins as .so + - sufficiently generic DMX API to allow arbitrary DMX hardware + - generic DSP engine configurable from within lightscript + +Library functions + - implement common patterns as library functions + - show manager + - chasers + - cuesheet + - moving light effects + - disco system + - mood selector + - lighting console I/O and menus + - generic fixture control + +IDE + - drag and drop objects to create shows using standard library functions + - integrated editor + - integrated compile and load into interpreter + - create a simple show in 5 minutes