Fennel is a lisp that compiles to Lua. It aims to be easy to use, expressive, and has almost zero overhead compared to writing Lua directly.
At https://fennel-lang.org there's a live in-browser repl you can use without installing anything. At https://fennel-lang.org/see you can see what Lua output a given piece of Fennel compiles to, or what the equivalent Fennel for a given piece of Lua would be.
The changelog has a list of user-visible changes for each release.
(print "hello, world!")
(fn fib [n] (if (< n 2) n (+ (fib (- n 1)) (fib (- n 2))))) (print (fib 10))
Building Fennel from source allows you to use versions of Fennel that haven't been released, and it makes contributing to Fennel easier.
cdto a directory in which you want to download Fennel, such as
git clone https://git.sr.ht/~technomancy/fennel
make fennelto create a standalone script called
fennelscript to a directory on your
$PATH, such as
Note: If you copied the
fennel script to one of the
directories on your
$PATH, then you can run
fennel filename.fnl to
run a Fennel file anywhere on your system.
Fennel inherits the limitations of the Lua runtime, which does not offer pre-emptive multitasking or OS-level threads. Libraries for Lua work great with Fennel, but the selection of libraries is not as extensive as it is with more popular languages. While LuaJIT has excellent overall performance, purely-functional algorithms will not be as efficient as they would be on a VM with generational garbage collection.
Even for cases where the Lua runtime is a good fit, Fennel might not be a good fit when end-users are expected to write their own code to extend the program, because the available documentation for learning Lua is much more readily-available than it is for Fennel.
#fennelchat thru IRC on Libera.Chat or on Matrix
Copyright © 2016-2022 Calvin Rose and contributors
Released under the MIT license.