Login
7 branches 0 tags
Ben (X220/Parabola) Minor cleanup/doc 92f443b 3 years ago 647 Commits

Nujel

A small, portable Lisp dialect for games and other latency sensitive applications. Development was started in order to give WolkenWelten a scripting runtime. While Nujel is still very early in development, and for the most part just an incompatible Scheme, it is evolving rapidly.

Performance

While Nujel is still quite slow, it is definitely not the slowest Lisp out there. To make sure that there are no performance regression benchmarks are regularly run which are also used to compare Nujel against other runtimes, if you are interested you can see the results here here.

Future direction

To get an idea about the design and future direction of Nujel have a look at the FUTURE.md.

Current status

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

  • Extensive test suite
  • Lexical scoping
  • Exceptions
  • WASM support
  • Formatted output (inspired by Python/Rust/Zig)
  • Maps (using binary trees)
  • Garbage Collection (Mark-and-Sweep for now)
  • Macros (expander written in Nujel itself)
  • Bytecoded (compiler/assembler/disassemble all written in Nujel)
  • Tail-call elimination
  • NaN Boxing
  • Modules
  • Continuations
  • Fibers
  • Serializable Fibers

Current Limitations

These will be addressed in later versions

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

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