ruby-trunk-changes 2019-10-09

今日は標準添付ライブラリ uriURI#query= のチェックの強化や Array#sum で要素が Float だった時の細かな最適化などがありました。

[7909f06212] Jeremy Evans 2019-07-05 21:45:19 UTC

標準添付ライブラリ uriURI#query= で引数に %xx でエンコードされた文字列があったら例外発生させるようにしています。 [ruby-core:69637] [Bug #11275]

[98131f148f] Nobuyoshi Nakada 2019-10-09 00:01:11 UTC

misc/lldb_cruby.py で String オブジェクトの文字列を取り出すのに struct RVALUE に embedding されてる時の取り出しかたが間違ってたのを修正。

[e078352a78] Nobuyoshi Nakada 2019-10-09 00:04:37 UTC

同じく misc/lldb_cruby.py の lldb_inspect 関数で 98131f148f057b1364ae080f99b1efb2dc72002a で修正した string2cstr を使って文字列の内容をサイズも指定して表示するようにしています。

[59cfa2d187] git 2019-10-09 00:08:53 UTC

version.h の日付更新

[2f3b4029da] 卜部昌平 2019-10-07 04:46:24 UTC

internal.h の ruby_sized_xrealloc2() の定義に ruby_xrealloc() を使っていて引数の数が間違ってたのを ruby_xrealloc2() に展開するように修正しています。

[a220410be7] 卜部昌平 2019-10-07 04:16:42 UTC

2f3b4029da1b64ffb989916a8b74e17c366e45b0 の続きかと思いますが ruby_xmalloc()、ruby_xmalloc2()、ruby_xcalloc() などの定義に __attribute__((__malloc__)) をつけて宣言するようにしています。

[7e0ae1698d] 卜部昌平 2019-10-07 07:56:08 UTC

サイズと要素数を掛けてメモリ領域のサイズを計算してメモリ確保するような時にオーバーフローする可能性を考慮するため rb_xmalloc_mul_add_mul() という関数を導入して使うようにしています。いやー徹底しているな。

[a14cc07f2f] 卜部昌平 2019-10-08 07:07:31 UTC

objspace_xrealloc() で再確保後のサイズが 0 の時に 0 (NULL) を返していましたが、実際に objspace_xmalloc0() にサイズ 0 で確保させてみてアドレスがかえってきたらそれを返すようにしています。それも NULL だったらとりあえずサイズを 1 にして確保することにして、なにかしら有効なアドレスを返すようにしています。

[2d001003e4] Watson 2019-10-09 03:25:08 UTC

Array#sum の要素が Float だった時の最適化パスで変数の宣言をループのブロックの外に出すようにしています。こうしたほうが早いとのこと。 C でもこんなの関係あるんだなぁ。 https://github.com/ruby/ruby/pull/1555

[12d05537d7] aycabta 2019-09-18 09:51:02 UTC

標準添付ライブラリ rdoc の gemspec でサポートする ruby のバージョンの記述を 2.4.0 以降に変更しています。

[b439ee1b8f] Pavel Valena 2019-09-25 13:35:56 UTC

lib/net/http/status.rb になぜかあった shebang の行を削除しています。

[d0e30fc955] Yusuke Endoh 2019-10-09 05:03:04 UTC

メソッドの引数の keyword splat の変換や警告出力をまとめている関数 rb_adjust_argv_kw_splat() で引数を一時バッファにコピーする時にサイズ 0 だったら memcpy(3) を呼ばないように修正しています。 Coverity Scan が警告を出すのでそれを回避するためみたいです。

[6f11c3b335] Kazuhiro NISHIYAMA 2019-10-09 08:46:05 UTC

.github/workflow の GitHub Actions の設定ファイルでコミットログに '[ci skip]' が含まれてたらジョブ全体をスキップするという条件を追加しています。ジョブ全体に効く if の機能が GitHub Actions に追加された模様。