この記事は以前の rhysd.hatenablog.com の続編で,WebAssembly (Wasm) にポーティングした Vim の話です. github.com TLDR Wasm にコンパイルした Vim のコードを Web Worker(ワーカスレッド)の中で動かすことで,メインスレッドで行われるユーザのインタラクションをエディタがブロックしなくなりました. また,イベントループのポーリングを Atomics.wait() でやってキー入力を共有メモリバッファで受け取ることで Emterpreter を捨て,実行速度・安定性・バイナリサイズ・ビルド時間・メンテ性が向上しました. 実装: Run Vim in Web Worker and say goodbye to Emterpreter by rhysd · Pull Request #30 · rhysd/vim.wasm
![Vim on Wasm on Web Worker on Browser with Atomics - はやくプログラムになりたい](https://cdn-ak-scissors.b.st-hatena.com/image/square/fe1ca7f3e711dc9834351327e13de72e28d0f269/height=288;version=1;width=512/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fr%2Frhysd%2F20190613%2F20190613090115.png)