Compare commits
8 Commits
| Author | SHA256 | Date | |
|---|---|---|---|
|
4e52d610ef
|
|||
|
d84b995705
|
|||
|
2b9e168194
|
|||
|
5f41e7f026
|
|||
|
4cdde9d962
|
|||
|
e2397abe52
|
|||
|
a58053c3fa
|
|||
| 1e51c7df2b |
1
.gitattributes
vendored
1
.gitattributes
vendored
@@ -21,3 +21,4 @@
|
||||
*.xz filter=lfs diff=lfs merge=lfs -text
|
||||
*.zip filter=lfs diff=lfs merge=lfs -text
|
||||
*.zst filter=lfs diff=lfs merge=lfs -text
|
||||
*.changes merge=merge-changes
|
||||
|
||||
6
.gitignore
vendored
6
.gitignore
vendored
@@ -1 +1,5 @@
|
||||
.osc
|
||||
*.obscpio
|
||||
*.osc
|
||||
_build.*
|
||||
.pbuild
|
||||
lua*-fennel-*-build
|
||||
|
||||
6
_multibuild
Normal file
6
_multibuild
Normal file
@@ -0,0 +1,6 @@
|
||||
<multibuild>
|
||||
<package>luajit</package>
|
||||
<package>lua53</package>
|
||||
<package>lua54</package>
|
||||
<package>lua55</package>
|
||||
</multibuild>
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:6654aadb7659bbf88d3879190392573e1ae39087eaaf5084e95f45db8e82ad51
|
||||
size 271590
|
||||
BIN
lua-fennel-1.6.0.tar.gz
LFS
Normal file
BIN
lua-fennel-1.6.0.tar.gz
LFS
Normal file
Binary file not shown.
@@ -1,3 +1,223 @@
|
||||
-------------------------------------------------------------------
|
||||
Fri Jan 23 21:38:01 UTC 2026 - Matej Cepl <mcepl@cepl.eu>
|
||||
|
||||
- Enable lua55 build.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sat Jan 10 09:48:18 UTC 2026 - Matej Cepl <mcepl@cepl.eu>
|
||||
|
||||
- It's %{lua_version}, not %{flavor}
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Dec 3 18:31:43 UTC 2025 - Matej Cepl <mcepl@cepl.eu>
|
||||
|
||||
- Proper multi-variant SPEC with properly set-up alternatives
|
||||
Fixes: https://src.opensuse.org/pool/lua-fennel/issues/1
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Nov 6 14:37:26 UTC 2025 - Matej Cepl <mcepl@cepl.eu>
|
||||
|
||||
- Update to 1.6.0:
|
||||
- New Features
|
||||
- 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.
|
||||
- Bug Fixes
|
||||
- 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.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Mar 11 22:21:38 UTC 2025 - Matej Cepl <mcepl@cepl.eu>
|
||||
|
||||
- Update to 1.5.3:
|
||||
- Bug Fixes
|
||||
- Correct a typo causing builds to fail on a fresh checkout.
|
||||
- Update to 1.5.2:
|
||||
- New Features
|
||||
- Added pack cross-Lua helper/polyfill to the compiler env
|
||||
alongside unpack
|
||||
- Precompile built-in macros, improving startup time
|
||||
significantly.
|
||||
- Accept :global-mangle false in compiler opts to disable
|
||||
global mangling.
|
||||
- Stop printing sparse tables as sequences by default.
|
||||
- Bug Fixes
|
||||
- Defaults on fennel.repl.view-opts are no longer clobbered
|
||||
by (fennel.repl {:view-opts {}})
|
||||
- Fix a bug where fennel.view allowed non-integer
|
||||
:max-sparse-gap settings.
|
||||
- Prevent incorrect fennel.view output like {1 :x 1.2 :y 2
|
||||
:z} -> ["x" "y" "z"] when max-sparse-gap is still satisfied
|
||||
by gaps between decimal keys.
|
||||
- Ensure fennel --plugin plug.lua loads the compiler env like
|
||||
it does for plug.fnl
|
||||
- Work around string formatting bug in Fengari.
|
||||
- Use options.warn when provided in the parser.
|
||||
- Fix an issue where unquoting a regular table would fail
|
||||
outside compile scope.
|
||||
- Update to 1.5.1:
|
||||
- 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.
|
||||
- Update to 1.5.0:
|
||||
- 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
|
||||
- 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, ..)
|
||||
- Update to 1.4.2:
|
||||
- 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
|
||||
- Update to 1.4.1:
|
||||
- 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. This accidentally caused incompatibility with
|
||||
coroutine.create.
|
||||
- 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.
|
||||
- Update to 1.4.0:
|
||||
- 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.
|
||||
- Update to 1.3.1:
|
||||
- New Features
|
||||
- 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
|
||||
- Update to 1.3.0:
|
||||
- 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
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Jan 25 10:52:05 UTC 2023 - Michal Suchanek <msuchanek@suse.de>
|
||||
|
||||
|
||||
107
lua-fennel.spec
107
lua-fennel.spec
@@ -1,7 +1,7 @@
|
||||
#
|
||||
# spec file for package lua-fennel
|
||||
#
|
||||
# Copyright (c) 2022 SUSE LLC
|
||||
# Copyright (c) 2025 SUSE LLC
|
||||
# Copyright (c) 2020 Fabio Pesari
|
||||
#
|
||||
# All modifications and additions to the file contributed by third parties
|
||||
@@ -17,16 +17,43 @@
|
||||
#
|
||||
|
||||
|
||||
Name: lua-fennel
|
||||
Version: 1.2.1
|
||||
%define flavor @BUILD_FLAVOR@
|
||||
%define mod_name fennel
|
||||
%if "%{flavor}" == "luajit"
|
||||
%define lua_value 52
|
||||
%else
|
||||
%define lua_value %(echo "%{flavor}" |sed -e 's:lua::')
|
||||
%endif
|
||||
%if 0%{?suse_version} > 1500
|
||||
%bcond_without libalternatives
|
||||
%else
|
||||
%bcond_with libalternatives
|
||||
%endif
|
||||
Version: 1.6.0
|
||||
Release: 0
|
||||
Summary: Lisp dialect that compiles to Lua
|
||||
License: MIT
|
||||
# FIXME: use correct group or remove it, see "https://en.opensuse.org/openSUSE:Package_group_guidelines"
|
||||
Group: Development/Languages/Lua
|
||||
URL: https://fennel-lang.org/
|
||||
Source0: https://git.sr.ht/~technomancy/fennel/archive/%{version}.tar.gz#/%{name}-%{version}.tar.gz
|
||||
BuildRequires: lua
|
||||
Source0: https://git.sr.ht/~technomancy/fennel/archive/%{version}.tar.gz#/lua-%{mod_name}-%{version}.tar.gz
|
||||
BuildRequires: %{flavor}
|
||||
BuildRequires: lua-macros
|
||||
BuildArch: noarch
|
||||
%lua_provides
|
||||
%if "%{flavor}" == ""
|
||||
Name: lua-%{mod_name}
|
||||
ExclusiveArch: do_not_build
|
||||
%else
|
||||
Name: %{flavor}-%{mod_name}
|
||||
%endif
|
||||
%if %{with libalternatives}
|
||||
BuildRequires: alts
|
||||
Requires: alts
|
||||
%else
|
||||
Requires(post): update-alternatives
|
||||
Requires(postun): update-alternatives
|
||||
%endif
|
||||
|
||||
%description
|
||||
Fennel is a lisp that compiles to Lua. Features include:
|
||||
@@ -46,19 +73,75 @@ Fennel is a lisp that compiles to Lua. Features include:
|
||||
%autosetup -p1 -n fennel-%{version}
|
||||
|
||||
%build
|
||||
make %{?_make_output_sync} %{?_smp_mflags} fennel
|
||||
|
||||
%check
|
||||
make %{?_make_output_sync} %{?_smp_mflags} test
|
||||
%make_build %{?_make_output_sync} PREFIX=%{_prefix} LUA="lua" fennel
|
||||
sed -i -e 's@#!%{_bindir}/env lua$@#!%{_bindir}/lua@' fennel
|
||||
|
||||
%install
|
||||
mkdir -p %{buildroot}%{_bindir}
|
||||
sed -i s:%{_bindir}/env\ lua:%{_bindir}/lua: fennel
|
||||
install -m 755 fennel %{buildroot}%{_bindir}
|
||||
%make_install %{?_make_output_sync} PREFIX=%{_prefix} install
|
||||
mv -v %{buildroot}%{_bindir}/fennel{,-%{lua_version}}
|
||||
chmod +x %{buildroot}%{_bindir}/fennel-%{lua_version}
|
||||
sed -i -e 's,# *\!%{_bindir}/.*lua.*$,#!%{_bindir}/%{lua_version},' %{buildroot}%{_bindir}/fennel-%{lua_version}
|
||||
|
||||
# prepare manpages
|
||||
for man in fennel.1 fennel-api.3 fennel-reference.5 fennel-tutorial.7 ; do
|
||||
base="${man%.*}"
|
||||
ext="${man#*.}"
|
||||
mv -v %{buildroot}%{_mandir}/man${ext}/${man} \
|
||||
%{buildroot}%{_mandir}/man${ext}/${base}.%{lua_version}.${ext}
|
||||
done
|
||||
|
||||
%if %{with libalternatives}
|
||||
# alternatives - create configuration file
|
||||
ln -sf %{_bindir}/alts %{buildroot}%{_bindir}/fennel
|
||||
mkdir -p %{buildroot}%{_datadir}/libalternatives/fennel
|
||||
cat > %{buildroot}%{_datadir}/libalternatives/fennel/%{lua_value}.conf <<EOF
|
||||
binary=%{_bindir}/fennel-%{lua_version}
|
||||
man=fennel.1,fennel-api.3,fennel-reference.5,fennel-tutorial.7
|
||||
EOF
|
||||
%else
|
||||
# update-alternatives
|
||||
mkdir -p %{buildroot}%{_sysconfdir}/alternatives/
|
||||
touch %{buildroot}%{_sysconfdir}/alternatives/fennel
|
||||
ln -sf %{_sysconfdir}/alternatives/fennel %{buildroot}%{_bindir}/fennel
|
||||
%endif
|
||||
|
||||
%check
|
||||
%make_build %{?_make_output_sync} test
|
||||
|
||||
%if %{without libalternatives}
|
||||
%post
|
||||
%{_sbindir}/update-alternatives --install %{_bindir}/fennel fennel
|
||||
%{_bindir}/fennel-%{lua_version} %{lua_value} \
|
||||
%{_mandir}/man1/fennel.1 fennel \
|
||||
%{_mandir}/man1/fennel.%{lua_version}.1 \
|
||||
%{_mandir}/man3/fennel-api.3 fennel \
|
||||
%{_mandir}/man3/fennel-api.%{lua_version}.3 \
|
||||
%{_mandir}/man5/fennel-reference.5 fennel \
|
||||
%{_mandir}/man5/fennel-reference.%{lua_version}.5 \
|
||||
%{_mandir}/man7/fennel-tutorial.7 fennel \
|
||||
%{_mandir}/man7/fennel-tutorial.%{lua_version}.7
|
||||
|
||||
%postun
|
||||
if [ "$1" = 0 ] ; then
|
||||
%{_sbindir}/update-alternatives --remove fennel
|
||||
%{_bindir}/fennel-%{lua_version}
|
||||
fi
|
||||
%endif
|
||||
|
||||
%files
|
||||
%doc README.md api.md changelog.md reference.md tutorial.md
|
||||
%license LICENSE
|
||||
%if ! %{with libalternatives}
|
||||
%ghost %{_sysconfdir}/alternatives/fennel
|
||||
%else
|
||||
%dir %{_datadir}/libalternatives
|
||||
%dir %{_datadir}/libalternatives/fennel
|
||||
%{_datadir}/libalternatives/fennel/%{lua_value}.conf
|
||||
%endif
|
||||
|
||||
%{_bindir}/fennel
|
||||
%{_bindir}/fennel-%{lua_version}
|
||||
%{lua_noarchdir}/fennel.lua
|
||||
%{_mandir}/man*/fennel*%{?ext_man}
|
||||
|
||||
%changelog
|
||||
|
||||
Reference in New Issue
Block a user