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 だった時の対応を追加しています。