ruby-trunk-changes 2020-11-27

今日は Random::DEFAULT をプロセス全体で 1つでなく Ractor 毎の乱数生成器が作られるようにする変更や MJIT の最適化などがありました。

[1898e9558a] Takashi Kokubun 2020-11-27 03:23:34 UTC

MJIT のテストで一時ディレクトリ内の MJIT が生成するファイルが残ってた場合に削除するのをファイルの更新日時が 24時間以上前だった時だけにしてたのを常に消すようにしています。

[ead32e6e64] git 2020-11-27 03:25:32 UTC

version.h の日付更新

[eca854041f] Nobuyoshi Nakada 2020-11-27 03:44:45 UTC

random.c の Random クラスの rdoc 用コメントに Random のデフォルトのアルゴリズムは暗号論的用途に使えるものではないのでそういうのに使いたい時は SecureRandom を使うようにと追記しています。

[82541df081] Nobuyoshi Nakada 2020-08-31 13:06:06 UTC

正規表現のテストの $KCODE と $= という特殊変数についてのテストメソッドを分割しています。

[4dbf6f1e51] Takashi Kokubun 2020-11-27 04:08:20 UTC

rb_bug() と同様の C や Ruby のバックトレースを表示したうえで異常終了はしないで続行する rb_bug_without_die() という関数を追加して、CI での実行中に GC.compact の処理で heap page のメモリ領域を保護しているのが violate された時のシグナルハンドラから呼び出して詳細を表示するようにしています。CI の時だけなのでエラーのデバッグのためですね。

[69e77e81dc] Takashi Kokubun 2020-11-27 04:35:24 UTC

4dbf6f1e515bd6a3b03ba9edccabccb780c3f789 の続きで GC.compact 処理中に保護してた heap page へのアクセスを検出した時のシグナルハンドラで rb_print_backtrace() を先に呼び出すようにしています。 rb_bug_without_die() が Ruby レベルのバックトレース出力で異常終了してしまうことがあったみたいなので先に C のバックトレースを出しておくようにしたみたいです。

[4d2c8edca6] Takashi Kokubun 2020-11-27 05:25:09 UTC

MJIT の性能改善のために vm_call_iseq_setup_normal() という関数の引数に extra_type というのを追加してMJIT で生成するコードからの呼び出しの時に積む control frame の種類に VM_FRAME_FLAG_FINISH フラグを追加できるようにしています。後から VM_ENV_FLAGS_SET() でセットしなおす処理を省略するためみたいです。

[8ce1711c25] Takashi Kokubun 2020-11-27 06:41:15 UTC

4d2c8edca69884a41d2f843d36023e3decdb9872 を revert しています。 CI で問題がみつかったみたいです。

[2db2fb9f6c] Koichi Sasada 2020-11-25 19:25:42 UTC

