MacRuby-devel ML: roadmap for 0.5(3)

昨日の続きです。これで、最終回です。

以下は、どうするか分からないような作業項目です。これらは、リリースにとってクリティカルな問題ではないのですが、それでも重要なものです。これまで挙げた作業が終わった後にやるかもしれません。

  • instruby.rbをrakeライブラリを使って書き直す(rakefile-ize)。実現性:低
  • 多重代入のときに裏で配列を生成しないようにすること。多重代入の戻り値として配列を生成しますが、多くの場合、その配列は使われていません。実現性:低
  • (修正、正確な翻訳ではないかも)多倍長整数演算において、CPUのSIMDを使って(bignum vectorization)、Bignumクラスを再実装する。実現性:中
  • AOT(Ahead Of Time)コンパイラの完成。実現性:高
  • JITのマルチスレッド対応。コード量が多いライブラリを読み込む際、起動時間を短縮するためにRubyスクリプトを別スレッドでコンパイルする。実現性:低
  • デバッガインタフェース。実現性:低
  • LLVMのtrunk、または次期リリース版の2.6の対応。LLVMのtrunkは変化が早く、多くのAPIが変わってしまいます。そのため、たまにコンパイルできなくなります。実現性:低

ローラン

以下、原文です。http://lists.macosforge.org/pipermail/macruby-devel/2009-July/002091.html

Now, here is a list of tentative items, things that are not necessarily critical for the release but nevertheless important. Some of them might be completed by then, some not.

* rakefile-ize the instruby.rb script. Chance: low.

* massign arrays elimination pass. Multiple assignments generate an array as the return value. Most of the time, this array is not needed. Chance: medium.

* bignum vectorization. Use a bignum vectorization library to re-implement Bignum. Chance: medium.

* Finish the AOT compiler. Chance: high.

* multithreaded JIT. Compiling Ruby from different threads to improve startup time when loading large libraries. Requires the new LLVM trunk changes. Chance: low.

* debugger interface. Chance: low.

* work with LLVM trunk / future 2.6 release. LLVM trunk moves too fast, adds lots of API changes and sometimes doesn't build at all. Chance: low.

Laurent
    • -

最後に、私の感想を少し述べます。
JITのマルチスレッド対応なんて、できたらすばらしいですが、コンパイル時の定数が定義されているかどうかとか、ローカル変数かどうかとかのコンテクストは必要ないのですかね。よく分かっていないので、これから勉強したいですね。
あと、「bignum vectorization」って何でしょうか。不勉強なため、分かりませんでした。->Vincent Isambart on Twitter: "@takaokouji bignum vectorization=Bignumの計算がCPUのSIMDを使うってことです"

    • -

今日まで3回に渡って、MacRuby 0.5のロードマップを翻訳してみました。かなりチャレンジな修正もあります。これからのMacRubyから目が離せません。