ruby-trunk-changes r64542 - r64557

今日は rubygems, rdoc, psych などのライブラリの更新や IO の blocking region の割り込みチェックの追加などがありました。

normal: r64542 2018-08-26 21:41:16 +0900

thread_sync.c の wakeup_one() と wakeup_all() から共通部分を sync_wakeup() として切り出して、引数で起こす thread 数を指定するようにして wakeup_one() からは 1 を、wakeup_all() からは LONG_MAX を渡すことで全部起こすという指定にしています。でこれを wakeup_one() を繰り返し呼んでた rb_szqueue_max_set() からも使うようにしています。コードサイズがわずかに削減できたらしい(久しぶりのコードサイズダイエット)。

normal: r64543 2018-08-26 21:41:21 +0900

r64529 でもいじってた IO の fd 再利用がらみのテスト test_recycled_fd_close で Linux でのみ謎の IO#write を追加しています。コメントにも "not sure why this is needed on Linux" とか書いてあって不穏な感じですが……。なんかまだ timer thread 廃止がらみで不具合があるのでは……。

hsbt: r64544 2018-08-27 09:44:04 +0900

拡張ライブラリ psych に upstream から 3.1.0.pre1 をマージしています。添付している libyaml の更新もありました。

svn: r64545 2018-08-27 09:44:05 +0900

version.h の日付更新。

svn: r64546 2018-08-27 09:44:06 +0900

r64544 の新規追加ファイルの svn property 設定。

hsbt: r64547 2018-08-27 10:30:18 +0900

標準添付ライブラリ rdoc に upstream リポジトリから 6.1.0.beta1 をマージしています。

svn: r64548 2018-08-27 10:30:20 +0900

r64547 の行末の空白除去。

svn: r64549 2018-08-27 10:30:21 +0900

r64547 の新規作成ファイルの svn property 設定。

normal: r64550 2018-08-27 14:32:18 +0900

do_select() や rb_wait_for_single_fd() などの blocking region 内で遅延されている割り込みのチェックポイントを追加しています。timer thread 廃止時に全 thread を定期的に起こすみたいなことをして r64389 とかで今度は spurious wakeup 対策で絞っていっているのですが、絞りすぎてテスト通らなくなったものがあるのでまた調整している、みたいな状態でしょうか。

nobu: r64551 2018-08-27 14:39:09 +0900

format 文字列で使う int64_t 型に使う指示子の PRI_64_PREFIX の定義を configure.ac で RUBY_CHECK_PRINTF_PREFIX() 定義を生成させるようにしています。

nobu: r64552 2018-08-27 14:48:41 +0900

hrtime.h の rb_hrtime_t からの変換関数で明示的なキャストを追加しています。

nobu: r64553 2018-08-27 14:49:41 +0900

r64553 でキャスト対象の範囲を調整するため明示的なかっこを追加しています。

normal: r64554 2018-08-27 17:48:49 +0900

hrtime.h の rb_httime_t 型についての説明コメントで精度と表現範囲についての説明に型のサイズについても触れています。 [ruby-core:88678] この ruby-core でのリプライみたらやっぱり MY_RUBY_BUILD_MAY_TIME_TRAVEL はジョークだったんですね。

hsbt: r64555 2018-08-27 19:05:04 +0900

rubygems に upstream から 3.0.0.beta2 をマージしています。

svn: r64556 2018-08-27 19:05:06 +0900

r64555 の行末の空白除去。

eregon: r64557 2018-08-27 19:12:41 +0900

rubyspec の socket のテストで bind していない socket の accept も、platform_is_not にいろいろプラットフォームを列挙していましたが、結局 Linux でのみ実行するように条件を反転させています。