ruby-trunk-changes r58077 - r58084

今日は最新の macOS でのビルドエラーの修正、Refinements の Module#refine が返す Module を include/prepend に渡すのを禁止する変更などがありました。

nobu: r58077 2017-03-24 21:16:54 +0900

標準添付ライブラリ ostruct の OpenStruct.allocate を new の alias にしていたのをやめて通常の allocate に加えてインスタンス変数 @table の初期化を行うようにしています。継承したクラスで initialize を上書きした場合に対応するためだそうで。 [ruby-core:80292] [Bug #13358]

naruse: r58078 2017-03-24 23:05:50 +0900

tool/vcs.rb の SVN#export_changelog メソッドでブランチの URL 指定の引数が足りなくてうまく動かない状態だったのを修正しています。 GIT のほうは url 不要だったので git 使ってると気がつかなかったみたいですね。

nobu: r58080 2017-03-25 10:07:35 +0900

ripper でクオートが閉じてない文字列リテラルを parse した時のエラーの行数がおかしいのを修正しているみたいです。たまたまそういう会話をみかけたのでたぶんそれだろうなという感じですが。

svn: r58081 2017-03-25 10:07:36 +0900

version.h の日付更新。

nobu: r58082 2017-03-25 11:57:30 +0900

class.c の rb_include_module() と rb_prepend_module() から引数の Module のチェック部分を ensure_includable() という関数に切り出すリファクタリング

nobu: r58083 2017-03-25 12:23:43 +0900

r58082 で切り出した ensure_includable() に module が Refinements の Module#refine メソッドが返した Module だったらエラーにするチェックを追加しています。っていうか Module#refine って生成した Module オブジェクトを返してたんですね。これを include すると SEGV する可能性があったみたいです。 [ruby-core:79632] [Bug #13236]

nobu: r58084 2017-03-25 16:46:12 +0900

macOS の最新版 10.12 から syscall(2) が deprecated になったそうで(え!?) configure で target_os のバージョンをチェックして syscall を使わないようにしています。 [ruby-core:80300] [Bug #13361]