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
5
7
- unify coding style and naming conventions
6
8
- 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
11
9
- use byte code emitters with typed arguments (for clarity)
12
10
- use 2 bytecode DynBufs in JSFunctionDef, one for reading, one for writing
13
11
and use the same wrappers in all phases
14
12
- use more generic method for line numbers in resolve_variables and resolve_labels
15
13
- use custom timezone support to avoid C library compatibility issues
16
14
17
15
Memory:
16
+ - use memory pools for objects, etc?
18
17
- test border cases for max number of atoms, object properties, string length
19
18
- add emergency malloc mode for out of memory exceptions.
20
19
- test all DynBuf memory errors
21
20
- test all js_realloc memory errors
22
- - bignum: handle memory errors
23
- - use memory pools for objects, etc?
24
21
- improve JS_ComputeMemoryUsage() with more info
25
22
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:
27
43
- 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 ?
29
45
- reuse stack slots for disjoint scopes, if strip
30
- - optimize `for of` iterator for built-in array objects
31
46
- add heuristic to avoid some cycles in closures
32
47
- small String (0-2 charcodes) with immediate storage
33
48
- perform static string concatenation at compile time
@@ -36,43 +51,20 @@ Optimizations:
36
51
- optimize `s += a + b`, `s += a.b` and similar simple expressions
37
52
- ensure string canonical representation and optimise comparisons and hashes?
38
53
- remove JSObject.first_weak_ref, use bit+context based hashed array for weak references
39
- - optimize function storage with length and name accessors?
40
54
- property access optimization on the global object, functions,
41
55
prototypes and special non extensible objects.
42
56
- create object literals with the correct length by backpatching length argument
43
57
- remove redundant set_loc_uninitialized/check_uninitialized opcodes
44
58
- peephole optim: push_atom_value, to_propkey -> push_atom_value
45
59
- 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
48
60
- convert slow array to fast array when all properties != length are numeric
49
61
- optimize destructuring assignments for global and local variables
50
62
- implement some form of tail-call-optimization
51
63
- optimize OP_apply
52
64
- optimize f(...b)
53
65
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
-
74
66
Test262o: 0/11262 errors, 463 excluded
75
67
Test262o commit: 7da91bceb9ce7613f87db47ddd1292a2dda58b42 (es5-tests branch)
76
68
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