ruby-trunk-changes 2020-11-13

今日は拡張ライブラリ date の timezone のデータベース更新や標準添付ライブラリ webrick でリクエストボディのない POST/PUT リクエストを許容する変更などがありました。

[ffc8cf12e2] Hiroshi SHIBATA 2020-11-12 12:05:33 UTC

tool/sync_default_gems.rb の rdoc の同期時の削除ファイルリストの typo 修正。

[e8f8e63f0a] Hiroshi SHIBATA 2020-11-12 12:05:59 UTC

標準添付ライブラリ rdoc のコメントの修正。

[0fdcb947e8] "NARUSE, Yui" 2020-09-25 12:24:43 UTC

拡張ライブラリ date の DateTime の rdoc 用コメントに DateTime は deprecated なので Time を使いましょうと追記しています。

[d65f1140b9] Nobuyoshi Nakada 2020-09-29 14:38:07 UTC

拡張ライブラリ date の make update-zonetab ターゲットで実行するスクリプトのファイル名を修正しています。

[81dece54d6] Nobuyoshi Nakada 2020-09-29 14:52:51 UTC

d65f1140b94e4817fba4a37efd512c0653a0baf1 の 拡張ライブラリ date の make update-zonetab で起動されるスクリプト ext/date/update-abbr で参照する URL を引数で変更できるようにしています。

[33574d57f1] Nobuyoshi Nakada 2020-09-29 14:52:58 UTC

拡張ライブラリ date の生成された timezone 情報の ext/date/zonetab.list ファイルを更新しています。

[028d52bb94] Akira Matsuda 2020-11-04 12:30:25 UTC

拡張ライブラリ date の Date::Infinity というクラスに Comparable を include していたのを削っています。

[6325866421] Yusuke Endoh 2020-11-12 14:36:47 UTC

rubyspec の File.utime のテストで XFS を使っている時に失敗するらしいので許容する値を増やしています。

[957efa95cc] Jeremy Evans 2020-07-15 15:38:44 UTC

標準添付ライブラリ webrickWEBrick::HTTPRequest で POST や PUT のリクエストでリクエストボディが空のものがエラーにならないように対応しています。読み込んでる socket が EOF になってたら Content-Type がなくてもエラーにならないようにしているようです。

[37e5b367c1] hisanori 2020-09-26 12:04:19 UTC

標準添付ライブラリ webrickMIME タイプの拡張子の対応に .mjs というのを追加して "application/javascript" として扱うようにしています。

[c046cc1d1c] git 2020-11-13 02:38:58 UTC

version.h の日付更新

[e70a1d9b7f] Hiroshi SHIBATA 2020-11-13 03:02:27 UTC

f64bea6d66335daf799c2223b7f4bc0d099424cb で 標準添付ライブラリ webrickWEBrick::GenericServer の :ShutdownPipe オプションが設定されてなかったのを修正したのを revert しています。対応するテストが成功していないとのこと。

[69c5474e10] Hiroshi SHIBATA 2020-11-13 04:19:38 UTC

957efa95cc12c608705a5663256226f022ea6c7f の 標準添付ライブラリ webrick で POST/PUT のリクエストのリクエストボディ 0 を許容する変更で壊れたテストを対応しています。

ruby-trunk-changes 2020-11-12

今日は主に Array の rdoc 用コメントの修正がありました。

[a02ba60466] Yusuke Endoh 2020-11-12 07:56:15 UTC

54fb8fb62a30c7b60ab6443a62821f6f8bc479c4 の Array の rdoc 用コメントのうち Array#shuffle! が receiver を破壊的に変更することを明示したサンプルを消してたのを復活させています。

[a237617a5b] Yusuke Endoh 2020-11-12 07:58:10 UTC

Array#sample の rdoc 用コメントの説明を修正しています。

[98de98fb70] git 2020-11-12 08:00:25 UTC

version.h の日付更新

[0d52dce3a3] Nobuyoshi Nakada 2020-11-12 10:27:20 UTC

cont.c のインデント修正と thread_sync.c の行末の空白除去。

ruby-trunk-changes 2020-11-11

今日は Win32API の削除や Ractor#close メソッドの削除、timer thread からの割り込みの処理の変更などがありました。

[5a19b492da] Hiroshi SHIBATA 2020-11-10 12:00:49 UTC

標準添付ライブラリ racc のヘッダコメントのライセンスの記述を Ruby 本体のライセンスに揃えています。 https://github.com/ruby/ruby/pull/134

