ruby-trunk-changes 2022-11-15

今日は主に Variable Width Allocation 対応と compaction のの処理とで潜在的にあった不具合修正や MJIT の実装の整理、オプション名の変更などがありました。

[1221c77489] Nobuyoshi Nakada 2022-11-14 13:41:59 UTC

common.mk の make clean-local ターゲットで yjit/target というディレクトリも削除するようにしています。

[6dd1a5f532] Peter Zhu 2022-11-11 15:37:11 UTC

shape.c の未使用になってた関数 rb_shape_transition_shape() を削除しています。

[9a6c3355c5] Peter Zhu 2022-11-14 20:40:47 UTC

array.c で Array オブジェクトのヒープ領域を確保した時にすぐに ARY_SET_CAPA() で capa を設定して状態がずれたまま GC の走る可能性のある処理をしないようにしています。 Compaction の処理で不具合が出る可能性があったみたいです。

[710c1ada84] Peter Zhu 2022-11-14 21:59:43 UTC

Variable Width Allocation で文字列オブジェクトを埋め込むためにバッファサイズを計算する rb_str_size_as_embedded() で今ヒープにバッファを持ってるオブジェクトのサイズを計算する時に length でなく capa で計算するようにしています。これも確保したばかりのオブジェクトを len が 0 だからといって埋め込んでしまうと続きの C 実装の処理で解放したヒープ領域を触ってしまう可能性がある不具合があったようです。

[436aa6e64d] Shohei YOSHIDA 2022-11-08 12:30:14 UTC

bundler の bundle clean のヘルプメッセージの修正。

[6cd0553ab7] Shohei YOSHIDA 2022-11-14 00:50:18 UTC

6cd0553ab7d6927e07cc7f00305cb413436b7608 の再修正で bundler の bundle clean のヘルプメッセージ再修正。

[b7d591643a] Aaron Patterson 2022-11-14 21:16:26 UTC

MJIT と YJIT で USE_RVARGC というマクロを参照できるようにそれぞれ ruby や Rust に expose していたのを消しています。

[5c3dba83fa] Nobuyoshi Nakada 2022-11-15 00:01:29 UTC

Time.new などの offset の文字列のチェックのリファクタリング

[3147a3900f] Kenta Murata 2022-11-15 00:32:53 UTC

拡張ライブラリ bigdecimal に追加した rbd_allocate_struct_{zero,one}_*() などの inline 関数が未使用のため警告が出ていたのを抑制するため MAYBE_UNUSED() マクロによる宣言を追加しています。

[9228ae97c5] Takashi Kokubun 2022-11-15 00:52:20 UTC

GitHub Actions で dependabot に GitHub Actions の workflow 内の actions のバージョン更新をさせているところで necojackarc/auto-request-review という action の更新を対象から外していたのをやめています。末尾のコメントが更新されないので除外していたけど dependabot が対応したらしいのでそれを試してみるみたいです。

[e74d82f674] Aaron Patterson 2022-11-15 00:15:50 UTC

YJIT の ARM64 向け実装で 16 bit の整数のロード命令の対応を追加しています。 Object Shapes の実装で利用するみたいです。

[3c60e030b5] Kenta Murata 2022-11-15 04:01:50 UTC

拡張ライブラリ bigdecimal で sprintf(3) を使っていたところを snprintf(3) を利用してバッファサイズ指定するようにしています。

[c925a2ee91] David Rodríguez 2022-11-11 11:15:03 UTC

bundler のテストに使う rspec のバージョンを更新しているようです。

[c75de1e330] Kenta Murata 2022-11-15 06:58:56 UTC

3147a3900f7fc5ee7f763741dcc97f4487de79f4 で拡張ライブラリ bigdecimal で MAYBE_UNUSED() を使った警告抑制をしていたのですがマクロが未定義の時のために代替の(なにもしない)マクロ定義を追加しています。

[d15d1c01c2] Takashi Kokubun 2022-11-15 07:38:52 UTC

MJIT 用のオプション --mjit-min-calls を --mjit-call-threshold に改名しています。 https://github.com/ruby/ruby/pull/6731

[69e47b7fa6] Takashi Kokubun 2022-11-15 07:37:30 UTC

MJIT の ruby 実装のための binding で ROBJECT_EMBED_LEN_MAX という定数の対応を削除しています。

[2652bc3578] Johnny Willemsen 2022-11-15 08:06:22 UTC

標準添付ライブラリ racc の gemspec ファイルの spec.homepage を更新しています。

[f500ca9b8a] Takashi Kokubun 2022-11-15 08:18:12 UTC

MJIT のコンパイル処理のメインの lib/mjit/compiler.rb で NotImplementedError を補足するために rescue に Exception を明示して全ての例外を補足するようにしています。

[1a9e87fe3a] Takashi Kokubun 2022-11-15 08:11:44 UTC

MJIT の ruby 実装のための C binding で構造体 rb_method_definition_struct の type フィールドの型を rb_method_type_t として扱っていたのを実体に合わせて BitField クラスで扱うようにしています。また BitField クラスが幅 1 のビットフィールドにしか対応していなかったので複数ビットにも対応して整数(ビットパターン)を返すようにしています。

[1eae15142f] st0012 2022-11-13 11:19:40 UTC

標準添付ライブラリ irb のテストで複数のテストクラス内で同じクラスが定義されていたのを test/irb/helper.rb に移動してまとめています。

[4f348e482c] st0012 2022-10-05 11:38:51 UTC

標準添付ライブラリ irb で古い ReidlineInputMethod というクラス名を使っているところが残っていたのを RelineInputMethod に変更しています。

[34320d883f] st0012 2022-10-05 11:42:01 UTC

標準添付ライブラリ irb のオプションの --reidline が指定されたら警告メッセージを出力するようにしています。

[aecb7f6efc] st0012 2022-10-05 11:44:13 UTC

同じく irb の config の設定に USE_RELINE が指定された時にも警告で USE_MULTILINE を使うようにメッセージを出力しています。

[36dc99af5a] Hiroshi SHIBATA 2022-11-15 11:19:43 UTC

irb のテスト用に test/irb/helper.rb で IRB::InputMethod の空のクラスを定義しておくようにしています。1eae15142f0fd9e5285e3d685bb1448f0f441b1c で TestInputMethod の定義を移動した時に irb が require されずに呼ばれる可能性が出てきたためだと思われます。