Skip to content

Releases: objecthub/swift-lispkit

Release 2.5.0

21 Nov 00:21
Compare
Choose a tag to compare
  • 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, and region-subregions
  • New procedures in library (lispkit string): url-encode and url-decode
  • New procedures in library (lispkit bytevector): bytevector-zip-header? and bytevector-gzip-header?
  • New procedures in library (lispkit markdown): markdown->sxml, blocks->sxml, text->sxml, markdown->raw-string, and blocks->raw-string
  • New/updated procedures in library (lispkit dynamic): error-object->string and error-object-message
  • New special forms in library (lispkit control): if-let* and when-let*
  • LispKitRepl now supports asynchronous libraries (libraries which need a run loop) via command-line argument -x
  • New sample code: Keychain.scm, WebAPIs.scm, and Webserver.scm

Release 2.4.0

15 Jan 20:14
Compare
Choose a tag to compare
  • 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

Release 2.3.2

05 Feb 13:09
Compare
Choose a tag to compare
  • 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)

Release 2.3.1

09 Dec 23:38
Compare
Choose a tag to compare
  • 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

01 Aug 09:29
Compare
Choose a tag to compare
  • 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)

Release 2.2.1

28 May 21:35
Compare
Choose a tag to compare
  • 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

06 Feb 22:48
Compare
Choose a tag to compare
  • 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

11 Dec 21:07
Compare
Choose a tag to compare
  • 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

12 Sep 21:27
Compare
Choose a tag to compare
  • 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

08 Aug 18:28
Compare
Choose a tag to compare
  • 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