Git log: commit ce043aeccb36cb00342616422490edc1d0883a8c
Author: Phil Hagelberg <phil@hagelb.org>
Date: Sat Oct 12 12:00:37 2024 -0700
Add instructions for running CI locally and ignore stderr.
See comments in tests/control for rationale.
commit ac0271339e125e51b424f830da67ed1f35c9f80b
Author: Phil Hagelberg <phil@hagelb.org>
Date: Sat Oct 12 09:27:25 2024 -0700
Temporarily depend on git in CI to avoid stderr output.
commit 9f7a92d955b2924d6acdae650d4bf8bdfd518220
Author: Phil Hagelberg <phil@hagelb.org>
Date: Sat Oct 12 08:52:28 2024 -0700
Add autopkgtest config.
commit cb338481d1a2fb984642d8d8e0e9fe5408e0222d
Author: Phil Hagelberg <phil@hagelb.org>
Date: Fri Oct 11 08:46:45 2024 -0700
Lock the Lua version to 5.4 for now.
We would prefer for it to work with any version of Lua, but we don't
yet have a way to make that work since there is no package.path
location that's available for all versions.
We could symlink it into all versions during the post-install script,
but that doesn't really solve the problem because someone could
install and switch to lua5.3 after fennel has been installed, which
would be missing the symlink.
commit 06b73c02aab17bfb79da26b2527e6b6ff9a7fbf9
Author: Blair Noctis <n@sail.ng>
Date: Thu Oct 10 16:43:07 2024 +0000
d/changelog: prepare -2 for buildd
commit 1cf3b73333bdff2a2e108041da90e340d9903e71
Author: Phil Hagelberg <phil@hagelb.org>
Date: Thu Oct 10 08:32:32 2024 -0700
Add readline to the recommends in debian/control.
commit 0711e302433344cab0b4b29db3c208cbe57dbedc
Author: Phil Hagelberg <phil@hagelb.org>
Date: Thu Oct 3 08:59:28 2024 -0700
Suggestions from Blair's review.
Add the repack suffix to the watch file, and export PREFIX in rules to
apply to all targets, not just install.
The advice about removing the clean override does not work, and
lintian doesn't like it when you close RFS bugs with the changelog.
commit 3b32b49d4d206b734e176e7aaf03b4ecc62b75a4
Author: Phil Hagelberg <phil@hagelb.org>
Date: Tue Aug 27 21:30:36 2024 -0700
Add allow-missing-git.patch.
commit f2f0c26fb92b9288b52c3355c9c3ec2e98e509f2
Author: Phil Hagelberg <phil@hagelb.org>
Date: Tue Aug 27 21:20:38 2024 -0700
Update README.source to mention pbuilder.
commit b191d07b88aa49da9b489e2f4dd69beaaf5b8780
Author: Phil Hagelberg <phil@hagelb.org>
Date: Tue Aug 27 08:27:07 2024 -0700
Add exclusion reference and configure watch for version mangle.
commit e2f4472e3462414abb3cc3ad985f40baf01f7399
Author: Phil Hagelberg <phil@hagelb.org>
Date: Sun Aug 25 14:20:18 2024 -0700
Looks like the +dfsg marker goes in the middle of the version.
commit 221b8c9090f8ac4c5daaf583946693ffbb1a189f
Author: Phil Hagelberg <phil@hagelb.org>
Date: Sun Aug 25 11:52:23 2024 -0700
Add explicit build-dep on git because of IRC announce script.
I figured if the package is built using gbp, then git is implied, but
... I guess it's not?
This script is meant for when we're running in CI; it's supposed to
have no effect outside CI, but no one has ever actually tried running
the tests on a computer that doesn't have git installed, because every
computer in the world has git installed.
commit ad09e4f87122410f678c67dfc5a5bd553368b23d
Author: Phil Hagelberg <phil@hagelb.org>
Date: Sat Aug 24 21:53:38 2024 -0700
Update changelog, fix vcs links.
commit 776b40fb2821a1f6f514371c4bc18cf3f1c7b583
Merge: 70a05d2 30a9e22
Author: Phil Hagelberg <phil@hagelb.org>
Date: Sat Aug 24 21:50:18 2024 -0700
Merge branch 'upstream/latest+dfsg' into debian/latest
commit 30a9e22e8357c551622632ae05aa158e56fdb318
Merge: a96d662 ae60a38
Author: Phil Hagelberg <phil@hagelb.org>
Date: Sat Aug 24 21:50:05 2024 -0700
Merge tag '1.5.1' into upstream/latest+dfsg
1.5.1
commit ae60a38029a570b8d37fe3d7cc6b2476646e10f5
Author: Phil Hagelberg <phil@hagelb.org>
Date: Sat Aug 24 18:34:54 2024 -0700
Release 1.5.1
commit 9fd0f98c1552e5a4ea17f303ba702b3e252311df
Author: Phil Hagelberg <phil@hagelb.org>
Date: Sat Aug 24 17:37:36 2024 -0700
Document .inf and .nan in the reference.
commit 70a05d242cda593a3b7fef499dff704677ccbb91
Author: Phil Hagelberg <phil@hagelb.org>
Date: Sat Aug 24 17:03:49 2024 -0700
Update debian changelog for 1.5.0.
commit 7210b1dd202e254746b3f48d79dc5a192da75ae0
Merge: 4cf885b a96d662
Author: Phil Hagelberg <phil@hagelb.org>
Date: Sat Aug 24 17:01:48 2024 -0700
Merge branch 'upstream/latest+dfsg' into debian/latest
commit abde8957f965bfec6d2fa5a038e32098befd35aa
Author: Phil Hagelberg <phil@hagelb.org>
Date: Fri Aug 23 17:59:42 2024 -0700
Add missing submodule dependency to fennel-bin makefile target.
Fixes https://todo.sr.ht/~technomancy/fennel/238
commit 3faf72bd70b234eea4308d616edc03ccb8094af3
Author: Phil Hagelberg <phil@hagelb.org>
Date: Tue Aug 20 18:31:58 2024 -0700
Backport special nan handling to bootstrap compiler.
commit ad650db10bb4c560dbbe6b2ce82897bee298d4fe
Author: Phil Hagelberg <phil@hagelb.org>
Date: Tue Aug 20 18:25:09 2024 -0700
Ensure that "nan" parses as a symbol (not a number) on 5.1.
commit b777eabc30063d34900dcef8bfce01401e6aef33
Author: Andrey Listopadov <andreyorst@gmail.com>
Date: Sun Aug 18 23:25:28 2024 +0300
add syntax for infinity and NaN
.inf and -.inf were added to represent positive and negative infinity.
.nan and -.nan were added to represent positive and negative NaN (not
a number) values. For some reason, on x86 in PUC Lua 0/0 gives -nan,
but nan on ARM, so to generate positive NaN portably across most Lua
implementations, the nan is first converted to a string and is checked
to contain a minus sign. LuaJIT and many other implementations do not
differentiate between NaN and negative NaN, so the tests only check
for positive NaN
commit ab53b9e713f5ed2bbd8ea65448e4b06f0256e55f
Author: Andrey Listopadov <andreyorst@gmail.com>
Date: Wed Aug 14 00:25:49 2024 +0300
Fix huge numbers NPE, make best effort at keeping original integer format
In Lua, numbers bigger than 1e+308 compile to inf. Prior to this
patch, Fennel compiled such numbers to inf too. However, inf is not
a number in Lua, neither it is a reserved symbol, so the expression
(+ 1e+309 1) would compile to (inf + 1) resulting in attempt to add
nil with a number, because Lua treats inf as a regular, unbound,
variable.
This patch also tries to keep the number format of big numbers, bigger
than 1e+13 and less than 1e+309 in the e-notation. Numbers less than
1e+14 are formatted as integers, as done in PUC Lua. Starting from
1e+14 the e-notation is used.
If the number is big enough to be considered inf by Lua, it is
compiled to (1/0), a portable way to express infinity, without relying
on the existence of the math table. -inf is compiled to (-1/0).
commit be85d6d7e324a899e6816bc889edbc37f19d0032
Author: Phil Hagelberg <phil@hagelb.org>
Date: Tue Aug 13 21:33:08 2024 -0700
Skip runtime check for table in matching when given a table literal.
Just a nice lil optimization.
commit cdb222c78e100a9150aeea0cefa0e48a8f867655
Author: Phil Hagelberg <phil@hagelb.org>
Date: Tue Aug 13 21:32:41 2024 -0700
Allow warn function to be provided in options table.
Fixes https://todo.sr.ht/~technomancy/fennel/225.
commit 289f9d5a420062cac7119ed0cefed070edbae421
Author: Phil Hagelberg <phil@hagelb.org>
Date: Sat Aug 10 18:07:05 2024 -0700
Explain how to verify signatures.
commit 9f03d3ab892c7ed314dd54bafc611a5607fc8f9d
Author: Andrey Listopadov <andreyorst@gmail.com>
Date: Sat Aug 10 23:17:33 2024 +0300
don't modify non-string and non-nil values in compiler.traceback
Lua's debug.traceback entry from the manual:
If message is present but is neither a string nor nil, this function
returns message without further processing. Otherwise, it returns a
string with a traceback of the call stack. The optional message string
is appended at the beginning of the traceback. An optional level
number tells at which level to start the traceback (default is 1, the
function calling traceback).
commit 7acc0b107012cb7653e29be10d79ab214914c8fb
Author: Phil Hagelberg <phil@hagelb.org>
Date: Fri Aug 9 19:36:27 2024 -0700
Clarify that --correlate is best-effort, not always reliable.
commit 923205411a075f4aa720a33f95b196c949a3bc44
Author: Phil Hagelberg <phil@hagelb.org>
Date: Fri Aug 9 19:36:14 2024 -0700
Fix repl tests on luajit.
commit 08d25cb53b243f083babbf3b9a13cd8eaaf2d39c
Author: Phil Hagelberg <phil@hagelb.org>
Date: Fri Aug 9 19:36:06 2024 -0700
Compile integers and floats differently.
On old versions of Lua we can't trust tostring to give reasonable
results for larger numbers.
commit 72890ff8806486b0595aca6c222cbf13fdae428c
Author: Phil Hagelberg <phil@hagelb.org>
Date: Thu Aug 8 08:54:37 2024 -0700
Remove ineffective script-as-library warning.
Turns out there is no way to do this reliably. =(
commit f80b947afbc9d7bde7fe521efffec5708593d148
Author: Phil Hagelberg <phil@hagelb.org>
Date: Thu Aug 8 08:54:15 2024 -0700
Fix column number for mismatched delimiter error.
commit f83dd129a3100d53f5e3545ca45da14ba340a6d7
Author: Phil Hagelberg <phil@hagelb.org>
Date: Tue Aug 6 17:48:07 2024 -0700
Add workaround for pandoc bug.
Older versions of pandoc try to set the font to a font that doesn't
actually exist. Older versions of groff don't care, but newer ones
will catch the mistake.
This has been fixed in pandoc 3 but we're not ready to declare a
dependency on a newer version since installing the whole haskell
toolchain is a lot for something that can be fixed with a trivial
sed.
https://github.com/jgm/pandoc/issues/9020
commit 4cf885bc74a8c60d01f036b6782c7f4c98570abe
Author: Phil Hagelberg <phil@hagelb.org>
Date: Mon Aug 5 21:33:52 2024 -0700
Address suggestions from review.
* Target "unstable" distribution instead of UNRELEASED.
* Update standards version
* Vcs-git/browser point to packaging repo, not upstream
* Workaround for dh_auto_clean not detecting makefile
* Point gbp at upstream/latest+dfsg branch
* Rename README.debian to README.source
commit a96d6629e9de16921db69dc2c0991585c1cba77f
Author: Phil Hagelberg <phil@hagelb.org>
Date: Mon Aug 5 20:44:12 2024 -0700
Remove CC-NC-licensed style guide.
commit 6fc86f89dc6c39458e78a470520aab2880ef9c33
Author: Phil Hagelberg <phil@hagelb.org>
Date: Mon Jul 29 21:52:43 2024 -0700
Check for setting globals in the test suite.
commit 26b716516bcb0806bb3403a3e88f9ca7d86d4c84
Author: Phil Hagelberg <phil@hagelb.org>
Date: Sun Jul 28 10:28:34 2024 -0700
Fix setReset in bootstrap compiler to set the actual root, not global.
commit 4fd1ce57282c6c104a8828ee9befe410960d9aa8
Author: jaawerth <jaawerth@gmail.com>
Date: Sat Jul 20 18:54:45 2024 -0400
test/irc.lua: `git remote get-url` to check origin
When checking that the CI job is running in the official git.sr.ht
repository, use `git remote get-url origin` instead of of
`git remote show origin` so it only provides the URL, and ':read('*l')`
to restrict the output to the first line.
Switching to `:read('*l')` when getting the branch as well, rather than
stripping the newline with gsub.
commit b7075cbd8fa7cde1173c370f149ddff83fd79a48
Author: jaawerth <jaawerth@gmail.com>
Date: Sat Jul 20 18:29:46 2024 -0400
editorconfig: Comment markdown trailing whitespace
In markdown, two trailing spaces at EOL guarantees a line break in the
output.
For now, leaving a comment explaining the setting, but this is a
somewhat obscure markdown feature, and we may want to consider leaving
it turned off since, even if we exlpicitly allow it in editorconfig, a
contributor seeing trailing whitespace in the wild is most likely to
simply assume it was in error.
commit 95c0752141bdc6a5aa11905a23a070d66190e5de
Author: Phil Hagelberg <phil@hagelb.org>
Date: Thu Jul 18 21:07:30 2024 -0700
Use git remote to determine whether to notify failures on IRC.
commit 348039b2cd718f20e91d41f729f335937ebbd8ce
Author: Phil Hagelberg <phil@hagelb.org>
Date: Thu Jul 18 20:46:02 2024 -0700
Fix IRC build failure notifications.
commit 1d8385286156f7a68dccf07e850cb2a567d1acc6
Author: jaawerth <jaawerth@gmail.com>
Date: Wed Jul 3 21:30:05 2024 -0400
prevent "sym" in macros from breaking quoting
Missed `sym` on the previous fix. Added a comprehensive test that
shadows the entire macro env (minus `comment`, which itself shadows a
special form) to prevent any new bugs of this kind from cropping up.
commit 7bec5273695852a971dd6996d1796cee6badc995
Author: jaawerth <jaawerth@gmail.com>
Date: Wed Jul 3 17:44:24 2024 -0400
fix macro quote `list`/`sequence` shadowing bug
Shadowing "list" or "sequence" syms in a macro was breaking `(do ...)
and `[...] respectively.
commit dd8d4cff8419187971ff8f41e363ef41df94aa5c
Author: jaawerth <jaawerth@gmail.com>
Date: Wed Jul 3 16:26:21 2024 -0400
fix dynamic set support for globals + hashfn args
* Fixes `(set (_G :x :y) 1)`, `#(set $ :x $2)`, etc
* Improves error message when invoking dynamic set without keys
In the case of globals and hashfn args, a custom assertion on `(.
scope.manglings (tostring target))` was causing a compiler error. These
are already accounted for in symbol-to-expression, which
dynamic-set-target invokes, so we can simply omit the assertion. This
will help avoid bugs resulting from maintaining the same logic in more
than one place.
commit 22efcaf6d15184d409a3a4e44d2fcd59e1bf6827
Author: Phil Hagelberg <phil@hagelb.org>
Date: Tue Jun 25 20:07:41 2024 -0700
Move allowed-globals to root options instead of top-level var.
commit 6cc338849e9b68789ab1bd67f3f8f2a95d029891
Author: jaawerth <jaawerth@gmail.com>
Date: Tue Jun 25 21:53:12 2024 -0400
add test case for `,doc <non-callable-tbl>`
commit 323ab2a296eee557d916e76d99b17618fd628523
Author: jaawerth <jaawerth@gmail.com>
Date: Tue Jun 25 21:36:22 2024 -0400
bugfix: fennel.doc shouldn't mutate :fnl/arglist
Calling `fennel.doc` (and thus also using the REPL `,doc` command) was
mutating the :fnl/arglist metadata by inserting the target name in front
every time. This resulted in behavior like:
>> ,doc while
(while condition ...)
The classic while loop. Evaluates body until a condition is non-truthy.
>> ,doc while
(while while condition ...)
The classic while loop. Evaluates body until a condition is non-truthy.
commit 765867f46ada1bbbf8bec6e91a45bca0b961dec0
Author: Phil Hagelberg <phil@hagelb.org>
Date: Sun Jun 23 12:38:53 2024 -0700
Link to fennel.lua in setup.md.
commit 101b666712f2baab76d5b9aec25fb0247668b2cf
Author: Phil Hagelberg <phil@hagelb.org>
Date: Sun Jun 23 10:11:50 2024 -0700
Bump version to 1.5.1-dev.
commit ee3e3c52a7bfb43d5e2461a303cd2eae0078c20b
Author: Phil Hagelberg <phil@hagelb.org>
Date: Sun Jun 23 10:04:31 2024 -0700
Release 1.5.0
commit ef571d40698945d19897f041855ab0a9e1522526
Author: Phil Hagelberg <phil@hagelb.org>
Date: Sat Jun 22 17:08:27 2024 -0700
Move release checklist to makefile.
commit ead849c45fb20430fb7727dfc12d8d6df294229e
Author: Phil Hagelberg <phil@hagelb.org>
Date: Thu Jun 20 22:05:00 2024 -0700
Clarify changelog pick-values.
commit 0cc9ce84b644fa54ee30f2870a9c4a83c02f1eef
Author: Phil Hagelberg <phil@hagelb.org>
Date: Thu Jun 20 22:03:06 2024 -0700
Reintroduce values-flattening.
commit e73a118b75a9651c6637789a122bf6c1c5bb74f2
Author: Phil Hagelberg <phil@hagelb.org>
Date: Thu Jun 20 21:48:06 2024 -0700
Bring values back to the old behavior.
We'll revisit it after the release with a more comprehensive plan.
commit 030d0e5419302c3cb57ebd3b9eb14fb64d209c08
Author: Phil Hagelberg <phil@hagelb.org>
Date: Wed Jun 19 22:36:43 2024 -0700
Flatten out values to avoid issues with nested values.
commit ec22c262705a8ecace0bb8e7cc24e0906654a36e
Author: Phil Hagelberg <phil@hagelb.org>
Date: Wed Jun 19 21:33:35 2024 -0700
Prevent globals from being set in test suite.
commit 95e652f48fb60606ce8586a7e9e43661d903d0fd
Author: jaawerth <jaawerth@gmail.com>
Date: Fri Jun 14 19:22:09 2024 -0400
remove IIFE's from (values ..) destructuring
NOTE: This commit builds on dbb10b59250a1dbcd2b7a86d0ef5ae0e538b0388,
which changed `values` to propagate nval. This commit is an example that
builds further on that to eliminate more IIFE's.
For the cases (local x (values (do 1))) or (pick-values 2 :x (do :y)),
we get a remnant IIFE generated by the `do`. As of commit
, `values` is now propagating
nval when compiling its operands, but this doesn't account for
assignment, where nval is known, but not propagated by
compiler.destructure. In this case, while we could make a wider change
to destructure, here we parse opts.target from `values` to resolve nval.
Resolving nval successfully removes the IIFE's, but as a side effect,
introduces order of execution edge cases - which may or may not
matter, since order of operations is not guaranteed here, but it's
surprising behavior when it changes the outcome.
--- Example 1:
See the last new test case introduced by this commit in `test-values` vs
the first in `pick-values`. Because there's no target, this code:
(do (var i 0) (fn i++ [] (set i (+ 1 i)) i)
[(values (i++) (values (do (i++))))])
compiles the final `(do (i++))` to an IIFE, so it outputs [1 2].
However, as a result of this patch, the same code with `pick-values`:
(do (var i 0) (fn i++ [] (set i (+ 1 i)) i)
[(pick-values 2 (i++) (values (do (i++))))])
eschews the IIFE, outputting [2 1]. It compiles to
local i = 0
local function _2b_2bi()
i = (1 + i)
return i
end
local pv_1_, pv_2_ = nil, nil
local _3_
do
_3_ = _2b_2bi()
end
pv_1_, pv_2_ = _2b_2bi(), _3_
return {pv_1_, pv_2_}
While order of execution isn't guaranteed, as one would still normally
expect the same result between `values` and `pick-values` when dealing
with a fixed number of values.
---- Example 2:
This one is likely less of an issue, but I mention it for completeness.
When `(values)` calls are nested, the result of the expression is still
the same in the absence of effects, but with side effects order of
execution is changed.
Nontrivial expressions (lists) passed to (values ...) beyond `nval` will
be treated as a side effect and pulled out to run *before* the
assignment/binding. Nesting `(values)` is unnecessary, but the compiler
*does* allow it. For a live example, see the changed test case from [1 2
4] to [2 3 4], which became necessary after this patch.
----
For example, given: `(pick-values 2 (i++) (i++) (values (i++) (i++)))`
or equivalent: `(local (x y) (values (i++) (i++) (values (i++) (i++))))`
The Lua output is in the form of:
local pv_18_, pv_19_ = nil, nil
_2b_2bi()
pv_18_, pv_19_ = _2b_2bi(), _2b_2bi(), _2b_2bi()
The number of exprs "lifted" in this way depends on how many calls occur
inside the nested (values). For example:
(local (x y) (values (values (i++) (i++) (i++) (i++))))
and:
(local (x y) (values (i++) (values (i++) (i++) (i++))))
BOTH compile to something like:
local x, y = nil, nil
_2b_2bi()
_2b_2bi()
x, y = _2b_2bi(), _2b_2bi()
But a flat `(local (x y) (values (i++) (i++) (i++) (i++)))` emits
local a1, b1 = _2b_2bi(), _2b_2bi(), _2b_2bi(), _2b_2bi()
as expected.
commit fd8e6d6e42e2546b6a8185d4b58d1eff0213b962
Author: Phil Hagelberg <phil@hagelb.org>
Date: Tue Jun 18 19:23:55 2024 -0700
Bring faith back to released version.
commit 21ff7bcc24ae41eaafb12b5931605bba955ef767
Author: jaawerth <jaawerth@gmail.com>
Date: Tue Jun 18 18:19:11 2024 -0400
Correctly register irc.lua as the faith exit hook
commit 6c6589dbe0f800d9a125166e486f1dd5a54fd31c
Author: jaawerth <jaawerth@gmail.com>
Date: Tue Jun 18 18:07:51 2024 -0400
guard faith against wrongly skipping os.exit
Also fixes the exit hook so it passes in the failure count.
Running Fennel's REPL test suite had been leaking _G.___replLocals___
into the global scope, causing faith to skip invokign (os.exit 1) on
test failure, as it uses _G.___replLocals___ to check whether it's in a
REPL.
This change hardens against this happening by caching
_G.___replLocals___ *before* invoking any tests suites, as this is an
easy enough oversight in any test suite making use of a Fennel REPL.
Ideally, this leakage should be prevented entirely by changing
fennel.repl; this is more of a stopgap measure in the meantime, in
addition to preventing test/repl.fnl from leaking these globals in the
first place.
We should also consider whethether faith should run its test suites in a
(permissive) sandbox environment to prevent such things from occurring.
commit 4bbb020b4a393ef625a69233101f751b092f2141
Author: jaawerth <jaawerth@gmail.com>
Date: Tue Jun 18 18:04:48 2024 -0400
stop REPL tests from leaking _G.___replLocals___
Running the REPL on the global env in the test/repl.fnl suite was
leaking both _G.___replLocals___ and _G.___repl___ into the same global
env used by faith.
This was giving a false positive to faith's check against
_G.___replLocals___ to skip invokign (os.exit 1), resulting in every
test run not using PUC Lua 5.1 (which skips the REPL tests) to exit with
a zero status code even when test fail.
This change both saves off any existing values in a setup-all hook (just
in case the tests are somehow run from a REPL) and restores them
afterwards, as well as clearing them between test.
commit 44a930d741c86c238217c3f3a8001b8962299980
Author: jaawerth <jaawerth@gmail.com>
Date: Tue Jun 18 14:16:23 2024 -0400
fix regression in REPL ,doc lookup for specials
There was a regression in bb597e35f9ea0b939a9534eb0634f4ce22c2c7fd that
broke the `,doc` lookup for special forms. Corrected it, and added a
test case to prevent future regressions.
commit 82b621241496a5585d60313a65923b61d8d3b0ac
Author: jaawerth <jaawerth@gmail.com>
Date: Tue Jun 18 14:14:08 2024 -0400
optimize gensym fix
Minor, but no need to walk up the same supplied scope on every call to
next-append.
commit d8fbccffca33bf2ade4f3fd0ffd5842de6e27d55
Author: Phil Hagelberg <phil@hagelb.org>
Date: Mon Jun 17 21:13:09 2024 -0700
Allow gensym to be called when there's no utils.root scope set.
commit 52e0071cd637076bbac29cd3801b33c2cec56de6
Author: Phil Hagelberg <phil@hagelb.org>
Date: Mon Jun 17 21:12:48 2024 -0700
Apply optimized table destructure to generalized set too.
Previously we wouldn't optimize this form:
(set [(. tbl :y) (. tbl :x)] [tbl.x tbl.y])
commit 9e8b23af30d5fbdaecf206664c7a6789160fd5ec
Author: Phil Hagelberg <phil@hagelb.org>
Date: Mon Jun 17 08:45:05 2024 -0700
Replace parse-literal hook with parse-form hook.
commit c549d976635d54c88e1a7fcec98af3bdfcb67b3b
Author: jaawerth <jaawerth@gmail.com>
Date: Mon Jun 17 00:36:07 2024 -0400
refactor out unnecessary comp helper
The comp helper function was only being used in one place, easily
replaceable by a hashfn.
commit b1ccc4e97338e0755e186c5b06f4c7d930efc7d6
Author: Phil Hagelberg <phil@hagelb.org>
Date: Sun Jun 16 14:17:15 2024 -0700
Warn after checking for malformed syms, not before.
commit 6f98b0a983e5bbc61e79ea4f4a7ac11588e1de08
Author: XeroOl <xerool@protonmail.com>
Date: Fri Jun 14 18:19:21 2024 -0500
tset add assert for bad targets
Previously, (tset 1 1 1) would compile to 1[1] = 1, which is not
syntactically valid lua. This change makes it a fennel compiler error
instead of a lua compiler error.
Also, (tset true 1 1) is now a compiler error.
It hurts my soul, but `(tset :foo 1 1)` now correctly compiles to
("foo")[1] = 1, with the parentheses wrapping the string.
commit 73929a53afd54d78fb29dc0c037110fdc37ac4db
Author: Phil Hagelberg <phil@hagelb.org>
Date: Fri Jun 14 17:42:57 2024 -0700
Allow fn names to escape into surrounding scope.
Reverts a change from f64daa8.
This isn't ideal, but we need it to preserve backwards-compatibility.
commit 19089bc70c15c0e441d06ef3b38b30aeaf870334
Author: Wade Rance <wade.rance@capitalone.com>
Date: Thu Jun 13 16:49:32 2024 -0400
Fix bug in apropos REPL commands
Fix bug described in https://github.com/bakpakin/Fennel/issues/462
by stripping `_.G` from the input rather than the output of the
`apropos*` function.
commit 752114a5c6c31da7a715a5572f14ddc14d380663
Author: XeroOl <xerool@protonmail.com>
Date: Fri Jun 14 10:09:23 2024 -0500
remove test for missing whitespace compile error
commit abf480ef987945b4acf5120f03e14d10d1eefca4
Author: XeroOl <xerool@protonmail.com>
Date: Fri Jun 14 00:28:29 2024 -0500
clean up various things
commit dbb10b59250a1dbcd2b7a86d0ef5ae0e538b0388
Author: XeroOl <xerool@protonmail.com>
Date: Fri Jun 14 00:24:33 2024 -0500
forward nval to last child of (values)
commit 023dba6e09e9bde49d9065e7816f8bd1b376f537
Author: Phil Hagelberg <phil@hagelb.org>
Date: Thu Jun 13 21:58:48 2024 -0700
Remove luarocks packaging from main makefile.
commit 92eaa814b4431f3ba428165c9933a2f7fa062fb0
Author: Phil Hagelberg <phil@hagelb.org>
Date: Thu Jun 13 21:54:42 2024 -0700
Downgrade missing whitespace to a warning.
commit fe3f489d4526aafc3f73dac4b84fb03ddf8a9b03
Author: Phil Hagelberg <phil@hagelb.org>
Date: Thu Jun 13 21:54:32 2024 -0700
Fix a bug in quote that would fail on some patterns.
commit 06e2e7ce7a35a592db302a1dddcc2278e7e84142
Author: jaawerth <jaawerth@gmail.com>
Date: Sun Apr 7 19:53:46 2024 -0400
re-implement pick-values as a special
Doing so introduces a number of optimizations and improvements:
For (pick-values 1 ...), instead of generating syms to assign and
truncate the return values accordingly, we just compile the target
expression(s) and wrap the result in ( <ret> ), preserving side effects
in the process. For example, `(pick-values 1 (foo))` emits `(foo())`
For n = 0, we simply preserve side effects; the result will be either no
values or nil depending on outer context. `[(pick-values 0 ...)]` will
be `{}`, but `[x (pick-values 0 :y) :z]` will result in
`{'x', nil, 'z'}}`.
For all n > 1, instead of the `let` form with `n` bindings in the macro
version, we simply use destructure to generate the declaration +
assignment of n syms. This reduces the number of unnecessary IIFE's even
for n > 1.
commit 50acbdf08ccd73a965e8200410fc518c363cb479
Author: Phil Hagelberg <phil@hagelb.org>
Date: Wed Jun 12 22:29:27 2024 -0700
Update to faith testing library version 0.2.0.
commit 4217c2fdd86a69aae020452a709b8a980cc654d1
Author: Phil Hagelberg <phil@hagelb.org>
Date: Tue Jun 11 21:45:18 2024 -0700
Allow plugins to be written in Lua.
commit b1752cb86f15194daf6db42b26d47a20e8097693
Author: Phil Hagelberg <phil@hagelb.org>
Date: Mon Jun 10 22:24:13 2024 -0700
Add getinfo as fennel-sourcemap-aware equivalent of debug.getinfo.
commit 566a9b6345f97509c52c08c8d2a0db42533010f7
Author: XeroOl <xerool@protonmail.com>
Date: Mon Jun 10 18:49:52 2024 -0500
Allow & and &as in the same destructure
& can go before &as now.
[head & tail &as whole]
This code isn't well prepared for any more `&` options, so we'll have to
think more about how to implement that if we ever add more.
commit 3f8b841e3b25be0a18e1049bbb9c2a647faccd66
Author: XeroOl <xerool@protonmail.com>
Date: Mon Jun 10 13:28:09 2024 -0500
Add more `tostring()` to fix tests for Lua 5.1
Fixes the previous commit so that it works in Lua 5.1
commit 65b1e0310e848203e21cfaf6d0e1398b5a038192
Author: XeroOl <xerool@protonmail.com>
Date: Mon Jun 10 12:13:46 2024 -0500
Methods emit locals instead of IIFE
Methods aren't responsible for short circuit protection, so
this commit removes the IIFE case and replaces it with a binding case.
Also, the short-circuit logic is moved to (method-special-type) and
so that (and/or/if) can correctly predict if methods will emit
statements.
commit 88dbf21f0226863bae4e72317993081e34e9c47d
Author: jaawerth <jaawerth@gmail.com>
Date: Mon Jun 3 13:08:46 2024 -0400
fix scm-2 rockspec to work with current fennel
The LUADIR needed to be set as LUA_LIB_DIR in the makefile for it to
install the fennel.lua library in the right place.
commit 2ed24c70e04747239dc94f13f820ca7cc31e90c4
Author: Phil Hagelberg <phil@hagelb.org>
Date: Sun Jun 2 19:19:18 2024 -0700
Compile tabs to \t instead of \9.
commit bdae6735b931d2da7591c4da1bd699302cda3895
Author: Phil Hagelberg <phil@hagelb.org>
Date: Fri May 31 21:47:02 2024 -0700
Clarify a few things in readme and contributing guide.
commit 2e7b64228fc6587c975fc12c24015950d15d36e0
Author: Phil Hagelberg <phil@hagelb.org>
Date: Fri May 31 21:46:34 2024 -0700
Remove mentions in code of conduct which imply we have multiple channels.
commit a35c5e08c4c5b3cdc38a2f180e3abc827ff660d6
Author: Phil Hagelberg <phil@hagelb.org>
Date: Fri May 24 08:57:51 2024 -0700
Add deprecation warning for direct multivalues in operators.
Hopefully this will be removed in 2.0, because it implies that
operators support multivalues in general, when in fact they only
support them when put directly in the args, which there's no reason
ever to do.
commit 724fea060d93f6e567ad665d43c4195d3ec62405
Author: jaawerth <jaawerth@gmail.com>
Date: Wed May 22 18:41:23 2024 -0400
make macrodebug emit valid code on cyclic ASTs
When macrodebug expands to a cyclic/recursive AST like
(macrodebug (case [1 2] (where (or [x y] [y nil x]) (= 3 (+ x y))) x))
it currently emits placeholders @1, @2, etc due to the implicit
`:detect-cycles? true` passed to fennel.view, resulting in invalid
fennel syntax in the serialized output.
This change simply disables detect-cycles. This fixes the case where
a macro expands to an AST with references to node higher in the tree
like the above, which covers most edge cases.
This makes it *possible* to emit an infinitely recursive AST, which with
this change would result in a massive expansion that eventually gives up
upon hotting the maximum depth for fennel.view, but this is a mutch
rarer edge case.
This should eventually be revisited to any failure cases involving
infiniten AST's serialization can give a useful compiler error, however.
Ideally, this will eventually be covered by @-macros such that @<n>
forms can actually be evaluated as fennel syntax back into a
self-referencing table.
commit 7dd6b6a47caa1d31df0a65ce2255f3f1053666a7
Author: Phil Hagelberg <phil@hagelb.org>
Date: Tue May 21 19:43:18 2024 -0700
Support string pattern for plugin :versions.
commit fe8eeb287ac66e4dea86c10ab49bd6b679643022
Author: Phil Hagelberg <phil@hagelb.org>
Date: Tue May 21 19:42:01 2024 -0700
Catch errors in collect when no value is given.
commit f57c6257b0bc9dcba79658c2f615f65d6464cb90
Author: Phil Hagelberg <phil@hagelb.org>
Date: Tue May 21 17:39:21 2024 -0700
Add referent to AST symbols that refer to locals.
Currently undocumented, but this could be very useful for 3rd-party
tooling that wants to get richer data out of the AST, for example
linters or structural editors.
commit 6c136e55e55813ebdb05c73e39397ea9c62c68d1
Author: XeroOl <xerool@protonmail.com>
Date: Tue May 21 11:55:58 2024 -0500
parse-literal hook add stack argument
Providing the stack table here gives more options to plugins that are
trying to save ast info for literals.
commit ec7c639c01628e138626684a84dce5ec0f6de2fd
Author: XeroOl <xerool@protonmail.com>
Date: Tue May 21 11:52:14 2024 -0500
lambda doesn't check args that start with _
We decided in the usergroup on May 18, 2024 that we should treat
anything that starts with _ the same way as we treat _ in lambda. I
think this makes it more consistent with match/case patterns.
Also, I changed it from `match` to `find` for superstitious performance
reasons.
I imagine that str:match has to construct a string and str:find
doesn't, but I've never tested if it actually affects performance.
commit a07f0afc859913d1fe5792c525813541feff472e
Author: XeroOl <xerool@protonmail.com>
Date: Mon May 20 19:13:39 2024 -0500
symmeta refactor
declare-local no longer takes in an optional meta. Now, declare-local is
responsible for creating the symmeta. All other places that create
symmeta are removed. Now, manglings, unmanglings, and symmeta are all
handled in the same way.
commit 5a090a8001892e91dd6196aedcae1fb127b22d40
Author: esbudylin <budylin.egor@gmail.com>
Date: Sun May 19 13:00:29 2024 +0400
Fix typos in code comments
commit 9813acfa65cd63bca54d333fa757cf2fb6406fa3
Author: Phil Hagelberg <phil@hagelb.org>
Date: Thu May 16 20:33:59 2024 -0700
Merge branch 'optimize-table-destructure'
commit c6e6b4c515b691197b85855e4e02ac2876d9fbf3
Author: Amin Bandali <bandali@gnu.org>
Date: Mon Feb 5 14:44:16 2024 -0500
Add debian/README.Debian and set debian/changelog to UNRELEASED
debian/README.Debian explains the bootstrap compiler, and documents
the process of importing new upstream releases into this repository.