Fennel Versions Save

Lua Lisp Language

1.0.0

2 years ago

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

0.5.0

3 years ago

0.5.0 / 2020-08-08

  • Fix a bug where lambdas with no body would return true instead of nil.
  • Fix a bug where global mangling would break when used with an environment.
  • Fix a bug where globals tracking would lose track of allowed list.
  • Fix a bug where top-level expressions in include would get skipped.
  • The Fennel compiler is now self-hosted and written entirely in Fennel!

0.4.2

3 years ago

0.4.2 / 2020-07-11

  • Fix a bug where multiple include calls would splice locals incorrectly
  • Support varargs in hashfn with $... (#298)
  • Add with-open macro for auto-closing file handles (#295)
  • Add --native-module and --native-library to --compile-binary command
  • Make autogensym symbols omit "#" when appending unique suffix
  • Fix a bug where autogensyms (using #) couldn't be used as multisyms (#294)
  • Add fennel.searchModule function to module API
  • Fix a bug causing include to ignore compiler options
  • Fix a bug causing the repl to fail when $HOME env var was not set

0.4.1

3 years ago

Changes since 0.4.0

  • Experimental --compile-binary command (#281)
  • Support shebang in all contexts, not just dofile.
  • Pinpoint source in compile errors even when loading from a string
  • Fix a bug where included modules could get included twice (#278)
  • Fix a 0.4.0 bug where macros can't expand to string/boolean/number primitives (#279)
  • Fix a bug in macros returning forms of a different length from their input (#276)

Installation

You 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.

0.4.0

3 years ago

Changes since 0.3.2

  • Add import-macros for more flexible macro module loading (#269)
  • Ensure deterministic compiler output (#257)
  • Add bit-wise operators rshift, lshift, bor, band, bnot, and bxor
  • Friendlier compiler/parse error messages with suggestions
  • Omit compiler internal stack traces by default unless FENNEL_DEBUG=trace
  • Add support for __fennelview metamethod for custom serialization
  • Fix a bug where dofile would report the wrong filename
  • Fix bug causing failing include of Lua modules that lack a trailing newline (#234)
  • Introduce pick-values and pick-args macros (as limit-*: #246, as pick-*: #256)
  • Add new macroexpand helper to expand macro forms during compilation (#258)
  • Add macrodebug utility macro for printing expanded macro forms in REPL (#258)

Installation note

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.

0.3.0

4 years ago

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.

  • Fix a bug where errors would show incorrect line numbers
  • Add support for docstrings and doc for displaying them in repl
  • Support :detect-cycles? false in fennelview to turn off "#<table 1>" output
  • Disallow non-gensym identifiers in backtick/macros
  • Support x# syntax for auto-gensym inside backtick
  • Fix a bug in lambda arity checks when using destructuring
  • Support :one-line output in fennelview
  • Add include special form to selectively inline modules in compiled output
  • Add --require-as-include to inline required modules in compiled output
  • Add --eval argument to command-line launcher
  • Add environment variable FENNEL_PATH to path
  • Fix a few bugs in match
  • Remove undocumented support for single-quoted strings
  • Add support for guard clauses with ? in pattern matching
  • Support completion in repl when readline.lua is available
  • Add --globals and --globals-only options to launcher script
  • Remove luaexpr and luastatement for a single lua special
  • Improve code generation for if expressions in many situations
  • Alias # special with length
  • Replace @ (unquote) with ,; comma is no longer whitespace
  • Disallow ~ in symbols other than ~=
  • Add hashfn and # reader macro for shorthand functions like #(+ $1 $2)
  • Allow hashfn arguments to be used in multisyms
  • Add macro to make defining a single macro easier
  • Add (comment) special which emits a Lua comment in the generated source
  • Allow lua-style method calls like (foo:bar baz); disallow : in symbols

0.2.0

4 years ago

The 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.

  • Prevent creation of bindings that collide with special forms and macros
  • Make parens around steps optional in arrow macros for single-arg calls
  • Allow macros to be defined inline with macros
  • Add --add-package-path and --add-fennel-path to launcher script
  • Add -?> and -?>> macros
  • Add support for quoting with backtick and unquoting with @ (later changed to ,)
  • Support key/value tables when destructuring
  • Add match macro for pattern matching
  • Add optional GNU readline support for repl
  • Fix a bug where runtime errors were not reported by launcher correctly
  • Allow repl to recover gracefully from parse errors

0.1.1

4 years ago

This release contains a few small bug fixes.

  • Fix luarocks packaging so repl includes fennelview
  • Fix bug in the repl where locals-saving would fail for certain input
  • Fix launcher to write errors to stderr, not stdout

0.1.0

4 years ago

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".

  • Save locals in between chunks in the repl
  • Allow destructuring in more places
  • Remove redundant defn macro
  • Add doto macro
  • Support newlines in strings
  • Prevent typos from accidentally referring to unknown globals
  • Improve readability of compiler output
  • Add -> and ->> macros
  • Remove deprecated special forms: pack, $, block, *break, special
  • Support nested lookup in . form
  • Add var; disallow regular locals from being set
  • Add global; refuse to set globals without it
  • Make comparison operators variadic
  • Support destructuring "rest" of a table into a local with &
  • Add fennelview pretty-printer
  • Add require-macros
  • Add // for integer division on Lua 5.3+
  • Add fennel.dofile and fennel.searcher for require support
  • Track line numbers
  • Add partial
  • Add local
  • Support binding against multiple values
  • Add : for method calls
  • Compile tail-calls properly
  • Rename to Fennel
  • Add each
  • Add lambda/λ for arity-checked functions
  • Add when
  • Add comments

0.3.1

4 years ago
  • Look for init file for repl in XDG config dirs as well as ~/.fennelrc (#193)
  • Add support for --load FILE argument to command-line launcher (#193)
  • Fix each to work with raw iterator values (#201)
  • Optionally check for unused locals with --check-unused-locals
  • Make repl completion descend into nested table fields (#192)
  • Fix repl completer to correctly handle symbol mangling (#195)