./lang/fennel, The Fennel programming language

[ CVSweb ] [ Homepage ] [ RSS ] [ Required by ] [ Add to tracker ]


Branch: CURRENT, Version: 1.6.1, Package name: lua54-fennel-1.6.1, Maintainer: pkgsrc-users

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.

Features:
- Full Lua compatibility: Easily call any Lua function or library from
Fennel and vice-versa.
- Zero overhead: Compiled code should be just as efficient as hand-written
Lua.
- Compile-time macros: Ship compiled code with no runtime dependency
on Fennel.
- Embeddable: Fennel is a one-file library as well as an executable.
Embed it in other programs to support runtime extensibility and interactive
development.


Master sites:


Version history: (Expand)


CVS history: (Expand)


   2025-12-31 03:42:31 by Kevin Bloom | Files touched by this commit (3) | Package updated
Log message: fennel: update to 1.6.1 Packaging changes: - fixed distfile issue - man it possible to actually read the man page - the manpage for the language itself is now fennel-lang.1 to avoid conflict with pkgtools/pkg_alternatives's fennel.1 Upstream changes: - Fix a bug where pattern matches on `...` could error out. 
   2025-12-28 08:11:01 by Thomas Klausner | Files touched by this commit (2)
Log message: fennel: automatic download fails due to bot filter Replace distfile with what one gets via the web browser No change to checksum. 
   2025-12-26 21:19:26 by Kevin Bloom | Files touched by this commit (3) | Package updated
Log message: fennel: update to 1.6.0 * Support `extra-compiler-env` in options table when compiling. * Accept `path` in options table of `fennel.install`. * Improve printing of large integers in Lua 5.3+. * Allow disk reads from compiler sandbox. * Add `--to-be-closed` option for better stack traces in `with-open` on Lua 5.4. * Stack traces from macro errors shouldn't contain compiler internals. * Look for macros in `.fnlm` files in addition to `.fnl` files. * Support `extra-env` in compiler API when evaluating in compiler scope. * Allow `--compile-binary` to work on `.lua` and `.luac` files. * Add `--lambda-as-fn` option to remove overhead from arg checking. * Fix a bug where `,find` repl command didn't work on files with long names. * Some 3-decimal string escapes ignored the 3rd digit; e.g. `\x7f` -> `\127` -> `\f7`. * In PUC Lua 5.1, the escape `"\127"` compiled to a literal byte in the string. 
   2024-10-13 23:04:53 by Yorick Hardy | Files touched by this commit (3) | Package updated
Log message: lang/fennel: update to fennel-1.5.1 == 1.5.1 / 2024-08-24 --- Bug Fixes * `,doc`/`fennel.doc`: Don't mutate `:fnl/arglist` directly when showing callable form * `(set (. tgt k1 ...) v)` now works on known globals and `$, $1 ... $9` in hashfns * Macro quote expansion no longer breaks when `sym`, `list` or `sequence` is shadowed * Bring `fennel.traceback` behavior closer to Lua's `traceback` by not modifying non-string and non-`nil` values. * Avoid losing precision when compiling large numbers on LuaJIT. * Add syntax for representing infinity and NaN values. == 1.5.0 / 2024-06-23 --- New Features * Macro `pick-values` is now a special, allowing it to emit better Lua output. * Add `fennel.getinfo` as source-map-aware equivalent of `debug.getinfo`. * Optimize allocation away when destructuring tables to tables. * Allow `&` and `&as` in the same destructure clause. * More consistent module-not-found warnings for `--require-as-include`. * Improve compiler output for `and`/`or` forms with potential side-effects. * Allow locals in places where they make sense rather than mid-expression. * Accept `--keywords` option to add to the list of built-in Lua keywords. * REPL completion now works on partial REPL commands: e.g. `,complete ,d` -> `,doc`. * Tables in the REPL default to printing with limited depth. * View settings in REPL can be changed: `(set ___repl___.view-opts.depth 100)`. * Support dynamic field names in `(set (. tbl field) val)`. * The `fennel.compile` function now accepts an AST, iterator, or file. * Catch typos when a space is missing after a string. --- Bug Fixes * `(pick-values 0 (side-effects))` now correctly preserves side effects * Don't non-nil assert on `_foo` arguments in `lambda`. * Propagate compile options into `,compile` repl command. * IIFEs emitted by `and`/`or` inside `(fn [...])` now propagate varargs. * `macrodebug` on cyclic macro expansions now serialize to valid code (no `@1, ..`) 
   2024-05-30 22:17:34 by Yorick Hardy | Files touched by this commit (3) | Package updated
