ここ数年ほとんどウェブアセンブリのことを調べたことは無かったが、ウェブアセンブリが結局JIT使うなら、おれが望んでいたものとだいぶ違うな。Ahead of Time コンパイルで最初から直接動くコードを読み込んで最速を目指すのがそれの目的かと思ったら、JavaScriptの構文解析のコストを下げるだけで終わってしまうのか。ブラウザから直接マシンコード読み込んで動かすことのなにがいけないのだろうか。<script src=xxx.js> のかわりに <exec code=x86:xxx.dll,armv8:xxx.armv8.so> みたいな感じで。サーバーで長々と動かすソフトウェアならゆるゆる最適化、実行中にコードを並び替えるのもいいかもしれないが、端末でそれやると非効率だ。
WebAssemblyが普及したら (スコア:1)
Re: (スコア:0)
WebAssemblyができることは、Javascriptと変わらない
何がいいたいんだ?
Re:WebAssemblyが普及したら (スコア:1)
WebAssemblyもJITなしなのか、それとも別のやり方になるのか…。
Re: (スコア:0)
記事にwebassemblyサポート追加と書いてんだからJITのの取り外しに対応するんじゃない?
Re: (スコア:0)
そだっけJSの方ができることが多かったような
Re: (スコア:0)
何が?
Re: (スコア:0)
ここ数年ほとんどウェブアセンブリのことを調べたことは無かったが、ウェブアセンブリが結局JIT使うなら、おれが望んでいたものとだいぶ違うな。Ahead of Time コンパイルで最初から直接動くコードを読み込んで最速を目指すのがそれの目的かと思ったら、JavaScriptの構文解析のコストを下げるだけで終わってしまうのか。ブラウザから直接マシンコード読み込んで動かすことのなにがいけないのだろうか。<script src=xxx.js> のかわりに <exec code=x86:xxx.dll,armv8:xxx.armv8.so> みたいな感じで。サーバーで長々と動かすソフトウェアならゆるゆる最適化、実行中にコードを並び替えるのもいいかもしれないが、端末でそれやると非効率だ。
Re: (スコア:0)
ブラウザから直接マシンコード読み込んで動かすことのなにがいけないのだろうか。<script src=xxx.js> のかわりに <exec code=x86:xxx.dll,armv8:xxx.armv8.so> みたいな感じで。
Google NaClがそんな感じの仕組みだった。だから、NaCl→pNaCl→WebAssemblyの流れを調べれば、その疑問の答えが分かるのではないかと予想している。誰か調べて教えてほしい。
Re: (スコア:0)
アーキテクチャが増えるたびに誰がどうメンテするのって話になるのでしょう。
だから、pNaClの時点で中間コードになった。
今でもx86,x64,ARM,MIPSがあるし、RISC-Vとかも多分要考慮。
x86/64と一口に言ってもSSEやAVXとか環境によってサポート具合が異なる。
しかも、サイト側がユーザーのアーキテクチャ向けのバイナリを用意しなければ動かない。
バイナリなし環境でも動くように救おうとしたら、アーキテクチャ分ののバイナリ変換プログラムの保守が必要になって、テストは指数関数的に増える。
そんな面倒な事やってられねーので、今の形になったと思う。
Re: (スコア:0)
コードをあんまり具象化すると、AMDの拡張命令が使えるかとかAppleのSoCのコプロセッサが使えるかどうかとか
判定をsoやdllの中で網羅していかないといかなくて不便な気がする。
(既存のコード資産は、判定をsoやdllまで持ってきてるのもあれば、#ifdefなんかで落ちるのもあるんじゃない)
コードの中で判定するのは人手がかかるし、ファットバイナリは簡単だが通信量が増える
Re: (スコア: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]