|
| 1 | +--- |
| 2 | +title: "This Week in Rust and WebAssembly 15" |
| 3 | +--- |
| 4 | + |
| 5 | +Hello and welcome to another issue of *This Week in Rust and WebAssembly*! |
| 6 | + |
| 7 | +[Rust](https://rust-lang.org) is a systems language pursuing the trifecta: |
| 8 | +safety, concurrency, and speed. |
| 9 | + |
| 10 | +[WebAssembly](http://webassembly.org) is a stack-based virtual machine and |
| 11 | +instruction set. It is fast, safe, portable, and part of the open Web |
| 12 | +platform. By compiling to WebAssembly, we can run Rust code on the Web! |
| 13 | + |
| 14 | +This is a weekly summary of Rust and WebAssembly's progress and community. |
| 15 | + |
| 16 | +Did we miss something? Tweet to us at [@rustwasm](https://twitter.com/rustwasm) |
| 17 | +or [send us a pull request](https://github.com/rustwasm/rustwasm.github.io). |
| 18 | + |
| 19 | +**Want to get involved in Rust and WebAssembly? [Join the Rust and WebAssembly working group!][get-involved]** |
| 20 | + |
| 21 | +## News and Blog Posts from Around the Web |
| 22 | + |
| 23 | +*Want to make sure something ends up on this list next time we publish an issue? |
| 24 | +[Leave a comment on this issue.](https://github.com/rustwasm/team/issues/79)* |
| 25 | + |
| 26 | +* [**Standardizing WASI: A system interface to run WebAssembly outside the |
| 27 | + web**](https://hacks.mozilla.org/2019/03/standardizing-wasi-a-webassembly-system-interface/) |
| 28 | + * @alexcrichton already has a pull request to [add a `wasm32-unknown-wasi` |
| 29 | + target](https://github.com/rust-lang/rust/pull/59464) for Rust! |
| 30 | +* `RustVolley` is a reimplementation of the Blobby Volley 2 game in Rust and Wasm |
| 31 | + * [Source](https://github.com/RustyVolley/RustyVolleySrc) |
| 32 | + * [Live Demo](https://rustyvolley.github.io/WebDemo/) |
| 33 | +* [CloudFlare's new `wrangler` CLI tool lets you deploy Rust-generated Wasm on |
| 34 | + CloudFlare workers](https://blog.cloudflare.com/introducing-wrangler-cli/) |
| 35 | +* [Fastly open sources Lucet: a native WebAssembly compiler and |
| 36 | + runtime.](https://www.fastly.com/blog/announcing-lucet-fastly-native-webassembly-compiler-runtime) |
| 37 | + Its built with Rust on top of Cranelift and supports WASI. |
| 38 | + |
| 39 | +## Updates from [`rustwasm/*`](https://github.com/rustwasm) |
| 40 | + |
| 41 | +[**🎉 Welcome @Pauan to the Rust and WebAssembly working group core |
| 42 | +team! 🎉**](https://internals.rust-lang.org/t/welcome-pauan-to-the-rust-and-webassembly-domain-working-group-core-team/9707) |
| 43 | + |
| 44 | +### RFCs |
| 45 | + |
| 46 | +#### New RFCs |
| 47 | + |
| 48 | +None. |
| 49 | + |
| 50 | +#### Final Comment Period RFCs |
| 51 | + |
| 52 | +* [Add an amendment to the RFC process](https://github.com/rustwasm/rfcs/pull/9) |
| 53 | + |
| 54 | +#### Merged RFCs |
| 55 | + |
| 56 | +None. |
| 57 | + |
| 58 | +### Working Group Meetings |
| 59 | + |
| 60 | +* [Watch the recording of this week's working group meeting on |
| 61 | + YouTube](https://www.youtube.com/watch?v=gaTwOc0eGb4) |
| 62 | +* [Come join us at next week's working group |
| 63 | + meeting!](https://github.com/rustwasm/team/issues/264) |
| 64 | + |
| 65 | +### Gloo |
| 66 | + |
| 67 | +* [**Gloo Update: Onion Layers, Timers, and |
| 68 | + Events**](https://rustwasm.github.io/2019/03/26/gloo-onion-layers.html) |
| 69 | +* @Aehmlo [split up the `gloo_timers` crate's public |
| 70 | + API](https://github.com/rustwasm/gloo/pull/38) to use `callbacks` and |
| 71 | + `futures` submodules, as we collectively agreed upon in other issues. |
| 72 | +* @cbrevik [implemented the `gloo_console_timer` |
| 73 | + crate,](https://github.com/rustwasm/gloo/pull/32) which provides scoped |
| 74 | + closures and RAII-style helpers for working with `console.time` and |
| 75 | + `console.timeEnd`. |
| 76 | +* @OddCoincidence [updated the `gloo_timers` |
| 77 | + internals](https://github.com/rustwasm/gloo/pull/48) to use |
| 78 | + `wasm_bindgen::closures::Closure::once` for `setTimeout`. |
| 79 | +* @RyLev added some initial [Azure Pipelines continuous integration |
| 80 | + tests](https://github.com/rustwasm/gloo/pull/46) for Gloo. |
| 81 | +* @David-OConnor added the [skeleton of an `mdbook` |
| 82 | + guide](https://github.com/rustwasm/gloo/pull/45) for Gloo. |
| 83 | + |
| 84 | +### `wasm-bindgen` |
| 85 | + |
| 86 | +* @alexcrichton [tweaked the `no-modules` target's generated JavaScript glue for |
| 87 | + instantiating Wasm |
| 88 | + modules](https://github.com/rustwasm/wasm-bindgen/pull/1384) to support |
| 89 | + CloudFlare workers (and other environments where `x instanceof |
| 90 | + WebAssembly.Module` might fail, like across `<iframe>`s) |
| 91 | +* @alexcrichton made it so that our emitted JS glue for reflecting Rust closures |
| 92 | + as JS functions will properly [detect and protect against use-after-free from |
| 93 | + the JS side.](https://github.com/rustwasm/wasm-bindgen/pull/1385) |
| 94 | +* @alexcrichton fixed a bug where Rust structs exported as JS [didn't always |
| 95 | + emit the JS classes glue in a deterministic |
| 96 | + order.](https://github.com/rustwasm/wasm-bindgen/pull/1383) |
| 97 | +* @fitzgen [made the "without a JS bundler" example use `wasm-pack build |
| 98 | + --target web`,](https://github.com/rustwasm/wasm-bindgen/pull/1382) now that |
| 99 | + its supported in the latest `wasm-pack` release. |
| 100 | +* @alexcrichton [cleaned up the `wasm-bindgen` CLI's |
| 101 | + options](https://github.com/rustwasm/wasm-bindgen/pull/1369) to take `--target |
| 102 | + blah` instead of `--blah` (which still exist but are deprecated). |
| 103 | +* @stevebob [enabled `mdbook`'s link checking tests for the `wasm-bindgen` |
| 104 | + guide](https://github.com/rustwasm/wasm-bindgen/pull/1358) to our continuous |
| 105 | + integration tests. |
| 106 | +* @alexcrichton [implemented |
| 107 | + `rustwasm/rfcs#8`](https://github.com/rustwasm/wasm-bindgen/pull/1305) to |
| 108 | + enable transitive crates dependencies on npm packages. |
| 109 | +* @RReverser [added the `constructor` |
| 110 | + property](https://github.com/rustwasm/wasm-bindgen/pull/1403) to |
| 111 | + `js_sys::Object`. |
| 112 | +* @alexcrichton [fixed sending large |
| 113 | + `u32`s](https://github.com/rustwasm/wasm-bindgen/pull/1401) from Wasm to JS. |
| 114 | +* @RReverser [consistently exposed |
| 115 | + `is_like_none`](https://github.com/rustwasm/wasm-bindgen/pull/1398) for our |
| 116 | + generated JS glue, fixing a bug along the way. |
| 117 | +* @RReverser [simplified the ABI |
| 118 | + representation](https://github.com/rustwasm/wasm-bindgen/pull/1397) of |
| 119 | + `Option<char>`. |
| 120 | +* @alexcrichton [migrated all the `wasm-bindgen-*` |
| 121 | + crates](https://github.com/rustwasm/wasm-bindgen/pull/1395) to Rust 2018 |
| 122 | + edition. |
| 123 | +* @RReverser [made iterating over JS objects via the JS iteration protocol |
| 124 | + faster](https://github.com/rustwasm/wasm-bindgen/pull/1393) by removing |
| 125 | + redundant property string decoding. |
| 126 | +* @RReverser [made a special version of passing strings from JS to |
| 127 | + Wasm](https://github.com/rustwasm/wasm-bindgen/pull/1391) when we are |
| 128 | + targeting Node.js that is faster than using Node.js's `TextEncoder` |
| 129 | + implementation. |
| 130 | + |
| 131 | +### `wasm-pack` |
| 132 | + |
| 133 | +* @alexcrichton [fixed a panic](https://github.com/rustwasm/wasm-pack/pull/598) |
| 134 | + that could happen when installing the `wasm-bindgen` CLI tool. |
| 135 | + |
| 136 | +## Requests for Contribution |
| 137 | + |
| 138 | +**Want to get involved in Rust and WebAssembly? [Join the Rust and WebAssembly |
| 139 | +working group!][get-involved]** |
| 140 | + |
| 141 | +[get-involved]: https://github.com/rustwasm/team/blob/master/README.md#get-involved |
| 142 | + |
| 143 | +### New Good First Issues |
| 144 | + |
| 145 | +* [`wasm-bindgen`: `.d.ts` file for `--web` target does not define the `init()` function](https://github.com/rustwasm/wasm-bindgen/issues/1390) |
| 146 | +* [`wasm-bindgen`: Closures should implement `std::fmt::Debug`](https://github.com/rustwasm/wasm-bindgen/issues/1387) |
| 147 | +* [Gloo: Help ensure we have tracking issues on file for making utility crates for all Web platform features](https://github.com/rustwasm/gloo/issues/41) |
| 148 | + |
| 149 | +### New "Help Wanted" Issues |
| 150 | + |
| 151 | +* [`wasm-bindgen`: Closures should accept references as arguments](https://github.com/rustwasm/wasm-bindgen/issues/1399) |
0 commit comments