Improvements to uLisp for the RP2040


#1

A new ARM version of uLisp, Version 4.1a, adds several improvements for boards based on the Raspberry Pi RP2040 processor:

  • Speed: A significant speedup of over 1.5.
  • Workspace: Increased from 15488 objects to 22912 objects.
  • Ports: Support for up to two Serial ports, two SPI ports, and two I2C ports, depending on the pinouts available on specific boards. Version 4.1 only supported one of each type of port.
  • Reading and writing port registers: Support for the register function, to read and write port registers.
  • Support for additional boards: the Adafruit Feather RP2040 and the Adafruit QT-Py RP2040.

Most of these improvements are a result of using Earle Philhower’s excellent Raspberry Pi RP2040 Boards core, rather than the Arduino Mbed OS RP2040 Boards core.

Here are the benchmark results:

Version 4.1 Version 4.1a Speedup
tak 8.4 s 5.6 s 1.5
q2 20.8 s 13.0 s 1.6
fft 282 ms 174 ms 1.6

The tak and q2 benchmarks are highly recursive functions using integer arithmetic. The fft benchmark tests floating-point arithmetic. See Benchmarks and Fast Fourier Transform.

Download ARM uLisp Version 4.1a here: Download uLisp.

For more information about the RP2040 boards see: RP2040 boards.

For more information about using the register function on the RP2040 see: Programming ARM registers.