The markdown parsing is broken/disabled for release notes. Sorry about that, I'm chasing the source of a crash that's been bringing this website down for the last couple of days.
Release 2.4.0
9 weeks ago
- Ported universal formatting facility from Common Lisp and made it available via library `(lispkit format)`
- Library `(lispkit records)` now supports extensible records compatible to SRFI 131
- New procedures in library `(lispkit system)`: `available-region?`, `region-flag`, `available-language?`, `available-currencies`, `available-currency?`, `currency-name`, `currency-code`, `currency-numeric-code`, and `currency-symbol`
- New procedures in library `(lispkit port)`: `display-format`, `write-formatted`
- New procedures in library `(lispkit bitset)`: `fixnum->bitset`, `bitset->fixnum`
- New procedures in library `(lispkit system)`: `terminal-size`, `make-uuid-string`, `make-uuid-bytevector`
- New procedure in library `(lispkit draw)`: `clear-drawing`
- New procedures in library `(lispkit draw turtle)`: `arc`, `turtle-x`, `turtle-y`, `turtle-angle`, `turtle-pen-down?`
- New procedure `load-program` in library `(lispkit core)` supports executing programs in an empty environment
- Procedure `type-of` of library `(lispkit type)` now returns a list of type tags (from most specific to least specific type)
- Renamed library `(lispkit system os)` to `(lispkit system call)`
- Renamed `object` in library `(lispkit type)` to `obj` to prevent conflicts with other libraries
- Extend library `(lispkit bytevector)` with procedures `bytevector=?`, `bytevector->hex`, and `hex->bytevector`
- Reimplementation of procedure `open-file` in library `(lispkit system)` supporting custom application paths
- Enforce that imported (immutable) definitions cannot be mutated, unless it's in the REPL; `export-mutable` in library definitions enable mutability
- Allow configuration of REPL output via format config `repl-format-config` of library `(lispkit format)`
- Improved display of OS-level exceptions and errors in REPL
- New libraries: `(lispkit format)`, `(lispkit crypto)`, `(lispkit archive tar)`, `(lispkit list set)`, `(srfi 239)`, `(srfi 235)`.
- New sample code: `Blockchain.scm`
- Handle assets correctly in the LispKit REPL
- Improved R7RS regression tests
- Bugfixes in library `(lispkit bytevector)` for procedures `bytevector-copy` and `bytevector-copy!`
- Revamp of library `(lispkit graph)` with new procedures: `graph-topological-sort`, `graph-weakly-connected-components`, `graph-strongly-connected-components`, and `graph-shortest-paths`
- New libraries: `(srfi 228)`, `(srfi 233)`, and `(srfi 236)`
- 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
- Limit stack size to prevent application crashes
- New procedure in library `(lispkit thread)`: `thread-max-stack`
- 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 for `make-type`, which now returns 5 values (the first is a new type tag)
- Support complex numbers for trigonometric and inverse trigonometric functions in library `(lispkit math)`: `sin`, `cos`, `tan`, `asin`, `acos`, and `atan`
- Bug fixes in library `(lispkit draw chart bar)` and `(lispkit enum)`
- New library: `(lispkit math matrix)`
- Fixed bug preventing LispKit to correctly determine the maximum number of threads
- Optimized display of objects of custom types
- Optimized code generation for lambdas without captured expressions
- Revamped code disassembly
- Fixed division by zero issues with truncate and floor procedures
- Removed duplicates in results of procedures `available-fonts` and `available-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
- Reimplemented and extended library `(lispkit enum)` making it compatible with SRFI 209
- Major revision of library `(lispkit clos)`
- New procedures in library `(lispkit draw)`: `bytevector->image`, `draw-styled-text`, `styled-text-size`
- New procedure in library `(lispkit core)`: `procedure-rename`
- New libraries: `(srfi 118)`, `(srfi 141)`, `(srfi 149)`, `(srfi 232)`, `(lispkit bitset)`, `(lispkit styled-text)`, `(lispkit draw chart bar)`
- New example code: `ObjectOrientation.scm`, `DrawBarCharts.scm`, `StyledTextDoc.scm`
Release 2.2.0
2 years ago
- 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:
- Fixed crash on division by zero for `fx/`
- Fixed bug making `exact` now work also for negative numbers
- Improved `inexact` when used with rationals with a very large numerator or denominator
- Consistent interface for: `random`, `flrandom`, and `fxrandom`
- Support unary argument usage for `fx-`, `fl-`, and `fl/`
- Removed `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)`
- Fixed scope of `<sym>` in `(let <sym> ...)` form, making it not accessible in the bindings
- Exceptions now include more information about the active call stack
- Included tutorial for channels as new example code
- Support comments in command-line input
Release 2.1.0
2 years ago
- 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)`
- 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)`
- 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`
Release 2.0.3
2 years ago
- 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)`
- 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`
- Included new libraries: `(srfi sicp)`, `(srfi 102)`, `(srfi 217)`, `(srfi 224)`
- New sample code: `EUStats.scm`
Release 2.0.2
2 years ago
- Fixed serious bug in procedure `load` (previously, `load` always returned no result instead of the result of the last executed expression).
- Included new libraries: `(srfi 215)`, `(srfi 216)`, `(srfi 222)`, `(lispkit text-table)`
- Extended sample code `Math.scm`
Release 2.0.1
2 years ago
- 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)`
- 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)`
- Included new libraries: `(srfi 219)`, `(srfi 221)`, `(srfi 223)`