asm.js/OdinMonkeyメモ

自分の観測範囲内だけとりあえずまとめ
17
小倉唯 @Constellation

あーなるほど. type coercion の statement が, JS 範疇にあるから, fail 時に通常の JS に落ちることができるのか. なるほどね.

2013-02-17 01:32:51
小倉唯 @Constellation

frontend/BytecodeCompiler.cppのlevelでdirective"use asm"を認識して,ion/AsmJS.cppのCompileAsmJSを叩く.SpiderMonkeyはlazy parsingしてないから,即座にcompile&linkか.

2013-02-17 01:52:05
mooz @stillpedant

話題の asm.js http://t.co/rFPILEHM を眺める.JS上につくられた静的型付け規則.RPythonに近い.asm.jsに対応した処理系がコンパイルして高速なコードを生成できるよう,JSとして解釈できる構文で型注釈をおこなう.数値演算をネイティブコード化.

2013-02-17 16:51:18
mooz @stillpedant

asm.js に対応していない処理系が JS として解釈としたときにセマンティクスが崩れないように型注釈の記法を定めていて,これが面白い.例えば +foo で foo が double, foo|0 で foo が int であるといった具合に.

2013-02-17 16:53:55
mooz @stillpedant

Emscripten の中のひとがかんでいるらしいので,そのうち asm.js Mozilla 実装の odinmonkey で Emscripten が高速に動作する日が来るかも? 夢が広がりますね.

2013-02-17 16:55:39
小倉唯 @Constellation

@stillpedant type coercionがなかったりstatic type errorが起こったりした場合でも, JS subsetなのでbasic JSに落ちるの面白いですよね. OdinMonkeyの実装見ましたが, もろそんな感じでしたー.

2013-02-17 17:16:44
小倉唯 @Constellation

要は文法拡張がないんですよね.

2013-02-17 17:17:08
小倉唯 @Constellation

frontend/BytecodeCompiler.cpp と ion/AsmJS.cpp 見るといいです.

2013-02-17 17:18:20
mooz @stillpedant

@Constellation 賢いですよねぇ.VM バイトコードの validation 問題をうまく解決しているというか.OdinMonkey も後で覗いてみたいです.

2013-02-17 18:00:47
小倉唯 @Constellation

@stillpedant OdinMonkey, code 小さくまとまってるので良いですよー. ion/AsmJS.cpp の entry point を byte code compiler から叩いているだけですー. AOT compile ですね.

2013-02-17 18:11:54
mooz @stillpedant

@Constellation おお,参考になります.byte code 吐き出して compile してしまう感じですか.ion が生きる実装ですね.あとで覗いてみます!

2013-02-17 18:14:40
:tetsuharu @saneyuki_s

OdinMonkeyがinboundに投入されてる… コメント読む限りはx86/x64の作業が完了したってことらしいけど。

2013-03-15 21:12:44
小倉唯 @Constellation

OdinMonkey, せっかくなのでこの感じでOpenCL叩くようなやつ作ると面白い気がする.

2013-03-15 21:17:04
:tetsuharu @saneyuki_s

@Constellation ParalellArrayシリーズの最終形態になりそう

2013-03-15 21:18:08
:tetsuharu @saneyuki_s

asm.js拡張で、ParallelCLArrayとか出てきたら面白いですね

2013-03-15 21:19:27
小倉唯 @Constellation

@saneyuki_s NVIDIA PTX 吐くやつならこの間みましたー. http://t.co/lXYiMSqBN8

2013-03-15 21:20:35
kyo_ago @kyo_ago

"use asm"その方向継続しちゃうのか。。。正直"use hoge"路線はやめたほうがいいと思うんだけどなぁ。。。(使いやすいのはわかるんだけど) // asm.js http://t.co/iTor798h3E

2013-03-17 23:20:44
Yosuke HASEGAWA @hasegawayosuke

機械によるJITじゃ限界があるので、人間が機械に歩み寄ってヒントを与えながらコードを書く、という世界になりつつあるってこと?

2013-03-17 23:31:03
成瀬 @nalsh

@hasegawayosuke asm.jsは一定の制約を課すことで事前コンパイルしたのを動かすって話なので結構違う気がします

2013-03-17 23:39:54
Yosuke HASEGAWA @hasegawayosuke

@nalsh やー、JITだと限界あるから制約課してでも事前コンパイルできるようにしようぜ!ってわけではない、ということでしょうか。

2013-03-17 23:43:36
成瀬 @nalsh

@hasegawayosuke CoffeeScriptみたいなのをJavaScriptに変換するときにJavaScript吐いてると無駄が多いからもっと最適化しやすいかたちで吐こうぜって文脈だと理解しているので、人間が機械に歩み寄るとはむしろ逆方向から来ているかと

2013-03-17 23:50:18
成瀬 @nalsh

@hasegawayosuke 局所的にasm.js近傍だけ見ると「JITだと限界あるから制約かしてでも事前コンパイル出来るようにしようぜ!」ってのは正しいと思うのですが、大局的には機械に人間側へと歩み寄らせるためのインフラ整備的な

2013-03-17 23:51:50
Yosuke HASEGAWA @hasegawayosuke

@nalsh 生JSを人が書くという作業から遠ざけようというのは、もう止まらない流れですね。確かに、その中で機械にやさしいコードを生成というのは自然なことですね。

2013-03-17 23:56:04
成瀬 @nalsh

@hasegawayosuke Ruby陣営的なコメントとしては「JavaScript以外の言語をWeb世界で活用できる可能性をひらくasm.jsは、プログラミング言語の多様性を重んじる我々にとって歓迎すべき技術である」的な

2013-03-17 23:58:57