ruby-trunk-changes 2023-05-12

今日は主にビルド時の bison の依存をなくすため独自のパーサジェネレーター Lrama を利用するようにする変更などがありました。

[b742fb029d] Janosch Müller 2023-04-13 18:43:06 UTC

tool/enc-unicode.rb のコメントで記述されている必要なファイル群や実行方法などのドキュメントを最新の状態に更新しています。

[223a79e683] "NARUSE, Yui" 2023-05-12 06:40:10 UTC

GitHub Actions の Slack 通知のアクションを必要な secret がセットされてない時に実行しないように if: の条件を追加しています。fork したリポジトリでエラーにならないようにするためかな?

[27a21ad201] 卜部昌平 2023-05-12 06:10:28 UTC

GitHub Actions のいろんなコンパイラ/コンパイルオプションを試す workflow から古い GCC や Clang のバージョンを削っています。 [ruby-core:111899] [Bug #19353]

[d314fe42f9] "NARUSE, Yui" 2023-05-12 08:15:13 UTC

223a79e6830ca9c3619258ac00eebffb7754a0a1GitHub Actions の Slack 通知を実施する条件の追加を revert しています。

[a1b01e7701] Yuichiro Kaneko 2023-05-12 09:25:10 UTC

parse.y をビルドするのに bison ではなくて Lrama という独自のパーサジェネレーターを利用するようにしています。 Lrama ってなにかと思ったら(おそらく)このために独自に開発した pure ruby のパーサジェネレーターみたいですね。すごい!! https://github.com/yui-knk/lrama
lrama は tool/lrama/ 配下に同梱させているようです。 [ruby-core:113450] [Feature #19637]

[e3385f8783] Nobuyoshi Nakada 2023-05-12 01:48:35 UTC

rb_sys_fail()、rb_sys_fail_str()、rb_sys_fail_path() などの SystemCallError 例外(Errno::EXXX 系の例外)を発生させる C API を関数から関数マクロとして定義して、errno 変数をリセットさせないようにしています。 GC 発生時に意図せず errno がクリアされて本来の例外が作れなかったりする場合があったようです。 [ruby-core:113449] [Bug #19635]

[30d7205671] Nobuyoshi Nakada 2023-05-12 01:49:25 UTC

e3385f87831f036eaba96558cb4d83c8d5c43901 の続きで rb_sys_fail_str() と rb_sprintf() を組み合わせた rb_sys_fail_sprintf() というマクロも追加して利用するようにリファクタリングしています。

[c803e92d66] Nobuyoshi Nakada 2023-05-12 01:57:42 UTC

dir.c の nogvl_dir_empty_p() という C API で errno を上書きしてエラー時に戻り値に Qundef を返していたところを errno を Integer にしたものを返すようにしています。