Like the Serpente board, the XIAO board from Seeedstudio is based on the Atmel SAMD21 microcontroller. The 32bit ARM® Cortex®-M0+ MCU runs at 48MHz and has 256KB Flash and 32KB SRAM. The size of only 20x17.5mm is probably the minimum that is currently possible.
The ulisp-arm.ino image (v3.1) occupies (29%) of the program memory space (78436 of maximum 262144Bytes).
Unfortunately the XIAO board does not have additional flash memory like the Serpente board does. But the board costs only one third.
uLisp in the ARM version 3.1 was easy to install and runs out-of-the-box. It compiled with Arduino 1.8.10 and the corresponding core for the board without problems. Only the bootloader sometimes needed a reset. To do this, the two pins on the board must be short-circuited twice in a short sequence. Then the orange LED lights up permanently and the firmware can be loaded.
Regarding the performance I can report the following tests:
The Fibonacci sequence (fib 23) takes 9 seconds:
3034> (for-millis () (print (fib 23))) 28657 9259
Calculating the CRC-32 takes 97 milliseconds:
2885> (for-millis () (print (crc32 "The quick brown fox jumps over the lazy dog"))) 1095738169 97
The Takeuchi function (tak 18 12 6) takes 14 seconds:
2988> (for-millis () (print (tak 18 12 6))) 7 14213
When using the ARM assembler to implement the Takeuchi function, the calculation time is reduced to 27 milliseconds:
391> (for-millis () (print (tak 18 12 6))) 7 27
The assembler itself has used up a lot of the available lisp cells but it works.
Now all I have to do is come up with some funny and (or) useful applications…