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-wasi
target for Rust!
- @alexcrichton already has a pull request to add a
RustVolley
is a reimplementation of the Blobby Volley 2 game in Rust and Wasm- CloudFlare’s new
wrangler
CLI 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_timers
crate’s public API to usecallbacks
andfutures
submodules, as we collectively agreed upon in other issues. - @cbrevik implemented the
gloo_console_timer
crate, which provides scoped closures and RAII-style helpers for working withconsole.time
andconsole.timeEnd
. - @OddCoincidence updated the
gloo_timers
internals to usewasm_bindgen::closures::Closure::once
forsetTimeout
. - @RyLev added some initial Azure Pipelines continuous integration tests for Gloo.
- @David-OConnor added the skeleton of an
mdbook
guide for Gloo.
wasm-bindgen
- @alexcrichton tweaked the
no-modules
target’s generated JavaScript glue for instantiating Wasm modules to support CloudFlare workers (and other environments wherex instanceof WebAssembly.Module
might 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-pack
release. - @alexcrichton cleaned up the
wasm-bindgen
CLI’s options to take--target blah
instead of--blah
(which still exist but are deprecated). - @stevebob enabled
mdbook
’s link checking tests for thewasm-bindgen
guide to our continuous integration tests. - @alexcrichton implemented
rustwasm/rfcs#8
to enable transitive crates dependencies on npm packages. - @RReverser added the
constructor
property tojs_sys::Object
. - @alexcrichton fixed sending large
u32
s from Wasm to JS. - @RReverser consistently exposed
is_like_none
for 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
TextEncoder
implementation.
wasm-pack
- @alexcrichton fixed a panic
that could happen when installing the
wasm-bindgen
CLI 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.ts
file for--web
target 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