Faster, safer and more portable Ring.

Ring++ is a dependency-free library and CLI for Ring — nothing else to install, nothing else to learn. Performant code that skips a real, measured copying cost. Static analysis that reads what Ring's own parser already accepts and quietly discards. Native builds with no C compiler, ever.

version 0.9 dependency-free no compiler, ever MIT
Start here — one load, one binary See what it found in Ring's own stdlib

Why this exists

Ring++ exists because of real customer-facing work, not a lab exercise. A bank in Niger, running Ring in production, liked the language but wanted more before trusting it with critical projects. A restaurant management platform in France asked the same question from a different angle — real-time, high-volume, and unwilling to leave Ring. And Softanza, the base library I've been building in Ring alongside Ring++, has grown past 300,000 lines — a codebase where the same concerns stop being optional. Ring++ is what came out of answering all three, without ever leaving Ring.

Three things, each shown by example

Not three separate tools — three angles on the same idea: Ring already has the machinery for this, mostly unused. Each page below shows the Ring you already know, the small change, and the measured difference.

Performant code

The exact same loop, 75× faster, by changing what you hold — not how you write the loop. One asymmetry in Ring's own design, made visible.

Static analysis

A checker that reads annotations Ring's own parser already accepts and quietly discards. Found two functions in Ring's shipped standard library that had never worked — both fixed upstream the day after they were reported.

Native build

Ring can already write a program with no compiler involved — the mechanism just sat unused. One command, five desktop platforms cross-built from whichever one you're on, plus a signed Android .apk.

Ring already gives you this. Nobody was using it.

That's the one idea behind all three — not three separate tricks, but the same habit applied three times: read Ring's own design closely enough to notice what it already lets you do. The full design story, and the contract that keeps it working as Ring evolves.

Trust, measured

Every figure below is a real gate result or a real corpus run, not a round number picked to look good. The programs that produced them are in the repository.

75×
faster on the exact loop shown on the performance page
16
checker rules, each traced to a measured finding
0
false positives across Ring's own 1,959-file corpus
5
platforms packaged with no C compiler

And when the gates are green, that proves only what they thought to ask. Twenty-six of them were green here while a four-line sequence killed the process outright — the test that found it, and what it cost to fix.

Honest limits

Ring++'s own library is not a default-yes: three of its eight worked examples conclude plain Ring is the right answer for their shape, and say so before printing a single speed number. A packaged program is a small pair of files, not one self-contained executable. Bare-metal microcontrollers are out of scope entirely — a Ring VM does not fit one, and no packaging tool changes that. And Ring++ will not package a program that reaches Ring's Qt bridge — why, with the reasoning and the numbers.

Standing on named shoulders

Ring++ vendors nothing at a user's install time, but two dependencies are compiled into the CLI itself and their authors deserve their names here: Mahmoud Fayed and the Ring team's Ring language — the design this whole project is built on, not around — and Youssef Saeed's tree-sitter-ring grammar, which every ringpp check runs on. Adopted because it independently reached the same reading of Ring's type annotations these measurements did. Built with Andrew Kelley and the Zig team's Zig, which compiles the whole CLI into one binary per platform.

One thesis, sibling projects

Ring++ is one of several Ring foundations from the same author, each standing alone and each dependency-free except for what it names and vendors itself. What running Ring++ against them actually found — real code, and two mistakes in Ring++'s own published claims, caught along the way.

RingScript — Ring in the browser RingServ — Ring on the server MicroRing — Ring on the device (upcoming)