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.30a/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 :-(

V2.4/13.2.1999

LispMe

bugfix:
Garbage collection problem with certain strings
bugfix:
A temporary was not properly protected against GC when compiling letrec expressions.
enhancement:
64k heap allowed
new:
bitmap
new:
event
new:
disable LispMe event handling by own-gui
new:
allow PalmOS event handler to be written in Scheme
new:
many UI access functions
enhancement:
dir accepts category argument. Also handles secret attribute correctly, as well as the load dialog.
removal:
Support for PalmOS1 (Pilot 1000 and 5000). Seeing the growing percentage of PalmOS2 and later devices and the growing memory requirements for LispMe, I think supporting LispMe on PalmOS1 isn't worth the effort anymore. RIP.

V2.5/13.5.1999

LispMe

bugfix:
Garbage collection during certain phase of string creation caused data manager index error.
bugfix (Palm III ROM bug):
Current font height was used in title bar of about box, which overwrote memory when non-standard font had been selected for text output.
enhancement:
incremental search in symbol list enabled
bugfix:
repeatedly outputting the same string didn't unlock its chunk when output was truncated
new:
Multiple sessions
cleanup:
New icon, more suited to both Scheme and Pilot spirit :-)
new:
Create launcher icons for sessions
enhancement:
Use table for session list, show icon and size
cleanup:
Now use category instead of secret bit to distinguish vectors from strings to have correct record count in appl list when privacy is turned on.
enhancement:
Allow extra chars in symbols
new:
write-record
new:
date-time

Fix a/8.6.1999

bugfix:
Wrong allocation protection made complex constants impossible in memos.

V2.6/27.11.1999

LispMe

new:
Released as Free Software according to GNU GPL
bugfix:
Euro symbol support with PalmOS 3.3
bugfix:
Don't store LocalIDs of other DBs to allow beaming of sessions etc.
new:
Reload button

Revision A

bugfix:
Trouble on a Palm IIIx or Palm V with the 3.3 update when trying to load a memo caused an exception. CategoryCreateListV10 was the reason, now replaced.

Revision B

bugfix:
gensym counter was reset at each start
bugfix:
Some broken links in the docs fixed
bugfix:
Removed reverse in theorem prover sample
enhancement:
Allow drawing in XOR-style via the pattern #n

V2.7/16.04.2000

LispMe

new:
Internal editor
enhancement:
Allow oversized memos within internal editor
enhancement:
Interrupt check after sound and wait
bugfix:
Correct handling of field/scrollbar with non-standard fonts
enhancement:
Shortcuts for button commands for GoType users
enhancement:
Ported to GCC 2.0 and SDK 3.5; made multi-segment application
new:
Support for pedit
enhancement:
Switchable case sensitivity for symbols
new:
HanDBase access functions
cleanup:
Rewrote graphics state handling
new:
Color support with OS 3.5
bugfix:
Handle incompatible sessions more gracefully
new:
Clear input and output fields menu commands
new:
Eval selection command in internal editor
new:
Explicit garbage collection gc
enhancement:
Look into all open resource DBs for icons when creating a starter app
supplement:
make-string
supplement:
set-palette
bugfix:
Crash with FrmUpdateForm on OS3.5 (debug only)

V2.8/8.11.2000

LispMe

bugfix:
Changed case of LispMe.h header for Linux
new:
Bitwise logcal operations bit-and,bit-or, bit-xor, bit-shift, and bit-not,
enhancement:
UI field clipboard operations
new:
UI scrollbar support
enhancement:
More UI field functions
bugfix:
Output truncation with message over 64 bytes
enhancement:
Bigger message output, now 256 bytes
enhancement:
Optimized list construction leading to improved performance.
bugfix:
Handle embedded NUL bytes more gracefully with read-line Thanks to James Aspnes.
enhancement:
Generalized c[ad]+r, upto 13 levels by encoding car/cdr in bitstring. Thanks to Hallvard Trætteberg
enhancement:
Menu commands Eval 2nd and Eval 3rd to evaluate 2nd or 3rd expression in input field.
enhancement:
Symbol completion and improved symbol list. Thanks to Hallvard Trætteberg
new:
launch
bugfix:
Correct marking of error position in MemoPad
new:
Support for all variants of pedit, including Memo32 source format
new:
Support loading DOC format source files
bugfix:
Record UID don't stay constant when beaming a session (possibly when Hotsyncing, too), so bus errors were possible when beaming a session containing strings or vectors. Introduced new Pickle Heap menu command for preparing a session to be sent.
enhancement:
Alternative in if now optional.
enhancement:
Step expression in do macro now optional.