Remix.run Logo
The WebRacket language is a subset of Racket that compiles to WebAssembly(github.com)
64 points by mfru 4 days ago | 13 comments
gcr 39 minutes ago | parent | next [-]

Is there any shared lineage between this and Whalesong, a previous Racket->JS compiler?

Of course both projects have the same maintainer if I recall, Jens Axel Søgaard is a rockstar :)

neilv 29 minutes ago | parent [-]

Jens Axel Søgaard is cool and involved in many things. We collaborated on SICP support.

Original developer of Whalesong was Danny Yoo. https://www.hashcollision.org/whalesong/

There was also this: https://docs.racket-lang.org/racketscript/

Dave Herman worked on various JS-related libraries for Racket (or PLT Scheme) before he was involved with Rust.

publicdebates 37 minutes ago | parent | prev | next [-]

I read the WASM spec and became somewhat of an expert in it for the purpose of eventually designing a low-level language specifically for wasm, to be the most efficient and lowest-level language you could possibly have for wasm, and then gradually add high level concepts into it to make it more convenient. Kind of like building C on top of asm, and then gradually evolving it into C++. That project never came about though due to lack of community interest and time on my part, but I like seeing languages that take a fresh look at how to integrate with wasm using novel techniques to aim for maximal efficiency.

noelwelsh 2 hours ago | parent | prev | next [-]

I love this. Racket is the future we were promised.

neilv 19 minutes ago | parent [-]

Speaking of prolific Racketeers... Noel! Just an hour ago, on a walk, I was thinking, "I should work through that one LLM book, and implement it in Racket." (But have started job-hunting, so will probably be Python.)

dfajgljsldkjag 3 hours ago | parent | prev | next [-]

It is interesting to see another language target WebAssembly especially one like Racket. The fact that it compiles to a subset of the language limits its utility right now. I think it is a neat proof of concept but it needs full language support.

gcr 31 minutes ago | parent | next [-]

For folks curious about the supported language subset, here's a summary:

- Modules aren't implemented yet, but are high on the list

- Continuation-based control flow isn't supported yet, including break and promises. Tail calls are supported though.

- No support for complex numbers, bignums, weak hashtables, immutable hashtables, prefab structs, regexp, or file I/O support

Most of the rest of racket/base should work, according to the README. There's also a FFI for javascript, including bindings for Math, DOM, Canvas, MathJax, XTermJS, and JSXGraph. Overall feels like you can use most of the language right now unless you need odd Racket-isms or call/cc.

volemo 32 minutes ago | parent | prev | next [-]

As far as I know compiling full Racket to WASM is impossible because of continuations.

d_philla 2 hours ago | parent | prev [-]

check out grain! https://grain-lang.org/

apitman an hour ago | parent | prev | next [-]

Hoot is another interesting one: https://spritely.institute/hoot/

titzer 2 hours ago | parent | prev | next [-]

I noticed the --expose-gc. Does this mean it's using the (now standardized) Wasm GC feature?

KarenDaBass 36 minutes ago | parent | prev [-]

Is a (Web)Racket engineer a racketeer?

gcr 31 minutes ago | parent [-]

They're certainly a schemer. :-)