Misc ideas: - use custom printf to avoid compatibility issues with floating point numbers - consistent naming for preprocessor defines - unify coding style and naming conventions - use names from the ECMA spec in library implementation - use byte code emitters with typed arguments (for clarity) - use 2 bytecode DynBufs in JSFunctionDef, one for reading, one for writing and use the same wrappers in all phases - use more generic method for line numbers in resolve_variables and resolve_labels - use custom timezone support to avoid C library compatibility issues Memory: - use memory pools for objects, etc? - test border cases for max number of atoms, object properties, string length - add emergency malloc mode for out of memory exceptions. - test all DynBuf memory errors - test all js_realloc memory errors - improve JS_ComputeMemoryUsage() with more info Built-in standard library: - BSD sockets - modules: use realpath in module name normalizer and put it in quickjs-libc - modules: if no ".", use a well known module loading path ? - get rid of __loadScript, use more common name REPL: - debugger - readline: support MS Windows terminal - readline: handle dynamic terminal resizing - readline: handle double width unicode characters - multiline editing - runtime object and function inspectors - interactive object browser - use more generic approach to display evaluation results - improve directive handling: dispatch, colorize, completion... - save history - close all predefined methods in repl.js and jscalc.js Optimization ideas: - 64-bit atoms in 64-bit mode ? - 64-bit small bigint in 64-bit mode ? - reuse stack slots for disjoint scopes, if strip - add heuristic to avoid some cycles in closures - small String (0-2 charcodes) with immediate storage - perform static string concatenation at compile time - optimize string concatenation with ropes or miniropes? - add implicit numeric strings for Uint32 numbers? - optimize `s += a + b`, `s += a.b` and similar simple expressions - ensure string canonical representation and optimise comparisons and hashes? - remove JSObject.first_weak_ref, use bit+context based hashed array for weak references - property access optimization on the global object, functions, prototypes and special non extensible objects. - create object literals with the correct length by backpatching length argument - remove redundant set_loc_uninitialized/check_uninitialized opcodes - peephole optim: push_atom_value, to_propkey -> push_atom_value - peephole optim: put_loc x, get_loc_check x -> set_loc x - convert slow array to fast array when all properties != length are numeric - optimize destructuring assignments for global and local variables - implement some form of tail-call-optimization - optimize OP_apply - optimize f(...b) Test262o: 0/11262 errors, 463 excluded Test262o commit: 7da91bceb9ce7613f87db47ddd1292a2dda58b42 (es5-tests branch) Result: 16/76707 errors, 1497 excluded, 8237 skipped Test262 commit: 6cbb6da9473c56d95358d8e679c5a6d2b4574efb