ruby-trunk-changes r60993 - r61012

今日は Integer#pow メソッドに modulo つきの累乗を計算する新機能追加、NODE の位置情報の修正、Windows で ReFS のサポートなどがありました。

naruse: r60993 2017-12-03 21:06:16 +0900

テスト用拡張ライブラリの Bug::String.buf_new のテストを追加しています。

nobu: r60994 2017-12-03 21:10:19 +0900

r60987 を revert しています。 tool/file2lastrev.rb は警告は抑制するけどエラーは抑制されないのでやっぱり必要だったそうです。

naruse: r60995 2017-12-03 21:11:19 +0900

tool/vcs.rb で git log コマンドを実行する時に非ASCII文字のログを読むために pipe の mode を "rb" にしてバイナリモードで出力を読むようにしています。

yui-knk: r60996 2017-12-03 21:27:01 +0900

メソッド定義時の引数やキーワード引数の位置情報の範囲が全て最後の引数のものになっていたのを修正しているみたいです。

yui-knk: r60997 2017-12-03 21:44:47 +0900

さらにメソッド引数の NODE_ARGS の位置情報の範囲を設定するようにしています。

usa: r60998 2017-12-04 00:49:05 +0900

test/logger/test_logdevice.rb の log rotation のテストにいくつか sleep 0.01 を追加しています。少し待たないと rotation が起きなかったのかな?

svn: r60999 2017-12-04 00:49:06 +0900

version.h の日付更新。

yui-knk: r61000 2017-12-04 08:12:01 +0900

a[] ||= 1 のような bracket つきの代入に演算子がついたもので生成される NODE_ZARRAY の範囲情報を bracket の部分になるように修正しています。

nobu: r61001 2017-12-04 08:54:45 +0900

拡張ライブラリ socket の struct rb_ifaddr_tag の未使用のメンバー root を削除しています。

usa: r61002 2017-12-04 09:23:31 +0900

r60999 のテストに挿入した sleep を削除しています。テストの失敗は別にあったようです。

mrkn: r61003 2017-12-04 11:35:40 +0900

Integer#pow メソッドに2引数を渡すと、modulo つきの累乗計算する機能を追加しています。この場合引数は両方とも Integer でないといけないようです。 https://github.com/ruby/ruby/pull/1320 [Feature #12508] [Feature #11003]

mrkn: r61004 2017-12-04 11:35:41 +0900

NEWS ファイルに r61003 の Integer#pow の追加について追記しています。 [Feature #12508] [Feature #11003]

usa: r61005 2017-12-04 12:33:48 +0900

rb_file_identical_p() から Windows 版の実装を rb_w32_file_identical_p() という関数に切り出して、 Windows の ReFS という filesystem で同一ファイルの判定が行なえるようにしているそうです。 [ruby-dev:50166] [Feature #13731]

nobu: r61006 2017-12-04 15:08:30 +0900

拡張ライブラリ socket で ifaddr_memsize() の計算方法を offsetof() を利用するように変更しています。rb_ifaddr_t は rb_ifaddr_root_t の末尾の可変長の配列の各要素なのですが、ifaddr_memsize() で可変長配列全体のサイズを返していたので、重複して容量をカウントしていたため、配列の1要素のサイズのみカウントするようにしています。その上で先頭の要素にはヘッダ部分の容量を加算するようにしています(先頭だけちょっと大きくなる)。

usa: r61007 2017-12-04 15:41:28 +0900

r61005 で追加した Windows 版の実装で FILE_ID_128 の定義が誤って preprocessor の条件の中に入っていたみたいなので位置を移動しています。

yui-knk: r61008 2017-12-04 16:16:31 +0900

メソッド呼び出しの引数で生成する NODE_ARRAY の位置情報の更新を修正しています。

nobu: r61009 2017-12-04 16:37:21 +0900

marshal.c, process.c, ext/win32ole/win32ole.c で内部的に利用する構造体を wrap したオブジェクトのクラスに rb_cData を利用していましたが、これらは ObjectSpace で巡回できないほうがいいやつなので klass に 0 を渡すようにしています。Data クラスの deprecated 化にも関係してそうですね。

yui-knk: r61010 2017-12-04 16:50:42 +0900

メソッド呼び出し時の引数の NODE_ARGSCAT の位置情報が連結した全体を含むように修正しています。

yui-knk: r61011 2017-12-04 17:20:07 +0900

メソッド呼び出しのブロック引数を渡した時の NODE_BLOCK_PASS の位置情報を最後の引数まで含めるように更新するようにしています。

nobu: r61012 2017-12-04 19:41:45 +0900

r61003 の Integer#pow の実装でマクロを追加して共通処理を括り出し、また明示的なキャストを追加しています。