Lumina – a statically typed web-native language for JavaScript and WASM
github.com
github.com
GitHub: https://github.com/nyigoro/lumina-lang npm: https://www.npmjs.com/package/lumina-lang
I’d love feedback on the language design, the web-native direction, and the developer experience.
Technically its type inference is not HM but it's as expressive. In particular it has GADTs and HKTs, which I saw in your docs.
I wonder what you feel is missing from Scala (its .js/Wasm version) that Lumina provides?
The second thing is to have a general overview of the features of the language on the first page that's a little more then just hello world. Have a loop, a variable, ect. I shouldn't have to "work" to get a feel for what's different and special about your language compared to vanilla Javascript, Typescript, Rust (via WASM,) C# (via WASM) and the countless other transpiled or WASM-compiled languages.
Especially Grain, as it was also developed as an ML for WebAssembly.
Like others in the comments, I’m wondering where this fits into the existing ecosystem. What kinds of problems does Lumina solve especially well vs. Typescript, or a WASM-compatible language?
One decision I made is to specifically not compile to JS. JS/Wasm interop is good enough with Wasm GC that I made the choice to focus on Wasm-only constraints and semantics and not worry about how things like the types being wrong, or how ints translate to JS, how to handle null vs undefined, etc. JS GCs collect objects and cycles across the Wasm boundary, and with the JS string built-ins you can handle strings efficiently.
I couldn't load your demo, btw.