#2 WASM on 現場



likr0(尾上) さんをゲストにお迎えして WebAssembly 周辺について話を聞きました。
mizchi がちょっと酒入って酔ってる + 83さんの音声の収録を失敗したので、思い出しながら後付で別撮りしたという感じになってます。

タイムテーブル

  • 00:00 挨拶とゲスト尾上さんの自己紹介
  • 00:58 尾上さんをゲストに招いた経緯
  • 02:07 WebAssemblyはなぜ必要とされたか
  • 04:40 「WASMはもう使えるようになってきたなっていう印象を持っている」
  • 05:23 WASMはasm.jsよりパース速度、実行速度を改善した
  • 06:11 WASMとasm.jsを比較すると
  • 08:20 ES Modulesのローディング周り
  • 08:46 WASMをどんなものに使った?
  • 09:55 SIMD.js
  • 10:47 WASMとJSでは線形代数ライブラリの実行速度の桁が違う: ベンチマークとってみた https://likr.github.io/matmul-bench/
  • 11:50 巨大なWASMライブラリのファイルサイズ問題
  • 13:33 main関数からすべて他の言語で書いて最適化する
  • 15:18 WASMの現実的な用途
  • 16:02 Virtual DOMのWASM実装
  • 16:45 WASMを動作させる環境とブラウザによる実装の差
  • 17:35 Emscripten、大統一抽象言語LLVM IR
  • 19:19 手書きasm.js
  • 21:23 手書きWASMとWAST
  • 23:40 WASMの当初の目論見と現在の高速さ
  • 24:21 もし将来JavaScriptに型が付いたらWASMと親和性が上がる?
  • 27:00 AssemblyScript
  • 27:33 パフォーマンス・チューニングの現場でのWASMの選択肢
  • 29:53 GC Integration
  • 30:07 あらゆる言語でWebを書く未来はくるか: 今wasmがかける言語 https://github.com/mbasso/awesome-wasm#languages
  • 32:13 JSの言語仕様でどうしようもないこと
  • 33:10 Rustはメジャーな言語
  • 36:25 Quasar
  • 37:13 Universal JavaScriptに対するUniversal(好きな言語)という発想
  • 38:30 「人類はJavaScriptを手放すべきだ」
  • 39:54 Dartの失敗から学ぶことは多い
  • 40:45 WASMは標準として生き残り続けるか
  • 41:43 将来どんな言語になってもWeb APIに熟知しといたらいい
  • 42:04 WASMのスレッドの扱いとWorkerの関係
  • 43:25 Vulkan, WebGL, Metal, Web GPU
  • 45:30 ブラウザsandbox内の世界とWASM
  • 47:19 JavaScriptは難読化されても頑張れば読める、WASMは?
  • 49:40 facebook/prepack
  • 51:50 JavaScriptを事前にコンパイルすれば高速になるか?
  • 52:37 Rustは楽しい
  • 53:30 mizchiのやってみたいこと
  • 54:28 ライブラリ読み込みの工夫
  • 56:10 いまWASMに足りないものはあるか
  • 56:46 EmscriptenのEmbind
  • 57:25 複数のWASMモジュールとグルー言語としてのJavaScript
  • 58:36 光の速度はどうにもならない、どうやって読み込みを速くするか、あるいはPWA
  • 60:04 分割が難しいなら全部WASMでやるか
  • 60:50 Emscriptenの機能と学び方
  • 62:40 エンドトーク 我々は今のうちに何ができるか