ruby-trunk-changes 2020-06-19

今日は Hash#except メソッドの新規追加、Module に Module#prepend を使った時にその Module を既に include しているところにも影響するようにする変更、メソッド引数処理の非互換性修正、ruby 実装での組み込みメソッド実装から C 関数を呼び出すときの builtin 関数呼び出しの記法の変更/追加、拡張ライブラリ sdbm の削除など多くの修正/変更がありました。

[82ca8c7303] Timo Schilling 2019-05-04 13:37:38 UTC

Hash#except というメソッドを新規追加しています。 self から引数に渡された(複数可)キーを削除した新しい Hash オブジェクトを返すようです。無引数で呼べば dup と同様ということですね。 [ruby-core:92538] [Feature #15822]

[50c13eb718] Nobuyoshi Nakada 2020-06-18 14:00:59 UTC

50c13eb718d961c333ac832e734dae21ca7a8330 で追加した Hash#except について NEWS に追記。ついでに ENV.except も自動的に追加されるのでそれも NEWS にエントリを追加しています。 [ruby-core:92538] [Feature #15822]

[750203c514] Yusuke Endoh 2020-06-18 14:42:02 UTC

e698bf1a7f06452c9509f33e865cc9797dde15b9 の修正以降の標準添付ライブラリ webrick のファイル名の Encoding まわりの修正やテストの対応の続きで、WEBrick::HTTPServlet::DefaultFileHandler でファイルパスを force_encoding で UTF-8 にして保持しておくようにしています。うーんなるほど? (あまりうまく納得できてない)

[41582d5866] Jeremy Evans 2020-06-03 19:14:49 UTC

ある Module を include した後でその Module に別の Module を prepend した時に、その前に include しておいた Class/Module の ancestors に後から prepend した Module は反映されない、というのを修正しています。このチケット見覚えがありますね。長らく諦めてた(忘れられてた?)ようですが Module#prepend の実装に prepend 先が Module だったら対応する全 IClass にも prepend 処理を伝播させるようにして修正(?) しています。 Module#include のほうは 3556a834a2847e52162d1d3302d4c64390df1694 で修正してたのでその修正漏れという形のようですね。 [ruby-core:61117] [Bug #9573]

[6439c939db] git 2020-06-18 15:18:51 UTC

version.h の日付更新

[aae8223c70] Jeremy Evans 2020-05-28 21:59:11 UTC

