These numbers measure the progress of Oil's C++ translation.
| name | osh | osh eval.py | delta py | osh eval.cpp | delta cpp |
| TOTAL | 1,660 | 1,529 | 131 | 1,096 | 433 |
| alias | 41 | 41 | 0 | 27 | 14 |
| append | 9 | 9 | 0 | 9 | 0 |
| arith-context | 10 | 9 | 1 | 9 | 0 |
| arith | 57 | 57 | 0 | 53 | 4 |
| array-compat | 7 | 7 | 0 | 7 | 0 |
| array | 65 | 65 | 0 | 61 | 4 |
| assign-deferred | 0 | 0 | 0 | 0 | 0 |
| assign-dialects | 1 | 1 | 0 | 1 | 0 |
| assign-extended | 32 | 32 | 0 | 13 | 19 |
| assign | 41 | 41 | 0 | 30 | 11 |
| assoc | 33 | 33 | 0 | 25 | 8 |
| assoc-zsh | 1 | 1 | 0 | 1 | 0 |
| background | 14 | 0 | 14 | 0 | 0 |
| ble-features | 5 | 2 | 3 | 2 | 0 |
| ble-idioms | 11 | 11 | 0 | 10 | 1 |
| blog1 | 5 | 5 | 0 | 3 | 2 |
| blog2 | 8 | 8 | 0 | 8 | 0 |
| brace-expansion | 48 | 48 | 0 | 47 | 1 |
| bugs | 8 | 8 | 0 | 8 | 0 |
| builtin-bash | 23 | 23 | 0 | 15 | 8 |
| builtin-bracket | 44 | 44 | 0 | 32 | 12 |
| builtin-completion | 35 | 0 | 35 | 0 | 0 |
| builtin-dirs | 14 | 14 | 0 | 4 | 10 |
| builtin-eval-source | 19 | 7 | 12 | 7 | 0 |
| builtin-getopts | 19 | 19 | 0 | 19 | 0 |
| builtin-io | 59 | 59 | 0 | 17 | 42 |
| builtin-printf | 35 | 35 | 0 | 26 | 9 |
| builtins2 | 12 | 11 | 1 | 8 | 3 |
| builtin-special | 3 | 3 | 0 | 2 | 1 |
| builtins | 33 | 26 | 7 | 12 | 14 |
| builtin-times | 1 | 1 | 0 | 0 | 1 |
| builtin-trap | 17 | 0 | 17 | 0 | 0 |
| builtin-vars | 37 | 37 | 0 | 27 | 10 |
| case_ | 8 | 8 | 0 | 7 | 1 |
| command-parsing | 2 | 2 | 0 | 1 | 1 |
| command-sub | 26 | 26 | 0 | 2 | 24 |
| command_ | 14 | 14 | 0 | 1 | 13 |
| comments | 2 | 2 | 0 | 2 | 0 |
| dbracket | 47 | 47 | 0 | 45 | 2 |
| dparen | 14 | 14 | 0 | 13 | 1 |
| empty-bodies | 3 | 3 | 0 | 3 | 0 |
| errexit-oil | 30 | 28 | 2 | 5 | 23 |
| errexit | 31 | 30 | 1 | 21 | 9 |
| exit-status | 4 | 4 | 0 | 0 | 4 |
| explore-parsing | 2 | 2 | 0 | 2 | 0 |
| extended-glob | 3 | 3 | 0 | 2 | 1 |
| extglob-match | 25 | 23 | 2 | 23 | 0 |
| for-expr | 6 | 6 | 0 | 5 | 1 |
| func-parsing | 14 | 14 | 0 | 14 | 0 |
| glob | 31 | 30 | 1 | 28 | 2 |
| here-doc | 33 | 33 | 0 | 1 | 32 |
| if_ | 5 | 5 | 0 | 5 | 0 |
| interactive | 9 | 0 | 9 | 0 | 0 |
| introspect | 10 | 6 | 4 | 6 | 0 |
| let | 0 | 0 | 0 | 0 | 0 |
| loop | 23 | 22 | 1 | 16 | 6 |
| nameref | 25 | 25 | 0 | 24 | 1 |
| nocasematch-match | 3 | 3 | 0 | 3 | 0 |
| osh-only | 3 | 2 | 1 | 0 | 2 |
| parse-errors | 22 | 21 | 1 | 20 | 1 |
| pipeline | 20 | 20 | 0 | 5 | 15 |
| posix | 15 | 15 | 0 | 12 | 3 |
| process-sub | 9 | 7 | 2 | 0 | 7 |
| prompt | 19 | 18 | 1 | 13 | 5 |
| quote | 35 | 34 | 1 | 31 | 3 |
| regex | 26 | 26 | 0 | 24 | 2 |
| serialize | 7 | 7 | 0 | 3 | 4 |
| sh-func | 10 | 10 | 0 | 10 | 0 |
| sh-options | 38 | 34 | 4 | 18 | 16 |
| sh-usage | 10 | 9 | 1 | 2 | 7 |
| smoke | 18 | 18 | 0 | 8 | 10 |
| special-vars | 24 | 21 | 3 | 8 | 13 |
| strict-options | 14 | 13 | 1 | 10 | 3 |
| subshell | 2 | 2 | 0 | 1 | 1 |
| tilde | 12 | 12 | 0 | 11 | 1 |
| toysh-posix | 17 | 16 | 1 | 8 | 8 |
| toysh | 4 | 4 | 0 | 3 | 1 |
| type-compat | 0 | 0 | 0 | 0 | 0 |
| var-num | 7 | 4 | 3 | 1 | 3 |
| var-op-bash | 8 | 8 | 0 | 5 | 3 |
| var-op-len | 8 | 8 | 0 | 5 | 3 |
| var-op-patsub | 22 | 22 | 0 | 22 | 0 |
| var-op-slice | 19 | 19 | 0 | 15 | 4 |
| var-op-strip | 29 | 27 | 2 | 27 | 0 |
| var-op-test | 21 | 21 | 0 | 20 | 1 |
| var-ref | 24 | 24 | 0 | 21 | 3 |
| var-sub-quote | 39 | 39 | 0 | 38 | 1 |
| var-sub | 7 | 7 | 0 | 4 | 3 |
| word-eval | 8 | 8 | 0 | 7 | 1 |
| word-split | 33 | 33 | 0 | 29 | 4 |
| xtrace | 13 | 13 | 0 | 3 | 10 |