ruby-trunk-changes 2020-05-01

今日は主に MJIT の JIT コンパイル を単一ソースコードにまとめて行なうようにする最適化(?) や標準添付ライブラリ matrix の修正、バージョン更新などがありました。

[4a8acf4625] Nobuyoshi Nakada 2020-04-30 13:54:42 UTC

irb のコマンドのテストで Encoding.default_external と Encoding.default_internal をバックアップしておいて復旧させるようにしています。

[5a9d2da76e] Jeremy Evans 2020-04-30 16:14:04 UTC

rb_require_safe() という deprecated になっていた C API を削除しています。

[9014c900b6] git 2020-04-30 17:32:56 UTC

version.h の日付更新

[520ac5da22] Nobuyoshi Nakada 2020-05-01 01:58:27 UTC

拡張ライブラリ pty の extconf.rb で have_library で libopepty のチェックが重複して行なわれる場合があったので結果をキャッシュするようにしています。

[e8a78d7df8] Takashi Kokubun 2020-05-01 04:37:55 UTC

MJIT で JIT コンパイルしたオブジェクトファイル群から必要なものだけまとめて共有ライブラリを作りなおす compact_all_jit_code() で排他する critical section を狭めてかわりに is_compact というフラグを使って処理中の unload_units() の呼び出しを抑制するようにしています。停止時間を減らすためとのこと。

[96837dc9e0] Takashi Kokubun 2020-05-01 05:21:45 UTC

MJIT の JIT されたコードの compaction 対応が mswin 版ではまだサポートされていないので対応するテストに警告をチェックする assertion を追加しています。

[f5ddbba9a2] Takashi Kokubun 2020-05-01 05:58:07 UTC

MJIT で JIT コンパイル時に生成する関数名に通し番号をつけてユニークな名前になるようにしています。現状はファイルが分かれているので問題ないけど C のソースコードを 1ファイルにまとめる時に衝突しないようにするためとのこと。

[c925cc01c5] zverok 2019-10-26 09:52:08 UTC

標準添付ライブラリ matrix の rdoc 用コメントの call-seq の追加やサンプルコードの結果表示の整形など。

[7d360efe92] Marc-Andre Lafortune 2020-04-30 21:49:06 UTC

標準添付ライブラリ matrix の Matrix#unitary? のループが間違っていたのを修正。 https://github.com/ruby/matrix/pull/14

[3cb038cc7a] Marc-Andre Lafortune 2020-04-30 22:00:47 UTC

標準添付ライブラリ matrix の Matrix#orthogonal? も unitary? と同様の間違いがあったので修正しています。

[07fd6dc49b] Marc-Andre Lafortune 2020-04-30 21:04:46 UTC

標準添付ライブラリ matrix の Matrix#* で Array#inject のかわりに Integer#times によるループとローカル変数への足し込みをする実装に変更しています。最適化とあるけどこれ差があるのかな。

[9b5675b325] Marc-Andre Lafortune 2020-04-30 22:04:30 UTC

標準添付ライブラリ matrxi に Matrix#adjoint というメソッドを追加しています。 conjugate + transpose のショートカットになっています。

[6eed4d1b74] Marc-Andre Lafortune 2020-05-01 07:22:18 UTC

標準添付ライブラリ matrix のバージョンを 0.3.0 に更新しています。

[5c8bfad078] Takashi Kokubun 2020-05-01 07:40:21 UTC

f5ddbba9a233c2d32118507158c5ef451167cfe0JIT コンパイルするために生成する C ソースの関数名につける通し番号を INIT_COMPILE_STATUS() マクロで構造体 struct compile_status にセットするのが漏れていたのを修正しています。

[76507bfc3d] Takashi Kokubun 2020-05-01 07:45:17 UTC

7d360efe92d2db11a4e51820ed2f52de36b3257f の Matrix#unitary? の修正で rubyspec の matrix のテストが失敗していたようなので対応しています。

[773afeb73d] Takashi Kokubun 2020-05-01 07:46:01 UTC

76507bfc3d06984b02e3124cd6557c81af2171cd で 2.8 以降用に分離した spec のタイトルを修正しています。

[818d6d3336] Takashi Kokubun 2020-05-01 06:58:50 UTC

MJIT でオブジェクトファイルを残しておいてリンクだけしなおすようにしていたのを C のソースコードファイルの状態で保持しておくようにして、それらを #include するソースコードを生成してそれをコンパイルすることでコンパイル結果がコンパクトになるようにしています。同名の関数の重複が解消されるから?

[72aa4dd183] Takashi Kokubun 2020-05-01 08:56:04 UTC

MJIT の mswin 環境向けの修正。

[90969edf9b] Takashi Kokubun 2020-05-01 09:12:42 UTC

MJIT で JIT コンパイル化がキャンセルされる時のパスで vm_exec() を呼び出す時の引数が誤っていたのを修正しています。たぶん余分に mjit_exec() が呼ばれ得る状態だったみたいです。

[e19f4b3ac0] Takashi Kokubun 2020-05-01 09:35:18 UTC

MJIT の生成する C のコードの clang での警告除去のため const 修飾子の削除や変数の型の修正。

[76d9be9ce9] Nobuyoshi Nakada 2020-05-01 05:12:12 UTC

rb_scan_args_set() マクロ定義の可変長引数の展開に ## をつけてたのを削っています。可変長部分の引数の数が 0 の場合に対応するためらしいです。 ## ってなくてもいいのか。

[e4d3d5ceab] Takashi Kokubun 2020-05-01 09:53:59 UTC

MJIT で生成する C コードの precompiled header を #include する部分を #ifndef MJIT_PCH で囲んでいたのを mswin 環境ではやめています。 VC だと警告が出てビルドエラーになってしまう模様。

[41bbdd7806] Takashi Kokubun 2020-05-01 10:06:49 UTC

818d6d33368a396d9cd3d1a34a84015a9e76c5c8 の MJIT で全 C コードを #include してまとめて1つのソースファイルにしてコンパイルする手法の導入で MinGWmacOS で MJIT のテストが失敗しているためこれを一時的に skip させるようにしています。

[dc3bc425bb] Nobuyoshi Nakada 2020-05-01 09:46:09 UTC

a52a459b16ce1b5cf32cb6393960ff59e35c48d0 で Thread#name= で Thread につける名前の文字数上限を環境毎に const の変数を定義するよう preprocessor 分岐していたのが -Wgnu-folding-constant で有効になるコンパイラ警告の対称になったそうで enum の定数として定義するようにしています。なんでこれ警告になるんだろ。

[28aa5f7fa6] Nobuyoshi Nakada 2020-05-01 10:34:24 UTC

76507bfc3d06984b02e3124cd6557c81af2171cd で rubyspec の Matrix#unitary? のテストの 2.8 以降対応をしたのを ruby のバージョンではなく Matrix のバージョンで分岐させるようにしています。