ruby-trunk-changes 2021-02-28

今日は主に rubyspec の更新と MinGW での rubyspec をパスするようにする対応などがありました。

[36dde35e02] Benoit Daloze 2021-02-27 12:00:26 UTC

spec/ruby に upstream から最新版をマージしています。

[8305a48413] Benoit Daloze 2021-02-27 16:42:00 UTC

GitHub Actions の MinGW 環境での rubyspec の実行時の mspec のオプションに --timeout 60 を追加しています。どこかの spec で止まってしまってるらしいのでそれがどの spec か調べるためみたいです。

[5c9079759d] git 2021-02-27 16:42:49 UTC

version.h の日付更新

[80e2c45f55] Benoit Daloze 2021-02-28 11:24:42 UTC

8305a484133ef67c0c95122008026d9262993a37 で調査していた時間のかかる rubyspec のテストで C API の rb_thread_call_without_gvl() が時間がかかってたらしいので MinGW では実行除外するようにしています。

ruby-trunk-changes 2021-02-27

今日は拡張ライブラリ fiddle に Fiddle::Function#to_proc メソッドを新規追加する変更などがありました。

[0590e9b677] Aaron Patterson 2021-02-26 17:57:13 UTC

拡張ライブラリ fiddle の Fiddle::Function に to_proc メソッドを追加してブロック引数として Fiddle::Function を直接渡せるようにしています。

[3d8e373a58] git 2021-02-26 17:59:14 UTC

version.h の日付更新

[d45466dc5b] Aaron Patterson 2021-02-26 18:06:30 UTC

0590e9b677e8c0b7a2364f660f06d9f5bd8fe87d の続きで拡張ライブラリ fiddle の Fiddle::Function#to_proc の lambda 内で self にアクセスしてるのをメソッド内のローカル変数に退避したものを使うようにしています。あー Object#instance_eval とか Module#define_method に渡すと self が変わっちゃいますからね。

[dbea0be13d] Jeremy Evans 2021-02-26 21:27:25 UTC

標準添付ライブラリ irb の rdoc 用コメントに書かれているコマンドラインオプションに --context-mode、--echo/--noecho、--single-irb などのオプションを追加するなど最近の変更に追随させています。また --help で表示されるヘルプメッセージの --context-mode の引数を最新版に合わせて修正しています。

ruby-trunk-changes 2021-02-26

今日は昨日一旦入って revert されたオブジェクトの heap 領域を mmap(2) で確保するようにした変更のリトライや irb と reline のバージョン番号更新がありました。

[fda162c776] aycabta 2021-02-25 13:04:58 UTC

標準添付ライブラリ irb のバージョンを 1.3.4 に更新。

[1e13548953] Peter Zhu 2021-02-23 21:28:56 UTC

785f5eb8f0f994c755ac5f1e1479f6e2ec6d0ef3 のオブジェクトの heap 確保に mmap(2) を使うようにする変更のリトライ。 mmap(2) の第5引数 fd に 0 を渡してしまってたのを -1 に変更しているようです。 https://github.com/ruby/ruby/pull/4221 [ruby-core:102585] [Bug #17652]

[1c0e79e87b] Peter Zhu 2021-02-23 21:29:53 UTC

1e13548953659bd12c28625d45998322449f3be8 の続きで a80366c922c5ad3ce27870d92ffbec5ce292ec31 のリトライ。gc_set_auto_compact() で mmap(2) のない Windows 環境では GC.auto_compact = true は NotImplementedError 例外を発生させるようにしています。 https://github.com/ruby/ruby/pull/4221 [ruby-core:102585] [Bug #17652]

[04154b65e8] git 2021-02-25 19:02:09 UTC

version.h の日付更新

[f0743dd2a4] aycabta 2021-02-25 13:05:10 UTC

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

[cfc23903df] Aaron Patterson 2021-02-26 00:31:24 UTC

a9920e7782f225b97e173a88640fe9e116b9964f で追加した GC のテストを revert しています。重いからかな?

ruby-trunk-changes 2021-02-25

今日はオブジェクトの heap 確保に mmap(2) を使う変更がありましたが revert されたので、結果的にはヘッダからのなくなった関数の宣言の削除だけでした。

[785f5eb8f0] Peter Zhu 2021-02-23 21:28:56 UTC

