ruby-trunk-changes r57306 - r57314

今日は compile error のメッセージ出力のちょっとした変更などがありました。

kazu: r57306 2017-01-11 23:48:51 +0900

標準添付ライブラリ net/protocol の magic comment frozen_string_literal を true にして、必要なところに dup を追加しています。

normal: r57307 2017-01-12 07:38:50 +0900

random.c でシステムコールを呼ぶための定数 SYS_getrandom を __NR_getrandom に変更しています。SYS_ のほうは glibc が定義しているもので __NR_ が Linux kernel で定義されているもので、こっちを直接使うことで glibc が対応していなくても使えるようになるから、ということみたいですね。

svn: r57308 2017-01-12 07:38:51 +0900

version.h の日付更新。

normal: r57309 2017-01-12 08:46:05 +0900

拡張ライブラリ fiddle のテストで x86_64-linux の時の libc, libm のパスを /lib64 の下のものを使うようにするのをやめています。linux の場合 ruby が 32bit 版 64bit 版どちらでビルドされているかに応じて /lib32, /lib64 どちらを使うかの判定をしているのでそっちを使うようにしています。

normal: r57310 2017-01-12 08:53:05 +0900

test/rinda/test_rinda.rb で multicast を使うテストで、カーネルが IP Multicast をサポートしていない場合に Errno::ENOBUFS という例外が発生するので、捕捉して skip するようにしています。

shugo: r57311 2017-01-12 11:19:17 +0900

標準添付ライブラリ net/protocol の Net::BufferedIO#rbuf_fill で read_nonblock が nil を返して EOFError を発生させる時に、raise に第3引数を渡してバックトレースの生成を抑制していたのをやめています。EOFError は最後に必ず発生させるのでパフォーマンスを気にして抑制していたのだと思いますが、混乱するのでやめようってことになったみたいですね。 [ruby-core:78550] [Bug #13018]

nobu: r57312 2017-01-12 14:43:00 +0900

トップレベルでの yield を CompileError にするようにした…と思ったのですが、トップレベルとは別に main context というのがあるみたいですね。ruby の -e コマンドラインオプションで渡されたスクリプトの場合かな?

nobu: r57313 2017-01-12 16:41:35 +0900

CompileError のメッセージの表示で iseq->aux.compile_data.err_info にエラーメッセージを格納していたのを top や main の context ではすぐにメッセージを表示しておいて Qtrue を格納して重複を防ぐようにしているみたいです。

kazu: r57314 2017-01-12 21:17:33 +0900

標準添付ライブラリ net/smtp とそのテストの magic comment frozen_string_literal を true に変更して、必要なところに dup を追加しています。