1- Misc:
2- - use realpath in module name normalizer and put it in quickjs-libc
3- - use custom printf to avoid C library compatibility issues
4- - rename CONFIG_ALL_UNICODE, CONFIG_BIGNUM, CONFIG_ATOMICS, CONFIG_CHECK_JSVALUE ?
1+ Bugs:
2+ - modules: better error handling with cyclic module references
3+
4+ Misc ideas:
5+ - use custom printf to avoid compatibility issues with floating point numbers
6+ - consistent naming for preprocessor defines
57- unify coding style and naming conventions
68- use names from the ECMA spec in library implementation
7- - modules: if no ".", use a well known module loading path ?
8- - use JSHoistedDef only for global variables (JSHoistedDef.var_name != JS_ATOM_NULL)
9- - add index in JSVarDef and is_arg flag to merge args and vars in JSFunctionDef
10- - replace most JSVarDef flags with var_type enumeration
119- use byte code emitters with typed arguments (for clarity)
1210- use 2 bytecode DynBufs in JSFunctionDef, one for reading, one for writing
1311 and use the same wrappers in all phases
1412- use more generic method for line numbers in resolve_variables and resolve_labels
1513- use custom timezone support to avoid C library compatibility issues
1614
1715Memory:
16+ - use memory pools for objects, etc?
1817- test border cases for max number of atoms, object properties, string length
1918- add emergency malloc mode for out of memory exceptions.
2019- test all DynBuf memory errors
2120- test all js_realloc memory errors
22- - bignum: handle memory errors
23- - use memory pools for objects, etc?
2421- improve JS_ComputeMemoryUsage() with more info
2522
26- Optimizations:
23+ Built-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+
29+ REPL:
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+
42+ Optimization ideas:
2743- 64-bit atoms in 64-bit mode ?
28- - use auto-init properties for more global objects
44+ - 64-bit small bigint in 64-bit mode ?
2945- reuse stack slots for disjoint scopes, if strip
30- - optimize `for of` iterator for built-in array objects
3146- add heuristic to avoid some cycles in closures
3247- small String (0-2 charcodes) with immediate storage
3348- perform static string concatenation at compile time
@@ -36,43 +51,20 @@ Optimizations:
3651- optimize `s += a + b`, `s += a.b` and similar simple expressions
3752- ensure string canonical representation and optimise comparisons and hashes?
3853- remove JSObject.first_weak_ref, use bit+context based hashed array for weak references
39- - optimize function storage with length and name accessors?
4054- property access optimization on the global object, functions,
4155 prototypes and special non extensible objects.
4256- create object literals with the correct length by backpatching length argument
4357- remove redundant set_loc_uninitialized/check_uninitialized opcodes
4458- peephole optim: push_atom_value, to_propkey -> push_atom_value
4559- peephole optim: put_loc x, get_loc_check x -> set_loc x
46- - comparative performance benchmark
47- - use variable name when throwing uninitialized exception if available
4860- convert slow array to fast array when all properties != length are numeric
4961- optimize destructuring assignments for global and local variables
5062- implement some form of tail-call-optimization
5163- optimize OP_apply
5264- optimize f(...b)
5365
54- Extensions:
55- - support more features in [features] section
56- - add built-in preprocessor in compiler, get rid of jscompress
57- handle #if, #ifdef, #line, limited support for #define
58- - get rid of __loadScript, use more common name
59- - BSD sockets
60-
61- REPL:
62- - debugger
63- - readline: support MS Windows terminal
64- - readline: handle dynamic terminal resizing
65- - readline: handle double width unicode characters
66- - multiline editing
67- - runtime object and function inspectors
68- - interactive object browser
69- - use more generic approach to display evaluation results
70- - improve directive handling: dispatch, colorize, completion...
71- - save history
72- - close all predefined methods in repl.js and jscalc.js
73-
7466Test262o: 0/11262 errors, 463 excluded
7567Test262o commit: 7da91bceb9ce7613f87db47ddd1292a2dda58b42 (es5-tests branch)
7668
77- Test262: 30/71748 errors, 868 excluded, 474 skipped
78- Test262 commit: 24c67328062383079ada85f4d253eb0526fd209b
69+ Result: 51/75119 errors, 899 excluded, 570 skipped
70+ Test262 commit: 1c33fdb0ca60fb9d7392403be769ed0d26209132
0 commit comments