From fec0ff6a44768284066142fa9ec0f3d804da98f5 Mon Sep 17 00:00:00 2001 From: Dave Ogle Date: Wed, 3 Jan 2024 13:26:41 +0000 Subject: [PATCH] Looking into WASM with Rust (#152) Co-authored-by: Dave Ogle --- _posts/2024-01-03-a-journey-into-wasm.md | 114 ++++++++++++++++++++++ dogle/assets/wasm-and-rust/aor.png | Bin 0 -> 56926 bytes dogle/assets/wasm-and-rust/conway_gol.png | Bin 0 -> 16535 bytes 3 files changed, 114 insertions(+) create mode 100644 _posts/2024-01-03-a-journey-into-wasm.md create mode 100644 dogle/assets/wasm-and-rust/aor.png create mode 100644 dogle/assets/wasm-and-rust/conway_gol.png diff --git a/_posts/2024-01-03-a-journey-into-wasm.md b/_posts/2024-01-03-a-journey-into-wasm.md new file mode 100644 index 0000000000..b8ae1e3ada --- /dev/null +++ b/_posts/2024-01-03-a-journey-into-wasm.md @@ -0,0 +1,114 @@ +--- +title: A Journey into Wasm +date: 2024-01-03 09:00:00 Z +categories: + - Tech +tags: + - Wasm + - Rust + - AdventOfCode +summary: + A brief look into building out a NextJS application which makes use WebAssembly to solve Advent Of Code puzzles in the browser. +author: dogle +--- + +## Overview + +I recently has some downtime and decided to spend it looking into [Web Assembly](https://webassembly.org/) or Wasm. It's something I've heard of on and off over the last few years but never really understood very well. Getting started, my understanding initially, was that Wasm was a way to use languages other than JavaScript in the browser. I'd also noted that the [Rust programming language](https://www.rust-lang.org/) seemed to be a popular choice for working with Wasm and that was something else I was keen to have a play with. With this in mind I set about creating an exploration project, the goal of which would be to write a program in Rust and get it to run in the browser. + +## Take One + +After a quick hunt about on the web I decided to try and follow [this](https://rustwasm.github.io/docs/book/game-of-life/introduction.html) tutorial for implementing Conway's Game of Life in Rust and WebAssembly. I followed the step by step guide and with a bit of tweaking to handle updates in WebPack since the guide was published, I was able to get it working. If you're interested the results are [here](https://github.com/dogle-scottlogic/RustTutorial/tree/main/wasm-game-of-life). + +![Game of Life]({{ site.github.url }}/dogle/assets/wasm-and-rust/conway_gol.png) + +I was however left feeling a bit dissatisfied with the results of this exercise. + +Firstly, I didn't feel I had learned much about Rust aside from a general overview of it being a low level language, much like C++. As I was following a tutorial, most of the coding was a copy exercise rather than having to solve any problems for myself. + +Secondly, the integration with JavaScript didn't feel very nice. In the tutorial the web part of the code is nested within the overall project and references the Wasm package one level up. This means the Rust and JavaScript code feels quite tightly coupled. The example uses a simple WebPack build using an `index.html` file which contains the HTML, CSS and link out to the `index.js` file via a `bootstrap.js` wrapper file. The `index.js` file houses all the logic for importing the Wasm file and attaching handlers to buttons etc. The results are effective but doesn't feel very extensible or easy to maintain. I couldn't help but feel it would be nicer to swap the UI side of things out to use a framework such as React or Angular. When I tried to integrate my Wasm file with [Svelte](https://svelte.dev/) however I hit a lot of issues and ultimately abandoned that approach. + +Lastly, and maybe most importantly, I still wasn't sure I really understood the value of Wasm in general. Sure, I was able to gain more control over things like memory allocation through the use of Rust, but it felt like a use case I wouldn't really come across much in day to day work. + +## Learning + +I decided to tackle the last of these things first. Web Assembly still felt a lot like hype to me, rather than something I would get any practical use out of so I had a listen to [this](https://blog.scottlogic.com/2023/08/04/beyond-the-hype-webassembly.html) great episode of Beyond the Hype to see what the consensus what among those who knew a lot more than me on this topic. + +I think the "ah-ha" moment for me came when Sean Isom was talking about the potential of moving things like Adobe Photoshop into the browser. That is that WASM could be used to allow, among other things, + +- Moving pr-existing codebases into the web without the need to rewrite in JavaScript. +- Move large codebases into the web which wouldn't be possible to rewrite in JavaScript. +- Allow publishing of library packages that can be written in the most appropriate language and easily consumed by web applications. + +## Take Two + +I decided to give this another go, this time stepping away from the tutorial and going it alone. I had recently been working on this years [Advent of Code](https://adventofcode.com/), so I decided to try and solve a few of the challenges in Rust and then integrate it into a Frontend framework like [NextJS](https://nextjs.org/). + +This time things went a little better. Firstly, as I was no longer following a tutorial, I was forced to start learning Rust a little deeper in order to translate what I wanted to do into valid Rust syntax. + +Once I was happy I'd got a solution for both parts of [Day one](https://adventofcode.com/2016/day/1) I then moved on to compiling the Rust code to Wasm. Leaning on what I'd learnt from the Game of Life tutorial I used [wasm_bindgen](https://github.com/rustwasm/wasm-bindgen) with my `lib.rs` file which creates an api exposing two JavaScript functions, one for each of the parts of the puzzle. The functions take a string as an input and return the solution as a number. + +~~~rust +mod day_one; + +use wasm_bindgen::prelude::*; + +#[wasm_bindgen] +pub fn day_one_part_one(input: String) -> i32 { + return day_one::solve_part_one(input); +} +~~~ + +I then published the Wasm to NPM as a [package](https://www.npmjs.com/package/advent_of_rust) that I could consume from a JavaScript application. + +Next up I needed to build something to consume the package I had created. For this I turned to NextJS. I used the [quick start](https://nextjs.org/docs/getting-started/installation) to bootstrap a simple app with TypeScript and ESLint installed. This handled all the setup for me and I immediately had a working web app up and running on port 3000. After stripping out everything I didn't need I was ready to import my Wasm file. + +I added my `advent_of_rust` package to the dependency to my package.json + +~~~json +"dependencies": { + "react": "^18", + "react-dom": "^18", + "next": "14.0.4", + "advent_of_rust": "0.2.2" + }, +~~~ + +and then created a `useEffect` hook that would import the wasm module when the page first loads. + +~~~typescript +useEffect(() => { + // Load and instantiate the Wasm module from the CDN + const wasmModule = import("advent_of_rust"); + + wasmModule.then((module) => { + // Use exported functions from the Wasm module + setModule(module); + }); +}, []); +~~~ + +The last bit of the puzzle was enabling the experimental feature flag for asyncWebAssembly in WebPack. + +~~~javascript +module.exports = { + reactStrictMode: true, + webpack: function (config, options) { + config.experiments = { asyncWebAssembly: true, layers: true }; + return config; + }, +}; +~~~ + +After this I was able to add an Input element to allow upload of a text file containing the input for a puzzle and then a couple of buttons for solving parts one and two. When pressed the code would pass the input as a string to the exposed function for the relevant part and then display whatever result was returned. A bit of CSS and it was done. + +To make sure I was confident in the process I moved on to solving [day Two](https://adventofcode.com/2016/day/2). I then needed to rebuild and publish a new version of the Wasm to expose the two new functions I'd added. Back in NextJS land I then bumped the version in the `package.json` and updated my code so that a user was able to select which day to solve in the UI. + +![Advent of Rust]({{ site.github.url }}/dogle/assets/wasm-and-rust/aor.png) + +## Conclusion + +All told this felt a lot better and I had created something a lot closer to my original goal. The NextJS React App was now responsible only for the UI and allowed me to quickly build out a single page application that could easily be extended and tested with linting, routing and TypeScript built in. All the heavy lifting logic for solving the puzzles was delegated to the Rust code and this code was neatly compiled to a Wasm file and published in NPM, meaning all my React App had to do was add it to the dependency list and pull it in when the page loads. The Rust code can be easily updated and published independently of the UI code and vice versa. I could potentially also build out new applications with other frameworks and consume the same package. +There's some tidy up that would be nice to do of course but in general I feel this has been an interesting and helpful journey into Wasm and I hope it was interesting for you too. + +The GitHub code for this project can be found [here](https://github.com/dogle-scottlogic/adventOfRust/tree/main). diff --git a/dogle/assets/wasm-and-rust/aor.png b/dogle/assets/wasm-and-rust/aor.png new file mode 100644 index 0000000000000000000000000000000000000000..29709393a70706b15c7ab58b680769534367acb0 GIT binary patch literal 56926 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 literal 0 HcmV?d00001 diff --git a/dogle/assets/wasm-and-rust/conway_gol.png b/dogle/assets/wasm-and-rust/conway_gol.png new file mode 100644 index 0000000000000000000000000000000000000000..a84c73932d45c9867bddb08cb82189d8962daa6e GIT binary patch literal 16535 zcmeHuXH=70)aIKIDN0jRM5+x`q}TxIRxChN6p)T0MY{A75(Gg(iWda|f$LR4q($j1 ziC_qdfJzBHkO)W(J(Q5l32^WI)|&Etv*yRlk8v%-Tk__dv(Mhoe)hAI$5##Y1UB#9 z3_*~NBgDcJ4$K}8unAdf^Gf;k$#0WS+IGi>(4M88`wlHlsfpb2O zi?_TWNU)akA4YP2X9q#LM=qT^eZ${sqSvq0Vi?sC@bc<@-3N|mw(<&}cY)47mK8|g zi9kFMKEx}-_o9Sc>G_q??bmzo)^^vMCbGA(vadaU?e9uD=~;T2Xh_UhrIEo=qdoPH2e74JHWf9Hyk0;m2w^hg{XVeu%k|8shrQ zCHU~xzS0Vlfphonrzw#0cg9r>Oi~?bxMDA4Kt^Ei9by7mWUO}gR!nZ6xwO0$dep<6 zR=wiyIn+Zl7a#98TZ&$!?i1RnmuhR8a+izX+jCIrR4-cmW#HU}+tr&YS>B#3fxC0A z56_oh3#k>4zT!U7>yREYbYc2eDy0KWd0$33($PkW3KE=npHHU|Ymtd@1G9b%x3Dxn z(KrhOiGqQzZ@q{gmKR*R{M@JO&3Bj1o=8_Skr>gaeoYKR?r)d3T&gLoULk+bYtZpd zSC9&DrI%?S@gK_mP?O5t0;}JwWp1JF=jUlNmNXqpElC)Tx`KS$p7%_gr8lWnR*Vx^ z`lxm7Z3HxEz0odV}-L#QzpLmdQAg*3VV5r_E?u>MSJFHJIej~l9(*EYvrpEQ zFFtq3Qc6uXY^foIYGlQiF|zqLA?*cS%FHEMQa04n?yC9&G1W
$ZlKR662^-(OW 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 bi)>ir=qsPY-|EdE@bA)j!*ls(Y##hKQgRww literal 0 HcmV?d00001