ruby-trunk-changes r66339 - r66363

今日は Pathname が IO のクラスメソッドに委譲していたメソッドを File に委譲するようにする変更や、Complex を操作する C API の追加、default gem になってる標準添付ライブラリのバージョンの更新(gem パッケージにあわせる)などがありました。

samuel: r66339 2018-12-12 08:49:29 +0900

NEWS ファイルに Fiber の実装変更による高速化について追記しています。

svn: r66340 2018-12-12 08:49:32 +0900

version.h の日付更新。

samuel: r66341 2018-12-12 08:49:33 +0900

x86 版の coroutine の実装のアセンブリファイルで .section .note.GNU-stack という……これなんていうんだっけ、pragma? を追加しています。 [ruby-core:90000] [Bug #15335]

samuel: r66342 2018-12-12 08:56:26 +0900

r66339 の NEWS ファイルの Fiber 実装変更についてのエントリに対象アーキテクチャを追記しています。

hsbt: r66343 2018-12-12 09:17:59 +0900

NEWS ファイルの Bundler 添付の記述でバージョンを 2.0.0 から 1.17.2 に変更しています。

k0kubun: r66344 2018-12-12 09:38:49 +0900

bootstraptest で使う子プロセスを起動する assert_finish でタイムアウト時間を MJIT 有効時に 3倍にするようにしています。

samuel: r66345 2018-12-12 11:31:26 +0900

r66339 の NEWS ファイルへの Fiber の実装変更についての記述を Performance についてのセクションに移動しています。

akr: r66346 2018-12-12 14:07:49 +0900

拡張ライブラリ pathname の Pathname#read, Pathname#each_line などのメソッドが IO のクラスメソッドに委譲していたのを File のクラスメソッドを呼ぶように修正しています。 IO.read とかは pipe 経由でコマンドを起動するのもサポートしてしまいますが、Pathname はその名の通りファイルのパスを表してるはずなので File のほうを呼ぶべきということです。

hsbt: r66347 2018-12-12 14:07:50 +0900

rubygems の最新版をマージ。 bundler のバージョン変更への対応など? みたいです。

akr: r66348 2018-12-12 14:38:59 +0900

NEWS ファイルに r66346 の Pathname が委譲するメソッドの変更について追記しています。

nobu: r66349 2018-12-12 14:46:13 +0900

標準添付ライブラリ forwardable が r53383 で tailcall optimization を有効にして ISeq 生成して eval するようにしてたのをやめています。 forwardable で委譲したメソッドのバックトレースで forwardable が出ないようにするためだったと思いますが、TracePoint のイベントで tailcall optimization が行なわれていると return イベントが発生しなくて対応関係がおかしくなるので、やめたほうがいいっていうことになったみたいです。 [ruby-core:89797] [Bug #15303]

naruse: r66350 2018-12-12 15:10:29 +0900

MatchData の rdoc 用コメントにサンプルや関連する特殊変数についての記述を追加しています。 [ruby-core:85410] [Bug #14450]

mrkn: r66351 2018-12-12 15:39:58 +0900

rb_arithmetic_sequence_extract() という API を追加して Range または Enumerator::ArithmeticSequence のオブジェクトから始点、終点、step、終点を含むか、などの属性を取り出すことができるようにしています。 include/ruby/intern.h に宣言を追加しるので、拡張ライブラリからこの関数で内容を取得させるようにしよう、ということかな。

akr: r66352 2018-12-12 15:48:46 +0900

標準添付ライブラリ open3 でオプションの引数をキーワード引数を使うように **opt のように kwrest 引数を追加して r43582 とか r49173、r49177 で対応していましたが、これを revert しています。open3 はキーとして数値を渡すような引数(fd 番号を渡してその fd を指定の IO リダイレクトする指定)があるので、これをキーワード引数として扱うとキーワード引数は Symbol のみとしたいのにぶつかってまずいということみたいです。っていうか **keys みたいな記法だと Symbol じゃなくても受け取れてしまうのかー知らなかった。

mrkn: r66353 2018-12-12 16:16:07 +0900

r66351 で追加した rb_arithmetic_sequence_extract() の引数を rb_arithmetic_sequence_components_t という構造体のポインタを渡してここに情報を詰めて返すように変更しています。

hsbt: r66354 2018-12-12 16:34:16 +0900

標準添付ライブラリ shell に require "shell/version" を追加しています。 default gem 化の一環ですね。

duerst: r66355 2018-12-12 16:37:16 +0900

Proc の rdoc 用コメントにサンプルや lambda について、利用例などを追加しています。 [ruby-core:86157] [Misc #14610]

hsbt: r66356 2018-12-12 16:41:10 +0900

標準添付ライブラリ irb のバージョン表記について upstream の変更をマージしています。

hsbt: r66357 2018-12-12 16:57:42 +0900

標準添付ライブラリ sync の VERSION を 0.5.0 に更新。 default gem としてリリースしているバージョンに合わせているようです。

hsbt: r66358 2018-12-12 18:40:06 +0900

標準添付ライブラリ logger のバージョンを 1.3.0 にしています。gem のバージョンに揃えるため。

nobu: r66359 2018-12-12 20:06:47 +0900

complex.c の rb_dbl_complex_polar_pi() を rb_dbl_complex_new_polar_pi() と改名しています。新しいインスタンスを返すということをはっきりさせるため。rb_complex_polar() も wrapper として残していますが DEPRECATED_BY() マクロを使って警告が出るようにしています。

nobu: r66360 2018-12-12 20:06:48 +0900

Complex オブジェクトのインスタンスメソッドに相当する各種関数を公開 API としています。 rb_complex_real()、rb_complex_imag()、rb_complex_plus()、rb_complex_mul() などなど。 [ruby-core:88827] [Feature #15066]

mame: r66361 2018-12-12 20:24:15 +0900

r66352 で追加された open3 のテストが Windows ではそもそも 3 以上の(つまり標準(エラー)入出力以外の) fd を指定するオプションがサポートされてない? ため skip するようにしています。

nobu: r66362 2018-12-12 20:43:14 +0900

r66329 で拡張ライブラリ date の Date で private method として追加して継承している DateTime public にしているメソッドを単に DateTime で定義するように変更してましたが、なんと ActiveSupport で Date を open class して再定義しているところで使っているところがあったので、private メソッドとして追加しています。確かにちょっと気になったけど private だからいいか、と思ったけど確かに継承や再定義で使う可能性はあったか。 [ruby-core:90443] [Bug #15403]

hsbt: r66363 2018-12-12 22:25:29 +0900

NEWS ファイルに拡張ライブラリ psych のバージョン更新について追記しています。