Releases: tfeb/tfeb-lisp-hax
Bug fix and enhancements in with-accumulators
with-accumulators
was broken in the last release: it would get the arglist of the local function wrong. This fixes that and adds a new by
argument:
(with-accumulators ((a + :by 1))
...
(a)
...)
will make the local function have no arguments and step by the value of by
. by
is a form evaluated in the current lexical environment for each call.
Utilities enhancements, minimal documentation
org.tfeb.hax.utilities
was previously undocumented. It now is slightly documented but is explicitly not stable.
thunk
and thunk*
are new: this new version is because Štar depends on these now, and I wanted to be able to say that you need at least 8.6.0
Enhancements to collecting and trace-macroexpand
with-accumulators
now can provide defaults for the accumulator functions it defines.
trace-macroexpand
now has its own stream, *trace-macroexpand-output*
, which by default is a synonym stream to *trace-output*
.
Both these changes are (should be!) compatible.
There was no 8.4.0 release.
Catchup release for Štar
This includes an undocumented with-names
macro in utilities, which Štar relies on. There are no other changes since 8.2.1
An iteration macro for multiple lists: dolists
simple-loops
now has dolists
, which is like dolist
but for multiple lists. It also has fine control over what values, if any, are returned by the iteration.
Improvements to slog and collecting
slog. The default condition type used by slog
when its first argument is a string is now controlled by a variable. There is support for resetting the precision time offset, which is needed for dumping & restoring images.
collecting. collect-into
can now collect into the local functions defined by collecting
/ with-collectors
, not just the objects made by make-collector
.
New iterate variants, some cleanups and improvements
There is a new iterating
macro which is a fancier version of iterate
which uses keyword arguments for the local function: this is slower but quite powerful. Both iterate
and iterating
have starred variants which bind sequentially.
The utilities no longer depend on other hacks.
Metatronic macros now exports some functionality which can helps you to write your own metatronic macros.
Macro tracing can control *print-circle*, metatronic macro improvements
*trace-macroexpand-print-circle*
is now the default for *print-circle*
during macro tracing. It's useful to set it to true so you can see which gensyms are the same
Metatronic macros has some small improvements, and supports a version of define-compiler-macro
(unclear is this is useful but it should be there).
Heavily revised slog
slog now does a lot less pathname handling than the previous one. It may not be completely compatible, especially around when log files are created and so on. But I think it is better.
Small fixes on 6.0.0
There was a missing test in the publication repo.
Metatronic is now more configurable.