[ANN] LIPS Scheme version 1.0.0-beta.15

16 views
Skip to first unread message

Jakub T. Jankiewicz

unread,
Oct 31, 2021, 7:48:31 PM10/31/21
to
The new version of the LIPS Scheme got released.

https://github.com/jcubic/lips

The most important features:
* Binary Compiler (I call it dumb because it's just a form of lisp data serialization) that speeds up loading standard library that is written in Scheme in Browser and CLI.
* Lists are now JavaScript iterators, which allows making an interesting mix of JavaScript and lisp code, like:

(Array.from '(1 2 3))
;; => #(1 2 3)

Array.from is just a JavaScript function that is called from Scheme, that works with iterators.

* Also a lot of bug fixes.

If you don't know LIPS, the main features are:

* Great integration with JavaScript, it should work with any existing JavaScript library.
* It supports automatic async..await which makes code shorter than equivalent JavaScript. But you still can quote the promises and use them as values.
* Built-in SXML support that allows creating Preact (React was not tested) applications in S-Expression syntax instead of JSX.
* It has a built-in help system like ELisp and web REPL show tooltips with help messages.
* It supports literals regular expressions, right now have a final syntax same as in Gauche.
* It has a feature that I've called syntax extensions that allow to extend the parser at runtime. This feature was used to implement vector and object literals.
* It also has a feature that allows custom data types (like records or classes that are just JavaScript function constructors) to have the same representing in code and when printed. So you don't lose homoiconic when creating a custom syntax extension.
* It supports lisp and hygienic macros (syntax rules have a few known bugs that I plan to fix in version 1.1 when introducing expansion time), this is the most unit tested feature of the language (that is probably most complicated to make right).
* It implements a full numerical tower (not fully tested).
* It has a few functional helper procedures inspired by the RamdaJS library, like curry, pipe, or compose.


The most up to date documentation can be found on a Wiki
https://github.com/jcubic/lips/wiki/v1.0.0

Another interesting usage is a bookmark that will create REPL on any website (that doesn't implement CSP). https://lips.js.org/#bookmark

The most critical missing features are:
* TOC, call/cc, and R7RS libraries.
Those are on my TODO list for version 1.0.
Reply all
Reply to author
Forward
0 new messages