ruby-trunk-changes 2019-09-14

今日は主に keyword splat の通常引数への変換の処理のリファクタリングなどがありました。

[06bbacc086] aycabta 2019-09-13 15:10:34 UTC

6d9e54816f828983bcf383ce6fce287bd3ca05b9 の reline のマルチバイト文字入力対応を revert しています。

[e8fff0ec9c] aycabta 2019-09-13 15:10:45 UTC

同じく reline の入力に io/console の IO#raw を利用するようにしたのを revert しています。

[83ef23bd75] aycabta 2019-09-13 15:11:01 UTC

同じく 805b0a481132938638dbd32830cf5dca3910efb1 の reline で io/console の IO#getch を使うようにしたのを revert して io/console 依存を消しています。ふーむ、依存関係消すのが目的かな?

[70fe473c7d] git 2019-09-13 15:12:12 UTC

version.h の日付更新

[98f919ed47] aycabta 2019-09-13 15:16:08 UTC

標準添付ライブラリ reline の Reline::LineEditor#reset で SIGINT のシグナルハンドラを再設定するところでハンドラから Interrupt 例外を発生させるようにしています。おー、シグナルハンドラは常にメインスレッドで実行されるけどいいのかなと思わなくもないけどコミットログをみるとこれは readline の作法に倣っているようです。あと端末の状態をリセットする処理は消しています。

[24b1b33975] Jeremy Evans 2019-09-13 16:31:13 UTC

C で定義されたメソッドおよび attr_xxx で定義されたメソッドの Method オブジェクトを call で呼び出した時のキーワード引数のフラグがうまく伝播されてないという不具合の修正らしい。

[3cfbfa9628] Jeremy Evans 2019-09-13 23:42:27 UTC

空の Hash による keyword splat の処理のリファクタリング。 kw_splat をただのフラグでなく定数を渡すようにして RB_NO_KEYWORDS、RB_PASS_KEYWORDS、RB_PASS_EMPTY_KEYWORDS、RB_PASS_CALLED_KEYWORDS の4種類(実際に使われてるのは最後の 2種類だけみたいだけど)を使うようにしています。また空の Hash オブジェクトを通常引数の最後に追加する処理を add_empty_keyword() という関数にして 各種 rb_funcall_xxx() 系関数で呼ぶようにまとめています。けどこの add_empty_keyword() で argv にメモリを確保しなおしてるところで解放してないけどこれはリークしないのかな。なんかこれはまずそうな気が。

[b2c29bbab6] git 2019-09-13 23:54:08 UTC

3cfbfa9628435e3b09316a18c2db9e4f250fdd77 の行末の空白除去。

[b78a345bd6] Jeremy Evans 2019-09-14 08:49:33 UTC

新規オブジェクト生成時の initialize メソッド呼び出しとか UnboundMethod#bind_call などのメソッド呼び出し用の関数に kw_splat 引数を追加したり、keyword splat つきのバージョンの関数を新設したりして、呼び元で 3cfbfa9628435e3b09316a18c2db9e4f250fdd77 で定義した kw_splat 用の定数を渡すようにしてキーワード引数の扱いの条件分けを細かく制御しているようです。場合分けがたいへんそうだ。

[39c37acf86] Jeremy Evans 2019-09-14 09:21:37 UTC

3cfbfa9628435e3b09316a18c2db9e4f250fdd77 で ALLOC_N() でメモリ確保して返しっぱなしだったのでメモリリークしていたのを rb_alloc_tmp_buffer2() を使うようにしています。ああー、でもこれはこれで VALUE v がこの関数内のスコープで生きている間しか寿命がないから呼び元で GC が走ると解放されてしまうかもしれないなぁ。マクロにすればいいのかな。

[9699a5c5bc] Samuel Williams 2019-09-14 10:43:51 UTC

NEWS ファイルに Fiber#raise メソッドの追加について追記しています。