Skip to content
/ aqua Public

🌊 an embeddable Scheme dialect focused on speed and low memory footprint

License

Notifications You must be signed in to change notification settings

garfr/aqua

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Aqua Scheme

🌊 an embeddable Scheme dialect focused on speed and low memory footprint

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

WIP

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!

Building

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.

Dependencies

  • meson
  • ninja

Steps

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.

About

🌊 an embeddable Scheme dialect focused on speed and low memory footprint

Topics

Resources

License

Stars

Watchers

Forks