Version 2.6 released, with new features and bug fixes


#1

A new version of uLisp, Version 2.6, has been released for all the main platforms. It features:

  • An extension to the Lisp Library to allow you to load individual function or variable definitions with require, and list the contents of the library with list-library; see Lisp Library.
  • Support for optional arguments with default values in function definitions, using the &optional keyword; see Language reference.
  • The case statement; see Language reference.
  • The additional mapcan mapping function; see Language reference.
  • Support for saving the Lisp image to an SD card on platforms with an SD card interface, as an alternative to saving it to non-volatile memory (eg. EEPROM or DataFlash).

In addition, there are many bug fixes and minor improvements.

Version 2.6 still fits in the 32 Kbytes of program memory and 2 Kbytes of SRAM available on the Arduino Uno, as well as supporting many more powerful platforms.


#2

Hi David

Just changed your beta 2.5 version to 2.6 , on my weather station , and it works , nothing suspicious seeing so far.
Thanks for the new version !

Ronny Suy


#3

Great! Thanks for the feedback.


#4

I’m having problems compiling uLisp for the Micro:Bit. The following error messages are displayed:

Build options changed, rebuilding all
/home/rusty/.arduino15/packages/sandeepmistry/tools/gcc-arm-none-eabi/5_2-2015q4/bin/…/lib/gcc/arm-none-eabi/5.2.1/…/…/…/…/arm-none-eabi/bin/ld: ulisp-arm.ino.elf section .bss' will not fit in regionRAM’
/home/rusty/.arduino15/packages/sandeepmistry/tools/gcc-arm-none-eabi/5_2-2015q4/bin/…/lib/gcc/arm-none-eabi/5.2.1/…/…/…/…/arm-none-eabi/bin/ld: region RAM overflowed with stack
/home/rusty/.arduino15/packages/sandeepmistry/tools/gcc-arm-none-eabi/5_2-2015q4/bin/…/lib/gcc/arm-none-eabi/5.2.1/…/…/…/…/arm-none-eabi/bin/ld: region `RAM’ overflowed by 3432 bytes
collect2: error: ld returned 1 exit status
exit status 1
Error compiling for board BBC micro:bit.

This on Mint Linux v19 for x86-64. Any thoughts?


#5

I’ve just checked the ARM Version 2.6 of uLisp on my BBC Micro Bit and it seems to work fine. I’m running the Arduino IDE (version 1.8.7) on a Mac; sorry, I don’t have a Linux setup to try.

I’ve got the Softdevice option set to “None”.

I’m using the boards file "Nordic Semiconductor nRF5 Boards by Sandeep Mistry version 0.6.0. In my compiler listing I get the same “5_2-2015q4” version number as you.

Can you compile and run the Arduino example programs, such as Blink?


#6

johnsondavies

    April 13

I’ve just checked the ARM Version 2.6 of uLisp on my BBC Micro Bit and it seems to work fine. I’m running the Arduino IDE (version 1.8.7) on a Mac; sorry, I don’t have a Linux setup to try.

I’ve got the Softdevice option set to “None”.

Yup.

I’m using the boards file "Nordic Semiconduct
Sketch uses 1608 bytes (0%) of program storage space. Maximum is 262144 bytes.or nRF5 Boards by Sandeep Mistry version 0.6.0. In my compiler listing I get the same “5_2-2015q4” version number as you.

OK.

Can you compile and run the Arduino example programs, such as Blink?

Compiles with no problem.

Sketch uses 1608 bytes (0%) of program storage space. Maximum is 262144 bytes.


#7

Well, I got things working by doing a ‘sudo chmod 666 /dev/hidraw?’.

Might not be the best thing but it worked…

Thanks!


#8

Thanks for reporting back, but that doesn’t mean much to me. Any idea why that might have helped? I could add a note to the documentation.


#9

The ‘hidraw’ drivers in Linux provide a raw interface to USB and Bluetooth Human

Interface Devices (HIDs). This is for programs that know how to communicate with

the hardware device.

Apparently, the Java USB serial(?) driver needs access to this device to talk to

the micro:bits and the permissions were such that my account wasn’t permitted to

do this. Right now, I’m not sure of the proper way to fix this issue.


#10

Does that mean that previously any of the examples that used Serial, such as 01.Basics/DigitalReadSerial, would have failed too?


#11

No. This is strictly communications from the Linux host and the

target (in this case, the micro:bit). The examples are programs

that run on the target and have nothing to do with the Linux drivers.