Todo: -> floats -> Closure layout structures -> 'complex' constructors (I think 'partially instantiated' was the term that everybody else was familiar with) -> Make the bytecode debugger interface nicer (add breakpoints, step, more user friendly machine state dump etc.) -> Add variable type information to bytecode debugger -> Rest of the Unary ops (Zoltan said to ignore them for now - I haven't actually even been able to generate mercury code that actually uses the tag ops) Efficiency: -> Hash module & predicate names on load rather than linear search -> Remove do_fail & do_redo switches between native/bytecode when not necessary. (Currently reverts to native code to execute all do_redos & do_fails) -> Remove fixed size code limit -> Remove best case 64MB code size limit (worst case is 16MB) [can easily be upped to 256MB (64MB worst) but beyond that will suffer a performance penalty -- should check how much this is actually going to be -- bytecode overhead probably is a lot higher] -> Alternatively, is labels, modules & predicates can all be put in a hash then can store bytecode id/arguments in one contiguous aray which would be best for performance