[4a03df4507] Hiroshi SHIBATA 2020-11-10 12:12:35 UTC

標準添付ライブラリ racc のテストで JRuby で失敗するテストを skip するようにしています。

[0b19f33480] Hiroshi SHIBATA 2020-11-10 12:26:45 UTC

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

[6ddde16234] git 2020-11-10 18:24:28 UTC

version.h の日付更新

[ff67aac193] Hiroshi SHIBATA 2020-11-10 04:56:13 UTC

拡張ライブラリ win32 内の Win32API.rb を削除しています。確かこれ日本科学未来館のインターネット物理モデルの制御に使われてたんですよねぇ。

[5081bd9675] Hiroshi SHIBATA 2020-11-10 06:39:12 UTC

拡張ライブラリ win32 内の ext/win32/lib/win32/resolv9x.rb というファイルを削除しています。存在を知らなかったけど古い Windows での名前解決のための wrapper みたいですね。

[dd07354f27] Hiroshi SHIBATA 2020-11-10 07:59:59 UTC

拡張ライブラリ win32 の Win32::Importer が既に fiddle の Fiddle::Importer の別名になっているのを削除して ext/win32/lib/win32/resolv9x.rb 内で Win32::Importer を使っていたところも直接 Fiddle::Importer を参照するように変更しています。

[1e8abe5d03] Koichi Sasada 2020-11-11 05:37:31 UTC

rb_vm_t::clock というインタプリタ全体の clock を格納するメンバーを追加して、timer thread の定期的な割り込みでインクリメントしていって、各 Thread は rb_execute_context_t::checked_clock にこの値をコピーしてこれが変化したのを検出することで time slice のための割り込み検知とするようにしています。timer thread の定期的な処理で全 Ractor への割り込みをするのが排他処理も必要で重いので変更したということでしょうか。Windows では逆にオーバーヘッドが増えるそうです。そういえば timer thread と Ractor の関係ってどうなってるんだろう。この記述からすると timer thread は VM に 1つかな。

[db31ace934] Koichi Sasada 2020-11-10 09:21:11 UTC

Ractor の(main Thread の)終了時にまだ実行中の子 Thread があったらそれらを終了させるようにしています。 https://github.com/ruby/ruby/pull/3754

[deed21bb08] Koichi Sasada 2020-11-10 16:55:28 UTC

Ractor のブロックの終端まで到達した時に既に Ractor#close_outgoing でオブジェクトの出力側を閉じている時に Ractor.yield が例外を発生して Ractor の終了処理が阻害されてたので、close 済みだったら yield の処理をしないようにしています。 [ruby-core:100744] [Bug #17310]

[fa3670e6e4] Koichi Sasada 2020-11-11 07:15:04 UTC

Ractor#close は適切なユースケースがないということで削除しています。 https://github.com/ruby/ruby/pull/3759

ruby-trunk-changes 2020-11-10

今日はインスタンス変数の inline cache まわりの実装のパフォーマンスのための変更や標準添付ライブラリ内で Win32API の利用を避けるようにする変更などがありました。

[eb229994e5] Aaron Patterson 2020-11-06 18:11:20 UTC

T_OBJECT 型オブジェクトなどのインスタンス変数の管理のためのテーブルの拡張を obj_ivar_set() でのみ行なってたのを vm_setivar() でも行うようにしています。ベンチマークも追加されているので、不要なメモリ領域確保を遅延することである種のケースでのパフォーマンスのためみたいですけどどういう場合だろう。

[5582c5a232] Aaron Patterson 2020-11-06 19:33:43 UTC

eb229994e5b53e201e776ea103970751d3b1725b の再修正。所属するクラスのほうの RCLASS_IV_INDEX_TBL() をみるのをやめてオブジェクト自身の iv_index_tbl をみるようにしていますが、あれインスタンス変数のインデックスってクラスごとで共有されるようになってるんじゃなかったっけ……。いつのまにか実装変わってた? 変更部分の周辺をみると inline cache も関係しているようなのでそのあたりの最適化に関係しているのかも。思い出せない。

[f649946fb9] Aaron Patterson 2020-11-06 22:43:36 UTC

5582c5a2327d824e872f7f5bd22330094f189d66 の変更で未使用になった debug counters の ivar_set_ic_miss_oorange というのを削除しています。

[cbe869b370] git 2020-11-09 17:44:39 UTC