キーワード引数の分離にからんで rest 引数に渡す受け取った配列ブロック引数があったら dup するようにしています。ブロック引数を渡すところでその配列を pop した場合、実際に渡される配列はその pop される前のものになってたのが、2.7 の不要な dup を抑制する変更で(そっちのほうが自然ではあるような気もしますが) pop 後のものが渡されるように変化してたのを、元の挙動に戻すためのようです。うーむ。 [ruby-core:96769] [Bug #16500] [ruby-core:96798] [Bug #16504]

[95dc9c07f3] Jeremy Evans 2020-06-11 01:53:25 UTC

900e83b50115afda3f79712310e4cb95e4508972 でクラス変数の子クラスでの上書きを警告からエラーに変更したのですが、この時警告を出す処理と同じ箇所で例外発生させるようにしてたので、$VERBOSE=true じゃないと例外が発生しないようになっちゃってたようです。なので常に例外を発生させるようにしています。 [ruby-core:85749] [Bug #14541]

[b6d6b89615] Jeremy Evans 2020-06-01 22:54:47 UTC

Refinements で freeze した Class/Module のメソッドを上書きしようとした時に FrozenError が発生するのを修正しています。 [ruby-core:71391] [Bug #11669]

[c0591b8477] Jeremy Evans 2020-06-18 15:47:02 UTC

NEWS にメソッドの引数委譲のための "..." の前後に通常引数が追加できるようになったことや $SAFE 関係の C API の削除、クラス変数の上書きがエラーになったこと、Kernel#clone の freeze キーワード引数追加、Kernel#lambda がブロック引数を受けると警告するようにしたこと、41582d5866ae34c57094f70f95c3d31f4a1fa4ff の Module#prepend も prepend 先の Module を既に include しているところにも影響するようにした修正などについて追記しています。

[26c1cf6a60] Yusuke Endoh 2020-06-18 15:53:33 UTC

標準添付ライブラリ webrick のヘッダへの改行コード混入による攻撃への耐性のテストで対象の文字列が短かすぎて偶然失敗することがあった(ホスト名に含まれてしまった)ようなので、もっと長くて偶然一致しないような文字列を使うようにしています。

[42b4234ba4] Kazuhiro NISHIYAMA 2020-06-18 15:58:50 UTC

c0591b8477edfa59bba566acbb8e0550fa31caff の NEWS.md への追記に対応するチケットへのリンクを追加。

[adbdf11f94] Jean Boussier 2020-06-18 14:01:36 UTC

標準添付ライブラリ open3 の 5429deb075beb9a2b67adae269bbac16325876d1 の修正でブロックが渡されない時にも pipe を close してしまう regression があったのを修正しています。

[343ad9eff5] Hiroshi SHIBATA 2020-06-18 12:06:20 UTC

拡張ライブラリ sdbm を削除しています。おお、ついに。

[16854c95c2] Hiroshi SHIBATA 2020-06-18 12:08:11 UTC

343ad9eff5b8e4c776c1bf193fc125f9ba1cd612 の拡張ライブラリ sdbm の削除に追随してテストやツール類のエントリも削除しています。

[70b8bdbc90] Hiroshi SHIBATA 2020-06-18 12:09:07 UTC

343ad9eff5b8e4c776c1bf193fc125f9ba1cd612 の拡張ライブラリ sdbm の削除に追随して LEGAL やドキュメント類からの言及も削除しています。

[e92a9399cc] Hiroshi SHIBATA 2020-06-18 12:11:19 UTC

NEWS に 343ad9eff5b8e4c776c1bf193fc125f9ba1cd612 の拡張ライブラリ sdbm 削除について追記しています。

[d76296d8bb] Hiroshi SHIBATA 2020-06-18 22:40:44 UTC

70b8bdbc90cb39938e1b5bae9f1abc2af91ba58b で意図せず LEGAL の行末の空白を削除していたのを戻しています。

[946fdeaddc] Yusuke Endoh 2020-06-19 01:45:13 UTC

b6d6b896159390014020caac69fa465029af5460 で追加したテストでの警告抑制のため一時的に $VERBOSE に nil をセットするようにしています。

[0d38a51ec4] Nobuyoshi Nakada 2020-06-19 03:07:05 UTC

template/exts.mk.tmpl で生成する exts.mk の distclean, realclean のターゲットで exts.mk 自体の削除も追加しています。

[1e7c0ccb0d] Nobuyoshi Nakada 2020-06-19 05:02:46 UTC

template/configure-ext.mk.tmpl および template/exts.mk.tmpl で bundled gems の展開場所が gems から .bundled/gems に移動してたのに追随しています。

[aa21a775a6] Nobuyoshi Nakada 2020-06-19 05:42:26 UTC

template/configure-ext.mk.tmpl で make configure 実行するのを extconf.rb が存在するかどうかで判定するようにしています。

[f3e081c6b6] Nobuyoshi Nakada 2020-06-19 06:35:14 UTC

拡張ライブラリのビルドプロセスまわりの変更で ext/configure-ext.mk に含まれてない拡張ライブラリをビルドしないようにしています。 sdbm の削除で判明したのを修正してるっていう感じかな。

[c8703a17ce] Nobuyoshi Nakada 2020-05-18 01:09:28 UTC

組み込みメソッドの ruby 実装から呼び出す builtin 関数の呼びかたとして receiver を __builtin として __builtin.func のように呼び出すことで関数 func の呼び出しにする記法のサポートを追加しています。なるほどー。 [ruby-core:95344] [Feature #16254]

[d863f4bccd] Nobuyoshi Nakada 2020-05-18 01:43:26 UTC

c8703a17ceedae4a72f83c962a4d098731a85dda で追加した __builtin.func 記法を利用するように既存の ruby 実装メソッド定義を書き換えています。

[49f0fd21e4] Nobuyoshi Nakada 2020-05-31 06:51:40 UTC

さらに __builtin.func ではなく Primitive.func という定数を receiver にしたかのような記法でも C 関数呼び出しにマッピングするようにしています。 [ruby-core:95344] [Feature #16254]

[63aadc237f] Nobuyoshi Nakada 2020-05-31 06:52:32 UTC

49f0fd21e468e567dc122547d516eef42c0ce0d3 で導入した Primitive.func を使うように d863f4bccdd1b5566fbdbe87af766e54b995f8af で __builtin.func に変更した ruby 実装を再度変更しています。__builtin_func と Primitive.func と __builtin.func の使い分けはどういう感じなんだろう。というか今は全て Primitive.func に統一されたみたいだけど。 [ruby-core:95344] [Feature #16254]

[daa9dcd57e] Kazuhiro NISHIYAMA 2020-06-19 11:12:49 UTC

標準添付ライブラリ webrickWEBrick::HTTPServlet::DefaultFileHandler で指定されたファイルパスが存在しない時の例外メッセージの末尾にピリオドを追加しています。

[6fe1919486] Kazuhiro NISHIYAMA 2020-06-19 11:06:26 UTC

標準添付ライブラリ webrickWEBrick::HTTPServlet::DefaultFileHandler でファイルパスを filesystem encoding ではなく root ディレクトリを指定するのに使った文字列の Encoding にそろえるように encode するように変更しています。