ここ数年ほとんどウェブアセンブリのことを調べたことは無かったが、ウェブアセンブリが結局JIT使うなら、おれが望んでいたものとだいぶ違うな。Ahead of Time コンパイルで最初から直接動くコードを読み込んで最速を目指すのがそれの目的かと思ったら、JavaScriptの構文解析のコストを下げるだけで終わってしまうのか。ブラウザから直接マシンコード読み込んで動かすことのなにがいけないのだろうか。<script src=xxx.js> のかわりに <exec code=x86:xxx.dll,armv8:xxx.armv8.so> みたいな感じで。サーバーで長々と動かすソフトウェアならゆるゆる最適化、実行中にコードを並び替えるのもいいかもしれないが、端末でそれやると非効率だ。
WebAssemblyが普及したら (スコア:1)
Re: (スコア:0)
ここ数年ほとんどウェブアセンブリのことを調べたことは無かったが、ウェブアセンブリが結局JIT使うなら、おれが望んでいたものとだいぶ違うな。Ahead of Time コンパイルで最初から直接動くコードを読み込んで最速を目指すのがそれの目的かと思ったら、JavaScriptの構文解析のコストを下げるだけで終わってしまうのか。ブラウザから直接マシンコード読み込んで動かすことのなにがいけないのだろうか。<script src=xxx.js> のかわりに <exec code=x86:xxx.dll,armv8:xxx.armv8.so> みたいな感じで。サーバーで長々と動かすソフトウェアならゆるゆる最適化、実行中にコードを並び替えるのもいいかもしれないが、端末でそれやると非効率だ。
Re:WebAssemblyが普及したら (スコア:0)
> ブラウザから直接マシンコード読み込んで動かすことのなにがいけないのだろうか。
セキュリティの観点からはどっちもダメなのでは。その場で生成するのはダメだけどそのまま実行するのはいいという理由はない
Re:WebAssemblyが普及したら (スコア:1)
JITでは一般的にメモリページの属性を読み書き実行可能(RWX)にするので、任意メモリ書き換えできる脆弱性が即座に任意コード実行に変化しがち。それよりは事前に問題無いと検証できているAOTコードの実行のほうがRWXページ不要なので安全という見方ができると思う。
なお、その点でFirefoxのJITは工夫している。ページ属性を適宜RWとRXと変更し、RWXを使わないようにしている。
Firefox: W^X JIT-code が有効になりました
https://dev.mozilla.jp/2016/04/wx-jit-code-enabled-in-firefox/ [mozilla.jp]