ruby-trunk-changes 2020-06-16

今日は rubygems の更新と Object._id2ref の不正な引数で異常終了してしまう不具合修正などがありました。

[955f1837a1] David Rodríguez 2020-06-10 17:46:05 UTC

rubygems の {} によるブロックの記法でかならず閉じかっこの前に空白を入れるようにしています。

[4784264729] David Rodríguez 2020-05-27 15:44:25 UTC

lib/rubygems/specification.rb の末尾の Gem.clear_paths がなんであるのかわからないみたいで消しています。

[c61031d6b6] David Rodríguez 2020-02-25 14:45:32 UTC

lib/rubygems.rb の emacs 用の mode line を削除。

[afce7eb39e] David Rodríguez 2020-03-24 11:54:22 UTC

rubygems の子プロセス起動に Gem::Util.silent_system というメソッドを使ってたのを Open3.capture2e を使うように書き換えています。

[2b4abcff90] David Rodríguez 2020-06-12 09:37:38 UTC

rubygems の Gem::Util.silent_system というメソッドは deprecated にマークして警告を出すようにしています。

[49c42b6012] David Rodríguez 2020-06-12 15:16:37 UTC

rubygems およびそのテストの magic comment に encoding 指定していたものはもう不要なので( デフォルトの script encoding が UTF-8 になったので)削除しています。

[3ab1cfc325] Josef Šimánek 2020-06-13 22:26:23 UTC

Gem.disable_system_update_message という設定を追加して gem update --system を無効にする(エラーにする)ことがにできるようにしています。環境をうっかり壊さないようにするための設定かなぁ。

[7a571103f2] Josef Šimánek 2020-06-14 22:28:25 UTC

rubygems3ab1cfc325811b862cb81d0360bf83216cd6f235 で追加した設定で gem update --system をエラーにした時に終了ステータスを異常終了にするようにしています。

[e384707296] Nobuyoshi Nakada 2020-06-15 15:26:17 UTC

rb_builtin_type_name() でオブジェクトのタイプ別のクラス名や値の文字列に変換するためのテーブルで T_BIGNUM と T_FIXNUM をいずれも Integer と表示するように変更しています。

[b52862d35f] git 2020-06-15 15:29:55 UTC

version.h の日付更新

[466d3e68da] Nobuyoshi Nakada 2020-06-16 02:44:31 UTC

GitHub Actions でテスト時間短縮のため? にファイルのダウンロードなどのターゲットでリポジトリの更新はスキップさせるようにしています。 make の -o オプションで一部のターゲットを除外できるというの知らなかった。

[d9c8804045] Nobuyoshi Nakada 2020-06-16 03:29:02 UTC

466d3e68da5df4f76d87332ff6786a391cc8bde4 の続きで GitHub Actions のファイル生成を make incs で行なうように簡略化しています。 make touch-unicode-files というのはなくしています。再ダウンロードもスキップさせてるのかな。

[84160dc29b] "S.H" 2020-06-16 08:47:59 UTC

numeric.c の rb_int_floor() と rb_int_ceil() に static 修飾子を追加しています。 https://github.com/ruby/ruby/pull/3217

[19cabe8b09] Nobuyoshi Nakada 2020-06-15 01:00:12 UTC

Struct の [], []= メソッドの実装のため ISeq を取り出すのに使ってた rb_method_for_self_aref()/rb_method_for_self_aset() といった関数の引数を struct rb_builtin_function という組み込みメソッドを ruby 実装した時の builtin 関数呼び出しに使う struct rb_builtin_function という構造体を利用するようにして opt_call_c_function 命令のかわりに invokebuiltin 命令を使うようにしています。が後に revert されています。

[26c179d7e7] Nobuyoshi Nakada 2020-06-15 16:03:15 UTC

Object._id2ref で引数を Integer に変換しておくようにしています。非 Integer なオブジェクトを渡された時に異常終了する可能性があったようです。 b99833baec2e567e38758f4fd017c90c7ce57d75 で object_id をメモリ上のアドレスを使うのをやめて単調増加する数値にするようにした時に変換が漏れてたようです。

[318d52e820] Nobuyoshi Nakada 2020-06-16 09:44:58 UTC

19cabe8b09d92d033c244f32ff622b8e513375f1 の Struct のメソッドの一部で invokebuiltin 命令を使うようにした変更を revert しています。 tool/lib/iseq_loader_checker.rb が対応してないからとのこと。