ruby-trunk-changes r63495 - r63500

今日は拡張ライブラリ pty の Solaris での不具合修正や pthread 環境での thread cache の有効化などがありました。短命な Thread を大量に使い捨てるような環境では速くなるかも。

ngoto: r63495 2018-05-24 00:58:53 +0900

拡張ライブラリ pty で ioctl(2) の I_PUSH を使う前に I_FIND という request を試すようにしています。Solaris でのテストの失敗の修正のためだそうです。 Solaris で ioctl(2) に I_PUSH で "ldterm" を渡すと重複した CR ("\r") が送信されることがあるそうで、うーむ難しい。 [ruby-dev:50552] [Bug #14786]

svn: r63496 2018-05-24 00:58:54 +0900

version.h の日付更新。

normal: r63497 2018-05-24 05:58:46 +0900

bemchmark の下の erb についてのベンチマークスクリプトで __END__ の後にデータを置いて DATA 変数で参照する手法を使っているものがありましたが、これは benchmark のオプションによっては機能しないため(Kernel#load で読まれるときかないらしい。知らなかった)ヒアドキュメントを使うように書き換えています。

normal: r63498 2018-05-24 06:16:56 +0900

Thread で pthread 実装の時に native thread をすぐに解放せずに使いまわす thread cache の実装をデフォルトで有効にしています。 これちょっと前に有効にしてなかったっけ、と思ったのですが r62466 あたりからちょくちょく修正をしていて、これでもう大丈夫じゃろ、ということでデフォルト化に踏み切ったようです。また thread の cache での生存時間を 3秒に縮めています。 [ruby-core:87030] [Feature #14757]

normal: r63499 2018-05-24 11:52:46 +0900

r63498 の続きでさっそく pthread 実装時の native thread の cache 実装で register_cached_thread_and_wait() の引数から thread_id を消して pthread_self() で関数内で自 thread の id を得るようにしています。 詳細はわからないのですが GC まわりの不具合があったみたいです。

nobu: r63500 2018-05-24 15:15:43 +0900

r6349 の続き。 mjit.c で remove(3) を直接呼んでいるところがまだあったので remove_file() を使うようにしています。