There are a couple of threads here from about a year ago, where I suggested the use of so-called immediate values in uLisp, as opposed to the boxed representation used now. This would have the potential to dramatically reduce memory usage in specific cases, with notable benefits for arrays of integer numbers - they are almost halved in size. I implemented these so-called fixnums for both AVR and ARM, before gaining access to @johnsondavies’s builder, which I tried to make more approachable for people who aren’t already neck-deep in Lisp. (I suspect that in important aspects, I’ve failed at that.)
More recently, I picked up work on that, and at the point where it seemed to be not entirely awful to start deviating from the main uLisp code I began porting the immediates code again. That has now been integrated:
Somewhat ironically, I’m only including .ino files for the ARM and AVR versions. The other versions can be built, but I just haven’t tested them enough to feel comfortable publishing them right now. In addition, the AVR version is currently too large to fit on the Arduino Uno. Figuring out ways to fix that is my current concern.