Rubyインタプリタ開発者 笹田耕一さんによるAOTコンパイラ「ISeq」解説 #rubykaigi 2015
I recommend RUBY_BUILD_SKIP_MIRROR=1 using rbenv so that it will pull directly from cache.ruby-lang.org fronted by fastly :) #rubykaigi
2015-12-11 13:38:42Rubyのスクリプトをコンパイルする話。コンパイルという語は文脈に寄って異なる。大きく分けてJITとAOTがある。 #rubykaigi
2015-12-11 13:38:57今回話すのはAOTのうち、「プログラムを中間バイトコードに落とす」パターンの話。Javaのバイトコードと同じパターン。 #rubykaigi
2015-12-11 13:40:36映像のフォーカスが甘いのでは?という指定をいただいたので、なんとかならないか調整していたところ、中継映像にも設定画面などが出てしまいました。ごめんなさい! #rubykaigi
2015-12-11 13:40:41Ruby 2.3 には AOT Compile (のためのプリミティブな機能)を追加したぞ、というはなしがはじまった #rubykaigi
2015-12-11 13:40:48ふと気付いたら会場のスクリーンものすごくデカい。このサイズで発表するのは大変久しぶりになる… #rubykaigi
2015-12-11 13:41:21Rubyのbyte code(Iseq) の serializer, deserializer を作ろうという話 #rubykaigi
2015-12-11 13:41:45Java では -Xverify:none を指定するとチェックをoffにできて、かつかなり速くなる。このチェックをやるとオーバーヘッドは大きくなりそう。 #rubykaigi
2015-12-11 13:43:08ISeqの目的は高速起動、メモリ効率化、ポータビリティ。JVMはポータビリティのわかりやすい例。ただし今回は前者2つを主目的とし、ポータビリティはサポートしない。ので、コンパイル済みバイトコードを配布/利用するのは望ましくない。 #rubykaigi
2015-12-11 13:44:40ISeq、圧縮表現というか簡潔データ構造でメモリ内に保存することでメモリ使用量を減らすと言うことだろうか。ランダムアクセス可能な圧縮形式? #rubykaigi
2015-12-11 13:44:41"Fast boot" in #Ruby using precompiled bytecode, soon to be true! #rubykaigi pic.twitter.com/w9XeNTLamW
2015-12-11 13:44:41