A programming language providing comprehensive guarantees of arbitrary mutability of state.

C* is a programming language that allows you to express something other languages do not: law & order. This is the pièce de résistance for tackling bugs in the hardest sort of software engineering: systems programming.

C* achieves this by bringing together underappreciated aspects of C and the philosophy of Data-Oriented Design. It solely focuses on dealing with the correctness of data, and does so using a “divide and conquer” strategy at the level of the compilation unit.

Many aspects of programming taken for granted today needed to be cut out of the design of C* in order to make this feasible. Chief among those is the notion of genericism, as often featured in languages’ macro or metaprogramming facilities. C* likewise eschews other abstract programming paradigms as object-oriented programming (OOP) and functional programming (FP).

The Data-Oriented Design book says that “data is all we have.” When data is truly all we have, with no abstract meaning attached, we can compartmentalise it and effectively deal with malformed data that comes in out of our control. Programs that misbehave due to malformed data are much harder to debug than programs misbehaving due to typos or other incidental slip-ups. After all, a programmer most likely knew what they meant anyway, but the same cannot be said of the input their program got from elsewhere.

This toolset has broad implications for the development of systems software. It makes fuzzing irrelevant as it provides an exact solution to the problem fuzzing estimates and guesses its way through. It is also proof-in-waiting that abstraction is the enemy of sound software engineering, inasmuch as it will be used to build more sustainable systems that outlast the rest. This includes the dismantling of the notion of memory safety proselytised by users of the Rust language.

C* has a bright future with regard to weird computing architectures. It excels even more than C in communicating systems on bare metal, as it provides explicit vocabulary for controlling the ABI of a program. Since conventional computing hardware has reached an impasse, it will be the language of choice in a future where strange ISAs have come to dominate special-purpose computing for the dollar.

For now, C* is a work-in-progress. A proof-of-concept compiler was put into development called Sirius C*, but it has gone inactive as the author has started to pursue other interests that will double back to it later on.

For now, the best place to read about C* is its wiki page. It is a living document that gets occasional updates.