Skip to content

Releases: tfeb/tfeb-lisp-hax

Utilities: symbolify

28 Feb 13:11
v10.3.0
Compare
Choose a tag to compare

symbolify makes symbols from concatenated string designators. It avoids the nightmare of (make-symbol (concatenate 'string (symbol-name s) "-P")) and (intern (make-symbol (concatenate 'string (symbol-name s) "-P"))) which tends to pervade complicated macros.

object-accessors: named array element access

06 Feb 14:16
v10.2.0
Compare
Choose a tag to compare

with-named-array-references provides a way of giving names to elements of an array. This is a substrate on which you can map 'structures' onto chunks of an array, which is useful for fast but readable floating-point code.

parse-docstring-body from the utilities is also now correct, or less incorrect.

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