I wonder if anyone has made a low-level #Lisp that is specifically designed to be semantically close to #WASM code, so that it compiles to be very very efficient (kinda like how Lua is really fast because it’s very semantically similar to C code, which is what its interpreter is written in)

like WASM already reads kinda like a Lisp to me, and I bet that would run crazy fast

(I’ve been tempted to do this several times I’m ngl. I think I want to learn WASM one of these days. sadly most of the “learn WASM” tutorials are more like “learn how to compile some shitty language like C++ to WASM”)

@kasdeya apart from WAT being a sex pest, it really doesn't read anything like a lisp, it being a stack machine and all, just shares the serialization
@kasdeya textual wasm is a formal specification of a wasm syntax using s-expressions. WASM *is* a lisp
@kasdeya take a look at Guile Hoot Scheme and Wastrel work by Andy Wingo and Spritely Institute. May be somewhat related to your search.

@kasdeya This probably isn't what you're looking for: it's an implementation of #Lisp 1.5 -- the oldest published version of Lisp -- which compiles to #WASM .

It might interest you anyway ;-)

https://github.com/zick/IchigoLisp

GitHub - zick/IchigoLisp: LISP 1.5(-ish) implementation in WebAssembly

LISP 1.5(-ish) implementation in WebAssembly. Contribute to zick/IchigoLisp development by creating an account on GitHub.

GitHub

@kasdeya If you like low-level languages, the official WebAssembly text format (.wat) is actually already an S-expression language.

https://developer.mozilla.org/en-US/docs/WebAssembly/Guides/Understanding_the_text_format

Understanding WebAssembly text format - WebAssembly | MDN

To enable WebAssembly to be read and edited by humans, there is a textual representation of the Wasm binary format. This is an intermediate form designed to be displayed in text editors, browser developer tools, and other similar environments. This article explains how the text format works in terms of its raw syntax, and how it relates to the underlying bytecode it represents and the wrapper objects that represent Wasm in JavaScript.

MDN Web Docs