Skip to content

Releases: tfeb/tfeb-lisp-hax

let-values is better, process-declarations has a macro

08 Jan 14:43
v10.1.0
Compare
Choose a tag to compare

let-values now avoids rebinding in sequential forms, which can avoid unused variables in cases like

(let*-values (((a b) ...)
              ((c d) (f a b)))
  ... don't use a and b ...)

process-declarations has a new processing-declaration-specifier macro which makes things a little nicer. It is still unstable. let-values uses process-declarations for its declaration processing now.

A possibly-unstable process-declarations hack

25 Dec 14:48
v10.0.0
Compare
Choose a tag to compare

I'm just adding this now so other things can depend on it. The interface may be OK but I'm not sure.

let-values

20 Dec 09:00
v9.0.0
Compare
Choose a tag to compare

let-values provides four let-style macros which work with multiple values.

  • let-values and let*-values are like let and let* respectively
  • let-values* and let*-values* have semantics like multiple-value-call: they take all the values from a number of initforms and use them, in parallel and sequentially respectively.

As an example of let-values*

> (let-values* (((a b c) (values 1 2) 3))
    (+ a b c))
6

There are also improvements to valid-type-specifier-p: it now works by checking that typep can't signal an error, which I think can't be evaded the way SBCL evades things with subtypep.

Utilities: valid-type-specifier-p

13 Dec 12:25
v8.8.0
Compare
Choose a tag to compare

There's a function, valid-type-specifier-p which attempts (and perhaps actually does) answer the question 'is something a valid type specifier?'. It is as horrible as you would expect.

Bug fix and enhancements in with-accumulators

15 Jun 10:34
v8.7.0
Compare
Choose a tag to compare

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

13 Jun 14:17
v8.6.0
Compare
Choose a tag to compare

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

28 May 16:25
v8.5.0
Compare
Choose a tag to compare

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

02 May 08:22
v8.3.0
Compare
Choose a tag to compare

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

26 Aug 07:58
v8.2.0
Compare
Choose a tag to compare

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

04 Apr 14:01
v8.1.0
Compare
Choose a tag to compare

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.