Fe is a tiny, embeddable, Lisp-like language implemented in C23.
This version is a refactored and extended version of the beautiful original by rxi.
The language offers the following features:
- Numbers, symbols, strings, pairs, lambdas, and macros
- Lexically scoped variables
- Closures
- Variadic functions
- Mark-and-sweep garbage collector
- Stack traceback on error
The implementation aims to fulfill the following goals:
- Practical for small scripts (extension scripts, configuration files)
- Small memory usage within a fixed-size, caller-allocated arena — no
mallocs - Simple mark-and-sweep garbage collector
- Easy-to-use C API
- Concise, readable, and portable implementation
- Extensible — an extension API allows the core to remain small and stable
- Example scripts and their test expectations
- C API overview
- Language overview
- Implementation overview
Bug reports, pull requests, and questions are welcome.
This program is free software; you can redistribute it and/or modify it under the terms of the MIT license. See LICENSE for details.