This is about mcjs, a toy implementation of JavaScript inspired by LuaJIT that I'm writing for fun and learning. Learn more in the blog post.
This chart tracks how much of the test/language/ section of the Test262 ECMAScript Test Suite mcjs passes today. Feels good to see the line go up!
| Commit | # OK | # Fail | % OK | Summary |
| 0eb933048 | 738 | 2045 | mcjs_vm: add tool `scan_eval` | |
| 40fa6a8aa | 738 | 2045 | mcjs_test262: disable some tests using `eval` | |
| 40f38e349 | 786 | 1997 | mcjs_vm: hack: support eval("...") | |
| 6781a2fff | 794 | 1989 | scoping: error on const/let redeclaration | |
| 143f0025c | 810 | 1973 | scoping: error on const/let + function redeclaration | |
| 2d5e28948 | 798 | 1829 | mcjs_test262: remove async tests | |
| 02cc2c850 | 793 | 1622 | mcjs_test262: remove tests with generators | |
| 3f92a929a | 793 | 1622 | fix regs count (independent from instr count) | |
| 485184df1 | 793 | 1622 | mcjs_tools: allow viewing other stack frames | |
| 4e72965e6 | 795 | 1620 | impl `for(x in ...)` (without explicit `var`) | |
| 2bca36f80 | 795 | 1620 | mcjs_tools: keep breakpoints across restart/file change | |
| 09039ebff | 796 | 1619 | for...in: disallow kws in strict mode | |
| 12cf279cf | 810 | 1605 | fix if miscompilation | |
| 108eb3862 | 810 | 1605 | mcjs_tools: debug.sh: allow watch | |
| 3909872bb | 810 | 1605 | mcjs_tools: show source code when intrp is failed | |
| 68b1fb372 | 810 | 1605 | mcjs_test262: track mcjs version in tests.db | |
| 617368611 | 810 | 1605 | mcjs_test262: bit of refactoring | |
| 37313e96d | 810 | 1605 | mcjs_test262: add support for '-dirty' suffix to more scripts | |
| ac1998a7d | 823 | 1592 | reject `var` redecls of `let`/`const` | |
| 2ece532f2 | 849 | 1566 | mcjs_test262: default to --release | |
| 6e2be0d65 | 856 | 1559 | reject `var` redecls of `let`/`const` at different scopes | |
| 02c8fc845 | 831 | 1584 | mcjs_test262: default back to debug mode | |
| 2f548b7d4 | 831 | 1584 | mcjs_test262: stop tracking status.txt | |
| 743677d6e | 831 | 1584 | bc compiler: separate path for scripts | |
| dda4b3afa | 831 | 1584 | interpreter: fix: wrong # instrs for root frame | |
| e7b06844e | 831 | 1584 | mcjs_test262: scripts: refactor; add mk_report, run_multi | |
| 58833a39f | 831 | 1584 | mcjs_test262: add status page generator | |
| 2876d3ef6 | 831 | 1584 | mcjs_test262: view 'general': add column is_strict | |
| b412ede64 | 831 | 1584 | mcjs_tools: new script: compare.rb | |
| fc8831ecf | — | — | — | mcjs_test262: use version 'dirty' when the working tree is dirty |