Releases: tfeb/tfeb-lisp-hax
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.
Metatronic macros, simple logging
Metatronic macros make writing less unhygienic macros in CL easier: instead of the awful
(defmacro with-foo (...)
(let ((vn (gensym)))
`(... ,vn ... ,vn ...)))
You can write
(defmacro/m with-foo (...)
`(... <vn> ... <vn> ...))
Simple logging is a logging framework based on the observations that conditions do not have to represent errors or warnings, and that condition handlers are invoked before the stack is unwound. Conditions are, in fact, extremely suitable objects to represent log events.
Read version from file
This changes the ASDF system declarations to read the version from a file. So, finally, version numbers might be consistent.
Also some small changes to define-functions
.
Readers deal with *read-suppress*
Both read-package
and stringtable
paid no attention to *read-suppress*
and so almost certainly did the wrong thing when it was true: certainly in the case of read-package
, less so in the case of stringtable
. They both now pay attention to it and try to do the right thing.
Note: what the right thing is is not completely clear for stringtable
: what it does is to call handlers, but ignore what they return. It does this because handlers can absorb arbitrary characters from the stream.