Ring is a minimal self-hosted Lisp implementation comprised of two main components:
- StoneRing: A subset of Lisp compiler that translates to Assembly (NASM), implemented in Scheme(Gauche) and IronRing.
- IronRing: A Lisp interpreter built within StoneRing.
This project draws heavy influence from Maru, while its object representation and implementation simplicity are inspired by Ribbit Scheme, PicoLisp, and uLisp.
Motivation
The core motivation behind this project is exploring a straightforward method for achieving self-hosted Lisp implementation.
Unlike other approaches such as utilizing an object system like Maru or type inference as seen in prescheme, StoneRing Compiler simplifies the process by employing s-expression conversion and adopting BCPL/Forth-like semantics.
To circumvent intricate register allocation, it emits code resembling that of a stack machine.
Current Status
The proof of concept has been successfully completed.
Key Features
- StoneRing
- Simple subset of Lisp compiled to assembly
- IronRing
- Lisp interpreter developed within StoneRing, featuring:
- Conservative Mark&Sweep Garbage Collection
- Tail Call Optimization
- 63-bit Integer and Cons Cells
- Strings represented as lists of characters