Back to index

LispMe History

V1.00 22.08.1997

initial release

V1.10 (internal version)

enhancement:
optimization of conditionals (if, and, or)
new:
tail recursion elimination
bugfix:
duplicate names in lambda, let, letrec
new:
added begin expression
enhancement:
modified samples to take advantage of tail recursion, begin
new:
added execution statistics

V1.20 07.09.1997

enhancement:
safer memory management
new:
command "reset to factory settings"
cleanup:
moved "reset heap" to menu
cleanup:
minor cosmetic tweaks
new:
top-level define
cleanup:
let and letrec syntax as in Scheme
new:
option for auto power off
new:
print expression
cleanup:
samples modified for new syntax
enhancement:
all samples as .csv file for easier import

V1.30 (internal version)

bugfix:
(quote . any) traps
new:
cond special form
new:
functions set-car! and set-cdr!
new:
slashified symbols (removed in V1.50)

V1.40/28.10.1997

new:
PalmOS2 support
enhancement:
more memory
new:
floating point numbers
new:
transcendental functions using MathLib
enhancement:
Print depth in setup dialog
enhancement:
own scanning/printing routines for floats as ROM routines are junk :-(
enhancement:
better error messages
bugfix:
check OS version
enhancement:
extended standard library
new:
memory statistics
cleanup:
#t and #f like in Scheme
bonus:
conditionally compile PalmOS1 version

V1.50/21.11.1997

optimization/fix:
various code size optimizations and minor glitch fixes
cleanup:
internally composite objects like procedures and continuation are no longer pairs at user level
new:
characters
new:
strings
cleanup:
display, write and newline instead of print
new:
graphics primitives draw, rect and text
enhancement:
font and pattern support for graphics
enhancement:
clip graphics to output area
new:
global vars *point*, *font* and *pat*
removal:
dropped slashified symbols
new:
syntax for hexadecimal string constants

V1.60/21.1.1998

cleanup:
use machine format with object->string
cleanup:
escape # when outputting strings
bugfix:
crash with font 7
cleanup:
else no longer a variable
new:
HTML documentation
optimization:
load time
bugfix:
added missing functions in on-line help
bugfix:
button display in long evaluations during memo load
new:
procedures read, read-string, message, and wait-pen
new:
Tic-Tac-Toe sample program

V1.70/8.3.1998

enhancement:
use DB memory for heap etc., allowing 32k heap on any Pilot
bugfix:
parsing multiple SEXP after a dot
bugfix:
wrong error message for set-car! and set-cdr!
bugfix:
a subtile bug in pointer tagging made pairs having integer -2048 .. -1921 in their car look like non-pairs to the VM
enhancement:
finally found a way to have more than 32k code with gcc, so be prepared for a bunch of new functions/types!
new:
procedures random, disasm, sound, and wait
new:
switching to another application no more aborts a running evaluation. The evaluation is resumed when you restart LispMe.
new:
MemoPad I/O via standard Scheme port mechanism
change:
former procedures read and read-string now called input and input-string to be compatible with ports
new:
procedure dir and delete-file

V1.80/19.4.1998

bugfix:
check frequency parameter of sound
cleanup:
omit trailing space in object->string
new:
vectors
cleanup:
(or e1 e2) returns e1, if it is true
new:
A little theorem prover (sample program) submitted to me by Winton Davies.

V1.90/9.5.1998

bugfix:
print formatting with memos
enhancement:
changed vector representation for faster GC
bugfix:
wrong masking for UID in vector access
new:
Parentheses Hack for easier input of programs

V2.00/4.7.1998

LispMe

enhancement:
single argument for /
enhancement:
any number of arguments for +, *, min, max, append, and string-append,
enhancement:
any number of arguments for and, and or,
cleanup:
return #n for definitions and after loading memos
enhancement:
optimised cond
new:
special form case
new:
complex numbers
change:
made expt and log10 library procedures instead of primitives.
bugfix:
check recursion depth in reader and compiler
bugfix:
repeatedly outputting the same vector didn't unlock its chunk when output was truncated
bugfix:
accented chars in string->list causes invalid pointer error

Parentheses Hack V1.1

bugfix:
wrong match when overwriting selection with closing parenthesis
enhancement:
much faster parentheses matching in very long lists without line breaks
enhancement:
Entering 0 behaves like o and 5 like s, so position of navigation stroke doesn't matter.

V2.10/8.8.1998

LispMe

enhancement:
better error message for invalid parameter
bugfix:
fixed numeric cancellation problem for certain (large) complex arguments to asin, asinh, acos and acosh
bugfix:
more precise recursion depth checking in compiler
new:
added preference setting for lefthanders
cleanup:
spacing in menus
cleanup:
renamed menu shortcuts in options menu according to Palm UI guidelines
bugfix:
update scrollbar with Parentheses Hack
PalmIII support:
small icon
PalmIII support:
correct version number in info
PalmIII support:
support new bold large font with text
PalmIII support:
twice the stack space for read, compile and GC
new:
Edit button added in load dialog. Jumps to offending source text on syntax errors.
bugfix:
applying a procedure with optional arguments modified its argument list, now copy arg list in this case
bugfix:
eqv? now returns #t for two empty strings

Parentheses Hack V1.2

bugfix:
send changed notification for scrolling

V2.20/25.8.1998

LispMe

bugfix:
GC while copying the argument list during apply created an invalid pointer.
bugfix:
Leaving LispMe when output had been truncated and restarting it overwrote one byte after the output buffer
bugfix:
Scanning problem when #\) was the first item in a list.
new:
nested defines, i.e. whereever an expression sequence is allowed, it may be preceded by local definitions
enhancement:
Hardware scroll buttons now work in Load Dialog (PalmOS2 only)
bugfix:
read raised an error when only white space was left in a memo. Now correctly returns [eof].
new:
quasiquote expressions
change:
madeappend a primitive procedure instead of library

V2.30b/12.12.1998

LispMe

bugfix:
Trying to apply a closure to a vector created an invalid pointer.
bugfix:
Atom sizes >4096 bytes aren't addressable and are now disallowed.
cleanup:
Major code cleanup and rework
enhancement:
GC while parsing or compiling now allowed
new:
Option for printing quote, quasiquote etc. expressions in short form.
optimization:
Reduced polling frequency for break button but poll after every GC or output
new:
eval
enhancement:
Now use DB records for strings just like vectors
bugfix:
Treat closures etc. as valid expressions for eval
bugfix:
Make string-append always return a copy, even if it's called with one argument
enhancement:
Increased buffer size for string->object and object->string
enhancement:
Increased maximum token length
new:
gensym
new:
Popup list with all symbols in main form
bugfix:
handle tail recursion correctly in let and letrec context
new:
none?
new:
Macros
new:
Hex syntax for character constants
bugfix:
A silly environment depth bug interfered with macro invocations in recursive contexts :-(
bugfix:
A temporary was not properly protected against GC when compiling letrec expressions.