Log message: lang/fennel: update to fennel-1.4.2 Changelog: == 1.4.2 / 2024-02-23 === Bug Fixes * Fix a bug where `(tail! (f x))` could sometimes compile to `return return f(x)` * Make `tail!` ensure its target is not a special form call like `(tail! (or x (f)))` * Fix broken man page installation on `make install` in Fennel 1.4.1 == 1.4.1 / 2024-02-19 This was the last release that provided Linux arm32 binaries. === New Features * Iterators accept locals wrapped in parens like all other multi-value bindings. * `fennel.repl` is now a callable table, allowing the default `(fennel.repl)` options to be customized by setting option fields on the table itself. === Bug Fixes * Fix a bug with metadata tables in `lambda` being ignored. * Fix identity value for `band` operator. * Fix a bug in `icollect` with `&into` and multiple values. * `assert-repl`, as a drop-in replacement for `assert`, no longer takes an `opts` param * Fix a bug where `(. (a-macro) k)` bypassed protections against invalid Lua output === Changes and Removals * Deprecate the `__fennelrest` destructuring metamethod. == 1.4.0 / 2023-12-01 === Bug Fixes * Prevent metadata from being accessible in compiler sandbox. === New Forms * Add `tail!` which asserts that the argument is called in tail position. * Add `assert-repl` to make an assertion which opens a repl when it fails. === New Features * Add `--assert-as-repl` flag to replace `assert` calls with `assert-repl`. * Allow you to return a value from the repl with `,return FORM` command. * Save previous REPL values in `*1`, `*2`, and `*3` locals. * Make repl prompt change when repl sessions get nested. 
   2023-07-22 23:38:18 by Yorick Hardy | Files touched by this commit (4) | Package updated
Log message: lang/fennel: update to fennel-1.3.1 1.3.1 / 2023-07-07 New Features * fennel.runtime-version will return version information as a table if given optional argument * Expose REPL's methods in the ___repl___ table, allowing method redefinition at runtime. * Allow following docstring with a metadata table syntax. * Return whole metadata table when metadata.get is called without a key. * Add :byte-escape option to fennel.view for overriding default char escapes * Generate man pages for fennel-api(3), fennel-reference(5), and fennel-tutorial(7) from their respective documentation. Note for packagers: The man page fennel.1 has been moved to man/man1/fennel.1 along with the new generated man pages. For build scripts that copy files manually in lieu of make install, this may require an update. Bug Fixes * Fix a bug where operator compiler output had incorrect precedence with 3+ args * Fix a bug where the comment special would fail on forms containing "]]" * Fix a bug where tables like {:true 1 true 2} emit with unstable key order * Fix a bug where table literals mutated by a macro emit with unstable key order when AOT-compiled in Lua > 5.2 * Fix a bug where very long individual lines in the repl would be truncated * Fix an edge case where {:__metatable true} (as in pandoc-lua) breaks fennel.view * Fix a 1.3.0 bug where macros only accepts table literals, not table-returning exprs * Fix a bug where metadata tables with different arglists break lambdas * Fix a bug with detecting cycles for tables that have custom __pairs metamethod in fennel.view * Fix a bug where vararg couldn't be the only thing in a hashfn 
   2023-04-27 14:45:56 by Yorick Hardy | Files touched by this commit (2) | Package updated
Log message: lang/fennel: update to fennel-1.3.0 1.3.0 / 2023-02-13 New Forms * Add case which does pattern matching without pinning existing locals * Add case-try which works like match-try without pinning locals * Add faccumulate macro as range analog to accumulate New Features * Reduced compiler memory footprint * Omit escape codes highlighting errors when NO_COLOR env var is set * Support & for rest args in function arglists for consistency with let * Add error-pinpoint option to support custom error highlighting * The fn special now allows arbitrary compiler metadata keys via the metadata table syntax * Options in fennel.view can be altered for the next invocation of the pretty-printer by setting them to {:once val} or {:once val :after other-val}. See fennel.view docstring for more info Bug Fixes * Fix a bug where readline repl history would be saved to the wrong file * Fix a bug where set did not catch unknown locals when setting table fields * Add a workaround for a bug around ctrl-d in readline 
   2023-01-10 22:51:30 by Nikita | Files touched by this commit (6)
Log message: Import lang/fennel as fennel version 1.2.1 Packaged by charlotte@ in wip. 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. Features: - Full Lua compatibility: Easily call any Lua function or library from Fennel and vice-versa. - Zero overhead: Compiled code should be just as efficient as hand-written Lua. - Compile-time macros: Ship compiled code with no runtime dependency on Fennel. - Embeddable: Fennel is a one-file library as well as an executable. Embed it in other programs to support runtime extensibility and interactive development.