From 2b159b1158a97ad1aea5ade82f8ea1222abc3fbd Mon Sep 17 00:00:00 2001 From: Bradlee Speice Date: Sat, 9 Nov 2024 16:40:50 -0500 Subject: [PATCH] 2018-09-15-isomorphic-apps --- blog/2018-09-15-isomorphic-apps/_article.md | 294 +++++++++++++++++ .../electron-percy-wasm.png | Bin 0 -> 51642 bytes .../incorrect-MIME-type.png | Bin 0 -> 49655 bytes blog/2018-09-15-isomorphic-apps/index.mdx | 295 ++++++++++++++++++ docusaurus.config.ts | 2 +- 5 files changed, 590 insertions(+), 1 deletion(-) create mode 100644 blog/2018-09-15-isomorphic-apps/_article.md create mode 100644 blog/2018-09-15-isomorphic-apps/electron-percy-wasm.png create mode 100644 blog/2018-09-15-isomorphic-apps/incorrect-MIME-type.png create mode 100644 blog/2018-09-15-isomorphic-apps/index.mdx diff --git a/blog/2018-09-15-isomorphic-apps/_article.md b/blog/2018-09-15-isomorphic-apps/_article.md new file mode 100644 index 0000000..abc0dcb --- /dev/null +++ b/blog/2018-09-15-isomorphic-apps/_article.md @@ -0,0 +1,294 @@ +--- +layout: post +title: "Isomorphic Desktop Apps with Rust" +description: "Electron + WASM = ☣" +category: +tags: [rust, javascript, webassembly] +--- + +Forgive me, but this is going to be a bit of a schizophrenic post. I both despise Javascript and the +modern ECMAScript ecosystem, and I'm stunned by its success doing some really cool things. It's +[this duality](https://www.destroyallsoftware.com/talks/the-birth-and-death-of-javascript) that's +led me to a couple of (very) late nights over the past weeks trying to reconcile myself as I +bootstrap a simple desktop application. + +See, as much as +[Webassembly isn't trying to replace Javascript](https://webassembly.org/docs/faq/#is-webassembly-trying-to-replace-javascript), +**I want Javascript gone**. There are plenty of people who don't share my views, and they are +probably nicer and more fun at parties. But I cringe every time "Webpack" is mentioned, and I think +it's hilarious that the +[language specification](https://ecma-international.org/publications/standards/Ecma-402.htm) +dramatically outpaces anyone's +[actual implementation](https://kangax.github.io/compat-table/es2016plus/). The answer to this +conundrum is of course to recompile code from newer versions of the language to older versions _of +the same language_ before running. At least [Babel] is a nice tongue-in-cheek reference. + +Yet for as much hate as [Electron] receives, it does a stunningly good job at solving a really hard +problem: _how the hell do I put a button on the screen and react when the user clicks it_? GUI +programming is hard, straight up. But if browsers are already able to run everywhere, why don't we +take advantage of someone else solving the hard problems for us? I don't like that I have to use +Javascript for it, but I really don't feel inclined to whip out good ol' [wxWidgets]. + +Now there are other native solutions ([libui-rs], [conrod], [oh hey wxWdidgets again!][wxrust]), but +those also have their own issues with distribution, styling, etc. With Electron, I can +`yarn create electron-app my-app` and just get going, knowing that packaging/upgrades/etc. are built +in. + +My question is: given recent innovations with WASM, _are we Electron yet_? + +No, not really. + +Instead, **what would it take to get to a point where we can skip Javascript in Electron apps?** + +# Setting the Stage + +Truth is, WASM/Webassembly is a pretty new technology and I'm a total beginner in this area. There +may already be solutions to the issues I discuss, but I'm totally unaware of them, so I'm going to +try and organize what I did manage to discover. + +I should also mention that the content and things I'm talking about here are not intended to be +prescriptive, but more "if someone else is interested, what do we already know doesn't work?" _I +expect everything in this post to be obsolete within two months._ Even over the course of writing +this, [a separate blog post](https://mnt.io/2018/08/28/from-rust-to-beyond-the-asm-js-galaxy/) had +to be modified because [upstream changes](https://github.com/WebAssembly/binaryen/pull/1642) broke a +[Rust tool](https://github.com/rustwasm/wasm-bindgen/pull/787) the post tried to use. The post +ultimately +[got updated](https://mnt.io/2018/08/28/from-rust-to-beyond-the-asm-js-galaxy/#comment-477), **but +all this happened within the span of a week.** Things are moving quickly. + +I'll also note that we're going to skip [asm.js] and [emscripten]. Truth be told, I couldn't get +either of these to output anything, and so I'm just going to say +[here be dragons.](https://en.wikipedia.org/wiki/Here_be_dragons) Everything I'm discussing here +uses the `wasm32-unknown-unknown` target. + +The code that I _did_ get running is available +[over here](https://github.com/speice-io/isomorphic-rust). Feel free to use it as a starting point, +but I'm mostly including the link as a reference for the things that were attempted. + +# An Example Running Application + +So, I did _technically_ get a running application: + +![Electron app using WASM](/assets/images/2018-09-15-electron-percy-wasm.png) + +...which you can also try out if you want: + +```sh +git clone https://github.com/speice-io/isomorphic-rust.git +cd isomorphic_rust/percy +yarn install && yarn start +``` + +...but I wouldn't really call it a "high quality" starting point to base future work on. It's mostly +there to prove this is possible in the first place. And that's something to be proud of! There's a +huge amount of engineering that went into showing a window with the text "It's alive!". + +There's also a lot of usability issues that prevent me from recommending anyone try Electron and +WASM apps at the moment, and I think that's the more important thing to discuss. + +# Issue the First: Complicated Toolchains + +I quickly established that [wasm-bindgen] was necessary to "link" my Rust code to Javascript. At +that point you've got an Electron app that starts an HTML page which ultimately fetches your WASM +blob. To keep things simple, the goal was to package everything using [webpack] so that I could just +load a `bundle.js` file on the page. That decision was to be the last thing that kinda worked in +this process. + +The first issue +[I ran into](https://www.reddit.com/r/rust/comments/98lpun/unable_to_load_wasm_for_electron_application/) +while attempting to bundle everything via `webpack` is a detail in the WASM spec: + +> This function accepts a Response object, or a promise for one, and ... **[if > it] does not match +> the `application/wasm` MIME type**, the returned promise will be rejected with a TypeError; +> +> [WebAssembly - Additional Web Embedding API](https://webassembly.org/docs/web/#additional-web-embedding-api) + +Specifically, if you try and load a WASM blob without the MIME type set, you'll get an error. On the +web this isn't a huge issue, as the server can set MIME types when delivering the blob. With +Electron, you're resolving things with a `file://` URL and thus can't control the MIME type: + +![TypeError: Incorrect response MIME type. Expected 'application/wasm'.](/assets/images/2018-09-15-incorrect-MIME-type.png) + +There are a couple of solutions depending on how far into the deep end you care to venture: + +- Embed a static file server in your Electron application +- Use a [custom protocol](https://electronjs.org/docs/api/protocol) and custom protocol handler +- Host your WASM blob on a website that you resolve at runtime + +But all these are pretty bad solutions and defeat the purpose of using WASM in the first place. +Instead, my workaround was to +[open a PR with `webpack`](https://github.com/webpack/webpack/issues/7918) and use regex to remove +calls to `instantiateStreaming` in the +[build script](https://github.com/speice-io/isomorphic-rust/blob/master/percy/build.sh#L21-L25): + +```sh +cargo +nightly build --target=wasm32-unknown-unknown && \ + wasm-bindgen "$WASM_DIR/debug/$WASM_NAME.wasm" --out-dir "$APP_DIR" --no-typescript && \ + # Have to use --mode=development so we can patch out the call to instantiateStreaming + "$DIR/node_modules/webpack-cli/bin/cli.js" --mode=development "$APP_DIR/app_loader.js" -o "$APP_DIR/bundle.js" && \ + sed -i 's/.*instantiateStreaming.*//g' "$APP_DIR/bundle.js" +``` + +Once that lands, the +[build process](https://github.com/speice-io/isomorphic-rust/blob/master/percy_patched_webpack/build.sh#L24-L27) +becomes much simpler: + +```sh + +cargo +nightly build --target=wasm32-unknown-unknown && \ + wasm-bindgen "$WASM_DIR/debug/$WASM_NAME.wasm" --out-dir "$APP_DIR" --no-typescript && \ + "$DIR/node_modules/webpack-cli/bin/cli.js" --mode=production "$APP_DIR/app_loader.js" -o "$APP_DIR/bundle.js" +``` + +But we're not done yet! After we compile Rust into WASM and link WASM to Javascript (via +`wasm-bindgen` and `webpack`), we still have to make an Electron app. For this purpose I used a +starter app from [Electron Forge], and then a +[`prestart` script](https://github.com/speice-io/isomorphic-rust/blob/master/percy/package.json#L8) +to actually handle starting the application. + +The +[final toolchain](https://github.com/speice-io/isomorphic-rust/blob/master/percy/package.json#L8) +looks something like this: + +- `yarn start` triggers the `prestart` script +- `prestart` checks for missing tools (`wasm-bindgen-cli`, etc.) and then: + - Uses `cargo` to compile the Rust code into WASM + - Uses `wasm-bindgen` to link the WASM blob into a Javascript file with exported symbols + - Uses `webpack` to bundle the page start script with the Javascript we just generated + - Uses `babel` under the hood to compile the `wasm-bindgen` code down from ES6 into something + browser-compatible +- The `start` script runs an Electron Forge handler to do some sanity checks +- Electron actually starts + +...which is complicated. I think more work needs to be done to either build a high-quality starter +app that can manage these steps, or another tool that "just handles" the complexity of linking a +compiled WASM file into something the Electron browser can run. + +# Issue the Second: WASM tools in Rust + +For as much as I didn't enjoy the Javascript tooling needed to interface with Rust, the Rust-only +bits aren't any better at the moment. I get it, a lot of projects are just starting off, and that +leads to a fragmented ecosystem. Here's what I can recommend as a starting point: + +Don't check in your `Cargo.lock` files to version control. If there's a disagreement between the +version of `wasm-bindgen-cli` you have installed and the `wasm-bindgen` you're compiling with in +`Cargo.lock`, you get a nasty error: + +``` +it looks like the Rust project used to create this wasm file was linked against +a different version of wasm-bindgen than this binary: + +rust wasm file: 0.2.21 + this binary: 0.2.17 + +Currently the bindgen format is unstable enough that these two version must +exactly match, so it's required that these two version are kept in sync by +either updating the wasm-bindgen dependency or this binary. +``` + +Not that I ever managed to run into this myself (_coughs nervously_). + +There are two projects attempting to be "application frameworks": [percy] and [yew]. Between those, +I managed to get [two](https://github.com/speice-io/isomorphic-rust/tree/master/percy) +[examples](https://github.com/speice-io/isomorphic-rust/tree/master/percy_patched_webpack) running +using `percy`, but was unable to get an +[example](https://github.com/speice-io/isomorphic-rust/tree/master/yew) running with `yew` because +of issues with "missing modules" during the `webpack` step: + +```sh +ERROR in ./dist/electron_yew_wasm_bg.wasm +Module not found: Error: Can't resolve 'env' in '/home/bspeice/Development/isomorphic_rust/yew/dist' + @ ./dist/electron_yew_wasm_bg.wasm + @ ./dist/electron_yew_wasm.js + @ ./dist/app.js + @ ./dist/app_loader.js +``` + +If you want to work with the browser APIs directly, your choices are [percy-webapis] or [stdweb] (or +eventually [web-sys]). See above for my `percy` examples, but when I tried +[an example with `stdweb`](https://github.com/speice-io/isomorphic-rust/tree/master/stdweb), I was +unable to get it running: + +```sh +ERROR in ./dist/stdweb_electron_bg.wasm +Module not found: Error: Can't resolve 'env' in '/home/bspeice/Development/isomorphic_rust/stdweb/dist' + @ ./dist/stdweb_electron_bg.wasm + @ ./dist/stdweb_electron.js + @ ./dist/app_loader.js +``` + +At this point I'm pretty convinced that `stdweb` is causing issues for `yew` as well, but can't +prove it. + +I did also get a [minimal example](https://github.com/speice-io/isomorphic-rust/tree/master/minimal) +running that doesn't depend on any tools besides `wasm-bindgen`. However, it requires manually +writing "`extern C`" blocks for everything you need from the browser. Es no bueno. + +Finally, from a tools and platform view, there are two up-and-coming packages that should be +mentioned: [js-sys] and [web-sys]. Their purpose is to be fundamental building blocks that exposes +the browser's APIs to Rust. If you're interested in building an app framework from scratch, these +should give you the most flexibility. I didn't touch either in my research, though I expect them to +be essential long-term. + +So there's a lot in play from the Rust side of things, and it's just going to take some time to +figure out what works and what doesn't. + +# Issue the Third: Known Unknowns + +Alright, so after I managed to get an application started, I stopped there. It was a good deal of +effort to chain together even a proof of concept, and at this point I'd rather learn [Typescript] +than keep trying to maintain an incredibly brittle pipeline. Blasphemy, I know... + +The important point I want to make is that there's a lot unknown about how any of this holds up +outside proofs of concept. Things I didn't attempt: + +- Testing +- Packaging +- Updates +- Literally anything related to why I wanted to use Electron in the first place + +# What it Would Take + +Much as I don't like Javascript, the tools are too shaky for me to recommend mixing Electron and +WASM at the moment. There's a lot of innovation happening, so who knows? Someone might have an +application in production a couple months from now. But at the moment, I'm personally going to stay +away. + +Let's finish with a wishlist then - here are the things that I think need to happen before +Electron/WASM/Rust can become a thing: + +- Webpack still needs some updates. The necessary work is in progress, but hasn't landed yet + ([#7983](https://github.com/webpack/webpack/pull/7983)) +- Browser API libraries (`web-sys` and `stdweb`) need to make sure they can support running in + Electron (see module error above) +- Projects need to stabilize. There's talk of `stdweb` being turned into a Rust API + [on top of web-sys](https://github.com/rustwasm/team/issues/226#issuecomment-418475778), and percy + [moving to web-sys](https://github.com/chinedufn/percy/issues/24), both of which are big changes +- `wasm-bindgen` is great, but still in the "move fast and break things" phase +- A good "boilerplate" app would dramatically simplify the start-up costs; + [electron-react-boilerplate](https://github.com/chentsulin/electron-react-boilerplate) comes to + mind as a good project to imitate +- More blog posts/contributors! I think Electron + Rust could be cool, but I have no idea what I'm + doing + +[wxwidgets]: https://wxwidgets.org/ +[libui-rs]: https://github.com/LeoTindall/libui-rs/ +[electron]: https://electronjs.org/ +[babel]: https://babeljs.io/ +[wxrust]: https://github.com/kenz-gelsoft/wxRust +[wasm-bindgen]: https://github.com/rustwasm/wasm-bindgen +[js-sys]: https://crates.io/crates/js-sys +[percy-webapis]: https://crates.io/crates/percy-webapis +[stdweb]: https://crates.io/crates/stdweb +[web-sys]: https://crates.io/crates/web-sys +[percy]: https://chinedufn.github.io/percy/ +[virtual-dom-rs]: https://crates.io/crates/virtual-dom-rs +[yew]: https://github.com/DenisKolodin/yew +[react]: https://reactjs.org/ +[elm]: http://elm-lang.org/ +[asm.js]: http://asmjs.org/ +[emscripten]: https://kripken.github.io/emscripten-site/ +[typescript]: https://www.typescriptlang.org/ +[electron forge]: https://electronforge.io/ +[conrod]: https://github.com/PistonDevelopers/conrod +[webpack]: https://webpack.js.org/ diff --git a/blog/2018-09-15-isomorphic-apps/electron-percy-wasm.png b/blog/2018-09-15-isomorphic-apps/electron-percy-wasm.png new file mode 100644 index 0000000000000000000000000000000000000000..0abf67fe6acaebc169d70531a7d5da91ddd5e992 GIT binary patch literal 51642 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