オブジェクトの struct RVALUE の配列の heap を確保するのに mmap(2) を利用するという変更。メモリ確保に mmap() を使うというのはだいぶ昔にもアイデアだけだったかもしれないけどあった気がしますが、なんでだめなんだったっけ。これも後で revert されています。 https://github.com/ruby/ruby/pull/4221 [ruby-core:102585] [Bug #17652]

[a80366c922] Peter Zhu 2021-02-23 21:29:53 UTC

785f5eb8f0f994c755ac5f1e1479f6e2ec6d0ef3 の続きで gc_set_auto_compact() で mmap(2) のない Windows 環境では GC.auto_compact = true は NotImplementedError 例外を発生させるようにしています。 https://github.com/ruby/ruby/pull/4221 [ruby-core:102585] [Bug #17652]

[f3c8e477e1] git 2021-02-24 20:25:48 UTC

version.h の日付更新

[294c244ac8] 卜部昌平 2021-02-25 07:16:05 UTC

include/ruby/internal/intern/random.h から既に存在しなくなってた rb_random_int() の宣言を削除しています。

ruby-trunk-changes 2021-02-24

今日は WIndows 環境での排他処理関係の修正の続きなどがありました。

[7563d542d6] Nobuyoshi Nakada 2021-02-23 14:11:44 UTC

debug.c でリリース版でない時だけ有効なデバッグ出力のための setup_debug_log() で環境変数を得るために getenv() を呼んでいるのが WIndows 環境ではマクロで rb_w32_ugetenv() の呼び出しに置換されてるのですが、これが a12e950816d4db950d975e062f903a5e8c75f1b6 のあたりの変更で初期化前に呼ばれると問題があったので #undef でマクロを無効化して本来の getenv(3) を直接呼ぶように修正しています。

[a12e950816] Nobuyoshi Nakada 2021-02-23 18:12:19 UTC

19cc24b34b0490b7c2779eec521fe0089e05f183 で win32/win32.c に導入した排他処理をブロックっぽく書ける thread_exclusive() マクロをやめて EnterCriticalSection()/LeaveCriticalSection() を明示的に書くようにしています。また不要になった getenv の排他のための uenvarea_mutex を削除しています。

[75fbea91ac] git 2021-02-23 19:02:22 UTC

version.h の日付更新

[9d8c66fd6a] Nobuyoshi Nakada 2021-02-23 18:37:22 UTC

rb_fiber_terminate() の宣言に NORETURN() マクロを利用して関数から帰らないことをコンパイラに教えるようにしています。

[09f284c052] Kazuhiro NISHIYAMA 2021-02-24 11:01:44 UTC

gems/bundled_gems の minitest のバージョンを 5.14.4 に更新しています。

ruby-trunk-changes 2021-02-23

今日は win32/win32.c の排他処理の追加や Module#prepend で循環する継承関係になるエラー時の副作用をなくす修正などがありました。

[58e8220605] Alan Wu 2021-02-13 03:45:08 UTC

2d877327e12f499ac1a0d7096f4314cc92ef228e の続きで、Module#prepend で循環する継承関係になってないかのチェックを prepend のために T_ICLASS を差し込むための origin を生成する前に行うことで、エラー時に副作用がないようにしています。 [ruby-core:102283] [Bug #17590]

[7d4a3ac0c5] git 2021-02-22 22:58:05 UTC

version.h の日付更新

[09c74a1702] Lars Kanis 2021-02-22 15:35:47 UTC

089b7a84606925e885fe91050483a352735aa91e の再修正。doc/extension.rdoc に追記したサンプル内の変数名の typo 修正。

[0d76636117] Andrew Aladjev 2021-02-22 22:35:01 UTC

win32/win32.c の constat_delete()、vm_exit_handler()、socklist_insert()、socklist_lookup() などの Windows で socket を管理するためのリストの操作を排他処理するための Mutex を追加しています。 Ractor 対応のためかな。

[95251dc8a9] Takashi Kokubun 2021-02-23 07:38:44 UTC

edd25382687c840f10eec23d72fa08ebd3515fbf で pull request を master に向けさせるようにするために追加した GitHub Actions の workflow .github/workflows/check_branch.yml を削除しています。コミットログによると本来の意図とは違ってコミットログに [ci skip] が含まれているためにマージできない pull request ができてしまうとのことで、もう必要はなくなったので消すとのこと。

