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.
Among the 1 debian patch available in version 1.5.1+dfsg-2 of the package, we noticed the following issues: