Jump to content

Implementations of Rewriting Systems

From Nova

This page catalogues the implementations of Nova as well as implementation of rewriting systems in general. It's goal is to serve as a hub for rewriting information.

The Nova Family

Vera

Vera is the counter-machine flavor of Nova, meant to be a habitable compilation target for Mira. Originally investigated as a way to try to resolve the complexity and performance issues that plagued Mira at the time. Vera has proven to be more flexible and expressive than expected, especially in the use of event-handling logic.

Mira

Mira operates over a bag-of-tuple of tuples. However, these versions of Nova are currently on a bit of a development hiatus, while Vera is shored up. These are currently at speeds where they struggle with natively representing data

  • Oroborous, the Python prototype that started it all, stores data in a prefix tree, which runs too slowly for video game logic at scale, but is quite flexible.
  • LunarNova, a Lua implementation of Mira, has some slight semantic differences from Oroborous.
  • nova-zig, an implementation in Zig
  • Yarnstar, an implementation in Elm. Built with an online web editor for creating hybrid interactive fiction games.

Other Systems

Counter / Register Machines

Rewriting systems in this category operate against a serious of labelled counters or registers. Each counter can hold

FRACTRAN

FRACTRAN is a computing system designed by John Conway. It uses the properties of multiplication, division, and prime factorization to encode a register machine and operations upon it. Devine Lu Linvega provided the following human friendly front end to FRACTRAN:

:: flour sugar apples > apple-cake
:: apples oranges cherries > fruit-salad
:: fruit-salad apple-cake > fruit-cake

sugar oranges apples cherries flour apples

Tote

Tote is counter-machine programming without text, perhaps the first example of visual programming that doesn't lose expressive power over its text-based counterparts. Built by Devine Lu Linvega in uxn.

Grimoire/Recipe Book

Grimoire/Recipe Book are a remixes of the ideas in Vera to make the parsing a bit more straightforward.

Cups

Cups is an implementation of an 8 instruction counter machine. It features the ability to add ports which can be triggered by the inc, cpy, or mov instructions.