[b956efdc1e] Takashi Kokubun 2021-02-23 07:46:04 UTC

GitHub Actions の設定に明示的にコミットログに "[ci skip]" が含まれてたら処理しないという if が含まれてたのを削っています。GitHub Actions がデフォルトに "[ci skip]" などのキーワードに対応したので不要になったそうです。 https://github.blog/changelog/2021-02-08-github-actions-skip-pull-request-and-push-workflows-with-skip-ci/

[19cc24b34b] Nobuyoshi Nakada 2021-02-23 07:22:43 UTC

0d76636117c99921ac7c43293ba7962d22e72fbd の続きで win32/win32.c に追加した mutex を使って排他処理するあたりを thread_exclusive() というマクロ化して for 文にすることでブロックっぽく賭けるようにしています。

[da18d6f015] Nobuyoshi Nakada 2021-02-23 10:08:31 UTC

win32/win32.c の errmap の宣言に const 修飾子を追加。また get_wsa_extension_function() の引数 guid をポインタで渡してたのを値渡しするようにしています。

[41eb4fbf86] Nobuyoshi Nakada 2021-02-23 11:46:40 UTC

19cc24b34b0490b7c2779eec521fe0089e05f183 の続きで thread_exclusive() を使うリファクタリングの追加と constat_handle() の EnterCriticalSection()/LeaveCriticalSection() による排他処理を不要にするリファクタリングをしています。

[5a4742a0b4] Nobuyoshi Nakada 2021-02-23 11:51:02 UTC

19cc24b34b0490b7c2779eec521fe0089e05f183 および 41eb4fbf86e7ae9c9ff993e07a19fa44eb74be9b の続きで win32/win32.c にもうひとつ uenvarea_mutex という mutex を追加して w32_getenv() に排他処理を追加しています。

[819dd464de] Nobuyoshi Nakada 2021-02-23 12:23:46 UTC

19cc24b34b0490b7c2779eec521fe0089e05f183 および 41eb4fbf86e7ae9c9ff993e07a19fa44eb74be9b5a4742a0b4d57e95d6ed7e27c786a74e7cb55977 の続きで constat_handle() に thread_exclusive() マクロを使った排他処理追加をしています。 return のかわりに thread_exclusive() マクロが for 文になってるので continue でブロックを抜けるようにしてるのが hacky ですねえ。

ruby-trunk-changes 2021-02-22

今日は Fiber が例外で終了した時の不具合修正や reline の Windows のコンソールの挙動チェックのためのメソッドの不具合修正などがありました。

[3ee4fa9491] "nicholas a. evans" 2021-02-21 21:33:11 UTC

Fiber 内で例外が発生して実行が終了した時に TracePoint の :fiber_switch イベントが発火していなかったのを発火するように修正しています。また Fiber を例外で終了する時にいくつかの後始末がスキップされていたのも修正しています。 https://github.com/ruby/ruby/pull/4207

[431f531b17] git 2021-02-21 21:33:32 UTC

version.h の日付更新

[089b7a8460] Lars Kanis 2021-02-22 03:18:16 UTC

doc/extension.rdoc から Data クラス(rb_cData)を使うことを推奨する古い文を削除しています。またサンプルコードで alloc 関数を定義する例を追加しています。

[a7dda449e8] cremno 2021-02-21 08:35:04 UTC

標準添付ライブラリ reline の Reline::Windows.getconsolemode で Windows のコンソールの挙動を確かめる時に使う NUL 文字を含んだ文字列がシングルクオートの文字列リテラルで書かれてたので "\000" のエスケープシーケンスが解釈されてなかったのを修正しています。

[4e32a4ab81] Nobuyoshi Nakada 2021-02-22 03:01:41 UTC

win32/mkexports.rb の Exports クラスのサブクラスを Module#inherited フックを使って収集してたのを、Module#constants で定数リストを取得して検索するようにしています。

[67d2619463] Nobuyoshi Nakada 2021-02-21 04:12:03 UTC

win32/win32.c の open_dir_handle() という関数で get_final_path() に渡すバッファのサイズを FINAL_PATH_MAX という定数を元にするようにしています。これは PATH_MAX にさらに "\\?\" という prefix を追加したもののようです。