Am So., 25. Apr. 2021 um 23:29 Uhr schrieb Adam Nelson <xxxxxx@nels.onl>:

On 4/25/21 5:14 PM, Marc Nieper-Wißkirchen wrote:

Very interesting! Is this supposed to be a free-standing implementation or will it be hosted on an existing Scheme?

Implemented in semi-portable R7RS (based on Schemepunk, currently using Gauche for testing and Chicken for compilation). The idea is for it to be self-hosting, so that it can eventually produce a native binary of itself.

Are you going to write backends that produce native machine code?

This is the main thing Schemepunk was meant for. Most of my work in Schemepunk was on SRFI 166, which is what the error message features are based on. SRFI 166 is uniquely well-suited for putting together complex CLI output. And then I plan on bundling Schemepunk (or something like it, if this scheme-live project ends up subsuming Schemepunk) into Tangled, and suggesting that it be used as the standard library, to avoid lock-in. This would allow users to try Tangled as their first Scheme, and move on without having to change much if they decide they want to use something else, which goes a long way toward solving the "what Scheme to use" analysis paralysis.

As long as the libraries one uses can be implemented (mostly) portably, there won't be a lock-in. So it makes sense to have a number of repos (like Scheme Live, Schemepunk, etc.), whose libraries are based on this premise. The number of these repos doesn't have to be fixed.

For now, I have a working but ultra-minimal language server. It just checks syntax, but it has some useful hints, like inferring the location of extra/missing close parentheses by indentation. I'm nearly done adding library parsing and syntax-rules macros to the server, at which point it should provide a completion menu.

Will you be able to compete with Racket/DrRacket in its regard?

Once I have completion working, I'll make it publicly available. For now, the repo is too entangled with my home Git server (a few submodules referring to URLs on local servers), so I'll need to delete that history and clean it up before I put it on the public internet.

I would call Unsyntax rather a transpiler than an interpreter. It takes programs and libraries written in R7RS+extensions and outputs very simple R7RS (which doesn't need any advanced macro or module system features).
I should look into it more, there's probably a lot I could use from it. I'm trying to implement most of the newer syntax SRFIs (syntax parameters, auxiliary syntax, etc.) from the beginning in Tangled.

Feel free to use it and to improve it. At the moment, I am the sole author of it, so Unsyntax can only improve if there is a second project using it.