Join GitHub today
GitHub is home to over 31 million developers working together to host and review code, manage projects, and build software together.
Sign upMigrate wasm target to LLVM wasm backend #38804
Comments
brson
added
O-wasm
E-help-wanted
labels
Jan 3, 2017
This comment has been minimized.
This comment has been minimized.
|
re: storing wasm in rlibs and hacking emcc to make it link those, this would neatly be solved by MIR-only rlibs. That makes wasm the second backend that could use this (cc #38787) so I'm starting to think we should have an issue or something to collect these use cases. cc @michaelwoerister |
This comment has been minimized.
This comment has been minimized.
|
What Is this up to? How does the update to LLVM 4.0 change things? |
This comment has been minimized.
This comment has been minimized.
|
@Eh2406 Still no progress. The LLVM 4.0 upgrade only inches us closer, but it still doesn't have a production ready backend. Since the backend does exist (I think) in the LLVM we're on, we can start enabling it for testing purposes. |
This comment has been minimized.
This comment has been minimized.
|
I am currently working on using the LLVM backend behind a new target triple. The current wasm target is wasm32-unknown-emscripten, so for the new one I thought I would use wasm32-unknown-unknown. This will let us start using the LLVM backend in testing, but I was wondering what the plan is beyond that. Are we trying to remove the emscripten wasm target completely? If so, do we want to keep the asm.js target? Getting rid of both emscripten targets removes our dependency on FastComp, but if someone needs the asm.js target then this clearly isn't a possibility. |
This comment has been minimized.
This comment has been minimized.
|
@tlively I'd prefer to both retain the asm.js target and drop fastcomp, which I know is pretty hard; the reason being that I fear that production users will want a JS fallback for browsers missing WASM support. To achieve this ultimately I'd expect to drop fastcomp and employ a wasm->asm.js translator. That said, wasm support is rolling out fast, so this concern may end up being unfounded. I'd suggest the path forward should look roughly like
|
This comment has been minimized.
This comment has been minimized.
|
This plan sounds reasonable to me. I don't know of work on a wasm -> asm.js translator, but that sounds like a tool that could be reasonably expected to exist as wasm picks up steam. |
This comment has been minimized.
This comment has been minimized.
|
There is some work on a wasm -> asm.js translator, named There is also the possibility to write a wasm-interpreter in JavaScript (probably in asm.js). This seems to be supported by
Who is working on that? How could one help? Is there an IRC channel just about the Rust-wasm story? |
This comment has been minimized.
This comment has been minimized.
I am! I'm not sure how the work could be parallelized, though. There's no IRC channel or other dedicated communication that I know of, but a PR with some related discussion is #42571. |
This comment has been minimized.
This comment has been minimized.
|
Maybe it's time to start the #rust-wasm IRC channel? |
bors
added a commit
that referenced
this issue
Jun 20, 2017
This comment has been minimized.
This comment has been minimized.
WillemMali
commented
Jul 15, 2017
•
|
Are there I'd like to try putting together something that generates HTML serverside and also generates clientside wasm to serve along with that, from a single source file. My idea was to use a combination of Cargo I'm not a
Any thoughts / instructions would be appreciated. |
This comment has been minimized.
This comment has been minimized.
|
@WillemMali if you want to compile to wasm right now, the best way to do that is with the wasm32-unknown-emscripten target. this is a good guide on how to do that. wasm32-experimental-emscripten is truly experimental right now. Among other things, using it currently requires you to build rustc yourself locally, and there is no rustup support for it. However, I have gotten a few questions about using it, so I will write up some documentation and link to it here. |
Mark-Simulacrum
added
the
C-tracking-issue
label
Jul 26, 2017
This comment has been minimized.
This comment has been minimized.
|
I'm going to close this in favor of #44006 |
brson commentedJan 3, 2017
At some point we must move rustc off the LLVM fastcomp backend. Maintaining it in sync with emcc is exceedingly burdensome. The only viable solution I see any time soon is to use the nascent LLVM wasm backend, which is not yet generally usable. I expect that we will switch to that backend, emitting wasm into rlibs instead of LLLVM IR, then link multiple wasm modules together via emcc. We may need to hack on emcc a bit to teach it to link wasm modules directly, not sure.
Even though the LLVM wasm backend is not fully working yet, somebody could go ahead and start doing the conversion and seeing what the results are like.
cc LLVM upgrade #37609