Lisps targeting Lua

Some Lisps targeting Lua are: Fennel; Lumen and Urn.


Fennel is a programming language that brings together the speed, simplicity, and reach of Lua with the flexibility of a lisp syntax and macro system. – Fennel (by Calvin Rose and contributors.)

From its documentation

  • Full Lua compatibilty: Easily call any Lua function or library from Fennel and vice-versa.
  • Zero overhead: Compiled code should be just as or more efficient than hand-written Lua.
  • Compile-time macros: Ship compiled code with no runtime dependency on Fennel.
  • Embeddable: Fennel is a one-file library as well as an executable. Embed it in other programs to support runtime extensibility and interactive development.

Anywhere you can run Lua code, you can run Fennel code.


Lumen Lumen is a very small, self-hosted Lisp for Lua and JavaScript. – Lumen (by Scott Bell with Daniel Gackle and Shawn Presser.)

From its documentation

Lumen provides a flexible compilation environment with an extensible reader, macros, and extensible special forms, but otherwise attempts to match the target runtime environment as closely as possible. You can get started by running bin/lumen on a machine with Node.js, Lua, or LuaJIT installed.


Urn is a Lisp dialect with a focus on minimalism which compiles to Lua. – Urn (by SquidDev, and demhydraz.)

From its documentation

Urn is a Lisp dialect with a focus on minimalism which compiles to Lua.

What? * A minimal¹ Lisp implementation, with full support for compile time code execution and macros. * Support for Lua 5.1, 5.2 and 5.3. Should also work with LuaJIT. * Lisp-1 scoping rules (functions and data share the same namespace). * Influenced by a whole range of Lisp implementations, including Common Lisp and Clojure. * Produces standalone, optimised Lua files: no dependencies on a standard library.

¹: Minimalism is an implementation detail.

Posts in this Series