ruby-trunk-changes 2021-01-06

今日は標準添付ライブラリ io/console や ostruct の不具合修正、Ractor 用の公開 C API の追加などがありました。

[075824ebd5] Nobuyoshi Nakada 2021-01-05 12:23:07 UTC

tool/sync_default_gems.rb で定数 REPOSITORIES の Hash からリポジトリ名を引くのを毎回実行しないで結果を変数に保存しておくようにリファクタリングしています。

[06454a9457] Nobuyoshi Nakada 2021-01-05 12:24:10 UTC

tool/sync_default_gems.rb に -a オプションを追加して、upstream から同期するコミットの範囲を自動で決定するようにしています。

[ead8d89bd7] Nobuyoshi Nakada 2021-01-05 04:52:18 UTC

拡張ライブラリ io/console の IO#getpass で取得した文字列を chomp する処理で rb_funcallv() で chomp! メソッドを呼び出した時に結果を再代入してしまっていたのをやめています。 chomp! は変更がない時に nil を返すので。

[4272395982] Nobuyoshi Nakada 2021-01-05 07:29:00 UTC

ead8d89bd7fa11601c7d6678a2b9182b01263077 の続きで拡張ライブラリ io/console で String#chomp! メソッド呼び出しのための chomp! を毎回 rb_intern() を呼び出してたのを ID を static 変数に保持しておくようにしています。

[83e62d7798] Nobuyoshi Nakada 2021-01-05 07:31:43 UTC

拡張ライブラリ io/console の構造体 struct query_args の qstr をポインタから埋め込みの文字配列にしています。 6 bytes だけだったのでたいていの環境でこっちのほうが小さいので?

[3d43944725] Kazuhiro NISHIYAMA 2021-01-05 14:10:39 UTC

ext/monitor/monitor.c のコメントの typo 修正。

[3108ad7bf3] Marcus Stollsteimer 2021-01-05 14:13:53 UTC

いろんな場所のコメントで(rdoc 用コメント含む) "is same as" を " is the same as" に修正する文法修正。

[e13f41e02d] Adam Hess 2021-01-05 23:34:45 UTC

標準添付ライブラリ ostruct の OpenStruct#method_missing で無引数だった時の実装が抜けてたのを修正しています。OpenStruct を継承したクラスからの super での呼び出し時に値が取れないことがあったらしいです。 https://github.com/ruby/ruby/pull/4028

[e8945d5eb3] git 2021-01-05 23:35:07 UTC

version.h の日付更新

[a0a6293e78] Marc-Andre Lafortune 2021-01-05 23:35:46 UTC

標準添付ライブラリ ostruct の OpenStruct::VERSION を "0.3.2" に更新しています。

[31854403b3] Kenta Murata 2021-01-04 23:12:39 UTC

拡張ライブラリ bigdecimal の変換の高速化のために使う __lzcnt()/_lzcnt_u32()/_BitScanReverse() などの builtin 関数の存在をヘッダの存在有無だけでチェックせず全て have_func() で個別に存在チェックするようにしています。

[f289f8ae3a] Kenta Murata 2021-01-06 01:25:45 UTC

拡張ライブラリ bigdecimal で Bignum で数値が 64bit の範囲に収まるもののための専用の変換処理を追加して Kernel#BigDecimal などでの変換を最適化しています。

[7da06c04b2] Kenta Murata 2021-01-06 04:39:09 UTC

f289f8ae3ab3e76287597722c52cd8cfcfc694ad で rb_big_cmp() で数値の比較した結果は Fixnum でかえってくるので FIX2INT() で int に戻してから使うように修正しています。

[fa8295ccb9] Kenta Murata 2021-01-06 02:54:17 UTC

拡張ライブラリ bigdecimal の 数値を保持する配列の要素の型である BDIGIT を DECDIG と改名しています。

[442bd0e92c] Koichi Sasada 2021-01-06 04:05:30 UTC

gc.c のデバッグ用情報の表示のための関数 rb_raw_obj_info() で T_IMEMO 型の imemo_callcache サブタイプの時の表示内容を強化しています。

[954d6c7432] Koichi Sasada 2021-01-06 04:06:25 UTC

rb_iseq_mark() で ISeq の mark 時にメソッド呼び出しの call cache が再定義によって無効になってるのを検出したら mark せずにその場で rb_vm_empty_cc() で上書きしてすぐに回収されるようにしています。rb_vm_empty_cc() は新規にオブジェクトを作ったりしないので mark 中でも使えるんですね。

[d9fdca81ac] Takashi Kokubun 2021-01-06 07:02:01 UTC

標準添付ライブラリ reline のテストで 8e231ffa8c4fde25998f827cb965c4fd7d55c53d で keyseq_timeout の設定値を MJIT 有効化時に 5倍にしてましたが、これでも足りなかったようで 600倍(!)にしています。

[d968829afa] Koichi Sasada 2021-01-06 06:30:56 UTC

rb_proc_isolate()、rb_proc_isolate_bang()、rb_proc_ractor_make_shareable()、rb_ractor_make_shareable()、rb_ractor_make_shareable_copy() などの C API を公開ヘッダに移動したり RUBY_SYMBOL_EXPORT_BEGIN/RUBY_SYMBOL_EXPORT_END で囲んだりして公開 API にしています。Ractor 関係の便利 gem を作るためだそうです。また Ractor#[] で Ractor local storage を取得するための関数 rb_ractor_local_storage_value_lookup() も追加してこれも公開 API にしています。