I’ve already written my views on Rust 2019, but as I’ve been an occasional contributor to and a full-time follower of Rust’s WebAssembly story, I thought I’d offer my views there too. My hope is that 2019 will see a significant increase in the amount of time I spend with Rust, and I hope a good chunk of that time is in relation to wasm.
A Full Stack Story
Nick Fitzgerald has already highlighted in his Rust wasm post the need for the working group to contribute to libraries and tooling that are higher up in the stack. The idea of building these in a modular way that will allow others in the community to put the components together in a different way is very exciting to me. This hopefully will make the ecosystem as a whole much stronger.
In particular I’d love to see a modular effort towards implementing a virtual DOM library with JSX like syntax. There have been several efforts on this front but all have seemed relatively monolithic and “batteries included”. I hope this will change in 2019. Which brings me to my next point…
Together with these newer higher level components and the already existing lower level components like wasm-bindgen, I hope the wider Rust wasm community and the working group actively engage with each other to make sure that these components are built out in the right way and that they’re integrated into existing libraries and frameworks (e.g., Percy and stdweb).
For instance, the promising typed-html crate and Percy both have implementations of virtual DOM types that make writing libraries that work with both pretty difficult. Having a base crate that just implements the types needed for building virtual DOM libraries would bring a lot of value to the ecosystem. But such a feat would require collaboration between those actively working in the WG and those who are not.
Real World Use
Working with big projects like Angular, React and others to see if the community can help with an integration experimentation will go a long way.
It would be nice if the binaryren toolchain was written in Rust (or at least accessible through Rust tooling). This isn’t really necessary, and something the WG shouldn’t focus on, but it would be nice :-D