ruby-trunk-changes r44936 - r44959

今日は Enumerable の min, max, min_by, max_by に引数で返す個数を指定できるようにする新機能の追加や、環境変数で指定するメモリ管理のパラメータに単位指定ができるようにするといった新機能の追加と、deprecated にされていた API の削除や struct RBignum の非公開化などの変更がありました。

nobu: r44936 2014-02-14 14:04:07 +0900

GC の(メモリ管理の)パラメータを指定する環境変数に 1k, 1m, 1g のように単位をつけることができるようにしています。ちなみに 1k=1024, 1m=1024**2, 1g=1024**3 となっています。大文字でも可。

svn: r44937 2014-02-14 14:04:11 +0900

version.h の日付更新。

usa: r44945 2014-02-14 15:39:06 +0900

r44584 の ChangeLog エントリで非 ASCII 文字が入っていたのが r44587 で "?" に置換されていたのですが、ウムラウトつきの u だったのを ue と表記しなおしています。

normal: r44951 2014-02-14 18:42:14 +0900

rb_str_format_m() でコンパイラの最適化による GC マーク漏れから保護するために volatile 修飾子つきの変数を使っているのを RB_GC_GUARD() による明示的な保護におきかえています。 [ruby-core:60688]

akr: r44955 2014-02-15 00:16:31 +0900

deprecated としてマークされていた API を削除しているようです。
rb_big2str0(), rb_big2ulong_pack(), rb_quad_pack(), rb_quad_unpack(), rb_thread_polling(), rb_thread_select(), rb_gc_set_params(), rb_proc_exec_n(), rb_exec_arg_init(), rb_exec_arg_addopt(), rb_exec_arg_fixup(), rb_run_exec_options(), rb_run_exec_options_err(), rb_exec(), rb_exec_err(), rb_fork(), rb_fork_err(), rb_struct_iv_get(), rb_thread_blocking_region(), rb_read_check(), rb_check_safe_str(), Check_SafeStr() などが削除されています。けっこうありますね。拡張ライブラリをメンテナンスしている人は要確認です。 [ruby-core:60581] [Feature #9502]

svn: r44956 2014-02-15 00:16:35 +0900

version.h の日付更新。

akr: r44957 2014-02-15 00:29:10 +0900

Bignum の内部構造である struct RBignum を ruby/ruby.h から internal.h に移動して非公開にしています。これで最適化とかやりやすくなるんでしょうね。 こちらも拡張ライブラリの作者の方は利用していないか確認を。まあ普通は NUM2INT とかで変換するだけで直接 Bignum の中身を触ったりしないでしょうけど。 NArray とか大丈夫かなと思いましたが、使ってなさそうですね。 [ruby-core:42891] [Feature #6083]

akr: r44958 2014-02-15 00:45:11 +0900

Enumerable の min, max, min_by, max_by に引数として上位/下位 n 個を取得することができるようにしています。また Range の min, max も n 個取り出せるようにしています。結果はソート済みになっているので、ランキングとか作るのにとても便利ですね。またチケットには Importance Sampling(重み付けサンプリング)に使えるっていう例も上がってます。 [ruby-core:57111] [Feature #8887]

nobu: r44959 2014-02-15 01:40:26 +0900

インタプリタの起動時に実行する初期化関数を登録しておく関数で初期化関数の呼び出しがされていなかった不具合を修正しています。Ruby 本体で使っているところをみると goruby (コードゴルフ用の ruby)で使っていて、goruby 独自のメソッドなどの定義が動いていなかったみたいです。