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.