trusktr
- speed up in some cases - ability to compile the same app to native
Perhaps we should include HTML and CSS in the list of languages to choose from next year! :P
I picked JavaScript thinking of AssemblyScript as a tool (not a language) to use JavaScript (with types) as a language compiled to WebAssembly. Maybe the results are not accurate.
I also use Wasm for web (the largest category of use so far) and would not use a JavaScript engine inside Wasm to talk to plain JavaScript in a browser (I don't think any web developer would hehe).
Perhaps the survey should have an option to choose
"JavaScript running in a JavaScript engine inside WebAssembly",
and
"JavaScript compiled to WebAssembly",
to make the results clear as to which "JavaScript" people are using.
Does a JavaScript engine inside WebAssembly even count as a "WebAssembly language"? Or is that C++ and Rust actually?
Does running a browser in WebAssembly make HTML and CSS WebAssembly languages too?
I think that NEAR users just use the SDK, I don't think the users chose JS specifically for it to be in Wasm.
I'm not sure what type of compiler to label that as, but that's the goal.
The problem being discussed is about runtime interoperability between JS (with WTF-16 string format) and WebAssembly.
In the past year it has gained numerous libraries and bindings, including from Surma from Google. Stay tuned...
This influx is the reason why AssemblyScript is now in the top three WebAssembly languages next to C++ and Rust (https://blog.scottlogic.com/2021/06/21/state-of-wasm.html) and should not be taken lightly.
There is a huge opportunity here to build an optimal foundation for these incoming developers, so that they won't be let down.
The influx has only just begun.
Ideally though, interface types would give languages options: the ability to choose which format their boundary will use. Obviously a JS host and a language like AssemblyScript would align on WTF-16, while a Rust Wasm module running on a Rust-powered Wasm runtime like wasmtime could optimally choose UTF-8.
I'm hoping things will be designed with flexibility in mind for this upcoming most-generic runtime feature.
https://github.com/WebAssembly/meetings/blob/main/main/2021/...
- an extra performance cost due to format conversion at the boundary,
- as well as negative implications on security and data integrity,
thus making this a loss for the web if Interface Types will not be fully compatible with the web (JavaScript) by default.
Hope that sums it up in one sentence. :)
How does a compiler ensure that when that string is passed to a Rust Wasm module it goes to it in UTF-8 and then when moments later the same string is passed by the same module to JS it goes over as WTF-16?
How will the compiler know where the string is being passed after compilation (at runtime)?
What new syntax would you propose for TypeScript to make it possible to work with all strings types? How would you keep TS/JS developer ergonomics up to par with what currently exists?
If Interface Types we're to consider web as a first class citizen (because Wasm originated as a web feature) then interop between Wasm modules and JS would considered of utmost importance, without making a web language ,(such as AssemblyScript) have to go through great lengths to engineer that aforementioned complication.
That's not what the web needs. The web needs WebAssembly to work flawlessly with JavaScript for maximal potential, so the web will be great and not just a performance landmine that native developers will laugh (as much) at.
``` let foo: string = "whatever" ```
be able to work in any similar sense as TS/JS if? How can that map to multiple string types? The idea is both AS and TS use the same syntax for strings, and are compatible across boundaries (TS for JS side, AS for Wasm side). Having multiple string types is possible, but this would greatly reduce developer ergonomics.
The concept isn't new. For example, fine-grained reactivity existed in old frameworks like Knockout.js, in Qt before web frameworks, in alternative frameworks like Aurelia, and even in Mobx with React.
But Solid finally makes the concept have it's theoretical potential fully realized.
Definitely worth checking out!
I also wrote an article that has some additional reasons to love Solid that aren't listed in the above release article:
https://dev.to/trusktr/a-few-reasons-why-i-love-solid-js-403...