Lua Lisp Language
We've moved off GitHub, so we don't store releases here any more.
Please see https://fennel-lang.org/setup for a link to the latest version or https://fennel-lang.org/ for a list of all the versions.
There is a raw list of all the files published at https://fennel-lang.org/downloads
include
would get skipped.include
calls would splice locals incorrectly$...
(#298)with-open
macro for auto-closing file handles (#295)--native-module
and --native-library
to --compile-binary
command#
) couldn't be used as multisyms (#294)fennel.searchModule
function to module APIinclude
to ignore compiler options$HOME
env var was not setYou can download the standalone fennel
CLI launcher (requires Lua), or a pre-built archive containing the launcher, fennel.lua
itself in library form, as well as the other built-in libraries and all development assets below.
import-macros
for more flexible macro module loading (#269)rshift
, lshift
, bor
, band
, bnot
, and bxor
FENNEL_DEBUG=trace
__fennelview
metamethod for custom serializationdofile
would report the wrong filenameinclude
of Lua modules that lack a trailing newline (#234)pick-values
and pick-args
macros (as limit-*
: #246, as pick-*
: #256)macroexpand
helper to expand macro forms during compilation (#258)macrodebug
utility macro for printing expanded macro forms in REPL (#258)As of 0.4.0, fennel
CLI executable is self-contained and built with make fennel.
You can download a prebuilt release below to get going without make
.
This release introduces docstrings as well as several new features to the macro system and some breaking changes; the most significant being the new unquote syntax and the requirement of auto-gensym for identifiers in backtick.
doc
for displaying them in repl:detect-cycles? false
in fennelview to turn off "#<table 1>" outputx#
syntax for auto-gensym inside backticklambda
arity checks when using destructuring:one-line
output in fennelviewinclude
special form to selectively inline modules in compiled output--require-as-include
to inline required modules in compiled output--eval
argument to command-line launcherFENNEL_PATH
to path
match
?
in pattern matchingreadline.lua
is available--globals
and --globals-only
options to launcher scriptluaexpr
and luastatement
for a single lua
specialif
expressions in many situations#
special with length
@
(unquote) with ,
; comma is no longer whitespace~
in symbols other than ~=
hashfn
and #
reader macro for shorthand functions like #(+ $1 $2)
macro
to make defining a single macro easier(comment)
special which emits a Lua comment in the generated source(foo:bar baz)
; disallow :
in symbolsThe second minor release introduces backtick, making macro authoring much more streamlined. Macros may now be defined in the same file, and pattern matching is added.
macros
--add-package-path
and --add-fennel-path
to launcher script-?>
and -?>>
macros@
(later changed to ,
)match
macro for pattern matchingThis release contains a few small bug fixes.
The first real release sees the addition of several "creature comfort" improvements such as comments, iterator support, line number tracking, accidental global protection, pretty printing, and repl locals. It also introduces the name "Fennel".
defn
macrodoto
macro->
and ->>
macrospack
, $
, block
, *break
, special
.
formvar
; disallow regular locals from being setglobal
; refuse to set globals without it&
require-macros
//
for integer division on Lua 5.3+fennel.dofile
and fennel.searcher
for require
supportpartial
local
:
for method callseach
lambda
/λ
for arity-checked functionswhen
--load FILE
argument to command-line launcher (#193)each
to work with raw iterator values (#201)--check-unused-locals