Aqua Scheme is a lightweight interpreter for a Scheme-like language, with a first class C API for embedding. Inspired by projects like Lua and Chibi Scheme, Aqua Scheme seeks to be a powerful, expressive language that can fit into a tiny package.
Despite being in a small package, Aqua doesn't aim to be another "single header Lisp" project. Instead, it has an efficient bytecode VM and compiler wrapped up in a zero dependency C library. Other features planned include:
- Full support for continuations
- UTF-8 string handling
- Arbitrary precision math
- Both low and high level macros
This project is still WIP, both the VM and bytecode compiler are still under construction, and the features above are still in the works. Besides the internals, documentation of the language or its embedding API doesn't exist yet. This means contributions are welcome!
Currently, Aqua Scheme has only been tested on 64-bit Linux, but it is written in pure C99 with no external dependencies, so porting to other POSIX platforms should be smooth.
meson
ninja
Clone the repo and enter it.
git clone https://github.com/garfr/aqua
cd aqua
Initialize the Meson build folder and enter it.
mkdir build
meson setup build
cd build/
Build the project.
ninja
The library will be placed in the build/
directory as libaqua.so
, and an REPL executable that can be used to interact with the language will be placed in the same directory as aqua
.