Version 4.0 of uLisp is a major update of uLisp for all platforms that totally overhauls the way that symbols are handled. It now uses the same representation for long symbols as for strings, making the symbol table unnecessary, with the following benefits:
-
The space previously allocated to the symbol table is no longer needed, freeing up this memory to be available for the Lisp workspace.
-
Previously programs that made heavy use of long symbols could fail with a “no room for long symbols” error message, because they filled the symbol table. This can no longer happen.
-
Long symbols that are no longer used are automatically garbage-collected. For example, if you redefine a function with different local variable names, the space used by the previous names is freed up.
-
In general, programs run in less memory. For example, many of the uLisp examples that previously required a ATSAMD51 ARM M4 processor will now run on an ATSAMD21 ARM M0 processor.
-
Platforms with limited RAM, such as the Arduino Uno and Nano Every, could previously only use short symbols of up to three characters. They can now use long symbols like any other platform.
-
Short symbols of up to three alphanumeric characters on 16-bit platforms, or up to six alphanumeric characters on 32-bit platforms, are packed into the object cell, making them as memory efficient as before.
For a full technical explanation of the new implementation of symbols see Symbols.
To download the new version see Download uLisp.