diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index de275e7..180f9cb 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -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. diff --git a/README.md b/README.md index 4b0842d..bafdc10 100644 --- a/README.md +++ b/README.md @@ -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.