Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,9 @@ would like to work on or if it has already been resolved.

### Development Workflow

> [!IMPORTANT]
> If you're using an AI-assisted coding tool like Claude Code or Codex, make sure the AI follows the instructions in the [AGENTS.md](AGENTS.md) file.

#### Prerequisites

Install GNU Make on your system if it's not already installed.
Expand Down
26 changes: 8 additions & 18 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,28 +19,18 @@ A small embeddable Lisp for the Zig ecosystem λ

---

Element 0 programming language is a new Lisp dialect inspired by Scheme.
It aims to be compliant with the [R5RS](https://conservatory.scheme.org/schemers/Documents/Standards/R5RS/) standard to a good degree,
but not limited to it.
Element 0 is a small scripting language that can be embedded in Zig applications.
It is a new Lisp dialect inspired by Scheme with features like first-class functions, macros, and a simple syntax.

This project provides a bytecode compiler and virtual machine for the Element 0 language, written in Zig.
The implementation is named Elz (pronounced "el-zee") and can be integrated into Zig applications as a scripting engine.
In addition, Elz comes with a read-eval-print loop (REPL) for interactive development and testing, and
it can easily be extended using Zig code via the foreign function interface (FFI) or Element 0 code.

### Why Element 0?

Having an embeddable scripting language is useful in a Zig project.
For example, you can write the core parts of your application in Zig for performance.
Then you can write features like plugins or configuration files in Element 0.
This lets you change parts of your application without the need to recompile the entire project.
This project provides an implmenation of Element 0 (a compiler and virtual machine).
The implementation is named Elz (pronounced "el-zee") and can be easily integrated into Zig applications as a scripting engine.

### Key Features

* A good level of R5RS compliance with a growing standard library (see [std.elz](src/stdlib/std.elz))
* Easy to integrate into Zig projects as a lightweight scripting engine (with a VM)
* Easy to extend with Zig functions via the use of FFI or writing Element 0 code
* Prepacked with a REPL (for interactive development)
* Small langauge with a growing standard library (see [std.elz](src/stdlib/std.elz))
* Easy to integrate into Zig projects as a lightweight scripting engine
* Easy to extend with Zig functions via the use of FFI or directly writing Element 0 code
* A ggod tradeoff between performance and simplicity

See the [ROADMAP.md](ROADMAP.md) for the list of implemented and planned features.

Expand Down
Loading