kavak.run compiler stack

Conformance · measured, not claimed

How much QBasic actually runs.

QBasic has no official test suite, so this is a curated ledger: every row names a test and where its expectation came from — for most rows, the real QB64-PE.

96.6%476 of 493 in-scope ledger rows
  • passing476
  • not yet supported11
  • wrong — a real defect6
  • out of scope / no arbiter5
What was measured
Authority
languages/QBasic/tests/corpus/manifest.tsv
Arbiter
QB64 Phoenix Edition (row by row, named in each row's oracle column)
Unit
ledger row
Measured
2026-08-02 02:33

breakdown

Breakdown by corpus area

corpus areatestspassingnot yetwrongout of scopepass ratesplit
strings6060000100.0%
types585710098.3%
files575403094.7%
control4949000100.0%
numeric4140001100.0%
convert3636000100.0%
procs3434000100.0%
console3232000100.0%
dos252001495.2%
errors181152061.1%
io1414000100.0%
records1414000100.0%
gfx1414000100.0%
data131210092.3%
basics1010000100.0%
audio66000100.0%
ops55000100.0%
arrays44000100.0%
misc33000100.0%
(root)303000.0%
clock11000100.0%
shell101000.0%

blockers

What blocks the rest

The ten most expensive blockers. Next to each is how many ledger rows it costs — one compiler gap can stop a whole file, so the cost is what matters, not the count of distinct errors.

costreason — the measurement's own wordsblamed
3ERLerrors/ERL_01_line_numbererrors/ERL_02_unnumberederrors/ERL_03_no_lines
2RESUMEerrors/RESUME_01_retryerrors/RESUME_NEXT_02_in_loop
2COMMANDdos/COMMAND_S_01_emptydos/COMMAND_S_02_expr
1BYVALtypes/BYVAL_01_reject
1ONerrors/ON_ERROR_03_sub_propagates
1DATAdata/DATA_05_out_of_bounds
1SHELLshell/shell
1Hardware/memory features are explicitly rejectedoos_01_hardware_reject
1OS clock setters are explicitly rejectedoos_02_os_clock_reject
1Device/debug features are explicitly rejectedoos_03_device_reject

A further 8 ledger rows are blocked by smaller causes; the full list is in the raw measurement (JSON).