今日も引き続き開発合宿効果でたくさんの変更がありました。TracePoint で alias されたメソッドを呼び出した時に実体のメソッド名と呼び出した時のメソッド名の両方が取得できるようになったり、Binding#irb メソッドで任意のコンテキストから irb が起動できるようになったり、Net::HTTP.post メソッドが追加されたり、その他たくさんの機能追加や不具合修正がありました。
ktsj: r56592 2016-11-05 22:15:26 +0900
TracePoint で alias で作られたメソッド名で呼び出した時に method_id が常に元のメソッド名を返すようにしています。次の callee_id の導入の下準備みたいです。 [ruby-core:77241] [Feature #12747]
ktsj: r56593 2016-11-05 22:15:27 +0900
r56592 の続きで TracePoint に callee_id を追加しています。 alias されたメソッドを呼んだ時に呼び元で呼んだメソッド名のほうを返すようにしています。実体のメソッド名(method_id)と呼び元でのメソッド名(callee_id)を明確に区別するようにしたのですね。 [ruby-core:77241] [Feature #12747]
knu: r56594 2016-11-05 22:53:38 +0900
標準添付ライブラリ ipaddr の IPAddr#== や IPAddr#<=> メソッドで引数のオブジェクトを IPAddr に変換するために coerce_other を呼び出した時にそこで例外が発生した場合にその例外をそのまま上げるのではなく捕捉して nil を返すようにしています。 [ruby-core:77451] [Bug #12799]
akr: r56595 2016-11-05 23:03:34 +0900
標準添付ライブラリ time の Time.make_time で最後の引数 now の nil チェックをしている分岐よりも前に now を参照している箇所があったのでチェックを追加しています。
naruse: r56596 2016-11-05 23:08:16 +0900
標準添付ライブラリ net/http でステータス 100 の Continue の時だけでなく 100 系のレスポンスのステータスの時に続いてレスポンスを受け付けるようにしています。 [ruby-core:77866] [Bug #12890]
shugo: r56597 2016-11-05 23:39:06 +0900
標準添付ライブラリ net/http に POST のリクエストを送信する Net::HTTP.post メソッドを追加しています。 Net::HTTP.post_form というメソッドもありますが、こちらはパラメータを application/x-www-form-urlencoded でエンコードする前提ですが、こちらはリクエストボディをそのまま指定するので JSON エンコードしたリクエストボディを渡すこともできます。また header の指定もできるようになっているので、より便利になりました。 [ruby-core:75484] [Feature #12375]
shugo: r56598 2016-11-05 23:49:39 +0900
r56597 の ChangeLog エントリに ML とチケットの番号の参照を追記しています。
akr: r56599 2016-11-05 23:59:51 +0900
Time#strftime で大晦日の時刻にタイムゾーン(offset)を加味してうるう年を考慮した時の day of year が間違っていたのを修正しています。 [ruby-core:72878] [Bug #11994]
naruse: r56600 2016-11-06 00:00:37 +0900
Dir.home でユーザ名からホームディレクトリを取得する時にユーザ名の文字列のエンコーディングをファイルシステムエンコーディングに変換するようにしています。 [ruby-core:76682] [Bug #12652]
shugo: r56601 2016-11-06 00:02:17 +0900
r56590 で Integer#round にキーワード引数 half を追加した時に signed と unsigned の比較で警告が出るようになっていたので明示的なキャストを追加しています。
svn: r56602 2016-11-06 00:02:18 +0900
version.h の日付更新。
naruse: r56603 2016-11-06 00:05:30 +0900
gcc 7 で switch 文で break せずに fall through すると警告が出るようになったそうなのですが、わざと fall though を利用しているところは結構あるのでそれが警告されてしまうのを抑制するため -Wimplicit-fallthrough=0 というオプションを追加するようにしています。 参考URL: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=7652
akr: r56604 2016-11-06 00:19:21 +0900
標準添付ライブラリ resolv の Resolv::LOC::Coord.create に文字列の引数を渡す時の実装に複数の不具合があったのを修正しています。 [ruby-core:72567] [Bug #11912]
ktsj: r56605 2016-11-06 00:30:55 +0900
r56592 で TracePoint に渡す method_id を呼ばれたメソッドの本来の名前にする(alias されたものが呼ばれても original の名前にする)ようにしたのにあわせて DTrace の CMETHOD_ENTRY_HOOK と CMETHOD_RETURN_HOOK に渡す id も本来の名前のほうを渡すように変更しています。
nobu: r56606 2016-11-06 00:45:42 +0900
整数の正負を判定する int_pos_p() と int_neg_p() で引数が整数じゃなかった時に Qnil を返していたのを例外を発生させるようにしています。確かに Qnil だと C 言語的には真値になってしまうし、これは内部的に使われる関数なので、rb_bug() でもいいんじゃないかなってくらいですね。
akr: r56607 2016-11-06 00:46:48 +0900
Enumerable#chunk_while を lazy 化した Enumerator::Lazy#chunk_while メソッドを追加しています。 https://github.com/ruby/ruby/pull/1186
nobu: r56608 2016-11-06 00:49:29 +0900
dir.c の rb_glob2() という関数は rb_glob() からしか呼ばれてなかったので、展開して1つの関数にまとめています。
ko1: r56609 2016-11-06 01:31:25 +0900
Solaris 10 にて vm_insnhelper.h のマクロ名が衝突していて警告が出ていたので VM_REG_ の prefix を付けるように改名しています。 [ruby-dev:49693] [Bug #12527]
shugo: r56610 2016-11-06 01:42:27 +0900
トップレベルで定義されたメソッドや eval で定義されたメソッド(っていう意味かな)では VM の末尾呼び出し最適化は有効にしないようにしています。SIGINT での割り込み時に SEGV することがあるそうです。 [ruby-core:76327] [Bug #12576]
a_matsuda: r56611 2016-11-06 01:56:52 +0900
標準添付ライブラリ erb の ERB::Compiler::Scanner.regist_scanner を register_scanner と改名しています。元の名前も alias として残しています。
naruse: r56612 2016-11-06 03:09:36 +0900
doc/ChangeLog-2015 というファイルを追加しています。 これは svn のログから生成していると思われます。 [Misc #12283] で議論していた ChangeLog を編集するのをやめようという変更に向けた準備です。
svn: r56613 2016-11-06 03:09:37 +0900
r56612 で追加した doc/ChangeLog-2015 の行末の空白除去。
nobu: r56615 2016-11-06 08:54:17 +0900
標準添付ライブラリ e2mmap で module_eval にファイル名と行番号を渡すようにしています。また included メソッドを再定義する前に undef して警告を抑制するようにしています。
nobu: r56616 2016-11-06 08:58:02 +0900
標準添付ライブラリ shell で debug に不要に attr_accessor を使っていたため更新できるようになっていたので attr_reader を使うようにしています。また警告除去のためインスタンス変数の初期化を追加しています。
sho-h: r56617 2016-11-06 09:10:49 +0900
doc/standard_library.rdoc のライブラリ名の typo 修正。
nobu: r56618 2016-11-06 09:58:49 +0900
Process.spawn や Kernel#exec で環境変数に渡した PATH があった場合に実行するプログラムの探索にその PATH を利用するようにしています。うーんなるほど、言われてみればそうかもなー。 [ruby-core:53103] [Bug #8004]
shugo: r56619 2016-11-06 10:06:45 +0900
r56610 で追加したテストで子プロセスと同期を取るために sleep を使っていたのを標準出力の pipe を通じて出力を待つことで同期をとるように書き換えています。
shugo: r56620 2016-11-06 10:20:44 +0900
r56619 のテストコードで SIGINT の番号をチェックするのに Signal.list を使っていたのを Signal.signame を利用するように修正しています。
nobu: r56621 2016-11-06 11:45:14 +0900
標準添付ライブラリ e2mmap で E2MM.def_exception が重複して呼ばれた時に警告が出ないように定数が定義済みだったら一度 remove_const で削除してから const_set するようにしています。
nobu: r56622 2016-11-06 11:49:49 +0900
標準添付ライブラリ irb で IRB.start から初期化やシグナルハンドラの設定などを IRB::Irb#run メソッドに切り出しています。
shugo: r56623 2016-11-06 11:50:51 +0900
r56576 で Net::SMTP の SSL socket 接続にタイムアウトが設定できるようにした時のテストで localhost が IPv6 のアドレス ::1 になる環境があるので、サーバ側のソケットを 127.0.0.1 で開くようにしていたのを Socket.tcp_server_sockets を使って localhost で開くようにしています。 r39551 でも使われていたテクニックですね。
nobu: r56624 2016-11-06 11:53:25 +0900
r56622 の続きで IRB::Irb#run に切り出したメソッドを利用して Binding#irb メソッドを追加しています。 pry という gem で任意の場所で binding.pry というメソッドで pry を起動するのはデバッグなどでよくやる方法ですがこれが binding.irb でもできるようになったってことですね。
shugo: r56625 2016-11-06 12:04:33 +0900
標準添付ライブラリ rinda のテストで IPv6 の multicast を使ったテストで Errno::EADDRNOTAVAIL が発生した場合は対象のアドレスが利用できない環境なのでチェックを省くようにしています。
svn: r56626 2016-11-06 12:04:34 +0900
r56625 の ChangeLog エントリの行末の空白除去。
kazu: r56627 2016-11-06 12:29:22 +0900
r56581 で追加した IO#gets などのキーワード引数 chomp についての NEWS ファイルのエントリにチケット番号の参照を追記しています。 [Feature #12553]
nobu: r56628 2016-11-06 14:22:41 +0900
r56600 の ChangeLog エントリに非 ASCII 文字が入っていたので ASCII 文字で代替するようにしています。
nobu: r56629 2016-11-06 14:38:59 +0900
ChangeLog に誤って空のエントリが追加されてしまったみたいですね。
nobu: r56630 2016-11-06 14:39:01 +0900
r56629 で誤って追加された ChangeLog エントリを削除。
nobu: r56631 2016-11-06 14:42:53 +0900
Module#include や Module#prepend は複数の引数を受け付けますが、実は引数がなくてもエラーにはならないようになっていたみたいで、一方 Kernel#extend は引数なしだと ArgumentError が発生するので、そちらにあわせて ArgumentError が発生するように変更しています。 https://github.com/ruby/ruby/pull/1470 [ruby-dev:49854] [Bug #12887]
shugo: r56632 2016-11-06 15:58:25 +0900
r49410 で gcc 5 では thread.c での誤検出で警告が出るため -Wno-maybe-uninitialized というコンパイラオプションを指定するようにしていましたが、gcc 6 でも同様の警告が出るため条件に追加しています。
svn: r56633 2016-11-06 15:58:26 +0900
r56632 の ChangeLog エントリの行末の空白除去。
hsbt: r56634 2016-11-06 18:18:30 +0900
r56624 の Binding#irb メソッドの追加について NEWS ファイルに追記しています。
hsbt: r56635 2016-11-06 18:23:35 +0900
NEWS ファイルに XMLRPC が標準添付ライブラリから削除され bundled gem になったことを追記しています。 [ruby-core:74239] [Feature #12160]