Comment on page
🖥
LispPad
The latest version of LispPad for macOS can always be found on the Mac App Store. Below is a history of all releases, including links to the corresponding binaries.

Bug fixes:
- Improved R7RS regression tests
- Bugfixes in library
(lispkit bytevector)
for proceduresbytevector-copy
andbytevector-copy!
New features:
- Revamp of library
(lispkit graph)
with new procedures:graph-topological-sort
,graph-graph-weakly-connected-components
,graph-strongly-connected-components
, andgraph-shortest-paths
- New libraries:
(srfi 228)
,(srfi 233)
, and(srfi 236)
- New documentation for library
(lispkit graph)
Bug fixes:
- Fixed bug leading to deadlocks when using text ports
- Fixed bug allowing to execute empty lists
- Fixed serious bug leading to an infinite loop when iterating through stack traces
New features:
- New menu item "Show in Finder" to show the current document in the Finder
- Display memory footprint in session inspector
- Show call stack when errors are shown in sessions
- Limit stack size to prevent application crashes
- New settings for defining the maximum stack size and the maximum number of active calls to trace upon errors
- New procedure in library
(lispkit thread)
:thread-max-stack
- Included new libraries:
(lisppad draw map)
- New sample code:
DisplayMap.scm
Bug fixes:
- Bug fixes to indentation with spaces and semicolons
- Bug fixes in library
(lispkit draw chart bar)
and(lispkit enum)
- Fixed division by zero issues with truncate and floor procedures
- Fixed bug preventing LispKit to correctly determine the maximum number of threads
- Optimized display of objects of custom types
- Removed duplicates in results of procedures
available-fonts
andavailable-font-families
in library(lispkit draw)
- Changed defaults for procedure
string-insert!
of library(lispkit string)
- Made procedure
open-file
of library(lispkit system)
work on iOS
New features:
- Performance improvements: Optimized code generation for lambdas without captured expressions
- Major revamp of all type-related functionality: each type is now represented by a type tag/symbol; procedure
type-for
from library(lispkit type)
can be used to determine the type tag of a given object; breaking change formake-type
, which now returns 5 values (the first is a new type tag) - Major revision of library
(lispkit clos)
- Support complex numbers for trigonometric and inverse trigonometric functions in library
(lispkit math)
:sin
,cos
,tan
,asin
,acos
, andatan
- Reimplemented and extended library
(lispkit enum)
making it compatible with SRFI 209 - New procedures in library
(lispkit draw)
:bytevector->image
,draw-styled-text
,styled-text-size
- New procedure in library
(lispkit core)
:procedure-rename
- Included new libraries:
(lispkit math matrix)
,(lispkit bitset)
,(lispkit styled-text)
,(lispkit draw chart bar)
,(srfi 118)
,(srfi 141)
,(srfi 149)
, and(srfi 232)
- New sample code:
ObjectOrientation.scm
,DrawBarCharts.scm
, andStyledTextDoc.scm
Bug fixes:
- Fixed several bugs in math libraries:
- Prevent crash on division by zero for
fx/
- Make
exact
also work for negative numbers - Improve
inexact
when used with rationals with a very large numerator or denominator
- Fixed scope of
<sym>
in(let <sym> ...)
form, making it not accessible in the bindings
New features:
- Allow preserving window setup when LispPad quits even if the setting "Close windows when quitting an app" is enabled.
- Multi-threaded evaluator, executing multiple virtual machines in parallel
- Go-inspired channels for synchronizing threads
- Revamp of math libraries, addressing incompatibilities and fixing numerous bugs:
- Introduce consistent interface for:
random
,flrandom
, andfxrandom
- Support unary arguments for
fx-
,fl-
, andfl/
- Remove
fixnum-width
,least-fixnum
andgreatest-fixnum
- New procedures
make-flonum
,flexponent
,flsignificand
,flnext
,flprev
,fx-width
,fx-greatest
,fx-least
,fl-epsilon
,fl-greatest
, andfl-least
- Support for many arguments for procedures
flmin
,flmax
,fxmin
,fxmax
,fx+
,fx-
,fx*
,fx/
,fx=
,fx<
,fx>
,fx<=
,fx>=
,fl+
,fl-
,fl*
,fl/
,fl=
,fl<
,fl>
,fl<=
, andfl>=
- New procedures in library
(lispkit math util)
:make-nan
,nan-negative?
,nan-quiet?
,nan-payload
, andnan=?
- New procedures in library
(lispkit system)
:physical-memory
,memory-footprint
, andsystem-uptime
- New procedure in library
(lispkit port)
:display*
- New procedures in library
(lispkit debug)
:stack-size
,call-stack-procedures
,call-stack-trace
, andset-max-call-stack!
- Enabled concurrency support for library
(srfi sicp)
- Included new libraries:
(lispkit thread)
,(lispkit thread channel)
,(scheme flonum)
,(srfi 18)
,(srfi 144)
,(srfi 208)
,(srfi 230)
- Exceptions now include more information about the active call stack
- Include tutorial for channels as new example code
Bug fixes:
- Increased stack size of interpreter
- Fixed file/editor loader
- Fixed bug compiling every procedure twice
- Fixed implementation of procedure
expt
- Fixed overflow issues in procedure
approximate
- Fixed crashes in the rounding functions when used with rational big integers
- Moved procedure
load
into library(lispkit core)
New features:
- Integrated simple bytecode optimizer
- Implemented support for tagged procedures
- Implemented support for procedures with optional arguments
- Included new libraries:
(lispkit math util)
,(lispkit math stats)
,(srfi 166)
,(srfi 227)
, and(srfi 229)
- Included new documentation for libraries
(lispkit prolog)
,(lispkit math stats)
,(lispkit math util)
,(srfi 166)
,(srfi 227)
, and(srfi 229)
- Ported Peter Norvig's pattern matcher and algebraic simplifier from Common Lisp to Scheme and included it as new example code
- Extended sample code
Math.scm
- Updated PDF library reference manual
Bug fixes:
- Fixed bug in logic to detect valid local definitions
- Handle libraries with errors more carefully to prevent crashes
- Fixed bit counting bug in library
(srfi 143)
andexpt
in(lispkit math)
New features:
- Include all libraries in the library inspector, including libraries that are not loaded
- Support filtering in the libraries inspector
- New procedures in library
(lispkit core)
:thunk?
,procedure-of-arity?
,procedure-name
,procedure-arity
,procedure-arity-range
,procedure-arity-includes?
,arity-at-least?
,arity-at-least-value
- Added procedure
icloud-directory
to library(lisppad system)
- Included new libraries:
(srfi sicp)
,(srfi 102)
,(srfi 217)
,(srfi 224)
- Included new documentation for library
(lispkit text-table)
- New sample code:
Simplifier.scm
; extended sample codeMath.scm
Bug fixes:
- Fixed behavior of "Play" button in editor windows, now setting the source directory correctly
- Bug fixes in library
(lispkit system)
:home-directory
also supports a non-sandboxed mode,file-path
handles tilde correctly - Bug fixes for a few procedures of library
(lispkit archive zip)
- Bug fix in procedure
load
(previously,load
always returned no result instead of the result of the last executed expression)
New features:
- New procedures in library
(lispkit draw)
:bitmap->bytevector
,bitmap-blur
,bitmap-crop
- Support tables and definition lists in library
(lispkit markdown)
- Support gzip and zlib container formats for deflate compression via library
(lispkit bytevector)
- Support symlink resolution via procedure
file-path
of library(lispkit system)
- Included new libraries:
(lisppad location)
,(lispkit text-table)
,(srfi 215)
,(srfi 216)
,(srfi 219)
,(srfi 221)
,(srfi 222)
,(srfi 223)
- Included new sample code
EUStats.scm
; extended sample codeMath.scm
- Minor update of the LispPad and LispKit library documentation
Bug fixes:
- Allow
let*
andletrec*
to redefine variables - Minor bug fixes in LispKit libraries
New features:
- Show Markdown document structure in editor windows
- Associate descriptions and help text with definitions (in Common Lisp style)
- New libraries:
(lisppad audio)
,(lispkit archive zip)
,(lispkit prolog)
,(srfi 143)
,(srfi 189)
,(srfi 214)
,(srfi 219)
,(scheme red)
,(scheme fixum)
,(scheme bitwise)
,(scheme division)
- Extended library
(lispkit string)
with proceduresstring-decode-named-chars
andstring-encode-named-chars
- Extended library
(lispkit char)
with procedurechar-name
- Extended library
(lispkit core)
with new environment procedures:interaction-environment?
,custom-environment?
,the-environment
,environment-definable?
,environment-define
,environment-define-syntax
,environment-import
,environment-documentation
, andenvironment-assign-documentation!
- Extended library
(lispkit sqlite)
with proceduressqlite-database?
andsqlite-statement?
- Support custom environments for the
compile
procedure of(lispkit debug)
- New sample code:
PlayMusic.scm
,ObliqueProjection.scm
,VisualizePointSets.scm
,Schelog.scm
Bug fixes:
- Fixed several editor-related bugs
- Fixed crash of virtual machine when execution gets aborted while loading and executing a file
- Minor bug fixes in LispKit libraries
New features:
- Complete revamp of user interface optimized for macOS Big Sur
- Introduced key equivalents for session and editor windows
- Rewrote line number display; allow selection of line ranges
- Introduced feature to automatically indent Scheme code
- Updated and extended documentation (accessible via "Help > LispPad Help" and "Help > LispPad Library Reference")
- Included new libraries:
(srfi 9)
,(srfi 180)
,(srfi 209)
,(srfi 210)
- Extended library
(lispkit log)
with syntaxlog-time
- Extended library
(lispkit debug)
with syntaxtime-values
- Extended library
(lispkit math)
with proceduresfxodd?
,fxeven?
,fx-width
,fx-greatest
, andfx-least
in library(lispkit math)
.; generalized procedurenumber->string
- Included new documentation for library
(lispkit debug)
- Included new sample code:
DrawTrees.scm
,DisplayTrees.scm
, andEditDistance.scm
Bug fixes:
- Fixed comparison of complex numbers and numbers involving NaN in library
(lispkit test)
- Fixed small bugs in
(lispkit match)
and included support for=..
,*..
, and**1
New features:
- Improved Scheme automatic indentation algorithm
- Redesigned Scheme definitions menu in editor windows
- Revision of library
(lispkit test)
involving procedurestest-group-failed-tests
,test-group-passed-tests
,failed-tests
,passed-tests
,current-test-epsilon
- Refactored debugging functionality into library
(lispkit debug)
- New libraries:
(srfi 194)
,(srfi 204)
,(lispkit sxml)
,(lispkit sxml html)
, and(lispkit sxml xml)
- New documentation for libraries:
(lispkit iterate)
,(lispkit comparator)
,(lispkit match)
,(lispkit csv)
,(lispkit log)
, and(lispkit test)
Bug fixes:
- Speed up output in console windows by 10x
- Save command history in session documents
- Add "~/Documents/LispPad" as standard search path and search in external libraries and assets always first
- Fixed a few path creation functions in library
(lispkit system)
which failed for corner cases define-values
can now be used whereverdefine
can be used, fixing a long-standing bug- Distinguish between empty response and failed request for HTTP requests in library
(lispkit port)
- Fixed bugs in PDF library documentation and extended it to cover the new libraries
New features:
- Reorganized menus and shortcuts; improved "Help" menu
- Support for marking up identifiers for standard Scheme procedures and special-forms when syntax-highlighting is enabled
- Support for auto completions, including setting a custom delay both in console and editor windows
- New libraries:
(lisppad applescript)
,(lispkit sqlite)
,(lispkit combinator)
,(lispkit system os)
,(srfi 195)
and(srfi 196)
- New documentation for libraries:
(lispkit combinator)
,(lispkit stream)
,(lispkit iterate)
,(lispkit stack)
,(lispkit queue)
, and(lispkit system os)
- Renamed library
(lispkit iteration)
into(lispkit iterate)
- Extended library
(lispkit date-time)
with proceduresdate-time-add
,date-time-add-seconds
,date-time-diff-seconds
,date-time-in-timezone
,date-time-same?
,date-time=?
,date-time<?
,date-time>?
,date-time<=?
,date-time>=?
, anddate-time-hash
. - Extended library
(lispkit core)
with proceduresthunk
,thunk*
, andapply-with-values
- Extended library
(lispkit string)
with proceduresstring-normalize-diacritics
andstring-normalize-separators
- Extended library
(lispkit dynamic)
with proceduresunwind-protect
andtry
- Extended library
(lispkit control)
with procedureletrec-values
- Extended library
(lispkit system)
with procedureshome-directory
,system-directory
,path-extension
,append-path-extension
,remove-path-extension
,file-readable?
,file-writeable?
,file-deletable?
,directory-readable?
,directory-writeable?
, anddirectory-deletable?
. - Extended library
(lispkit draw)
with proceduresset-image-size!
,bitmap-size
,bitmap-pixels
,bitmap-exif-data
, andset-bitmap-exif-data!
- Support for timeouts in procedures handling HTTP ports in library
(lispkit port)
- Small tweaks to library
(lispkit csv)
- Library
(lispkit box)
now supports multi-value boxes - New sample code
Covid.scm
,ComposePhotos.scm
,CovidGraph.scm
, andScriptingMacOS.scm
Bug fixes:
- Fixed serious memory leak in the compiler and implemented several garbage collector enhancements
- Made field access of records type safe
New features:
- Link documentation for SRFI libraries directly from the libraries info panel of session windows
- New example code:
RenderMarkdown.scm
,Polynomials.scm
- New libraries:
(srfi 6)
,(srfi 54)
,(srfi 162)
- Extended library
(lispkit dynamic)
with assertion support:make-assertion-error
,assertion
,assert
- New documentation for libraries
(lispkit record)
,(lispkit regexp)
,(srfi 6)
,(srfi 54)
,(srfi 162)
- Make LispPad Library Reference available in PDF form via the "Help" menu
Bug fixes:
- Fixed bug in library
(lispkit set)
which was leading to multi-set behavior - Fixed garbage collection issue in library
(lispkit hashtable)
- Fixed cosmetic issues in the line number viewer of the text editor
New features:
- Library documentation now directly accessible in the "Libraries" tab of session windows
- Support for document type-specific text completions
- Support logging of garbage collection runs
- New mechanism for providing/configuring assets such as images, documents, etc., enabling libraries to depend on data in an extensible fashion
- New example code:
SpellNumbers.scm
,Sudoku.scm
; extension ofMath.scm
- New libraries:
(lisppad speech)
,(lispkit markdown)
,(lispkit disjoint-set)
,(srfi 175)
,(srfi 167)
,(srfi 98)
,(srfi 87)
- Extended library
(lispkit system)
with proceduresasset-file-path
,path-components
,parent-path
,path
, andsource-directory
- Extended library
(lispkit bytevector)
with proceduresread-binary-file
andwrite-binary-file
- Extended library
(lispkit string)
with procedureswrite-file
,read-file
,string-pad-center
,string-empty?
;string-concatenate
now supports an optional separator character - Extended library
(lispkit port)
with proceduresopen-input-asset
,open-binary-input-asset
,call-with-output-bytevector
, andcall-with-output-string
- Extended library
(lispkit hashtable)
with procedurehashtable-empty-copy
;hashtable-hash-function
can now return a hash function for all hashtables - Extended library
(lispkit math)
with procedurefxsqrt
- Extended library
(lispkit core)
with procedureopt
- Extended library
(lispkit draw)
to support assets, color lists and drawing of HTML - Added character set
char-set:newlines
to(lispkit char-set)
- New documentation for libraries
(lisppad speech)
,(lispkit port)
,(lispkit heap)
,(lispkit markdown)
,(lispkit disjoint-set)
,(srfi 175)
,(srfi 167)
,(srfi 98)
,(srfi 87)
Bug fixes:
- Replaced garbage collector with a more robust implementation
- Fixed several issues in library
(lispkit math)
:integer->fx
renamed tointeger->fixnum
, introducedfxlogical-shift-right
andreal->flonum
, fixedbit-count
, fixedfxmodulo
to work with negative numbers - Fixed explanations for symbols containing "->"
New features:
- Simplified printed representation of procedures
- Provided a more complete set of hash functions via library
(lispkit hashtable)
- New libraries:
(lispkit comparator)
,(srfi 174)
, and(srfi 177)
- New documentation for libraries
(lispkit math)
and(lispkit bytevector)
.
Bug fixes:
- Fixed handling of option-clicks to show documentation popovers
- Fixed memory leak involving recursive local functions
- Implemented algebraic datatypes in terms of more efficient internal functions
New features:
- Allow logging of input and output of sessions
- Support for uninterned symbols
- Support for custom keywords in
let-keywords
- Extension and re-implementation of library
(lispkit type)
- New libraries:
(lispkit stream)
,(scheme mapping)
,(srfi 146)
,(srfi 165)
,(srfi 173)
- Inclusion of
miniAdapton
in a new third-party directory - New example code for generating mazes
- Included documentation for
(lispkit control)
,(srfi 173)
Bug fixes:
- Bug fixes in library
(lispkit gvector)
- Fixed memory leak involving recursive local functions
New features:
- Significant performance improvements in the LispKit interpreter
- Documentation popovers in session and editor windows (use menu item "View > Explain..." or option-click on symbol)
- Documentation viewer in environment sidebar of session windows
- New SRFI libraries: SRFI 26, SRFI 33, SRFI 46, SRFI 55, SRFI 146, and SRFI 165
- New libraries:
(scheme mapping)
,(lispkit stream)
,(lispkit graph)
- Included documentation for SRFI 26, SRFI 33, SRFI 46, SRFI 55, SRFI 146, SRFI 161, SRFI 165,
(lispkit core)
,(lispkit list)
,(lispkit dynamic)
,(lispkit char)
,(lispkit char-set)
, and(lispkit string)
Bug fixes:
- Complete re-write of library import and export logic fixing numerous bugs and incompatibilities with R7RS
- Improved reporting of errors in library definitions
- Fixed output of multi-value results in the session window
- Allow
@
as initial character in identifiers
New features:
- New libraries:
(lispkit csv)
,(lispkit match)
,(lispkit regexp)
,(lispkit gvector)
,(lispkit date-time)
- Extended
(lispkit vector)
and(lispkit list)
libraries - Support for
let-keywords
andlet*-keywords
in library(lispkit control)
- Support call tracing for individual procedures
- Include call traces in the session log
- Make the last three session results available via
*1
,*2
, and*3
Bug fixes:
- Fixed font handling in session windows
- Bug fixes affecting
bytevector-copy!
,fold-left
,max
,min
,numerator
,denominator
,log
,magnitude
,gcd
andlcm
, as well as the escaping of symbols - Handle closing of ports correctly in library
(lispkit port)
- Fixed major bug in library
(lispkit system)
affecting the composition of file paths - Moved from
#\dx????
syntax to#\x????
to represent character literals
New features:
- Session log (for making all log data available via one window)
- New libraries:
(lisppad log)
,(lispkit log)
,(lispkit char-set)
,(scheme char)
- Support for most Scheme libraries from R7RS large/Red edition:
(scheme box)
,(scheme charset)
,(scheme comparator)
,(scheme generator)
,(scheme hash-table)
,(scheme ideque)
,(scheme list)
,(scheme rlist)
,(scheme set)
,(scheme sort)
,(scheme stream)
,(scheme text)
,(scheme vector)
- New SRFI libraries: SRFI 14 (full + ascii), SRFI 101, SRFI 125
- New functionality in library
(lispkit test)
:- Support for nested test groups
- Approximate tests
- Handling of exceptions
- More user-friendly error messages for operating system errors
- New example code showcasing LispPad's drawing library
- Extended Help menu
Bug fixes:
- The "LispPad Help" menu item still didn't work in version 1.2.2; this is fixed now
New features:
- Support jumping to a given line number and to the beginning and end of a text document
- Included implementation of "Tiny CLOS" as library
(lispkit clos)
- New SRFI libraries: SRFI 23, SRFI 34, SRFI 39, SRFI 95
- Documentation for libraries
(lispkit set)
and(lispkit enum)
Bug fixes:
- The help book was missing in the last release; it's included again
Bug fixes:
- Revised all hash functions; fixed several hashing-related bugs
- Bug fixes in library
(lispkit draw)
- Renamed library
(lisppad app)
to(lisppad system)
New features:
- Support for dark mode
- Markdown syntax highlighting
- New preferences pane: colors customizable for syntax highlighting
- Extended library documentation in LispPad's help book
- New SRFI libraries: SRFI 11, SRFI 14, SRFI 16, SRFI 51, SRFI 161
- New libraries:
(lispkit draw turtle)
,(lisppad turtle)
- New functionality in library
(lispkit draw)
:- New drawing functions
- Comprehensive font API
- Support for multi-page PDF files
Bug fixes:
- There is now a HelpBook available within LispPad
- Printing of all documents now works correctly
- Bugs in SRFI 69 are fixed
- Continuations are now correctly tagged and
continuation?
works as documented - Multiple libraries can now be imported with one
import
invocation, as required by R7RS current-input-port
,current-output-port
, andcurrent-error-port
have been turned into parameter objects, as required by R7RS(lispkit test)
was extended to be more compatible with similar libraries
New features:
- The menu showing currently opened windows now groups the windows by type
- LispPad is now able to create, open and edit
.txt
and.md
text documents - The new
(lispkit draw)
library provides a powerful API for creating drawings and saving them as PDF documents or image files - New SRFI libraries: SRFI 111, SRFI 112, SRFI 113
- New example code showcases the new drawing and scripting features
Bug fixes:
- Prelude and libraries path preferences are now handled correctly and do not result in access issues anymore
- Programs blocking on functions like
read
can now be terminated - Minor bugs in bitwise operations for exact integers of arbitrary size fixed
string-split
now returns a list instead of a vector
New features:
- Allow setting a default home directory outside of the application's sandbox (in preferences)
- Complete rewrite of the error reporting subsystem, including support for
file-error?
andread-error?
- New library:
(lispkit test)
- New SRFI libraries: SRFI 69, SRFI 129, SRFI 137, SRFI 145, SRFI 151
- New example code for coroutines, HTTP support, and a small compiler for arithmetic expressions
Bug fixes:
- Support tail patterns in
syntax-rules
and fix varioussyntax-rules
-related bugs - Fixed major bug in macro expansion logic
- Fixed major bug preventing internal definitions to work in many cases
New features:
- Complete refactoring of the default libraries to match the R7RS specification
- New libraries:
(lispkit json)
,(lispkit wt-tree)
,(lispkit object)
,(lispkit stack)
,(lispkit queue)
,(lispkit logic)
- New SRFI libraries: SRFI 63, SRFI 64, SRFI 158
- Support for
features
andcond-expand
- Support
include
andinclude-library-definitions
in library definitions - Implement missing R7RS functionality:
define-values
,syntax-error
,scheme-report-environment
andnull-environment
. - Added SRFI 112-style support for human-readable information about the hardware and operating system on which LispPad is running
- Simple API for HTTP GET requests
- Simple native API for date/time functions
- Bitwise operations for exact integers of arbitrary size
- Extension of hashtable API
- Extension of bytevector API
- Extension of list API
- New lightweight type abstraction mechanism
- Support call tracing (as a simple debugging mechanism)
- Name new session windows differently than new editor windows
Bug fixes:
- Garbage collection now does not accidentally collect anymore parts of parameter objects
- Record type creation now working also for records with fields that are not set by the constructor
- More syntax-rules bug fixes
New features:
- Support for algebraic datatypes
- Added a few additional destructive string functions
- Added pretty printer via library (lispkit prettify)
- New library for implementing priority queues: (lispkit heap)
- New library for creating PDF files: (lispkit pdf)
- Support for SRFI 152
- New example code
Bug fixes:
- Files can now be opened via the Finder
- Several issues with macros have been resolved in the Scheme interpreter
- Several issues with String functions have been fixed in the Scheme interpreter
New features:
- Added new Open Internally… menu item to access example source code and the source code of internal libraries
- Support R6RS-style enumerations
- Support for SRFI 31
- Support for SRFI 35
- Support for SRFI 135
Last modified 9mo ago