LispPad

Lightweight Scheme Development on macOS and iOS

Version 1.7.0

Download

Date: 2022-02-19

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, and fxrandom
    • Support unary arguments for fx-, fl-, and fl/
    • Remove fixnum-width, least-fixnum and greatest-fixnum
    • New procedures make-flonum, flexponent, flsignificand, flnext, flprev, fx-width, fx-greatest, fx-least, fl-epsilon, fl-greatest, and fl-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<=, and fl>=
  • New procedures in library (lispkit math util): make-nan, nan-negative?, nan-quiet?, nan-payload, and nan=?
  • New procedures in library (lispkit system): physical-memory, memory-footprint, and system-uptime
  • New procedure in library (lispkit port): display*
  • New procedures in library (lispkit debug): stack-size, call-stack-procedures, call-stack-trace, and set-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

Version 1.6.3

Download

Date: 2021-12-17

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

Version 1.6.2

Download

Date: 2021-10-10

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) and expt 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 code Math.scm

Version 1.6.1

Download

Date: 2021-08-21

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 code Math.scm
  • Minor update of the LispPad and LispKit library documentation

Version 1.6.0

Download

Date: 2021-05-28

Bug fixes:

  • Allow let* and letrec* to redefine variables
  • Minor bug fixes in LispKit libraries

New features:

  • Execute LispPad code on iOS with LispPad Go
  • Sync LispPad code via iCloud and use it with LispPad Go on iPhones and iPads
  • 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 procedures string-decode-named-chars and string-encode-named-chars
  • Extended library (lispkit char) with procedure char-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, and environment-assign-documentation!
  • Extended library (lispkit sqlite) with procedures sqlite-database? and sqlite-statement?
  • Support custom environments for the compile procedure of (lispkit debug)
  • New sample code: PlayMusic.scm, ObliqueProjection.scm, VisualizePointSets.scm, Schelog.scm

Version 1.5.2

Download

Date: 2020-12-26

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 syntax log-time
  • Extended library (lispkit debug) with syntax time-values
  • Extended library (lispkit math) with procedures fxodd?, fxeven?, fx-width, fx-greatest, and fx-least in library (lispkit math).; generalized procedure number->string
  • Included new documentation for library (lispkit debug)
  • Included new sample code: DrawTrees.scm, DisplayTrees.scm, and EditDistance.scm

Version 1.5.1

Download

Date: 2020-10-05

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 procedures test-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)

Version 1.5.0

Download

Date: 2020-07-01

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 wherever define 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 procedures date-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>=?, and date-time-hash.
  • Extended library (lispkit core) with procedures thunk, thunk*, and apply-with-values
  • Extended library (lispkit string) with procedures string-normalize-diacritics and string-normalize-separators
  • Extended library (lispkit dynamic) with procedures unwind-protect and try
  • Extended library (lispkit control) with procedure letrec-values
  • Extended library (lispkit system) with procedures home-directory, system-directory, path-extension, append-path-extension, remove-path-extension, file-readable?, file-writeable?, file-deletable?, directory-readable?, directory-writeable?, and directory-deletable?.
  • Extended library (lispkit draw) with procedures set-image-size!, bitmap-size, bitmap-pixels, bitmap-exif-data, and set-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, and ScriptingMacOS.scm