Why Ring++ left Ring

Ring++ began as a contribution to Ring. It is now the runtime that carries Ring's programs off Ring. This page says why: on the technical side, and on the side of how the language is governed. The issues that Ring++ solves are on a page of their own, each shown by a program run on both runtimes.

What Ring gets right

Ring is Mahmoud Fayed's work, and a remarkable one. A syntax simple enough to read aloud. Real multiparadigm expressiveness, including the declarative brace block that Softanza's whole style is built on. A small VM that can be read in a sitting, and that runs on a stock Android phone. A GUI story, an Android story, a package manager and a decade of continuity, from one person.

Narrow defects get fixed fast and with credit. Seven of my ten pull requests landed, in some form, and over the eight years I took part in the project, hundreds of my questions and reports were fixed or taken into account.

Nobody writes a 300,000-line library on a language they do not love. What follows is the bill for learning, at production scale and with paying customers, which parts of a beautiful language were load-bearing.

The technical case

Softanza grew past 300,000 lines and met Ring's limits one by one. Each one here was measured.

# An Arabic word of four letters: salaam
cWord = "سلام"

? len(cWord)
#--> 8, the bytes, not the letters

? cWord[1]
#--> a broken character: half of the first letter

To get four letters, and the first of them, a Ring program has to load the whole Qt toolkit and go through its QString, whether or not it has a window to show. Regular expressions come from Qt too. Ring++ keeps Ring's byte answers, so that existing programs keep their meaning, and Softanza's own engine gives the letters with no GUI toolkit at all: StzStringQ(cWord).NumberOfChars() is 4.

The governance case

The technical limits alone would have been work. What made them a reason to leave is that there is no way to change them.

A project built for customers cannot depend on a direction it has no way to influence. So on 14 October 2026 I retired Ring from all my projects.

What Ring++ does instead

RingServ, RingScript and MicroRing are no longer maintained on Ring. They are test projects for Ring++ now, and the starting points for Haro's own server, browser and embedded runtimes.

Towards Haro

Ring++ is a bridge, not the destination. Haro is a new language built on this VM. It keeps Ring's simple syntax and its expressiveness, the brace block first, and adds what Ring never had: a ? that shows a list as a list. Ring prints a list one item per line, its structure lost, which is why Softanza has @@(). Its design is being written and measured now, and it will be announced on its own.

Ring++ stays open source under the MIT licence, as Ring is. Its findings document Ring's VM in detail; they are there for anyone to learn from, the Ring team included.