ruby-trunk-changes 2021-08-15

今日は LTO を有効にしてビルドした時の不具合修正や拡張ライブラリ ripper の不具合修正、pattern match のエラー時のメッセージの強化などがありました。

[d58620e0a1] Nobuyoshi Nakada 2021-08-14 01:13:08 UTC

inline 関数 Check_Type() の slowpath のラベルは unexpected_type と改名して、また fastpath のラベルは不要になるように条件分岐の書きかたを変更しています。

[edd27e120e] Nobuyoshi Nakada 2021-08-14 01:14:51 UTC

rb_check_type() 内で unexpected_type() を呼び出して例外を発生させるところにコメントを追加しています。

[58d82eacef] Nobuyoshi Nakada 2021-08-14 01:16:37 UTC

611da9faef76777e57718cf5b0286b965879479c の rb_unexpected_type() と同様に error.c での static 関数 unexpected_type() の宣言に再度 COLDFUNC() マクロを利用するようにしています。また異常時の条件分岐に RB_UNLIKELY() マクロを利用してコンパイラにめったにおきないはずの分岐であることを明示するようにしています。

[1bd021a789] Nobuyoshi Nakada 2021-08-14 01:17:38 UTC

error.c の型チェックのエラー時に埋め込むクラス名に内部的なものを "<>" でくくった名前で表示させるようにしています。

[97efd48fb1] Nobuyoshi Nakada 2021-08-14 05:07:40 UTC

rb_check_type() で T_DATA 型の RTYPEDDATA_P() によるチェックを rbimpl_rtypeddata_p() を直接呼ぶようにしています。RUBY_DEBUG が真でビルドされた時に再帰呼び出しになる可能性があったみたいです。

[2e49e4330d] Nobuyoshi Nakada 2021-08-12 03:33:37 UTC

defs/gmake.mk で LDFLAGS 変数から -g を削ったものを EXE_LDFLAGS という変数にセットしておいて最終的なリンク時にこちらを使うようにしています。 macOS で大量の警告が出るのを抑制するためとのこと。

[29dd70492e] Nobuyoshi Nakada 2021-08-14 14:10:55 UTC

GitHub Actions のいろんなコンパイラを試す .github/workflows/compilers.yml に gcc に -flto=auto -ffat-lto-objects、clang-14 に -flto=auto を渡してビルドするケースを追加しています。LTO というのは Link Time Optimization つまりリンク時最適化のことみたいですね。

[72317b333b] "xtkoba+ruby@gmail.com" 2021-08-13 13:45:53 UTC

addr2line.c で DWARF フォーマットの DW_FORM_ref_addr, DW_FORM_ref_sig8, DW_FORM_ref_sup4, DW_FORM_ref_sup8 などの form をみたら無視するようにしています。 [ruby-core:99351] [Bug #17052]

[244fc65d1c] Nobuyoshi Nakada 2021-08-14 15:20:38 UTC

29dd70492eb3e3f0018c01fb3fa4ce77029a208f で追加した .github/workflows/compilers.yml の LTO を有効にしたビルドで make check 実行するようにしていたのを削っています。

[717f0c56fc] git 2021-08-14 15:27:10 UTC

version.h の日付更新

[147bdcc436] Nobuyoshi Nakada 2021-08-14 16:01:24 UTC

win32/configure.bat の echo コマンドの後に空白を追加しているだけなのですが、チケットをみると Windows でのビルドが失敗してたみたいなので空白に意味があるみたいですね。 [ruby-core:102274] [Bug #17588]

[4568ba0711] Kazuki Tsujimoto 2021-08-15 00:38:24 UTC

1行 pattern match でマッチしなかった時の例外メッセージにより詳しい情報を表示するようにしています。typeprof のテストがこけるみたいですけどとりあえず GitHub Actions では typeprof のテストのエラーは無視するようにしています。

[2aa6826e81] Nobuyoshi Nakada 2021-08-14 16:33:31 UTC

拡張ライブラリ ripper で Ripper#yydebug を true に設定していた時に NotImplementedError が発生することがある不具合を修正しています。 [ruby-core:104916] [Bug #18075]