ディスカッション (11件)
WebAssemblyの台頭により、かつてWebブラウザでの高速実行を支えたasm.jsはその役目を終えようとしています。かつての革命児に感謝を込めて、私たちは次世代の標準へと完全に移行します。
Asm.jsは死んだ!WebAssembly万歳!
Gary BernhardtのJavaScriptについてのトーク[0]を見た時のことは忘れられないよ。あれが僕にとってasm.jsとの出会いだったし、ブラウザ上で動くコードにコンパイルするという沼にハマるきっかけだったな。
12年経って、彼の語ったフィクションがどれほど現実になったかと思うと衝撃的だよ。
[0] https://www.destroyallsoftware.com/talks/the-birth-and-death... (https://www.destroyallsoftware.com/talks/the-birth-and-death-of-javascript)
ついにasm.jsの終焉ってことか?
どうやら予言のタイムラインから外れていってるみたいだな。
https://www.destroyallsoftware.com/talks/the-birth-and-death... (https://www.destroyallsoftware.com/talks/the-birth-and-death-of-javascript)
(まだ見たことない人は、ぜひ見てみてくれ。ある意味では史上最高のテックトークかもしれない。)
個人的には、これは間違いだと思う。ただ、どれだけ影響があるかはよく分からないな。僕が知る限り、今さらasm.jsを使い続けている人はそんなにいないだろうし。
でもwasmはJavaScriptからあまりに隔離されすぎてる。僕の限られた経験からすると、むしろasm.jsへのコンパイルを検討していたくらいなんだ。
ただ、Emscriptenがまだそれを完全サポートしてるのか確信が持てなかったんだけどね。
wasmからは大半のWeb APIが呼べないし。
あと僕がやろうとしてたことにとって、JSからwasmへのバッファのゼロコピーができないのが何より痛いんだ。
すべてはトレードオフだよね。隔離されていることは利点でもあるけど、欠点でもある。
うーん、asm.jsからWASMへのトランスパイラが必要かもしれないな。
(古いEmscriptenでレガシーコードをコンパイルするのはかなりフラストレーションが溜まるよ。EmscriptenのABI変更に合わせてJSコードをアップデートするのと同じくらい面倒だしね)
asm.jsは「Webでどうやってネイティブ並みの速度でコードを走らせるか」という、NaClやPNaClが突きつけた問いに対するMozillaの回答だった。
もしこれが今だったら、Chromeはなりふり構わずNaClやPNaClをごり押しして、SafariやFirefoxが「Web」標準についてこれてないと言われて批判されてたんだろうな。
悲しいけど、理にかなってるね。面白いことに、FigmaはもともとフルC++のコードベースで始まっていて、ブラウザ上でデザインツールを動かせることを証明する上でAsm.jsが鍵になってたんだ。WebAssemblyへの移行は、有料顧客がついてからの話だし、ロード時間の改善にも貢献した(Asm.jsはJSのままなのでバンドルサイズが大きくなり、WASMと違ってパースしてASTにする必要があるからね)。
ずっと前、WebGLの本でasm.jsに関する小さな章を書いたことがあるんだ。
https://webglinsights.github.io/ (https://webglinsights.github.io/)
Web Assemblyの先駆けとなったasm.jsの台頭を見届けられたのは楽しかったよ。初期のデモの中には、Unreal Engineがブラウザで動くものとかあって最高にクールだった。:) ここで幕を閉じるのは少し切ないけれど、それがあったからこそ、より良いものが生まれたんだと思う。
Mozillaがasm.jsコードに特化したOdinMonkeyをリリースした時のことを覚えてるよ。一方のChrome/V8チームは、汎用的なJSを高速化しつつasm.jsにも恩恵があるようなJITの最適化に取り組んでたんだ。当時の速度差はFirefoxが2~4倍くらい早くて、かなり煽ってたよね :D
今となっては、ほとんどのブラウザのJavaScript VMは似たような設計と最適化に収束してるから、Odinがなくてもasm.jsのコードは十分に高速に動くはずさ。
:(
これ、本当にぶっ飛んだプロジェクトだったな。10年以上前にC++をwasmにコンパイルした時、「待てよ、これで動くのか!?」って驚いたのを覚えてる。あの頃のWebは進むスピードが凄まじかったな。