Blog.

Notes from building Ring++ — the decisions, the numbers behind them, and the parts that did not work.

The loops that cost more than they read

27 August 2026

A benchmark on a phone came out 311× slower than Lua, and refusing to accept it uncovered three Ring loop patterns that cost far more than they read — one of them quadratic while looking linear, hiding in our own benchmark and 675 times in a real codebase. Each has a one-line fix, and the checker now finds all of them: traps by default, opportunities with --advise.

Read it →

We spent a day attacking our own library — and it died in four lines

25 August 2026

A testing campaign whose goal was not to confirm the software works, but to break it on purpose. Two real bugs fell out — one of them made the program vanish mid-run, with no error and nothing printed at all. What we attacked, how, and what came out, in a table you can read in ten seconds.

Read it →

The one thing we refuse to package

26 August 2026

Every check said the package was complete. Copied to a clean machine, it produced no output at all — no error, no window, no message. One file turned out to be a doorway to seventy-five more. Why Ring++ stops rather than guessing.

Read it →

Two files, not one — and we claimed one first

26 August 2026

Our own design document promised a single self-contained file, before anyone tested whether that was possible. It was not. What actually ships, how it differs from Ring's own packaging tool, and what "dependency-free" precisely means.

Read it →

A checker that says "I don't know"

26 August 2026

When it cannot follow a whole program, it refuses to give a verdict rather than reporting it clean. Because a guard that reports success by staying quiet is indistinguishable from one that works — a lesson this project learned on itself, twice.

Read it →

We ran our own tools on the neighbours — and found ourselves

26 August 2026

Two sibling projects, examined read-only. No bugs found in either — and two mistakes found in Ring++'s own published claims. The most useful result was the one about us.

Read it →

More when there is something measured worth writing down. Found a bug, or want to ask something not covered here? GitHub issues is the place. Findings about Ring itself go to the Ring Google Group, posted after review — never as a pull request against Ring by default.