Count the features. Every Part 10 addition appears in the self-hosted compiler:
| Feature | Where it appears |
|---------|-----------------|
| >= <= | c_comparison: i64.ge_s, i64.le_s |
| and or | c_and_expr, c_or_expr, is_space, c_term conditions |
| 'a' | c_factor char literal handler, emit_num's '0' |
| % | emit_num: n % 10, c_term: i64.rem_s |
| += -= | c_stmt compound assignment, every counter increment |
| break | c_stmt handler, c_and_expr/c_or_expr backtrack |
| for (0..n) \|i\| | streq_mem, emit_s, emit_string_data, c_program, main |
| true false | c_factor keyword check |
| var arr: [N]i64 | global_names, str_addrs, str_lens |
| arr[i] | global_names[i], str_addrs[i], str_lens[i] |
| s[i] len(s) | streq_mem: a[i] != b[i], len(a) |
The self-hosted compiler is the proof that Part 10 works. Every feature was added because this chapter uses it.
## Part 12: The Snake Eats Its Tail