Hacker News new | ask | show | jobs
by hajile 3219 days ago
What "good" languages does WASM enable?

All those other dynamic scripting languages? They're DOA because nobody's going to download the entire VM every time.

What about all those nice functional languages? Very problematic because the toolchain relies on LLVM-like semantics which don't like good garbage collectors or functional programming in general.

We then get down to C-like languages, Rust, and more esoteric languages (and promptly discard the esoteric ones for lack of a decent ecosystem).

Who in their right mind wants to write a front-end in C++ or Rust? By the time you get anything done, the web has changed and you're stuck with a pile of dated code that takes too much time and costs too much money to update.

The web had a shot at a decent language with Dart (it was/is even an ECMA standard). It didn't die because of other browsers. It died because of poor web dev adoption rates.

If only Eich had been allowed to implement scheme then none of this would have been an issue.

4 comments

> All those other dynamic scripting languages? They're DOA because nobody's going to download the entire VM every time.

Hosted on a CDN in compact form, it'll be feasible; application can just link against it, it does not have to be recompiled on the user's machine.

> Very problematic because the toolchain relies on LLVM-like semantics which don't like good garbage collectors or functional programming in general.

That will indeed be a problem. The design restrictions imposed by the environment (continuous heap, emulated concurrency) will bite us in the ass hard. Instead of layering a lot of very leaky, performance killing "security" features over other half assed features, a better way would be to step back and use a tiny hypervisor. That way you have hardware accelerated memory safety, but it would require the application to be able to run in a microkernel; recent IncludeOS + ukvm has a boot time of 11 ms. (Great, now I want to write a plugin that embeds qemu in Chromium and uses a virtual device to communicate with the host.)

> Who in their right mind wants to write a front-end in C++ or Rust? By the time you get anything done, the web has changed and you're stuck with a pile of dated code that takes too much time and costs too much money to update.

This has been repeated again and again, but the proof that you are programming faster in JS than in Rust (or whatever language you want) is very lacking. At least, if you want to use your code longer than two days, because that's the time many of those "I just write it and it will work!" JS programs stop being readable. But even then I have my doubts. Sure, if you've never used a language before you will be slower, but that doesn't make the "JS can be programmed faster" assumption correct.

> Who in their right mind wants to write a front-end in C++ or Rust?

Every AAA Game Dev.

Java is also enabled by WASM and plenty of large applications are made in that. Things like Google Docs are made in Java and cross compiled to javascript as it is. Someone thought static typing and sane language semantics were worthwhile.

There are already ongoing efforts to port JVM and .NET environments into WASM, although currently it is more of a proof of concept.

When WASM gets mature, expect the return of the plugins, maybe even a Flash to WASM compiler.

I don't believe the answer to JS is downloading, and compiling the entire JVM.
As I mentioned, It is already happening.

https://github.com/SteveSanderson/Blazor

https://github.com/kg/ilwasm

https://github.com/konsoletyper/teavm

In two to three years time, Flash will be back.

I think you are adding extra steps that are not needed. The programming model requires the JVM there are a few tools that compile Java directly to native code. There are tools that compile it to java script, and there are beta quality tools that compile it to WASM.