Woops, yeah, I mean that. Fixed it in the gist
I’m afraid I accomplished little on emscripten yesterday. Let’s think more concretely about how to divide up the work. I’ve updated the wasm issue on the tracker with the tasks.
@jer is there anything particular you want to tackle? I’m thinking a good task for @rschulman would be to get
make check working successfully, just add
ignore-emscripten tags. @rschulman are you interested in doing that?
Run a single set of tests with a command like
python src/bootstrap/bootstrap.py --step check-rpass --target=asmjs-unknown-emscripten
The full set of test ‘steps’ is:
check-rpass check-rpass-full check-rpass-valgrind check-cfail check-cfail-full check-pfail check-rfail check-rfail-full check-pretty check-pretty-rpass check-pretty-rpass-full check-pretty-rfail check-pretty-rfail-full check-pretty-rpass-valgrind check-mir-opt check-codegen check-codegen-units check-incremental check-ui check-debug-info check-rustdoc check-docs check-rmake check-crate-rustc check-cargotest
Each of these can be run individually while sussing out the errors, then
make check will do the full check. I’m not sure how some of these interact with the emscripten target.
I think that the bootstrap is wrong in the section where it checks git submodules… When running the
bootstrap.py I was getting a message saying that
src/bootstrap/lib.rs was panicking at line 536. Looks like the
"*" on line 531 should be a
"+". Anyone else seeing that?
I will take a stab at getting the
ignore-emscripten tags in where they belong.
Fork rust-lang/rust (just because it’s the upstream). But yes submit PR’s to my repo, emscripten-new branch.
I have not seen that, but the code does look wrong in the way you describe. Strange. You might submit a PR to rust-lang/rust for that.
Looks like someone already fixed it upstream.
@rschulman How is it going? On Friday it sounded like you had made quite some progress, discovering that rustbuild needed to be hacked up a bit for the std/core tests.
Do you mind submitting a PR for the progress you’ve already made?
@brson, happy to give you a PR with what is done so far.
Would you like me to give you two: one with the
ignore-emscripten additions and one with whatever I have so far on fixing
Just a single PR is fine!
Alright. Will submit in a few.
I have new files in
src/bootstrap/target which I assume are built by bootstrap and shouldn’t be included in the PR?
@rschulman Yes, that’s right. Usually that folder doesn’t exist, though perhaps it’s created if you run cargo directly in
It sounds like there are still failing tests in stdtest, like those that spawn threads. These can similarly have
cfg_attr(target_os = "emscripten", ignore) attributes. @rschulman is going to look into those as well, but doesn’t have a great deal of time this week.
--step check-target --target=asmjs-unknown-emscripten passes (with lots of ignored test cases if necessary) we can get PRs into rust-lang/rust. I’d like to do that by the end of this week, though friday/saturday is rustconf so it’s going to be difficult.
With that out of the way, I now hopefully find some time to work on the remaining issues as well.
I’ve wanted to play with this, but have been struggling to get rust built. Thank you so much for providing the docker image!
I’ve pushed several commits to my emscripten-new branch. These improve testing support and add a wasm32-unknown-emscripten target that is sufficient to run wasm hello.rs in node using the binaryen interpreter. This branch now requires a commit of libc from my fork as well as my fork of llvm.
I’m going to go ahead and submit PRs for all this stuff now and try to get it landed, while I continue to get the test suite to run cleanly for asmjs.
I’ve opened another issue on the issue tracker to track progress of landing this work. The issue I was previously using is about mir2wasm, and I accidentally commandeered it temporarily to track this work.
So now my current emscripten-new branch seems to cleanly run the tests for asmjs-unknown-emscripten. The libc wasm32 patches are upstream. My next steps are to get the fastcomp patches merged, rebase brson/emscripten-new onto rust-lang/master, and post a PR to Rust.
Additional work for people to pick up include:
- Going through all the many failing asmjs-unknown-emscripten tests and seeing if any can be fixed. A lot of them seem like they relate to various options that may be configurable in emscripten (like resizable heaps, networking and filesystem support), and it’s not clear how or whether we should deal with them in-tree (I suspect they can be dealt-with as
-C link-argsand std doesn’t need to care, but maybe the test runner should be tweaked to change the emcc configuration. not sure; needs investigation).
- Fixing unwinding. This is a deep problem and requires fixes in Rust and emscripten. Needs a hero.
I would like it if someone writes a opengl/webgl demo.