Here’s a summary of the new and updated features for the AVR, ARM, ESP, and RISC-V versions of uLisp in Release 4.6:
-
A *features* variable that returns a list of keywords representing the capabilities of the version of uLisp.
For example:
> *features* (:floating-point :arrays :documentation :machine-code :error-handling :wi-fi :gfx)
For example, to check if your version has floating point you can do:
(member :floating-point *features*)
-
A copy-list function that returns a copy of a list.
-
In addition to the dolist and dotimes iteration constructs, uLisp 4.6 now includes the more flexible do and do* that allow an unlimited number of loop variables, each with an optional initial value and optional step-form, and an end test.
-
uLisp 4.6 now provides three additional map functions: mapcon, mapl, and maplist. These complete the matrix of six map functions in Common Lisp, for flexibility with the way you can map a function over one or more lists of elements. See Processing items in a list.
-
uLisp 4.6 now includes three additional string comparison functions: string/=, string<=, and string>=.
-
A new :test keyword parameter allows you to specify an alternative test function for assoc, member, and search. For example you can do:
> (assoc "three" '(("one" . "eins") ("two" . "zwei") ("three" . "drei")) :test #'string=) ("three" . "drei")
-
You can now use setf to modify a character in a string. For example:
> (let ((s "abc")) (setf (char s 1) #\r) s) "arc"
-
User-defined keywords are now recognised as keywords that evaluate to themselves,:
> :fred :fred
-
A number of minor bug fixes and improvements have been incorporated; thanks to @dragoncoder047 for many of these.
All of these improvements have been incorporated without having an impact of the performance of uLisp, or the amount of workspace available on each platform.
The AVR-Nano version of uLisp has also been updated to incorporate the bug fixes, but it was not possible to fit the new features in the 32Kbytes available on the platforms it supports.
Download Release 4.6 for your platform from the Download uLisp page.