| 
									
										
										
										
											2021-01-02 18:10:00 +00:00
										 |  |  | Bugs: | 
					
						
							|  |  |  | - modules: better error handling with cyclic module references | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Misc ideas: | 
					
						
							|  |  |  | - use custom printf to avoid compatibility issues with floating point numbers | 
					
						
							|  |  |  | - consistent naming for preprocessor defines | 
					
						
							| 
									
										
										
										
											2019-10-06 22:19:08 +00:00
										 |  |  | - 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 | 
					
						
							| 
									
										
										
										
											2021-01-02 18:10:00 +00:00
										 |  |  | - use custom timezone support to avoid C library compatibility issues | 
					
						
							| 
									
										
										
										
											2019-10-06 22:19:08 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | Memory: | 
					
						
							| 
									
										
										
										
											2021-01-02 18:10:00 +00:00
										 |  |  | - use memory pools for objects, etc? | 
					
						
							| 
									
										
										
										
											2019-10-06 22:19:08 +00:00
										 |  |  | - 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 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-02 18:10:00 +00:00
										 |  |  | 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 ? | 
					
						
							| 
									
										
										
										
											2019-10-06 22:19:08 +00:00
										 |  |  | - 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) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-27 22:00:49 +00:00
										 |  |  | Result: 35/75280 errors, 909 excluded, 585 skipped | 
					
						
							|  |  |  | Test262 commit: 31126581e7290f9233c29cefd93f66c6ac78f1c9 |