Releases: objecthub/swift-lispkit
Releases · objecthub/swift-lispkit
Release 2.5.0
- Support for all major JSON standards via libraries
(lispkit json)
and(lispkit json schema)
supporting JSON Pointer (RFC 6901), JSON Path (RFC 9535), JSON Patch (RFC 6902), JSON Merge Patch (RFC 7396) and JSON Schema (2020-12 Internet Draft specification). - Support for HTTP-based networking via libraries
(lispkit http)
,(lispkit http oauth)
, and(lispkit http server)
, including support for OAuth 2.0 (RFC 6749) and simple HTTP servers. - Deeper integrations into macOS and iOS operating systems via libraries
(lispkit system keychain)
and(lispkit system pasteboard)
. - New library for handling URLs:
(lispkit url)
- New concurrency features with support for atomic boxes via library
(lispkit box)
and thread-safe shared queues via library(lispkit thread shared-queue)
. - Serialization of data into a binary representation for a subset of LispKit's data types via library
(lispkit serialize)
. - Support for drawing a variety of different types of bar codes via library
(lispkit draw barcode)
- New procedure in library
(lispkit thread)
:abort-running-threads
- New procedures in library
(lispkit system)
:available-network-interfaces
,region-continent
,region-parent
, andregion-subregions
- New procedures in library
(lispkit string)
:url-encode
andurl-decode
- New procedures in library
(lispkit bytevector)
:bytevector-zip-header?
andbytevector-gzip-header?
- New procedures in library
(lispkit markdown)
:markdown->sxml
,blocks->sxml
,text->sxml
,markdown->raw-string
, andblocks->raw-string
- New/updated procedures in library
(lispkit dynamic)
:error-object->string
anderror-object-message
- New special forms in library
(lispkit control)
:if-let*
andwhen-let*
- LispKitRepl now supports asynchronous libraries (libraries which need a run loop) via command-line argument
-x
- New sample code:
Keychain.scm
,WebAPIs.scm
, andWebserver.scm
Release 2.4.0
- 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
, andcurrency-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)
toobj
to prevent conflicts with other libraries - Extend library
(lispkit bytevector)
with proceduresbytevector=?
,bytevector->hex
, andhex->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
Release 2.3.2
- Handle assets correctly in the LispKit REPL
- Improved R7RS regression tests
- Bugfixes in library
(lispkit bytevector)
for proceduresbytevector-copy
andbytevector-copy!
- Revamp of library
(lispkit graph)
with new procedures:graph-topological-sort
,graph-weakly-connected-components
,graph-strongly-connected-components
, andgraph-shortest-paths
- New libraries:
(srfi 228)
,(srfi 233)
, and(srfi 236)
Release 2.3.1
- 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
Release 2.3.0
- 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) - Support complex numbers for trigonometric and inverse trigonometric functions in library
(lispkit math)
:sin
,cos
,tan
,asin
,acos
, andatan
- Bug fixes in library
(lispkit draw chart bar)
and(lispkit enum)
- New library:
(lispkit math matrix)
Release 2.2.1
- 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
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 - 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
- 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
, andfxrandom
- Support unary argument usage for
fx-
,fl-
, andfl/
- Removed
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>=
- Fixed crash on division by zero for
- 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)
- 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
- 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
- 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
- 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