Random::DEFAULT 定数に格納される疑似乱数生成器がプロセス単位で初期化されてたのをやめて Random::DEFAULT には Random そのものを代入しておいて、Ractor 毎に乱数生成器が作成されるようにしています。このためインターフェースをあわせるため Random.seed というクラスメソッドも追加しています。クラスは共有してても実際に動く乱数生成器は Ractor 毎になるようにしています。 [ruby-core:100807] [Feature #17322]

[5496415d31] Koichi Sasada 2020-11-27 08:36:02 UTC

2db2fb9f6c742d5bd0019ccd11c7a375e1b12c0b の続き。 Ractor 毎に Random の背後の乱数生成器を生成するので Ractor の GC の mark 関数にそのオブジェクトの mark 処理も追加しています。

[d409837729] Takashi Kokubun 2020-11-27 08:36:02 UTC

MJIT 最適化で JIT で生成する関数で reg_cfp->self の値をローカル変数に格納しておいてこれを参照するように局所的に GET_SELF マクロを書きかえておくようにしています。ふーむ、そうかコンパイラは reg_cfp が書きかわってるかもしれない場合に毎回参照を辿るコードを吐くからこのほうが速くなるのか。

[f0e2ea2859] Benoit Daloze 2020-11-27 09:29:39 UTC

2db2fb9f6c742d5bd0019ccd11c7a375e1b12c0b で rubyspec の Random::DEFAULT の値について書きかえたテストで Random::DEFAULT が Class であることだけチェックしてたのを Random そのものであることまでチェックするようにしています。

[5d8fe1267d] Yusuke Endoh 2020-11-27 08:51:07 UTC

configure で x86intrin.h というヘッダの有無をチェックするのを target_cpu が i386, x86_64, x64 などのいわゆる x86系(っていうのかな。x64 は Itanium ですよね)の時だけにしています。Apple Silicon の M1 チップ上でのビルド時にファイル自体は存在してるけどコンパイルができなくて警告が出てたそうです。

ruby-trunk-changes 2020-11-26

今日は GC.compact 関連の修正のリトライや拡張ライブラリ ripper の Ripper.tokenize などの raise_errors キーワード引数指定時に一部のエラーが例外になってなかった不具合の修正などがありました。

[c32218de1b] Aaron Patterson 2020-11-25 17:24:50 UTC

490b57783d80f0c5f7882c66d9fb6aa02713c9a5 および 63ad55cd882e4010fe313d271af006a430b5ffa8GC.compact を明示的に呼んだ時に mprotect(3) などによる ObjectSpace の page の保護をやめる変更と環境によって mprotect(3) がうまく使えない時に GC.auto_compact = true をエラーにする変更が fed67fe6b277361940e3357c8b1ffa455d7f2339 で revert されてたのをリトライしています。 gc_compact_finish() の変更が前回からちょっと追加になってるかな。 [Bug #17306]

[526d0f46f3] git 2020-11-25 19:29:50 UTC

version.h の日付更新

[e0944bde91] Alan Wu 2020-11-25 22:05:06 UTC

Module を定義する関数群 rb_define_module()、rb_define_module_id_under()、vm_declare_module() などで rb_define_module_id() を利用していたのを rb_module_new() という関数を使うようにリファクタリングしています。rb_define_module_id() の内容は引数は使わず単に rb_module_new() を呼んでるだけだったので結局処理に変化はありません。

[af80df1820] Nobuyoshi Nakada 2020-11-25 12:01:57 UTC

appveyor.yml で zlib のパッケージを解凍するに為に 7z コマンドを使うところで独自パッチが当ててあった場合にダウンロードを省略するようにしています。

[6be9d18a4d] Yusuke Endoh 2020-11-25 15:38:38 UTC

bundled gem の typeprof を 0.7.0 に更新しています。

[1df3896382] Nobuyoshi Nakada 2020-11-26 11:03:38 UTC

cd0877a93e91fecb3066984b3fa2a762e6977caf で追加した拡張ライブラリ ripper の Ripper.tokenize の raise_errors キーワード引数についてのテストで同じ assertion が重複していたのを削除しています。

[f5ca3ff4db] Nobuyoshi Nakada 2020-11-26 11:14:34 UTC

拡張ライブラリ ripper の Ripper.tokenize の raise_errors キーワード引数に true が指定された時に、予約語をローカル変数として代入するような文を渡した時に例外が発生してなかったのを修正しています。文法エラーでも内容によってトリガーされるイベントがちょっと違ってたようなので全て対応するようにしています。 [ruby-core:101089] [Bug #17345]

ruby-trunk-changes 2020-11-25

今日は Ractor 利用時の Transient Heap の処理の修正や正規表現の \p{...} の記法の閉じかっこがなかった時のエラー処理がちゃんとされてなかった不具合の修正などがありました。

[b26d6c70e0] Jeremy Evans 2020-11-23 19:03:15 UTC

正規表現内の "\p{...}" の閉じかっこが無い場合のエラー処理が行なわれず例外が発生しなくなっていたのを修正しています。 [ruby-core:101028] [Bug #17340]

[b4dd7310ca] git 2020-11-24 15:01:57 UTC

version.h の日付更新

[490b57783d] Aaron Patterson 2020-11-24 18:45:12 UTC

GC.compact を明示的に呼び出した時に lock_page_body() と unlock_page_body() の処理を省略して対象の page の参照の禁止をしないようにしています。GC.compact の場合 compact 前に通常の GC を実行するようにしたので、それで不要になるということみたいですがよくわからず。

[87d21ee996] Aaron Patterson 2020-11-24 21:30:12 UTC

GC::INTERNAL_CONSTANTS という定数に格納されてる Hash に :HEAP_PAGE_SIZE という項目を追加しています。

[63ad55cd88] Aaron Patterson 2020-11-24 22:33:12 UTC

GC.auto_compact=true で GC の実行時に自動的に GC.compact も実行できるようになってましたが、mprotect(3) や VirtualProtect() によるメモリ領域保護が ruby で使っている heap の page サイズにマッチしない環境ではこれがうまくいかないので設定しようとすると NotImplementedError を発生させるようにしています。 [ruby-core:100715] [Bug #17306]

[26e3aea94f] Takashi Kokubun 2020-11-25 03:26:40 UTC

appveyor.yml で 7z による zlib のパッケージ解凍のオプションに -aoa というのを追加しています。

[c6b7b4f6f4] Takashi Kokubun 2020-11-25 03:50:41 UTC

Ractor のテストで CI でエラーになるものがあるそうで、デバッグのため失敗時の状況をもう少し詳しく出すよう assertion を書きかえています。

[eaa87be5f6] Takashi Kokubun 2020-11-25 04:18:04 UTC

c6b7b4f6f429d2cd3ea7a5ba38d2fc9f9037b91f で書きかえた Ractor のテストを環境変数 RUN_OPTS に --jit-min-calls=5 が含まれていた時にスキップするようにしています。

[00f046ef57] Takashi Kokubun 2020-11-25 04:36:25 UTC

test/unit の並列テスト時の worker の終了処理で例外を Exception#full_message でバックトレースつきで出力するようにしています。

[fed67fe6b2] Aaron Patterson 2020-11-25 05:29:45 UTC

490b57783d80f0c5f7882c66d9fb6aa02713c9a563ad55cd882e4010fe313d271af006a430b5ffa8GC.compact のための page 保護に関する変更を revert しています。なんでだろう。

[a79fe07db6] Koichi Sasada 2020-11-25 06:00:26 UTC

各 Ractor のメインスレッドの終了時に Thread#report_on_exception が true の時の例外出力の処理の前に rb_ractor_atexit_exception() の呼び出しがあったので後ろに移動しています。エラーが表示されるのを避けるためかなと思ったらコミットログをみるとこのために例外オブジェクトが他の Ractor と共有されてしまう可能性があったためこれを避けるためとのこと。

[d43d4acf26] Koichi Sasada 2020-11-25 06:51:31 UTC

Ractor.yield や Ractor#take の実装で Ractor のインスタンスを期待している引数が違うオブジェクトだった時の例外メッセージに対象のオブジェクトを inspect で文字列化して埋め込むようにしています。

[7aaf6676c4] Koichi Sasada 2020-11-25 07:14:01 UTC

オブジェクトの確保を一時的に保持する Transient Heap から ObjectSpace の heap に移動する transient_heap_evacuate() の先頭に rb_vm_barrier() を追加して複数 Ractor 利用時に全 Ractor の実行を一時止めるようにしています。RB_VM_LOCK_ENTER()/RB_VM_LOCK_LEAVE() で排他はすでにしているけどそれでは不足ということは transient_heap_evacuate() の内容を同時に実行してはいけないというだけではなくて他の Ractor が任意のオブジェクトを操作するのがだめということかな。

ruby-trunk-changes 2020-11-24

今日は主に標準添付ライブラリ csv の更新や、拡張ライブラリ zlib のために外部ライブラリとしての Zlib をダウンロードするようにする変更などがありました。

[78c40e6588] Nobuyoshi Nakada 2020-11-23 23:22:54 UTC

ext/zlib/extlibs ファイルを追加して外部ライブラリとして zlib-1.2.11 をダウンロードしてくるようにしているようです。

[48d1e8682c] Nobuyoshi Nakada 2020-11-23 23:27:08 UTC

78c40e658848e762b20f069042b5ec4eb853d330 の続きで 拡張ライブラリ zlib の extconf.rb で Windows 環境の mswin64 では外部ライブラリの zlib にパッチを当てるようにしています。

[3ce5434fec] Nobuyoshi Nakada 2020-11-23 23:35:55 UTC

.gitignore に static-ruby ファイルを追加しています。

[3a7ea6a013] git 2020-11-23 23:40:05 UTC

version.h の日付更新

[62d123dfa0] Sutou Kouhei 2020-08-04 01:30:20 UTC

標準添付ライブラリ csv の gemspec ファイルの stringio への依存関係をコメントアウトしています。コミットログはちょっと意味がわかりませんが、gem パッケージのみ使った時にバージョンの制約が邪魔なことがあるということかな。

[067b2175e8] Sutou Kouhei 2020-08-04 01:33:35 UTC

標準添付ライブラリ csvCSV::VERSION を "3.1.8" に更新しています。

[3283ef1a7e] Burdette Lamar 2020-08-04 21:34:02 UTC

標準添付ライブラリ csvCSV::Table#[] の rdoc 用コメントを追記しています。

[72997f4867] Burdette Lamar 2020-08-12 00:48:00 UTC

標準添付ライブラリ csvCSV::Table#value_at, CSV::Table#<<, #push の rdoc 用コメントを追記しています。

[7deff8880f] Burdette Lamar 2020-08-17 20:55:27 UTC

標準添付ライブラリ csvCSV::Table#delete, #delete_if, #each, #== の rdoc 用コメントを追記しています。

[d2913f912f] Burdette Lamar 2020-08-20 21:21:36 UTC

標準添付ライブラリ csv の rdoc 用コメントに Wikipedia の Table の項目へのリンクを追加しています。

[0543db40d8] Sutou Kouhei 2020-08-22 21:28:12 UTC

標準添付ライブラリ csvCSV::Row#initialize_copy の戻り値が super の戻り値から変化してしまっていたので修正しています。

[d99bca9012] Burdette Lamar 2020-08-23 21:25:25 UTC

標準添付ライブラリ csvCSV::Row#header_row?, #field_row?, #headers, #field, #fetch, #has_key? などのメソッドの rdoc 用コメントの追記。

[31ccc233b1] Burdette Lamar 2020-08-26 02:23:07 UTC

標準添付ライブラリ csvCSV::Row#[]= の rdoc 用コメントを追記しています。

[e8954fa13b] Burdette Lamar 2020-09-05 22:03:37 UTC

標準添付ライブラリ csvCSV::Row#<<, #push, #delete, #delete_if, #fields の rdoc 用コメントを追記しています。 delete/delete_if はさっきも追加してた気がするけど。

[207f2acc13] Burdette Lamar 2020-09-07 00:38:33 UTC

標準添付ライブラリ csvCSV::Row#to_h, #to_csv, #dig, #inspect の rdoc 用コメントを追記しています。

[614afb1647] Burdette Lamar 2020-09-11 21:36:01 UTC

標準添付ライブラリ csvCSV.filter で headers: true オプションを指定した時に入力のヘッダ行をそのまま利用できるようにしています。

[8ea293b79c] Burdette Lamar 2020-09-17 21:52:44 UTC

doc/csv/recipes.rdoc というファイルを追加して CSV の使いかたについてのトピック毎のドキュメントを追加しています。

[98d52d873e] Burdette Lamar 2020-09-18 22:00:06 UTC

8ea293b79c63d76443dd1fb352818c133302584d で追加した doc/csv/recipes.rdoc の章立てなどの修正。

[4be336b1b7] Burdette Lamar 2020-09-20 21:38:40 UTC

doc/csv/recipes.rdoc にさらに CSV.parse の conoverter オプションを使った例を追記しています。

[5a0c8068c8] Burdette Lamar 2020-09-21 22:11:33 UTC

標準添付ライブラリ csvCSV::Converter の rdoc に追記しています。

[76e5e5aaec] Burdette Lamar 2020-09-23 21:43:41 UTC

doc/csv/recipes.rdoc にさらに CSV::Converter を使った例を追記しています。

[4641a9a92b] Burdette Lamar 2020-10-01 22:00:24 UTC

doc/csv/recipes.rdoc の章立ての順序の入れ替えなど。

[6e28ec06c1] Burdette Lamar 2020-10-05 23:53:10 UTC

doc/csv/recipes.rdoc に説明を追加。

[15e457d6a3] Burdette Lamar 2020-10-08 21:27:53 UTC

doc/csv/recipes.rdoc のサンプルをより細かく章に分割しています。

[3cfb63fcd8] Burdette Lamar 2020-10-09 22:36:03 UTC

doc/csv/recipes.rdoc の章のタイトルを修正。

[c5fcafd2fd] Burdette Lamar 2020-10-14 01:06:41 UTC

doc/csv/recipes.rdoc をファイル分割して doc/csv/recipes ディレクトリ化に配置するようにしています。

[9266410c7a] Burdette Lamar 2020-10-19 01:34:34 UTC

doc/csv/recipes/generating.rdoc と doc/csv/recipes/parsing.rdoc にさらにトピックを追記しています。

[d48e688f64] Burdette Lamar 2020-10-21 07:36:16 UTC

doc/csv/recipes/parsing.rdoc にさらに CSV.parse の unconverted_fields オプションと converters のサンプルを追記しています。

[20a9131270] Burdette Lamar 2020-10-23 01:51:44 UTC

doc/csv/recipes/generating.rdoc にさらに CSV.generate のサンプルを追記しています。

[f9d6d762dc] Hiroshi SHIBATA 2020-11-12 17:18:53 UTC

標準添付ライブラリ csv の lib/csv/.editorconfig というファイルが混じってたのを削除しています。

[f9935205ac] Sutou Kouhei 2020-11-17 20:29:33 UTC

標準添付ライブラリ csvCSV::VERSION を "3.1.9" に更新しています。

[832b7f3c54] Sutou Kouhei 2020-11-22 20:54:04 UTC

標準添付ライブラリ csv の skip_lines オプションに正規表現を渡した時に改行コードによってうまく効かないという問題があったようなので処理する前に改行を削るようにしています。

[0deb06bfa4] Sutou Kouhei 2020-11-22 21:03:49 UTC

NEWS に標準添付ライブラリ csv の 3.1.9 への更新を追記しています。

[cfd8c7e6ca] Takashi Kokubun 2020-11-24 07:47:58 UTC

mjit.c の mjit_cont_new() で struct mjit_cont 構造体のメモリ確保に ZALLOC() を使っていたのを calloc(3) を直接呼ぶようにしています。ZALLOC() はメモリ不足の時に GC を起動するのでそれがまずかったみたいです。

[237cb94cf5] Takashi Kokubun 2020-11-24 08:02:48 UTC

cfd8c7e6ca9f923cee3a062b548d0824fc67e9a5 の追加修正。 ZALLOC() を calloc(3) に変えたため NULL が返る可能性があるので、チェックして rb_memerror() を呼ぶようにしています。例外発生は OK なのか。

ruby-trunk-changes 2020-11-23

今日は irb の更新や MJIT 関連のリファクタリングなどがありました。

[5218f17737] Nobuhiro IMAI 2020-09-22 00:06:43 UTC

irb の RubyLex での文法解釈時に 1行メソッド定義のインデント解釈を修正しています。

[afb8aba4af] Benoit Daloze 2020-11-05 17:08:04 UTC

irb でコード片がコンパイル可能かチェックするのに RubyVM::InstructionSequence.compile を使っていたのを可搬性のために eval と BEGIN ブロックを使うように変更しています。 https://github.com/ruby/irb/issues/133

[2d112c346a] aycabta 2020-11-10 15:05:33 UTC

irb で評価結果を表示するために inspect の結果を String#gsub! で置換してたのを gsub で破壊的変更をしないようにしています。

[d403591b34] Lars Kanis 2020-11-22 13:23:40 UTC

Encoding に IBM720 とその alias として CP720 というのを追加しています。 https://github.com/ruby/ruby/pull/3803

[82e836dc7d] Nobuyoshi Nakada 2020-11-22 13:51:00 UTC

d403591b34e204a5937241025c62c877e579fbaf で追記した rubyspec の Encoding のテストの分岐で使う文字列を \u{xxxx} の記法で書いていたのを \xXX の hex 記法で記述するように修正しています。

[175952bf07] Nobuyoshi Nakada 2020-11-22 14:08:38 UTC

d403591b34e204a5937241025c62c877e579fbaf の IBM720/CP720 の Encoding 追加について NEWS に追記しています。 [ruby-core:95196] [Feature #16233]

[fa1250a506] Takashi Kokubun 2020-11-22 15:10:44 UTC

MJIT で全てのメソッドの関数を 1つの .so に纏めるための C ソースコードのファイルを一時ディレクトリに残しておくようにしていたのを compile 後に毎回削除するようにしているようです。 https://github.com/ruby/ruby/pull/3802

[d83aa3c2f5] git 2020-11-22 15:11:08 UTC

version.h の日付更新

[afd765f2ee] Nobuyoshi Nakada 2020-11-23 00:16:16 UTC

ruby プロセスの起動時に実行される process_options() で UTF-8 の Encoding の初期化を最初に行なうようにしています。

[55866565c2] Takashi Kokubun 2020-11-23 04:09:42 UTC

internal/mjit.h の内容を mjit.h にマージして common.mk の依存関係から internal/mjit.h を消しています。

[8646f90263] Takashi Kokubun 2020-11-23 04:23:49 UTC

55866565c24765a1722e2c415a6776f3f77e89d0 の続きで不要になった internal/mjit.h をファイルまるごと削除しています。

[01f38693aa] Takashi Kokubun 2020-11-23 04:28:08 UTC

55866565c24765a1722e2c415a6776f3f77e89d08646f902633dd7bfc3e7de453af223ef4ad51729 のさらに続きで、internal/mjit.h を #include してるのが残ってたのでそれも削除しています。

[0a2b987696] Takashi Kokubun 2020-11-23 04:54:32 UTC

mjit.c で ruby/internal/config.h を #include するのを MJIT のサポートつきでビルドされて USE_MJIT が真のときだけになるようにしています。また mjit.h でも vm_core.h を MJIT サポートありの時だけ #include するようにしています。

[2700df3c9d] Takashi Kokubun 2020-11-23 05:02:01 UTC

0a2b9876968dcfd7015dff09d5e44dcbf5668244 の再修正。 mjit.c で #include "ruby/internal/config.h" を USE_MJIT のチェックの中に入れてたのは revert しています。ここで USE_MJIT が定義されてるのでやっぱり必要だったとのこと。他にも #include してるところで同じコメントを追記してうっかり移動しないようにしています。

[1fea0367d2] Takashi Kokubun 2020-11-23 06:09:41 UTC

VM 用のコード生成のテンプレート tool/ruby_vm/views/_mjit_compile_send.erb で if 文の条件に false を混ぜて常に通らないようにしているブランチのところを cfunc_debug という変数経由で false を評価させるようにしてさらにコメントでデバッグ時に true にしてデバッグ出力を有効にするための分岐だというのを説明しています。

[53e352fd71] Takashi Kokubun 2020-11-23 08:06:37 UTC

tool/downloader.rb のダウンロードのリトライ回数を 9 から 10 に増やしています。9 では足りなかったからということですが 1つ増やすだけでいいのかな、と思いましたがここで使っている with_retry というメソッドではリトライを繰り返すたびに interval を二乗で増やしてるので、1つ増やすとインターバルがかなりが延びるのでということですかね。

[2939c57ca7] Nobuyoshi Nakada 2020-11-23 08:51:52 UTC

configure でコンパイラオプションの -D_FORTIFY_SOURCE=2 を使えるかチェックする時のソースコードに #include <stdio.h> を入れてもうちょっと詳しくちゃんと動くかみるようにしているようです。コミットログによると cygwin 上の gcc でうまく機能しないことがあるみたいです。

[abb672e14f] Nobuyoshi Nakada 2020-11-23 09:31:51 UTC

fa1250a506e9b6a1bcbf664f6b7b9c06e045d9b9 の MJIT で生成した C ソースコードを毎回消すようにした変更で生成するソースコードに埋め込むコメントを生成するところでフォーマット文字列に渡す値を一旦変数に代入するようにして、label やファイル名の部分が NULL だった時の対応を追加しています。

ruby-trunk-changes 2020-11-22

今日は tool/make-snapshot でパッケージを作る時にソースが同じなら同じバイナリが作れるようにする修正や rubyspec の C API テスト用拡張ライブラリのビルド方法の修正などがありました。

[ece917bab3] Nobuyoshi Nakada 2020-11-21 14:15:26 UTC

defs/gmake.mk に rubyspec の C API のテスト用の拡張ライブラリをビルドするためのターゲット rubyspec-capiext というのを追加しています。

[43a9a974e2] Nobuyoshi Nakada 2020-11-21 14:21:52 UTC

configure の host_os, host_vendor, host_cpu などの名称を target_xxx の対応するものに揃えるようにしています。ruby のビルドとは関係ないですがクロスコンパイラを作る時はこれらは一致しないそうですが、ruby のビルドでは一致するので。チケットをみると Apple Silicon の macOS 上で target_cpu と host_cpu が一致してなかったのを修正するためみたいです。 [ruby-core:99097] [Bug #17021]

[5512de7603] git 2020-11-22 00:10:35 UTC

version.h の日付更新

[11cd9339a8] Nobuyoshi Nakada 2020-11-22 01:49:02 UTC

tool/make-snapshot でパッケージ作成前に ext/ 配下の autom4te.cache というファイルは削除しておくようにしています。パッケージの作成に再現性があるようにするためとのこと。

[821aa35c8b] Nobuyoshi Nakada 2020-11-22 01:59:32 UTC

tool/make-snapshot でダウンロードしてくるファイル類のコピーでひとつずつメッセージを出力してたのを $VERBOSE が真の時だけ出力するようにしています。

[0f51105ece] Nobuyoshi Nakada 2020-11-22 02:01:17 UTC

同じく tool/make-snapshot でパッケージの種類毎にアーカイブファイル作成にどのくらい時間がかかったかを出力するようにしています。

[e9c3de4764] Nobuyoshi Nakada 2020-11-22 02:30:02 UTC

同じく tool/make-snapshot で 7z を使って .zip 版のアーカイブファイルを作る時に -l オプションを追加して symbolic link を解決した結果を入れるようにしているようです。これも再現可能なパッケージ作成のため。

[eb3906c6b8] Nobuyoshi Nakada 2020-11-22 02:30:54 UTC

make dist 時に tool/make-snapshot の引数に DISTOPTS という変数を渡すことで環境変数でオプションを渡せるようにしています。

[e0156bd396] Takashi Kokubun 2020-11-22 03:24:59 UTC

rb_threadptr_root_fiber_setup() から rb_fiber_init_mjit_cont() の呼び出しを追加しています。その他コメントの typo 修正や TRUE のかわりに true を使うようにするリファクタリングなど。

[9eb34c2c9e] Takashi Kokubun 2020-11-22 06:37:07 UTC

MJIT のコンパイルのための C ソースファイル名、.so ファイル名などのためのバッファの扱いかたを固定長文字配列の変数を使って sprint_uniq_filename() という関数を使ってファイル名を作る方法に統一しています。また変数の宣言をブロック先頭から利用する箇所の直前に遅延して書くスタイルに変更しています。

[7ade7a8603] Takashi Kokubun 2020-11-22 07:44:48 UTC

27d5af59a359909e0d434459c30cfc0940f60a5bWindows 環境で MJIT の実行時にコンパイルするソースコードを 1ファイルにまとめるのを抑制するためのマクロ判定を整理した時に compile_prelude() のヘッダに出力するコードの制御のマクロを変更し忘れてたのがあったので追加変更しています。

[75d48a533d] Nobuyoshi Nakada 2020-11-22 10:09:58 UTC

rubyspec の C API テスト用の拡張ライブラリのコンパイル時に DLFLAGS のかわりに XDLDFLAGS を参照するようにしています。

[7c879cbb3f] Nobuyoshi Nakada 2020-11-22 10:10:58 UTC

rubyspec の C API テスト用の拡張ライブラリで未仕様の変数の警告除去のための preprocessor 分岐追加。

ruby-trunk-changes 2020-11-21

今日は Module#include で別の Module が prepend されてる Module の時の継承ツリー内の挿入順序の変更や String のメソッド群を継承した子クラスのインスタンスについて呼んでも String のインスタンスを返すようにする変更などがありました。

[08686e71d5] Jeremy Evans 2019-08-08 16:55:33 UTC

Module#include で Module を継承ツリー内に差し込む位置がその Module に prepend されている Module が既に対象の Class/Moduleに prepend されてると対象の Class/Module の前に入ってしまっていたのを修正しています。なるほどなぁ。かなり長いこと置いておかれたチケットなので 3.0 で変更してみようということかな。 [ruby-core:52208] [Bug #7844]

[18599b5749] git 2020-11-20 23:27:10 UTC

version.h の日付更新

[4f5d14eb8c] Nobuhiro IMAI 2020-11-20 23:34:38 UTC

拡張ライブラリ ripper の Ripper.tokenize と Ripper.lex の rdoc 用コメントで SyntaxError になった時に残りのトークンが無視されると記述されていたのを 1800f3fa5c29515113ecdcc5695e8a96f462b74c で挙動が変化したのでそれに追随して変更しています。 [ruby-core:100470] [Feature #17276]

[58325daae3] Jeremy Evans 2020-10-24 18:52:30 UTC

String のメソッドで String を継承した子クラスのインスタンスから呼ばれた時に結果をその子クラスではなく String のインスタンスとして返すように変更しています。ちょっと前に 2a294d499bf03211d02695f613f784a05943ea35 で Array クラスのメソッドででも同じような変更がありましたのでそれと類似ですね。 [ruby-core:68084] [Bug #10845]

[4988758e3a] Jeremy Evans 2020-11-21 00:42:38 UTC

58325daae3beefda13ed100782cd19a89cc68771 の String のクラスで子クラスから呼ばれても String を返すようにする変更について NEWS に追記しています。 [ruby-core:68084] [Bug #10845]

[0960f56a1d] Takashi Kokubun 2020-11-21 06:18:37 UTC

Ractor の導入により inline cache のアクセスが排他されるようになったので MJIT の worker に inline cache をコピーするための仕組みが不要になったそうで削除しています。 https://github.com/ruby/ruby/pull/3799

[3f8c60cf09] Takashi Kokubun 2020-11-21 06:22:28 UTC

58325daae3beefda13ed100782cd19a89cc68771 の変更で str_new_empty() が未使用になっているそうなので削除しています。

[ed8e552d4d] Takashi Kokubun 2020-11-21 06:41:55 UTC

MIT の C ソースコードをまとめて 1つの共有ライブラリにコンパイルする処理の関数 compact_all_jit_code() で compile_compact_jit_code() の呼び出しを CRITICAL_SECTION_START()/CRITICAL_SECTION_FINISH() で排他してるところに入れてたのを外に出しています。 in_compact という static 変数をセットする時だけ排他処理すれば充分みたいだったので。

[d645f18f0f] Jeremy Evans 2020-11-21 07:36:46 UTC

4988758e3a9a2e70ce1b605a88c32010ebe50208 の String 子クラスでも String のインスタンスを返すようにしたメソッドの NEWS への追記で抜けてたメソッド名の追加など。

[27d5af59a3] Takashi Kokubun 2020-11-21 07:31:23 UTC

MJIT の複数のメソッドのコードをまとめて 1つの .so にコンパイルする処理は MinGW など Windows 環境では無効にするようにしていますが、そのための切り替えのマクロが _MCS_VER と _WIN32 と混在していたので USE_JIT_COMPACTION というマクロを導入してこれを使うようにしています。このマクロ自体は _WIN32 を参照して定義するようにしています。また USE_HEADER_TRANSFORMATION というマクロがこれで不要になるので削除しています。

[8750d001c2] Takashi Kokubun 2020-11-21 07:48:39 UTC

27d5af59a359909e0d434459c30cfc0940f60a5b の変更で USE_JIT_COMPACTION を #ifdef でチェックしてたのを常に 0 か 1 に定義されてるので #if でチェックするよう修正しています。

[a6db9e8d7b] Takashi Kokubun 2020-11-21 08:29:51 UTC

mjit_worker.c の convert_unit_to_func() で未使用になってた .o ファイル名の生成を削除しています。