The interpreter runs the checker's checked program

oska-check produces a checked program as well as its report. A checked program is a lowered tree in which every name, method call, trait dispatch, and ? conversion has already been resolved. The interpreter (oska-run) executes only checked programs. oskac run refuses to start if the checker reports any diagnostic.

Why

The checker decides what every call means, and it is the security boundary for capabilities and trust. An interpreter that walked the syntax tree would have to re-implement name resolution, method lookup, trait dispatch, and From conversions. That second copy could drift away from the first, so the program that runs would not be the program that was checked. With one checked program, there is a single source of truth for what a call means.

Considered options

Consequences