Login
7 branches 0 tags
Ben (X13/Arch) Fixed testsuite 10bf516 3 years ago 848 Commits
nujel / README.md

Nujel

A fast, tiny and easy to embed Lisp dialect. While providing a scripting system for WolkenWelten was what started the development effort for Nujel, it is now trying to become useful for general scripting tasks as well.

Performance

To make sure that there are no performance regressions, benchmarks are regularly run which are also used to compare Nujel against other runtimes, if you like colorful charts you can see the results here here.

Syntax

A lot of the language is still undocumented, this is because I want to preserve myself the ability to change those parts of the language as I develop a better feeling for what works and what doesn't. To read about the (few) parts of Nujel that are pretty much final you can look at the LANGUAGE.md document in this repository.

Current status

Here is a collection of features already implemented, or about to be finished.

  • Garbage collection (simple Mark-and-Sweep for now)
  • Extensive test suite
  • Lexical scoping
  • Exceptions (using setjmp/longjmp)
  • WASM support (only via Emscripten)
  • Formatted output (inspired by Python/Rust/Zig)
  • Maps (using binary trees)
  • Macros (expander written in Nujel itself)
  • Bytecoded (compiler/assembler/disassembler all written in Nujel)
  • Constant Folding
  • Module system
  • Printer written in Nujel
  • "Stackless" funcalls (not using the C call stack for Nujel funcalls)
  • Tail-call optimization
  • Continuations
  • Value types
  • Binary data format with C reader/writer
  • Reader written in Nujel
  • Simple HTTP 1.1 client/server

Current Limitations

These will be addressed in later versions

  • No file streams (can only read/write files in their entirety)
  • No networking support
  • Static Heap (works far better than expected)

Try it out

You can try out a current WASM Build over here.

GitHub CI (Windows/MacOS/Ubuntu)

Master Develop
CI CI

sourcehut CI

Operating System Master Develop
Arch Linux (gcc) builds.sr.ht status builds.sr.ht status
Arch Linux (clang) builds.sr.ht status builds.sr.ht status
Arch Linux (tcc-git) builds.sr.ht status builds.sr.ht status
Arch Linux (bmake) builds.sr.ht status builds.sr.ht status
Debian Sid / ARM64 builds.sr.ht status builds.sr.ht status
Guix builds.sr.ht status builds.sr.ht status
Rocky Linux builds.sr.ht status builds.sr.ht status
Alpine Linux builds.sr.ht status builds.sr.ht status
FreeBSD builds.sr.ht status builds.sr.ht status
NetBSD builds.sr.ht status builds.sr.ht status
OpenBSD builds.sr.ht status builds.sr.ht status