Download uLisp

Versions

There are currently five released versions of uLisp. Download the correct one for your platform:

AVR version

Download the latest AVR version of uLisp for the Arduino Uno, Arduino Mega 2560, and ATmega1284 platforms here:

uLisp AVR Version 3.0b - 11th January 2020

or get it from GitHub at https://github.com/technoblogy/ulisp.

ARM version

Download the latest ARM version of uLisp for the Arduino Zero, Arduino MKRZero, Adafruit M0 boards, Adafruit M4 boards, Adafruit nRF52840 boards, BBC Micro Bit, and MAX32620FTHR platforms here:

ARM Version 3.1 - 20th February 2020

or get it from GitHub at https://github.com/technoblogy/ulisp-arm.

STM32 version

Download the latest STM32 version of uLisp for the Maple Mini and Blue Pill platforms here:

uLisp STM32 Version 3.0b - 11th January 2020

or get it from GitHub at https://github.com/technoblogy/ulisp-stm32.

ESP version

Download the latest ESP version of uLisp for the ESP8266 and ESP32 platforms here:

uLisp ESP Version 3.0b - 11th January 2020

or get it from GitHub at https://github.com/technoblogy/ulisp-esp.

MSP430 version

Download the latest version of uLisp for the Energia MSP430 platforms here:

uLisp MSP430 Version 2.7c - 20th June 2019

or get it from GitHub at https://github.com/technoblogy/ulisp-msp430.

RISC-V version

Download the latest RISC-V version of uLisp for the Sipeed Maixduino, MAiX One Dock, and MAiX BiT boards here:

RISC-V Version 3.1a - 29th March 2020

or get it from GitHub at https://github.com/technoblogy/ulisp-riscv.

Changes in Version 3.1

ARM Version 3.1 of uLisp incorporates an ARM assembler which allows you to generate machine-code functions, integrated with Lisp, written in ARM Thumb code mnemonics.

In addition, Version 3.1 features graceful recovery from stack overflows, support for the CLUE and ItsyBitsy Adafruit nRF52840 boards, support for SPI1 where available, new functions set and boundp, more efficient use of symbols, and in-line comments.

Changes in Version 3.0

Version 3.0 features bug fixes. Version 3.0a adds the #. read-time eval macro.

Installing uLisp

This download is a single text file. To compile it in the Arduino or Energia IDE either save it as a text file and rename it to a .cpp file, or copy and paste the text into a new empty project file.

Download the latest Arduino IDE from arduino.cc, or the latest Energia IDE from energia.nu.

To install uLisp on the BBC Micro Bit see BBC Micro Bit.

If you're using uLisp with the Arduino IDE on Debian or OpenBSD see these threads on GitHub: https://github.com/technoblogy/ulisp/pull/2 and https://github.com/technoblogy/ulisp/pull/22.

Note that saved images are not generally compatible between different versions of uLisp.

Compile options

The uLisp sources provide the following compile options:

Option Default Description
checkoverflow * enabled Generates an error if underflow/overflow occurs in arithmetic operations.
resetautorun disabled Loads, and optionally runs, an image using load-image on reset.
printfreespace enabled Prints the number of free objects before the uLisp prompt.
serialmonitor enabled Allows the use of the serial monitor to download programs.
printgcs disabled Prints the amount of space reclaimed after each garbage collection.
sdcardsupport disabled Provides SD card support using with-sd-card.
lisplibrary disabled Evaluates the Lisp definitions provided in the Lisp Library on reset.

* Not applicable to the versions with floating point.

Older versions

See Older versions.

Test suites

The following files contains test suites I use for testing each release of uLisp. You may find these useful if you are porting uLisp to another platform:

Test suite - 8/16-bit version (ATmega and MSP430)

Test suite - 32-bit version (ARM and ESP8266)

Test suite - Floating point (ARM and ESP8266)