An experimental compiler from Rust to WebAssembly
Rust TeX Other
Switch branches/tags
Nothing to show
Clone or download
Pull request Compare This branch is 201 commits ahead, 1479 commits behind solson:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
binaryen @ 76c8f82
rt
rust-examples
src
tests
tex
.editorconfig
.gitignore
.gitmodules
.travis.yml
Cargo.lock
Cargo.toml
LICENSE-APACHE
LICENSE-MIT
README.md
build.rs
fact.js

README.md

mir2wasm

An experimental compiler from Rust to WebAssembly, based on rustc + Rust MIR.

This doesn't do anything useful yet.

Hacking notes

I recommend that you install rustup and then use it to install the current rustc nightly version:

Tested with nightly-2017-03-03

git clone https://github.com/brson/mir2wasm.git
cd mir2wasm
rustup override set nightly-2017-03-03
cargo build
cargo run -q -- rust-examples/nocore-hello-world.rs

Do println debugging with debug! so it goes to stderr and print it like:

RUST_LOG=mir2wasm cargo run -q -- rust-examples/nocore-hello-world.rs
rustc -Z unstable-options --unpretty=mir rust-examples/nocore-hello-world.rs

rustc docs.

Plug this stuff into a wast file to print something:

  (import $print_i32 "spectest" "print" (param i32))
  (export "foo" $foo)
...
    (call_import $print_i32 (get_local $1))

Resources

  • miri the MIR interpreter. mir2wasm is derived from it but shares no actual code. It probably should share code though, and there's lots to learn from miri.
  • rustc_trans::mir.
  • roadmap discussion.

License

Licensed under either of

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you shall be dual licensed as above, without any additional terms or conditions.