ruby-trunk-changes 2021-09-20

今日は MinGW の uCRT という新しめのランタイム(標準ライブラリ群みたいなもの?)対応や blocking fiber 対応の Scheduler のインターフェース追加などがありました。

[c0a892a7f0] Nobuyoshi Nakada 2021-09-19 13:39:18 UTC

178ee1e801acb33d13b3e8a630f6ca4926c68fbc の修正時に切り出した関数の名前 rb_module_check_initialiable() を rb_module_check_initializable() に修正しています。 [ruby-core:99311] [Bug #17048]

[4705ebd907] "xtkoba (Tee KOBAYASHI)" 2021-06-21 12:41:25 UTC

MinGW 版のビルドで uCRT というランタイム(?)を使う時のビルドエラーの修正として win32/win32.c の set_pioinfo_extra() の宣言に加えて _CrtSetReportMode() と _RTC_SetErrorFunc() というマクロの定義も追加しています。

[8bda512878] "xtkoba (Tee KOBAYASHI)" 2021-06-21 12:44:24 UTC

同じく MinGW での uCRT でのビルドのため configure 時の dll ファイル名の対応を増やしています。

[637d7288f3] "xtkoba (Tee KOBAYASHI)" 2021-06-21 12:45:00 UTC

configure の Fiber 用 coroutine の決定のところで MinGW での target_os 名を mingw32 固定にせず 32 の部分は可変にしています。

[e32fe3ce76] "xtkoba (Tee KOBAYASHI)" 2021-06-21 12:46:20 UTC

win32/win32.c の _WIN64 マクロのチェックで誤って #if を使っていたところを #ifdef に修正しています。これも uCRT 対応のためみたいです。

[70cefcfa0f] Lars Kanis 2021-06-22 06:52:49 UTC

環境変数 ENV に長い文字列を入れるテストで mswin 向けの条件分岐をさらに RbConfig::CONFIG['sitearch'] をチェックして使う文字列サイズを調整して Windows でもエラーにならないサイズでテストするようにしています。

[52cc54ce6f] Lars Kanis 2021-06-23 08:17:52 UTC

GitHub Actions の MinGW 向け workflow で uCRT を利用したビルドを追加しています。

[576b2e64cd] Lars Kanis 2021-06-25 08:07:18 UTC

MinGW のビルド時に RUBY_PLATFORM の名前に x64-mingw-ucrt のように ucrt という文字列が含まれる場合に対応しています。

[d2d549032c] git 2021-09-19 15:15:48 UTC

version.h の日付更新

[2e3d43e577] Nobuyoshi Nakada 2021-09-19 13:22:09 UTC

178ee1e801acb33d13b3e8a630f6ca4926c68fbc の Module の initialize_copy 時の不具合修正のために未初期化であるマークのために struct RClass::super を rb_cBasicObject で埋めるようにした時の変更で未初期化の Module を include しようとすると例外が発生するようになっていたので、ensure_includable() 内で例外発生させるかわりにその時点で super を 0 でクリアするように修正しています。 [ruby-core:105334] [Bug #18177]

[88ba5fe547] Samuel Williams 2021-07-14 01:42:18 UTC

rb_fiber_t::resuming_fiber を VALUE から struct rb_fiber_struct * とオブジェクト参照から構造体へのポインタを直接持つように変更し rb_fiber_raise() をリファクタリングして static 関数ではなく公開 C API として include/ruby/internal/intern/cont.h にも宣言を追加しています。

[649c87bd86] Samuel Williams 2021-09-20 02:19:52 UTC

88ba5fe547cae2370eccbe230754f59e1d5cbaf3 で公開 C API にした rb_fiber_raise() のテストを rubyspec に追加しています。

[4730a1e0ec] Samuel Williams 2021-09-20 08:50:57 UTC

649c87bd86d08bee8cd61584e6ece34e15e6814d で rubyspec に追加したテストの describe と ruby のバージョンでの guard の順序を入れかえています。

[cb8434563d] Samuel Williams 2021-07-18 22:14:51 UTC

blocking fiber 用の Scheduler のインターフェースとして scheduler_close メソッドというのがあれば close のかわりにこちらを呼ぶようにしています。

[b61064b821] Samuel Williams 2021-07-16 03:22:17 UTC

デバッグビルド時に blocking fiber 用の Scheduler クラスのメソッド呼び出しする時に GVL が確保されているかどうかなどのチェックをする VM_ASSERT() の呼び出しを追加しています。