This Week in Rust and WebAssembly 15
Hello and welcome to another issue of This Week in Rust and WebAssembly!
Rust is a systems language pursuing the trifecta: safety, concurrency, and speed.
WebAssembly is a stack-based virtual machine and instruction set. It is fast, safe, portable, and part of the open Web platform. By compiling to WebAssembly, we can run Rust code on the Web!
This is a weekly summary of Rust and WebAssembly’s progress and community.
Did we miss something? Tweet to us at @rustwasm or send us a pull request.
Want to get involved in Rust and WebAssembly? Join the Rust and WebAssembly working group!
News and Blog Posts from Around the Web
Want to make sure something ends up on this list next time we publish an issue? Leave a comment on this issue.
- Standardizing WASI: A system interface to run WebAssembly outside the
web
- @alexcrichton already has a pull request to add a
wasm32-unknown-wasitarget for Rust!
- @alexcrichton already has a pull request to add a
RustVolleyis a reimplementation of the Blobby Volley 2 game in Rust and Wasm- CloudFlare’s new
wranglerCLI tool lets you deploy Rust-generated Wasm on CloudFlare workers - Fastly open sources Lucet: a native WebAssembly compiler and runtime. Its built with Rust on top of Cranelift and supports WASI.
Updates from rustwasm/*
🎉 Welcome @Pauan to the Rust and WebAssembly working group core team! 🎉
RFCs
New RFCs
None.
Final Comment Period RFCs
Merged RFCs
None.
Working Group Meetings
- Watch the recording of this week’s working group meeting on YouTube
- Come join us at next week’s working group meeting!
Gloo
- Gloo Update: Onion Layers, Timers, and Events
- @Aehmlo split up the
gloo_timerscrate’s public API to usecallbacksandfuturessubmodules, as we collectively agreed upon in other issues. - @cbrevik implemented the
gloo_console_timercrate, which provides scoped closures and RAII-style helpers for working withconsole.timeandconsole.timeEnd. - @OddCoincidence updated the
gloo_timersinternals to usewasm_bindgen::closures::Closure::onceforsetTimeout. - @RyLev added some initial Azure Pipelines continuous integration tests for Gloo.
- @David-OConnor added the skeleton of an
mdbookguide for Gloo.
wasm-bindgen
- @alexcrichton tweaked the
no-modulestarget’s generated JavaScript glue for instantiating Wasm modules to support CloudFlare workers (and other environments wherex instanceof WebAssembly.Modulemight fail, like across<iframe>s) - @alexcrichton made it so that our emitted JS glue for reflecting Rust closures as JS functions will properly detect and protect against use-after-free from the JS side.
- @alexcrichton fixed a bug where Rust structs exported as JS didn’t always emit the JS classes glue in a deterministic order.
- @fitzgen made the “without a JS bundler” example use
wasm-pack build --target web, now that its supported in the latestwasm-packrelease. - @alexcrichton cleaned up the
wasm-bindgenCLI’s options to take--target blahinstead of--blah(which still exist but are deprecated). - @stevebob enabled
mdbook’s link checking tests for thewasm-bindgenguide to our continuous integration tests. - @alexcrichton implemented
rustwasm/rfcs#8to enable transitive crates dependencies on npm packages. - @RReverser added the
constructorproperty tojs_sys::Object. - @alexcrichton fixed sending large
u32s from Wasm to JS. - @RReverser consistently exposed
is_like_nonefor our generated JS glue, fixing a bug along the way. - @RReverser simplified the ABI
representation of
Option<char>. - @alexcrichton migrated all the
wasm-bindgen-*crates to Rust 2018 edition. - @RReverser made iterating over JS objects via the JS iteration protocol faster by removing redundant property string decoding.
- @RReverser made a special version of passing strings from JS to
Wasm when we are
targeting Node.js that is faster than using Node.js’s
TextEncoderimplementation.
wasm-pack
- @alexcrichton fixed a panic
that could happen when installing the
wasm-bindgenCLI tool.
Requests for Contribution
Want to get involved in Rust and WebAssembly? Join the Rust and WebAssembly working group!
New Good First Issues
wasm-bindgen:.d.tsfile for--webtarget does not define theinit()functionwasm-bindgen: Closures should implementstd::fmt::Debug- Gloo: Help ensure we have tracking issues on file for making utility crates for all Web platform features
Rust and WebAssembly