ruby-trunk-changes 2019-05-04

今日は String#upcase, #downcase, #capitalize などのメソッドの最適化や標準添付ライブラリ drb の ObjectSpace._id2ref に依存しない IdConv の実装追加などがありました。

[5776ae3475] Nobuyoshi Nakada 2019-05-03 15:33:59 +0900

String#upcase! および String#downcase! の実装において Encoding の種類による分岐で条件が冗長なところがあったのでシンプルにリファクタリングしています。

[1f349ea297] Marcus Stollsteimer 2019-05-03 16:12:22 +0200

doc/syntax/literals.rdoc のヒアドキュメントのマーカーと改行コードについての記述の typo 修正。

[77440e949b] Nobuyoshi Nakada 2019-05-03 23:59:18 +0900

String#upcase, #downcase, #capitalize および ! つきの破壊的メソッドで rb_str_casemap() が新たに確保した String オブジェクトを返すようになっているのでそれを利用して余計な中間オブジェクトの生成を抑制するようにしています。このため ! なしのメソッドの実装は String を複製してから rb_str_xxx_bang() の関数に委譲するようになっていたのを、共通の処理をできるだけ関数に切り出すリファクタリングをして、それぞれのメソッドの実装を独立して書くようにしています。ベンチマークも追加されているのでパフォーマンス改善を目的とした変更みたいです。

[04fd98d596] git 2019-05-03 23:59:58 +0900

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

[a3cbce7822] git 2019-05-04 00:00:01 +0900

version.h の日付変更。

[b72623012d] Hiroshi SHIBATA 2019-05-04 06:23:25 +0900

クラス Float の rdoc 用コメントに書かれている浮動小数点数についてのリンクの1つが切れてたので更新しています。 [ruby-core:92332] [Misc #15775]

[8980b53a48] Masatoshi SEKI 2019-05-04 19:28:57 +0900

標準添付ライブラリ drb でリモートへ参照を渡したオブジェクトが GC されなくなってしまうのを防ぐために参照を残さず object_id のみ渡して ObjectSpace._id2ref でオブジェクト参照を取得するようにしていましたが、ObjectSpace._id2ref を deprecated にしたいということで DRb::WeakIdConv というクラスを追加して、ObjectSpace::WeakMap を使って直接 object_id を使わない弱参照を実装しています。インスタンス変数 @immutable のほうに fallback しているのはなにをしているんだろう? [Bug #15711]

[7d30cd47c4] git 2019-05-04 19:29:14 +0900

8980b53a48b1f55e09c5223008225e6bfa765405 の行末の空白除去。