ruby-trunk-changes 2021-02-09

今日は blocking Fiber のための Scheduler の C API を公開 API にする変更などがありました。

[4186cd6435] Nobuyoshi Nakada 2021-02-08 12:43:40 UTC

478716f49a19cdd86f629c6a0673c1ff53630c96 のうち PTY.open の rdoc の call-seq の変更を revert しています。実際にブロックパラメーターにかっこが必要なケースがあったようです。

[ced09d521c] Nobuyoshi Nakada 2021-02-08 14:45:51 UTC

tool/lib/vcs.rb の VCS::GIT#export_changelog の引数を全て省略可能にしたり、標準出力への出力への対応を追加したりしています。

[a0faad38ce] Nobuyoshi Nakada 2021-02-08 14:55:08 UTC

tool/lib/vcs.rb の VCS::GIT#export_changelog に base_url というキーワード引数を追加して利用する git のリポジトリを指定できるようにしています。fork から生成できるようにするためかな。

[dfff1df95c] Nobuyoshi Nakada 2021-02-08 14:56:19 UTC

tool/lib/vcs.rb の VCS.detect メソッドのキーワード引数を options にマージするようにしています。

[15e933f2c6] git 2021-02-08 15:07:27 UTC

version.h の日付更新

[0d89aedb73] Nobuyoshi Nakada 2021-02-08 15:39:58 UTC

eval.c の rb_vrescue2() で EC_EXEC_TAG() の戻り値を格納する変数の初期化を magic number 0 でしていたのを定数マクロ TAG_NONE を使うようにリファクタリングしています。

[265c002239] Nobuyoshi Nakada 2021-02-08 16:00:00 UTC

random.c の random_mt_free() でデフォルトの乱数生成器を default_rand() を呼んで作ってましたが、ここは比較がしたいだけでなかったら作らなくてもいいので、rb_ractor_local_storage_ptr() で直接 ractor local storage を参照するようにしています。

[e0c100ec96] Nobuyoshi Nakada 2021-02-08 23:41:06 UTC

vm_sync.h のインデント修正のみ。

[a6f5f3cccd] Nobuyoshi Nakada 2021-02-09 01:08:30 UTC

eval.c の rb_vrescue2() の変数 result の初期化位置を前のほうに移動しています。例外の処理中に例外発生した時に未初期化のまま大域脱出してしまうのでそれを避けるためのようです。

[97cf290063] Nobuyoshi Nakada 2021-02-08 15:42:12 UTC

eval.c の rb_vrescue2() の例外処理時の可変長引数の処理を va_copy() で va_list をコピーしてから参照するようにしています。

[fad7908a5d] "S.H" 2021-02-09 04:29:42 UTC

Float#negative? と Float#negative? の実装を ruby 実装にして inline 化可能にしています。 https://github.com/ruby/ruby/pull/4160 [ruby-core:102422] [Feature #17614]

[3c593f28ed] Andrew Aladjev 2021-02-09 05:48:03 UTC

configure の Fiber 用の coroutine 実装を選択する時のデフォルト(プラットームなどで決まらない時)の ucontext を getcontext()、swapcontext()、makecontext() などのシステムコールが使えるかどうかチェックして、使えなかったら copy に fallback するように判定を追加しています。

[5f69a7f604] Samuel Williams 2021-02-09 06:39:56 UTC

どういう意図なのかよくわかってないのですが blocking Fiber のための Scheduler を Thread に設定できるようにしたものの C API を拡張ライブラリに公開するようにしているようです。 https://github.com/ruby/ruby/pull/3945

[e7416b4c7e] Nobuyoshi Nakada 2021-02-09 08:11:14 UTC

5f69a7f60467fa58c2f998daffab43e118bff36c で追加した include/ruby/fiber/scheduler.h の関数定義で無引数の関数の宣言の引数に明示的に void をつけるようにしています。

[96441b91a6] Nobuyoshi Nakada 2021-02-09 08:15:29 UTC

include/ruby.h に HAVE_RUBY_FIBER_SCHEDULER_H マクロの定義を追加しています。

[df4f8aa248] Nobuyoshi Nakada 2021-02-09 08:38:52 UTC

拡張ライブラリ io/console の extconf.rb で HAVE_RUBY_FIBER_SCHEDULER_H マクロをチェックして -DHAVE_RB_IO_WAIT=1 をコンパイラオプションに追加するようにしています。新機能の対応かなと思いましたが 3.0 での regression の修正のためとのこと。

[5bfca88f76] Nobuyoshi Nakada 2021-02-09 08:39:00 UTC

拡張ライブラリ io/console の blocking Fiber の Scheduler 対応で定義してたマクロの名前の typo を修正しています。

[6bb103f012] Nobuyoshi Nakada 2021-02-09 08:49:28 UTC

拡張ライブラリ io/console の依存関係(depend ファイル)の再生成。