• gcr
  • ·
  • 45 minutes ago
  • ·
  • [ - ]
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
  • ·
  • 35 minutes ago
  • ·
  • [ - ]
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.

  • gcr
  • ·
  • 50 seconds ago
  • ·
  • [ - ]
ah that's right! apologies
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.
I love this. Racket is the future we were promised.
  • neilv
  • ·
  • 25 minutes ago
  • ·
  • [ - ]
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.)
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
  • ·
  • 37 minutes ago
  • ·
  • [ - ]
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
  • ·
  • 38 minutes ago
  • ·
  • [ - ]
As far as I know compiling full Racket to WASM is impossible because of continuations.
check out grain! https://grain-lang.org/
Hoot is another interesting one: https://spritely.institute/hoot/
I noticed the --expose-gc. Does this mean it's using the (now standardized) Wasm GC feature?
Is a (Web)Racket engineer a racketeer?
  • gcr
  • ·
  • 37 minutes ago
  • ·
  • [ - ]
They're certainly a schemer. :-)