version.h の日付更新

[6817f4c6b1] Alan Wu 2020-11-09 15:27:31 UTC

vm.c の rb_vm_add_root_module() から未使用の引数 id を削除しています。

[6778ba48fd] Alan Wu 2020-11-07 00:01:49 UTC

Class/Module などの定義時に GC されないように登録するのに rb_gc_register_mark_object() と rb_vm_add_root_module() で重複してたので rb_gc_register_mark_object() は削っています。

[f259906eab] Aaron Patterson 2020-11-09 19:20:29 UTC

vm_setivar() でキャッシュにヒットしなかった時にもオブジェクトの iv_indexl_tbl に指定された名前のエントリがあった時のためのショートカット処理を追加しています。

[4219cb7adb] Aaron Patterson 2020-11-09 19:59:18 UTC

debug counters に ivar_set_ic_miss_iv_hit という項目を追加して f259906eabac6038bb7c79e426c17ae850c8e017 で追加した inline cache にヒットしなかった時にカウントアップするようにしています。

[d7581370fd] Aaron Patterson 2020-11-09 20:02:20 UTC

共通の親クラスをもつクラスのインスタンス生成のベンチマークを追加。直近のインスタンス変数の管理の変更に関連するものみたいです。

[2fed5f0ad8] Yusuke Endoh 2020-11-09 10:49:04 UTC

標準添付ライブラリ racc の生成物の遷移表テーブルなどを実行するたびに変化しないように Array#sort! のかわりに Array#sort_by! と with_index を使って安定ソートするようにしています。

[b557c5768c] Koichi Sasada 2020-11-10 01:44:45 UTC

iv_index_tbl_newsize() の不要な変数を削除するリファクタリング

[8b3653b484] S-H-GAMELINKS 2020-11-05 16:50:24 UTC

Array#sum や Enumerable#sum の実装のコメントで Kahan-Babuska balancing compensated summation というアルゴリズムの参考 URL の schema を https に修正しています。

[b958e2add8] Nobuyoshi Nakada 2020-10-23 05:38:24 UTC

require "mathn" した時の数値系の処理の変更をする処理を削っています。実際にはずいぶん前からデフォルトでは無効でビルドされるようになってたと思いますが preprocessor の分岐ももう消しています。

[17e7a819f7] Hiroshi SHIBATA 2020-11-10 03:14:14 UTC

拡張ライブラリ json で Complex や Rational のために未定義だと require "complex" や require "rational" するコードが残ってたので削っています。そういえば昔は拡張ライブラリでしたね。

[9728cb730f] NAKAMURA Usaku 2020-11-10 05:45:15 UTC

拡張ライブラリ win32 の ext/win32/lib/win32/sspi.rb というライブラリで Win32API のかわりに fiddle の win32/importer を利用するように書き換えています。 Win32API は deprecated になっててかわりに fiddle を使えと警告している状態なので標準添付ライブラリ内でも利用を避けるようにしています。

ruby-trunk-changes 2020-11-09

今日は昨日の標準添付ライブラリ resolv の変更の再修正などがありました。

[fcf8b9ef72] Yusuke Endoh 2020-11-08 14:32:44 UTC

標準添付ライブラリ resolv のテストで未使用のローカル変数の警告抑制のため "_" を変数名の先頭につけています。

[b8eb08e096] Benoit Daloze 2020-11-08 15:49:03 UTC

blocking fiber のテストで未使用の変数の警告抑制のため不要な変数への代入を削除しています。

[66107cb162] git 2020-11-08 15:50:04 UTC

version.h の日付更新

[ba1472f43a] Hiroshi SHIBATA 2020-11-09 05:18:38 UTC

標準添付ライブラリ racc の lib/racc/parserfilegenerator.rb に現在は組み込みになったので不要になっている require "enumerator" が残っていたので削除しています。

[d14397bcc4] Kazuhiro NISHIYAMA 2020-11-09 07:16:30 UTC

2f12af42f7f26d570219b87a89294532a86a8ae2 の標準添付ライブラリ resolv の IPv6 link local address 対応でアドレスの先頭が大文字の "FE80" でも受付けるように正規表現を修正しています。

ruby-trunk-changes 2020-11-08

今日は標準添付ライブラリ resolv の IPv6 の link local address 対応などがありました。

[640fd94eff] Kazuki Tsujimoto 2020-11-07 13:05:20 UTC

rubyspec の pattern match のテストで in のパターンに同じ変数名を重複して使った時にその値を使うのは結果が未定義なので避けるようにしています。rubyspec ってそういう「未定義」というのを許容せずに今の実装の挙動をそのまま反映するテスト書くことが多いので、たぶんわざとやってたんでしょうね。

[5823f6c25b] Kazuki Tsujimoto 2020-11-07 13:12:22 UTC

rubyspec の pattern match のテストのインデント修正のみ。

[9682db0651] Jeremy Evans 2020-09-11 21:28:20 UTC

標準添付ライブラリ resolv の Resolv::DNS::Requester#request_for でマッチした要素をインスタンス変数 @senders から削除するようにしています。 [ruby-core:77616] [Bug #12838]

[fcde1e0e62] git 2020-11-07 21:12:48 UTC

version.h の日付更新

[2f12af42f7] Jeremy Evans 2020-08-24 19:39:08 UTC

標準添付ライブラリ resolv で IPv6 の fe80: ではじまる link local address の対応を追加しています。 [ruby-core:99539] [Bug #17112]

[afe3cb782b] Samuel Williams 2020-11-08 03:12:55 UTC

doc/scheduler.md のサンプルコードで Fiber.new に blocking: false を明示的に渡しているところを引数省略するようにしています。現在は省略時は blocking: false (従来の Fiber と同じ)なので。

[f73135233b] Samuel Williams 2020-11-08 03:14:43 UTC

thread_sync.c の sync_wakeup() で Thread に scheduler がセットされている時に rb_thread_t::status のチェックの外になっていて既に終了した Thread の fiber への切り替えが走ってしまう可能性があったのを修正しています。

[c39984ec5c] Samuel Williams 2020-11-08 03:17:04 UTC

rb_thread_t::keeping_mutexes を操作する関数 thread_mutex_insert() と thread_mutex_remove() に切り出すリファクタリング。 thread_mutex_remove() のほうは切り出し元の rb_mutex_unlock_th() での処理よりも少しチェックが厳しくなっていて削除しようとする要素がリスト内にない時に対応するようにしていますね。これは意図的なんだろうか。

[57b83dad4c] Samuel Williams 2020-11-08 03:19:39 UTC

blocking Fiber のテストで使っている Scheduler の kernel_sleep で block メソッドを再利用するように書きかえています。duration に nil が渡された時にメインループが抜けるようになってしまっていたとのこと。

[bed4848661] Samuel Williams 2020-11-08 06:55:27 UTC

blocking Fiber のテストで Scheduler のインスタンス変数 @urgent に IO.pipe で生成した pipe を入れるタイミングをオブジェクト初期化時に早めています。

[54ac1d7717] Jeremy Evans 2020-11-08 07:41:01 UTC

2f12af42f7f26d570219b87a89294532a86a8ae2 で標準添付ライブラリ resolv の IPv6 の link local address 対応のために定義した正規表現の末尾に許容する文字に "." を追加しています。 s390 でのテスト修正らしいです。

ruby-trunk-changes 2020-11-07

今日は blocking Fiber 用の Scheduler を設定するメソッドを Fiber#set_scheduler に改名(移動)する変更や Fiber#blocking? の追加などがありました。

[f234f2740d] Alan Wu 2020-11-04 16:24:38 UTC

include/ruby/internal/gc.h の rb_gc_register_address()、rb_global_variable()、rb_gc_unregister_address()、rb_gc_register_mark_object() などの GC 関連の C API の prototype 宣言に rdoc 用コメントを追加しています。rdoc 用コメントって通常定義のところに書くんじゃないのかな。

[656d4cddaf] git 2020-11-06 17:55:52 UTC

version.h の日付更新

[a08ee8330d] Samuel Williams 2020-10-16 01:25:58 UTC

blocking Fiber のための Scheduler を設定/参照するためのメソッド Thread#scheduler、Thread#scheduler= はやめて Fiber#scheduler、Fiber#set_scheduler を追加して Fiber の側から Scheduler を設定できるようにしています。さらに Fiber#blocking? というメソッドも追加しています。 https://github.com/ruby/ruby/pull/3742 [ruby-core:97878] [Feature #16786]

[5b3572b5ae] Samuel Williams 2020-11-07 08:37:36 UTC

a08ee8330d3d739467bfa34deeb797d83e59ed3c の変更に追随して common.mk の依存関係を更新しています。