ruby-trunk-changes r66104 - r66118

今日は rubygems の更新や Fiber に setjmp/longjmp を使った実装をしていた時の不具合修正などがありました。

normal: r66104 2018-11-30 20:44:21 +0900

r65937 で IO の finalize 処理で不正な fd を使ってしまう不具合修正をしたことで IO の fd の再利用についてのテストに r64543 で入れてた、なぜか失敗するので回避するために入れてた謎の workaround が不要になったので消しています。よかったよかった。

tenderlove: r66106 2018-12-01 08:58:13 +0900

VM 命令の最適化をする iseq_peephole_optimize() に putobject を繰り返してから newarray で配列を作る命令を、duparray オペランドとして全要素の配列を渡す 1命令にまとめるようにしています。

svn: r66107 2018-12-01 08:58:17 +0900

r66106 のインデントのタブを空白に展開。

svn: r66108 2018-12-01 08:58:17 +0900

version.h の日付更新。

tenderlove: r66109 2018-12-01 09:08:36 +0900

r66106 の putobject+newarray を duparray に変更する最適化を revert しています。ほう、なんかうまくいかなかったのかな。今までやってなかったのが不思議なくらいのでなにか落とし穴があるのかなとは思ったけど、だめな理由が思いつかない。スタックの利用量の予測が変わるから、ってそれは他の最適化も同じだから後で計算してるよなぁ。

k0kubun: r66110 2018-12-01 09:37:54 +0900

tool/downloader.rb でダウンロードのリトライ対象にする例外に Net::OpenTimeout を追加しています。ソケットの connect が返ってこないことも稀にありますね。

samuel: r66111 2018-12-01 12:49:52 +0900

Fiber の native 実装じゃない時に、切り換える前の Fiber の machine stack のポインタを NULL クリアするようにしています。利用しなくなった領域の mark をしないようにするためとのこと。 native じゃない時の Fiber の machine stack の実装ってヒープに退避してコピーする昔の green thread みたいなことしてるんだっけ? [ruby-core:85870] [Bug #14561] [ruby-core:90193] [Bug #15362]

duerst: r66113 2018-12-01 15:07:53 +0900

regparse.c の node_extended_grapheme_cluster() の Regional_Indicator (国旗関係のやつですね)で Node のリストを作るのに不要な Node を挟んでたのを省いてます。

duerst: r66114 2018-12-01 16:31:34 +0900

regparse.c の新たなリファクタリングで node_extended_grapheme_cluster() から list を作って onig_node_new_alt() で alternative node なるものを作る処理を create_alternate_node() という関数に切り出しています。

svn: r66115 2018-12-01 16:31:35 +0900

r66114 の行末の空白除去。

duerst: r66116 2018-12-01 17:26:39 +0900

regparse.c の node_extended_grapheme_cluster() で Grapheme_Cluster_Break=Control のノードから \r と \n を除外する範囲を追加するコードを消しています。既に除外されてるので不要とのこと。

mrkn: r66117 2018-12-01 18:29:14 +0900

ext/extmk.rb で拡張ライブラリのビルド時にサブディレクトリ化のものはその親ディレクトリでのビルドが完了するまで待たせるように依存関係をつけた Makefile を生成するようにしています。 clean では逆に親の掃除の時に子も掃除するようにしているみたいですね。

hsbt: r66118 2018-12-01 20:01:00 +0900

rubygems に upstream の 3.0.0.beta3 をマージ。 OTP による Multi Factor Auth 機能の対応が入ったようです。ツール側に入ったってことは rubygems.org にも MFA 設定する機能が近く入るのかな。