.TH FENNEL 1 .SH NAME fennel \- a lisp programming language that runs on Lua .SH SYNOPSIS .B fennel [\fB--repl\fR] | [\fB--compile \fIfilename\fR] | [\fB--eval \fIsource\fR] | [\fIfilename\fP] [\fIargs ...\fR] .SH DESCRIPTION This manual page documents briefly the .B fennel command. .PP .B fennel is the main entry point for Fennel, a lisp programming language that runs on Lua runtimes. With no options or arguments, it runs an interactive Read-Eval-Print loop (REPL). .PP Given a filename as its first argument, it runs that file and passes it the subsequent arguments. Ahead-of-time compilation can be invoked with the .B --compile flag, while short snippets can be evaluated with the .B --eval argument. .SH OPTIONS A summary of options is included below. .TP .B \-\-repl Start an interactive repl session. This is the default when given no arguments. .TP .B \-\-compile \fIfilename\fP Perform ahead-of-time compilation on the provided file and write the Lua output to standard out. .TP .B \-\-eval \fIsource\fP Evaluate a given piece of source code and print the result. .TP .B \-\-no-searcher When running a repl or a file, .B fennel.searcher is installed by default so that the .B require function can load Fennel files in addition to Lua files. This flag disables that behavior. Has no effect for ahead-of-time compilation. .TP .B \-\-add-package-path \fIpath\fP Add the given path to .B package.path so that the .B require function will know to look there when searching for Lua modules. .TP .B \-\-add-fennel-path \fIpath\fP Same as above, but for Fennel's path used when searching for Fennel modules. .TP .B \-\-globals \fIVAR1[,VAR2...]\fP Allow VAR1, VAR2, etc as globals in addition to 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. .TP .B \-\-globals-only \fIVAR1[,VAR2...]\fP Same as above, but without the inclusion of the standard set of globals. .TP .B \-\-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. .TP .B \-\-to-be-closed When compiling .B with-open use the to-be-closed feature of Lua 5.4+ to avoid interfering with traces. .TP .B \-\-assert-as-repl Calls to the built-in function .B assert from Fennel will be replaced with calls to .B assert-repl so that when the assertion fails, a REPL will be started in which you can interactively debug. .TP .B \-\-lambda-as-fn Replace .B lambda function definitions with .B fn\fR, removing the runtime overhead from arity checking. .TP .B \-\-use-bit-lib Compile bitwise operations to use LuaJIT's bitop library instead of Lua 5.3+ bitwise operators. .TP .B \-\-load \fIFILE\fP Load the specified file before any command is run. .TP .B \-\-compile-binary \fIFILE\fP \fIOUT\fP \fILUA_LIB\fP \fILUA_DIR\fP Compile FILE to a standalone binary OUT using LUA_LIB and the Lua header files in LUA_DIR. See .B \-\-compile-binary \-\-help for details. .TP .B \-\-no\-compiler\-sandbox Do not limit compiler environment (used in macros) to minimal sandbox. .TP .B \-\-keywords \fIKEYWORD1[,KEYWORD2...]\fP Treat these symbols as reserved Lua keywords. .TP .B \-h, \-\-help Print a help message and exit .TP .B \-v, \-\-version Print the version number and exit .PP Use the NO_COLOR environment variable to disable escape codes in error messages. .SH SEE ALSO .MR fennel-api 3 , .MR fennel-reference 5 , .MR fennel-tutorial 7 The semantics are very close to Lua, so Lua's reference manual is also helpful. .SH COMMUNITY The mailing list is at https://lists.sr.ht/~technomancy/fennel while the issue tracker is at https://dev.fennel-lang.org. Most discussion happens on the #fennel channel of Libera chat. .SH AUTHORS Calvin Rose and Phil Hagelberg and contributors: https://github.com/bakpakin/Fennel/graphs/contributors .SH LICENSE Copyright © 2016-2025, Released under the MIT/X11 license