FENNEL(1)
π FENNEL(1) β General Commands Manual π
okay bestie, sit down, we're learning fennel π
this is the section 1 page (general commands, iykyk) and it's literally the whole main-character entry point of the language.
β¨ NAME β¨
fennel β a lisp programming language that runs on Lua π¦
πΈ SYNOPSIS πΈ
fennel [--repl] | [--compile filename] | [--eval source] | [filename]
[args ...]
π DESCRIPTION π
So this manual page documents the fennel command briefly β it's the vibe-check summary, not the whole lore.
fennel is the main entry point for Fennel, which is a lisp programming language that runs on Lua runtimes. And when you run it with no options and no arguments? It just drops you straight into an interactive Read-Eval-Print loop (that's a REPL, babe π«Ά).
Give it a filename as the first argument and it runs that file, passing along the arguments that come after it. Want ahead-of-time compilation instead? That's the --compile flag's whole thing. And if you just wanna evaluate a tiny snippet real quick, --eval has you covered β¨
π OPTIONS π
Here's the summary of your options, queen. Every single one, no skipping π
--replβ Start an interactive repl session. This is literally the default when you give it no arguments at all. main character energy, no notes.--compilefilename β Do ahead-of-time compilation on the file you handed over, and write the Lua output to standard out. AOT girlies rise π--evalsource β Evaluate a given piece of source code and print the result.--no-searcherβ When you're running a repl or a file,fennel.searchergets installed by default so that therequirefunction can load Fennel files in addition to Lua files. This flag disables that behavior. Heads up: it has no effect for ahead-of-time compilation.--add-package-pathpath β Add the given path topackage.pathso therequirefunction knows to look there when it's searching for Lua modules.--add-fennel-pathpath β Same as above, but for Fennel's path, the one it uses when searching for Fennel modules.--globalsVAR1[,VAR2...] β Allow VAR1, VAR2, etc. as globals on top of the standard set of globals. This enables strict global checking even in ahead-of-time compilation, where it otherwise would be disabled. Use"*"to disable globals checking entirely.--globals-onlyVAR1[,VAR2...] β Same as above, but without the inclusion of the standard set of globals.--require-as-includeβ Instead of loading required modules at runtime, compile them inline into the main file being compiled. Only useful during ahead-of-time compilation, fr fr.--to-be-closedβ When compilingwith-open, use the to-be-closed feature of Lua 5.4+ to avoid interfering with traces.--assert-as-replβ Calls to the built-in functionassertfrom Fennel get replaced with calls toassert-repl, so that when the assertion fails, a REPL starts up and you can interactively debug. glow up debugging π--lambda-as-fnβ Replacelambdafunction definitions withfn, removing the runtime overhead from arity checking.--use-bit-libβ Compile bitwise operations to use LuaJIT'sbitoplibrary instead of Lua 5.3+ bitwise operators.--loadFILE β Load the specified FILE before any command is run.--compile-binaryFILE OUT LUA_LIB LUA_DIR β Compile FILE to a standalone binary OUT using LUA_LIB and the Lua header files in LUA_DIR. See--compile-binary --helpfor details.--no-compiler-sandboxβ Do not limit the compiler environment (the one used in macros) to the minimal sandbox. π--keywordsKEYWORD1[,KEYWORD2...] β Treat these symbols as reserved Lua keywords.-h,--helpβ Print a help message and exit.-v,--versionβ Print the version number and exit.
Pro tip, bestie: use the NO_COLOR environment variable to disable escape codes in error messages. (yes it's shouty-caps, it's a thing, trust π)
π₯ SEE ALSO π₯
The semantics are very close to Lua, so Lua's reference manual is also helpful if you want more reading material π
π COMMUNITY π
- The mailing list is at
https://lists.sr.ht/~technomancy/fennel - The issue tracker is at
https://dev.fennel-lang.org - Most discussion happens on the
#fennelchannel of Libera chat π¬
π AUTHORS π
Calvin Rose and Phil Hagelberg and contributors: https://github.com/bakpakin/Fennel/graphs/contributors
β LICENSE β
Copyright Β© 2016-2025, Released under the MIT/X11 license
and that's the whole page, babe π¦ this was FENNEL(1) from the General Commands Manual β go forth, require things, run that repl, and remember: the footer still says FENNEL(1) because that's just how manpages sign off β¨ mwah π
π¦ where this page comes from
- alpine 3.24: fennel-doc 1.6.1-r0 Β· MIT
- arch rolling: fennel 1.6.1-3 Β· MIT
- epel 10: fennel 1.6.1-1.el10_2 Β· MIT
- epel 9: fennel 1.6.1-1.el9 Β· MIT
- fedora 43: fennel 1.6.1-1.fc43 Β· MIT
- fedora 44: fennel 1.6.1-2.fc44 Β· MIT
- nixos 26.05: lua5.1-fennel 1.6.1-1
- nixos 26.05: lua5.2-fennel 1.6.1-1
- nixos 26.05: lua5.3-fennel 1.6.1-1
- nixos 26.05: lua5.4-fennel 1.6.1-1
- nixos 26.05: lua5.5-fennel 1.6.1-1
- nixos 26.05: luajit2.1-fennel 1.6.1-1
- nixpkgs unstable: lua5.1-fennel 1.6.1-1
- nixpkgs unstable: lua5.2-fennel 1.6.1-1
- nixpkgs unstable: lua5.3-fennel 1.6.1-1
- nixpkgs unstable: lua5.4-fennel 1.6.1-1
- nixpkgs unstable: lua5.5-fennel 1.6.1-1
- nixpkgs unstable: luajit2.1-fennel 1.6.1-1
- ubuntu resolute: fennel 1.6.0+dfsg-1build1 Β· MIT
- ubuntu stonking: fennel 1.6.0+dfsg-1build1 Β· MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms