• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1Bugs:
2- modules: better error handling with cyclic module references
3
4Misc ideas:
5- use custom printf to avoid compatibility issues with floating point numbers
6- consistent naming for preprocessor defines
7- unify coding style and naming conventions
8- use names from the ECMA spec in library implementation
9- use byte code emitters with typed arguments (for clarity)
10- use 2 bytecode DynBufs in JSFunctionDef, one for reading, one for writing
11  and use the same wrappers in all phases
12- use more generic method for line numbers in resolve_variables and resolve_labels
13- use custom timezone support to avoid C library compatibility issues
14
15Memory:
16- use memory pools for objects, etc?
17- test border cases for max number of atoms, object properties, string length
18- add emergency malloc mode for out of memory exceptions.
19- test all DynBuf memory errors
20- test all js_realloc memory errors
21- improve JS_ComputeMemoryUsage() with more info
22
23Built-in standard library:
24- BSD sockets
25- modules: use realpath in module name normalizer and put it in quickjs-libc
26- modules: if no ".", use a well known module loading path ?
27- get rid of __loadScript, use more common name
28
29REPL:
30- debugger
31- readline: support MS Windows terminal
32- readline: handle dynamic terminal resizing
33- readline: handle double width unicode characters
34- multiline editing
35- runtime object and function inspectors
36- interactive object browser
37- use more generic approach to display evaluation results
38- improve directive handling: dispatch, colorize, completion...
39- save history
40- close all predefined methods in repl.js and jscalc.js
41
42Optimization ideas:
43- 64-bit atoms in 64-bit mode ?
44- 64-bit small bigint in 64-bit mode ?
45- reuse stack slots for disjoint scopes, if strip
46- add heuristic to avoid some cycles in closures
47- small String (0-2 charcodes) with immediate storage
48- perform static string concatenation at compile time
49- optimize string concatenation with ropes or miniropes?
50- add implicit numeric strings for Uint32 numbers?
51- optimize `s += a + b`, `s += a.b` and similar simple expressions
52- ensure string canonical representation and optimise comparisons and hashes?
53- remove JSObject.first_weak_ref, use bit+context based hashed array for weak references
54- property access optimization on the global object, functions,
55  prototypes and special non extensible objects.
56- create object literals with the correct length by backpatching length argument
57- remove redundant set_loc_uninitialized/check_uninitialized opcodes
58- peephole optim: push_atom_value, to_propkey -> push_atom_value
59- peephole optim: put_loc x, get_loc_check x -> set_loc x
60- convert slow array to fast array when all properties != length are numeric
61- optimize destructuring assignments for global and local variables
62- implement some form of tail-call-optimization
63- optimize OP_apply
64- optimize f(...b)
65
66Test262o:   0/11262 errors, 463 excluded
67Test262o commit: 7da91bceb9ce7613f87db47ddd1292a2dda58b42 (es5-tests branch)
68
69Result: 51/75119 errors, 899 excluded, 570 skipped
70Test262 commit: 1c33fdb0ca60fb9d7392403be769ed0d26209132
71