4 ms·
> - In your average Rust project, all dependencies are already built from source That is only the case for open source code like crates.io, there is nothing th
by jfkebwjsbx 6y ago
> - In your average Rust project, all dependencies are already built from source
That is only the case for open source code like crates.io, there is nothing that guarantees you will get the source code of a third-party, though.
I mention this because in the native world it is common to give customers precompiled libraries.
> - Already using LLVM as the compiler backend
Some people don't seem to know this, but all languages that target LLVM (including C, C++, Fortran, Ada, Julia, Swift and others) can be used in WebAssembly.
- steveklabnik 6y ago> all languages that target LLVM (including C, C++, Fortran, Ada, Julia, Swift and others) can be used in WebAssembly. Having LLVM doesn't mean that webassembly Just Works, in the same way that having LLVM doesn't mean that all of its architectures Just Work. And even after getting past the "hello world" stage, there's a lot of other work to do to make it more than just a toy. Let's take Ada, for example. https://blog.adacore.com/use-of-gnat-llvm-to-translate-ada-applications-to-webassembly https://blog.adacore.com/use-of-gnat-llvm-to-translate-ada-a... talks about how to use Ada to build stuff for wasm, but you need to include https://github.com/godunko/adawebpack/ https://github.com/godunko/adawebpack/ to make things work well. Someone had to write that code.
- jfkebwjsbx 6y agoNo, that is if you want runtime support, etc. If you just want to run some computational code (which is the case for most of the Wasm use today), it will Just Work, as you say. In fact, that is how I sped up a webpage: I just wrote myself the minimal support needed to run the code that computed X, and that's it. I don't want the entire world or standard library for computational bits to work.
- steveklabnik 6y agoThe example I pointed out was for extra stuff, sure, but even just to get a compiler to spit things out, work needs to be done. I don't know Ada's compiler well enough to point to where that work is, but here's the initial implementation of the asmjs and wasm targets in rustc, for example https://github.com/rust-lang/rust/pull/36339 https://github.com/rust-lang/rust/pull/36339 This is just true of any architecture. LLVM is a toolkit, it isn't magic.