編集可能
2013年3月18日

asm.js/OdinMonkeyメモ

自分の観測範囲内だけとりあえずまとめ
17

asm.js/OdinMonkeyについてdynamisさんの解説

dynamis (でゅなみす/レッサーパンダ) @dynamitter

JSには型固定配列が実装されていてそれを使えばかなり高速化されるので型のある言語で書いたコードをTyped Array使ったJSコードにコンパイルすれば手で書いた型なしJSコードより高速になる

2013-03-17 02:09:57
dynamis (でゅなみす/レッサーパンダ) @dynamitter

JSでもn=n|0は常にintのように型を固定する書き方がある。C等からそんなアセンブラ的JSに変換するコンパイラとそんなJSを高速実行するよう改良したエンジンにより、JSは後方互換性を保ったままJava/C#以上の速度を実現可能な実行環境に進化する

2013-03-17 03:27:17
dynamis (でゅなみす/レッサーパンダ) @dynamitter

アセンブラ的JSサブセットがasm.js、C等から変換するコンパイラがEmscripten、新しいJSエンジンがOdinMonkey。これによって既存ブラウザでは従来通りの速度で動作し、FirefoxならJava/C#以上の速度で動作するWebアプリが実現可能になる

2013-03-17 03:33:03
dynamis (でゅなみす/レッサーパンダ) @dynamitter

互換性を捨てて既存ブラウザで動作しない新言語に移行せずとも、高速実行可能なJSのサブセットを定義することで、WebはNativeに匹敵する処理速度を実現可能。AndroidでJavaとCを連携させるように、FirefoxではJSとCからコンパイルされたasm.jsを連携させる

2013-03-17 03:40:27
dynamis (でゅなみす/レッサーパンダ) @dynamitter

HTML5が示したようにWebで必須である後方互換性があるだけでなく、既存の多様な言語のライブラリを活用できるという点でも、新言語をブラウザに実装するよりもasm.jsの方が筋が良いと思う

2013-03-17 03:43:23
dynamis (でゅなみす/レッサーパンダ) @dynamitter

Tracing JITを導入したTracemonkey、メソッドベースJITに移行したJägerMonkey、新しい中間言語による型推論を導入したIonMonkeyに続け、アセンブリJSを定義するOdinMonkeyによってようやくJSはNative言語に追いつく

2013-03-17 03:54:27
dynamis (でゅなみす/レッサーパンダ) @dynamitter

特定ブラウザだけで速くなるなら、特定ブラウザだけ新言語を実行させ他ブラウザではその言語からJSに変換したものを実行させるのと実質的には同じ気もするが、全く別の実行エンジンを2つ積むのでなくJSエンジンの拡張だけで済むことと、既存資産継承のしやすさがasm.jsの利点か

2013-03-17 04:09:10
dynamis (でゅなみす/レッサーパンダ) @dynamitter

規模が小さく見通し良いものが対象なら高速化しやすくバグも減るってことね。中間言語を整理したIonMonkeyにも通じるところを感じる RT @nalsh: @dynamitter asm.jsっていう小さいセットをブラウザが頑張って高速化すると、その上に乗ってる全てが速くなる

2013-03-17 04:16:58

以下詳細

azu @azu_re

見てる: "asm.js: closing the gap between JavaScript and native" http://t.co/rwOo3PHC

2013-02-16 19:39:00
azu @azu_re

asm.jsはMozillaの人たちなのか。LLJS関係あるのかなとか思ったんだけど関係ないのかな… "asm.js" http://t.co/8Li74PbC

2013-02-16 21:59:48
azu @azu_re

Effective JavaScriptの人、Harmonyのbinary dataに関わってる人、Emscriptenの人

2013-02-16 22:03:29
azu @azu_re

Editorのメンツ豪華

2013-02-16 22:05:37
小倉唯 @Constellation

asm.js, SpiderMonkey core membersとemscriptenの方々ですね.

2013-02-16 22:05:54
:tetsuharu @saneyuki_s

asm.js、名前見た瞬間はアセンブラ命令叩ける面白nodeモジュールかと思った

2013-02-16 22:10:40
azu @azu_re

面白いアプローチ "asm.js - frequently asked questions" http://t.co/RfDSAHF4

2013-02-16 22:12:48
:tetsuharu @saneyuki_s

OdinMonkey(asm.js)入ったら、pdf.jsが"use asm"されそう

2013-02-16 22:41:18
azu @azu_re

asm.jsの仕様を元に、どのように動くのか、型と静的/動的チェック、OdinMonkey(asm.jsサポートしたSpiderMonkey)のパフォーマンス、ES6と未来などについて簡潔にまとまってる 「asm.js: closin…」 http://t.co/pdVik3L8

2013-02-17 00:36:21
小倉唯 @Constellation

ぼんやり asm.js の資料見てた. OdinMonkey build してみるか.

2013-02-17 00:44:15
小倉唯 @Constellation

なんとなく OdinMonkey build した

2013-02-17 01:13:56
小倉唯 @Constellation

type coercion がないと, type error で basic JS に落ちるのか.

2013-02-17 01:21:40
残りを読む(29)

コメント

Yuki Mitsui @Silphire 2013年3月19日
やってる事はだいぶキモいけど、やりたいことは理解できる。でもやっぱり全ブラウザが共通仕様のVM持ってほしい。それこそJavaと何が違うのという感じだけれども。
0
Kon @KDKTN 2013年3月24日
最初はすごくいい発想かと思ったんだけど、よく考えたら『特定ブラウザだけで速くなるなら、特定ブラウザだけ新言語を実行させ他ブラウザではその言語からJSに変換したものを実行させるのと実質的には同じ気もする』にまったく同意するんだよね。これができるんだったら、C/C++ から JavaScript と LLVM bitcode の両方を出力するような手もあるはず。わざわざ JavaScript のサブセットにして、コードを共通にしなければならない理由が思いつかない
0