./lang/fennel, The Fennel programming language

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


Branch: CURRENT, Version: 1.5.1, Package name: lua54-fennel-1.5.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)


   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.