ruby-trunk-changes 2019-08-29

今日は pipeline operator の削除や reline のウィンドウサイズ変更時に追随できるようにする対応などがありました。

[cd0e208963] Jeremy Evans 2019-08-28 18:40:56 UTC

doc/regexp.rdoc に正規表現の繰り返し回数の範囲指定をする {n,m} や {n,}, {,m} (始点終点省略できるの知らなかった)で、後ろに "?" をつけることで最長マッチを抑制するようにできることを明記しています。また厳密な数の指定をする {n} の場合はこの効果がなくただのメタキャラクタとして働くので意味が変わってしまうことも注記しています。なるほどー。 {[ruby-core:91377] [Bug #15583]

[d92289cd8d] Nobuyoshi Nakada 2019-08-29 02:09:22 UTC

r63668 (bf7a32d22079cc44eb19794e41d82b886d5d17b3) の flip-flop の deprecation 警告を抑制するためのテストと rubyspec の修正を revert しています。 flip-flop の警告出力をやめたため。 [ruby-core:39915] [Feature #5400]

[1cf5a31e7a] Nobuyoshi Nakada 2019-08-29 02:16:17 UTC

Range#step のテストに引数に負の整数を渡した時の assertion を追加しています。

[d3e0bc07e2] Nobuyoshi Nakada 2019-08-29 02:20:34 UTC

rubyspec の flip-flop のテストのコメントが間違ってたのを修正。

[761346a960] Nobuyoshi Nakada 2019-07-04 07:54:34 UTC

class や module 文で既に定義済みの Class/Module を再定義しようとした時に継承元や class/module が違うなど食い違っていた時の例外メッセージに元の定義の位置を含めるようにしているようです。 [Feature #11460]

[682aaf6af5] Kazuhiro NISHIYAMA 2019-08-29 05:32:24 UTC

.travis.yml で miniruby で実行するワンライナーで numbered parameter を使ってたところをやめるようにしています。

[0f405541bf] aycabta 2019-08-29 05:36:45 UTC

標準添付ライブラリ reline の Reline::LineEditor で端末のウィンドウサイズが変更された時に通知するのに使われる SIGWINCH シグナルのハンドラを追加してサイズ変更に追随するための処理をするようにしています。

[07f9cd96f3] git 2019-08-29 06:12:37 UTC

version.h の日付更新

[893900dc78] aycabta 2019-08-29 06:21:00 UTC

0f405541bfe5186c068c4521d815b64b82e1ae5e の追加修正で SIGWINCH 受信時の処理のためのメソッドを非対応な環境でも一応メソッド定義だけはしておくようにしています。

[2ed68d0ff9] Nobuyoshi Nakada 2019-08-29 06:09:43 UTC

pipeline operator "Object#|>" の追加および関連の commit 群が revert されています。 Goodbye pipeline operator. 次は右代入と一緒だといいですね。 [ruby-core:94645] [ruby-core:92432] [Feature #15799]

[abe12d8b96] Nobuyoshi Nakada 2019-08-29 07:58:21 UTC

".:" 演算子で Method オブジェクトを得るための methodref VM 命令で返す Method オブジェクトを freeze しておくようにしています。チケットみると freeze すること自体よりメモリ使用量へのインパクトのための変更のようです。うーん、これ freeze するだけで自動的に使いまわされるのかな? [ruby-core:94349] [Feature #16103]

[69683968a9] 卜部昌平 2019-08-28 07:18:58 UTC

rb_mutex_synchronize_m() の不要な引数を削除しています。 ここから rb_define_method() などでメソッド定義のために使われるけど引数の数が間違ってる関数の修正が続きます。

[48e346a088] 卜部昌平 2019-08-28 08:33:07 UTC

テスト用の拡張ライブラリ ext/-test-/bug-3571/bug.c の bug_start() の引数を削っています。

[9ef51b0b89] 卜部昌平 2019-08-28 08:11:23 UTC

gcc の拡張により rb_define_method() に渡す関数ポインタの関数の引数の数ごとに異なる関数型を指定する rb_define_method() のバリエーションを 18個ぶんまで用意してオーバーロードするようにして、関数の定義の引数の数が合わないのを検出できるようにしています。この前後の修正はこれで検出したわけですね。

[7b6fde4258] 卜部昌平 2019-08-28 08:48:48 UTC

9ef51b0b89a10c8c401cb9f2337e47a25be72cbe と同様に rb_define_module_function() も GCC の拡張を使って overload して関数定義の引数の数の間違いを検出できるようにしています。そして実際にいくつか関数の引数を修正しています。

[7bcfd9189a] 卜部昌平 2019-08-28 09:19:11 UTC

9ef51b0b89a10c8c401cb9f2337e47a25be72cbe などと同様に rb_define_global_function() も渡された関数ポインタの関数定義の引数の数ごとに overload するようにして引数の間違いを検出できるようにしています。またこれで実際に引数の間違いを修正しています。

[0766f67168] 卜部昌平 2019-08-29 01:23:14 UTC

7bcfd9189a6a0b2ad58fed988faaf795a4987893 の影響で rdoc 用コメントの位置がずれてしまったものたちを修正しています。

[0b81e7d6e2] 卜部昌平 2019-08-29 01:40:40 UTC

rb_define_method_id() でも同様に関数ポインタの引数の数ごとに overload して間違いを検出できるようにし、実際にいくつかの関数を修正しています。

[9b429eb3b1] 卜部昌平 2019-08-29 01:45:09 UTC

同じく rb_define_protected_method() も関数ポインタの引数の数の間違いを検出できるようにしています。これは検出された間違いはなかったっぽい。

[bfe5d22f89] 卜部昌平 2019-08-29 01:57:48 UTC

同じく rb_define_private_method() も関数ポインタの引数の数の間違いを検出できるようにしています。そして検出した間違った引数の関数を修正しています。

[3df37259d8] 卜部昌平 2019-08-29 02:47:20 UTC

同じく rb_define_singleton_method() も関数ポインタの引数の数の間違いを検出できるようにしています。そして検出した間違った引数の関数を修正しています。結構いっぱいあるなぁ。

[e4be2fda3d] 卜部昌平 2019-08-29 06:47:33 UTC

ここまでの GCC 拡張を用いたメソッド定義系関数の関数ポインタの型による overload が mingw? 環境でうまく動かないようなので抑制するために Windows 環境では定義したマクロを include/ruby/intern.h および include/ruby/ruby.h #undef しておくようにしています。

[a4a19b114b] Jean Boussier 2019-08-01 18:41:21 UTC

よく知らなかったのですが ObjectSpace::WeakMap のキーや値に Integer とか Symbol (static symbol) のように即値のものは(厳密には finalizable なもので T_NODE も)入れられなかった(入れる必要ないような気もするけど)のをチェックを緩和して受け付けるようにしています。deduplicate に便利ってあるけど、どういうことかあんまりよくわかってない。チケットの例は freeze じゃなくて key に Symbol を入れてるのがミソなのかな。 [ruby-core:94101] [feature #16035]

[b74dd665c0] aycabta 2019-08-29 11:59:29 UTC

標準添付ライブラリ reline の Windows 版でコンソールのサイズを取得するために構造体 CONSOLE_SCREEN_BUFFER_INFO の内容を読み取るために用意する文字列のバッファのサイズを変更しています。元々参照してない位置だけど実際のサイズより大きく取ってたので修正しているようです。

[3a425c7623] aycabta 2019-08-29 12:05:19 UTC

b74dd665c0e9558f355cbe1a625beb444c2a2ab4 と同様に Windows 環境で reline がコンソールのカーソル位置を取得するために参照する構造体メンバーのサイズが間違ってたので修正しています。

[a39b26b594] aycabta 2019-08-29 12:11:53 UTC

標準添付ライブラリ reline で Windows 環境でもウィンドウサイズ変更に追随できるようにしています。