One binary, rnxc, holds the whole runtime: a parser, a compiler and a register VM. Next to it
sits a second runtime that is never shipped: Ring 1.27 itself, built from its own source, so that "compatible" is a
measurement.
rnxc check is the same compiler reporting instead of running.Ring 1.27's VM source is vendored verbatim, under its MIT licence, and built with the same Zig toolchain on five platforms. That build — not an installation anyone else controls — is what every comparison is made against. It is never shipped and never the product; it exists so that every claim of compatibility can be checked.
[PASS] and [OK] alike, Ring++ passes 12,924 of Ring's 13,008 on
Windows and 12,170 of 12,255 on Linux, against Softanza as of 4 October 2026 (Windows on 2.0.3: the programs its one
change reaches were run again; Linux on 2.0.2, every function but that one compiling to the same code). The rest is
named: 81 sit in three test files that read a global without its $ inside a function, which Ring++ refuses
to compile — corrected in Softanza since, they pass every check; a handful measure time or memory; and on Linux one is a cluster test that does not finish under
Ring++. Until 17 October 2026 this count read [PASS] lines
only, and said 8,540 of 8,540: true of those checks, and silent about the 4,468 written as [OK].And four rules for every number: no claim without a measurement; minima over repetitions, never one run; the same answer before any speed is quoted; and every speed-up stated with the pattern it makes slower. The first measurements of the VM, and what flatters them, are in NOTES.md.
rnxc program.ring run it (the first run compiles; later runs start from the image) rnxc check program.ring report what Ring would only find when the line runs rnxc census program.ring what compiles, what is refused, and why rnxc fmt program.ring the canonical text of a Ring file rnxc graph program.ring the resolved call graph, as the compiler bound it rnxc dump --json file.ring the lossless parse tree