ruby-trunk-changes 2019-10-27

今日は主にドキュメントの追記や修正がありました。

[f6f1377a4e] zverok 2019-10-26 06:34:14 UTC

標準添付ライブラリ erb の rdoc 用コメントの追記。

[2746fd5d50] zverok 2019-10-26 07:03:24 UTC

拡張ライブラリ stringio の rdoc 用コメントの追記やマークアップ修正。

[4fe06f4667] zverok 2019-10-26 08:04:24 UTC

標準添付ライブラリ irb の rdoc 用コメントの追記や :nodoc: タグ追加。

[de147bb721] zverok 2019-10-26 08:15:18 UTC

標準添付ライブラリ net/ftp の rdoc 用コメントのマークアップ修正。

[a24bff461d] zverok 2019-10-26 08:29:43 UTC

標準添付ライブラリ open-uri の rdoc 用コメントのサンプルで Kernel#open ではなく推奨されている URI.open を使うように変更しています。あー、確かに。標準添付ライブラリとかも URI.open 使うようにしないといけませんね。

[f93cb6904c] zverok 2019-10-26 08:46:54 UTC

標準添付ライブラリ optparse の rdoc 用コメントの追記。

[6221248294] zverok 2019-10-26 09:21:33 UTC

標準添付ライブラリ net/http の rdoc 用コメントの追記や typo 修正。

[9c5a962354] git 2019-10-26 17:24:50 UTC

version.h の日付更新

[3eb0d50c0b] Benoit Daloze 2019-10-26 18:52:59 UTC

spec/mspec の upstream からのマージ。

[664e96b1de] Benoit Daloze 2019-10-26 18:53:01 UTC

spec/ruby の upstream からのマージ。

[4fe89e0821] Benoit Daloze 2019-10-26 20:33:43 UTC

NEWS ファイルの Core Class の変更セクションで Regexp と String が一緒にされてたのを分離。また String#match や #match? が nil を渡すと TypeError を発生させるようになったのを追記しています。 [Feature #13083]

[aba23d83f2] Jeremy Evans 2019-10-27 01:41:35 UTC

Fiber#transfer の rdoc 用コメントに transfer して resume が呼べなくなるのは呼ばれた(receiver になった) Fiber であることを明示するようにしています。なるほど元のドキュメントを読むと「呼んだ時に current だった Fiber」のように読めますね今みると…というか逆には読めない。

[417369e0cd] zverok 2019-10-26 11:02:59 UTC

Enumerator.produce メソッドの rdoc 用コメントのサンプル追記と NEWS ファイルのエントリ追記。

[85d966af21] Kazuhiro NISHIYAMA 2019-10-27 00:59:56 UTC

.github/workflows/ubuntu.yml に ubuntu-16.04 でのビルドも追加しています。

ruby-trunk-changes 2019-10-26

今日は Comparable#clamp に渡す Range に beginless/endless の Range も受け付けるようにする変更などがありました。

[42c652d195] Nobuyoshi Nakada 2019-10-25 13:09:38 UTC

929d5fd3b99c1413f737ff16cf0680698036e60f で Comparable#clamp に Range を渡せるようにした時 beginless や endless の range や、終端を含まない Range は禁止していましたが受け付けるようにして、終端を含まない Range で receiver の値が終端より大きい時だけ丸めるべき値が自明でないので ArgumentError とするようにしています。 [ruby-core:87241] [Feature #14784]

[84b69c520e] Nobuyoshi Nakada 2019-10-25 17:54:29 UTC

46f175ed5c8560b3c9da5ab7b4fa73287f1eb1c5 で OPT_SUPPORT_JOKE を有効にするのに sedvm_opts.h を編集するのをやめたのを revert しています。 tool/ruby_vmvm_opts.h のマクロ定義を参照するからとのこと。

[41d5294506] git 2019-10-25 17:56:12 UTC

version.h の日付更新

[0c579b0a97] Jeremy Evans 2019-10-18 19:02:38 UTC

拡張ライブラリ dbm で文字列の taint する処理をやめています。 2.7 から deprecated になるので。

[b25ab3832f] Hiroshi SHIBATA 2019-08-12 13:27:13 UTC

標準添付ライブラリ forwardable の gemspec ファイルで参照するバージョンの定数を lib/forwardable/version.rb に切り出しています。

[b15e0983f7] Hiroshi SHIBATA 2019-08-12 13:28:03 UTC

同じく forwardable の gemspec ファイルの spec.files の内容を更新しています。

[d00551a7bb] Jeremy Evans 2019-08-15 22:21:55 UTC

標準添付ライブラリ forwardable で def_delegators で __send__ メソッドと __id__ メソッドを除外するのに文字列との比較のみしていたので Symbol として渡したらチェックが漏れていたのを修正しています。 https://github.com/ruby/forwardable/pull/4 [ruby-dev:47689] [Bug #8855]

[0098977053] Jeremy Evans 2019-08-21 14:33:28 UTC

d00551a7bb1d5dbabb0a8c95d6bd2d9d4e86934a の再修正。 __id__ と __send__ のチェックを1つの正規表現のマッチにまとめています。

[f625a4be3c] Kazuhiro NISHIYAMA 2019-10-10 02:33:44 UTC

d00551a7bb1d5dbabb0a8c95d6bd2d9d4e86934a で追加したテストが古い ruby で attr_reader が private メソッドのためエラーになってたので __send__ を利用して起動するように対策しています。

[f14b754151] Hiroshi SHIBATA 2019-08-12 13:16:21 UTC

forwardable の gemspec ファイルから development dependency の記述を削除しています。

[cf9344131c] Nobuyoshi Nakada 2019-10-25 17:15:18 UTC

42c652d1959564bc5fb5147c8c343d8c0589583c の Comparable#clamp の引数に渡す Range が beginless/endless でも終端を含まない Range でも受け付けるようにした変更の追加で、終端を含まない Range の場合は endless range でない限りは範囲にかかわらず ArgumentError を発生させるように変更しています。 [ruby-core:87241] [Feature #14784]

[bddb31bb37] zverok 2019-10-24 16:35:36 UTC

String, Process, Proc のメソッドや Object#enum_for などの rdoc 用コメントや doc/syntax.rdoc など doc/ 配下のドキュメントの追記や修正。

[5aacb30455] 卜部昌平 2019-10-26 06:33:16 UTC

356e203a3acd4d3d20ba12f956fd22e17b6363e9 のメソッド呼び出し関連の関数の引数を struct rb_call_data にまとめる変更で引数にインラインでまとめて書いてたところを一旦変数に構造体を作ってそのポインタを渡すように変更しています。

[d70fdeedf0] Nobuyoshi Nakada 2019-10-25 06:03:18 UTC

標準添付ライブラリ rdoc でコメント内のメソッドのリンクを (#meth) のようにかっこで括られたものも処理するようにしています。

[ad9c713728] aycabta 2019-10-26 07:26:48 UTC

d70fdeedf0a2fc942d91b82f564b78a54ff48d7c の続きで rdoc でクロスリファレンスのためのリンクを生成する正規表現の定数 CROSSREF_REGEXP に加えて ALL_CROSSREF_REGEXP という定数の正規表現でも同じくかっこでくくられたメソッド名の参照をリンクにするようにしています。 --hyperlink-all というオプションをつけた時にこちらが関係するらしい。

ruby-trunk-changes 2019-10-25

今日は ruby2_keywords の修正や、VM 命令へのコンパイル時のオプションで tailcall optimization を有効にしても効かなくなっていた不具合の修正などがありました。

[8439caab0a] Nobuyoshi Nakada 2019-10-24 14:37:19 UTC

misc/lldb_cruby.py の rp での表示の整形。

[1fb4584825] Jeremy Evans 2019-10-21 20:08:22 UTC

標準添付の irbIRB::Context.new の第3引数 output_method を削除しています。 使ってないため、とのこと。 [ruby-core:62834] [Bug #9876]

[6279e45cde] Nobuyoshi Nakada 2019-10-24 15:06:43 UTC

62d43828770211470bcacb9e943876f981b5a1b4 の m(...) で任意の引数を委譲する記法は lambda の仮引数には使えないように変更しています。 [ruby-core:95338] [Feature #16253]

[2ea698969e] git 2019-10-24 15:16:26 UTC

version.h の日付更新

[8d0c5eb805] Nobuyoshi Nakada 2019-10-24 15:54:24 UTC

test/ruby/test_syntax.rb で instance_eval を使ってスクリプト片を実行する時に __FILE__ と __LINE__ をファイル名/行番号として渡すようにしています。

[ed65e2d5ae] Nobuyoshi Nakada 2019-10-24 15:56:27 UTC

test/ruby/test_syntax.rb の m(...) のテストにブロックを渡さない呼び出しのケースも追加しています。

[4b3e007e07] Nobuyoshi Nakada 2019-10-24 16:03:08 UTC

同じく m(...) の記法のテストでキーワード引数がないケースも追加しています。

[b609bdeb53] Nobuyoshi Nakada 2019-10-24 16:16:05 UTC

m(...) 記法での委譲しているメソッドの引数の最期に Hash を渡すとそれが keyword parameter になったりまた通常引数として変換されたりと警告がたくさん出るので ruby2_keywords つきで宣言されたかのようにマークするようにしています。

[b86af95c5b] Nobuyoshi Nakada 2019-10-24 17:04:14 UTC

.github/workflows/windows.yml の vcpkg でのパッケージインストールのリトライのためにコマンドを || で連結して制御してたのをやめています。 PowerShell ではこれが動かないらしいので。

[967b924aa0] Nobuyoshi Nakada 2019-10-24 17:08:03 UTC

同じく .github/workflows/windows.yml でコマンドライン環境変数を %var% のように展開する記法を使ってましたがこれも PowerShell で動かないそうで直接値を展開して書いておくようにしています。

[826bbf9837] Nobuyoshi Nakada 2019-10-24 17:24:00 UTC

同様に .github/workflows/windows.yml でコマンドを && で連結してたところを複数行の run にしています。複数行はいけるのか。

[b7c8874b62] Nobuyoshi Nakada 2019-10-24 17:24:42 UTC

.github/workflows/windows.yml で openssl のインストールを vcpkg から chocolatey というパッケージマネージャ経由に変更しています。 chocolatey のほうが新しいバージョンの openssl が入るからみたいです。

[e8f90e7397] Koichi Sasada 2019-10-24 19:01:02 UTC

Method#inspect メソッドで klass に T_ICLASS のオブジェクトが入ってた時(どうしてそんなことになってるのかはささださんにもわからないっぽい)にクラス階層をさらに辿っておくようにしています。

[5fe8943fda] Jeremy Evans 2019-10-24 16:35:02 UTC

拡張ライブラリ date の Date.new に 2引数だけ渡された時に参照する変数名を間違えてて異常終了するおそれがあったのを修正しています。

[8c59b9250c] Jeremy Evans 2019-10-24 16:35:48 UTC

70ca56dedaa7ced969269ed70112ebb8da653ec2 で rubyspec の date のテストを一部 2.7 で実行しないようにしてましたが、新しい仕様に合わせて 2.7以降向けのテストを追加しています。

[d6a2507e49] Jeremy Evans 2019-10-24 16:47:30 UTC

vm_insnhelper.c の CALLER_SETUP_ARG() で *args で受け取った引数の最期のオブジェクトが Hash でさらに ruby2_keywords 用のフラグが立ってた時(ruby2_keywords つきのメソッドから委譲されたもの)、それを dup してフラグのない Hash を呼び出した先には渡すようにしています。

[58b363bf0d] Koichi Sasada 2019-10-24 19:37:46 UTC

RubyVM::InstructionSequence#to_binary でダンプする時に ISeq のメソッドの引数のフラグに追加した ruby2_keywords 用のものも対応するようにしています。

[4ff2c58f91] wanabe 2019-10-24 19:40:39 UTC

f62f90367fc3bce6714e7c34cbd040e14e43fe07 の tailcall optimization の復活のリトライ。本体の修正は前のままでテストコードの修正で実際に再帰版の fact を呼んでみて SystemStackError が起きないというので確認する方法にしています。 https://github.com/ruby/ruby/pull/2529

[5040eea959] Nobuyoshi Nakada 2019-10-24 23:53:03 UTC

.github/workflows/windows.yml で chocolatey でパッケージインストールする時に --no-progress オプションをつけてプログレス表示を抑制しています。

[fb15e79403] Jeremy Evans 2019-10-24 19:36:49 UTC

6081ddd6e6f2297862b3c7e898d28a76b8f9240b で Kernel#ruby2_keywords で修飾したメソッドから別のメソッドに委譲した時に keyword 引数の Hash につくフラグを落とすため、そこからさらに別のメソッドに委譲した時に dup する変更で、呼び先がまた ruby2_keywords で修飾されている時に空の Hash を消す処理を抑制するようにしています。

[09936d1d74] Hiroshi SHIBATA 2019-08-03 09:56:41 UTC

標準添付ライブラリ tracer の gemspec ファイルの development dependency を削除しています。

[7bcc639c72] aycabta 2019-10-25 01:07:17 UTC

6df6611ce77d1bb7d50375a1399e1d5101a3a616 で lib/reline/windows.rb の Reline::Windows.getc の変数 alt を meta に改名したのに一箇所 alt のままだったところがあったので追随して変更しています。

[a7ec88ad61] Kazuhiro NISHIYAMA 2019-10-25 01:45:46 UTC

.github/workflows/windows.yml の run を持つステップに shell: cmd という項目を追加しています。 Windows 版で cmd.exe を使ってコマンド実行させるための設定っぽい。 あー今日の GitHub Actions の Windows 環境向け変更は、デフォルトのシェルが Power Shell に変更になったからだったようですね。参考 URL: https://github.blog/changelog/2019-10-17-github-actions-default-shell-on-windows-runners-is-changing-to-powershell/

[356e203a3a] 卜部昌平 2019-10-24 09:08:52 UTC

89e7997622038f82115f34dbb4ea382e02bed163 の struct rb_call_info と struct rb_call_cache を両方まとめた struct rb_call_data の導入をさらに押し進めて、構造体宣言を internal.h に移動して、両方を受け取る関数は常に rb_call_data にまとめたものを渡すようにリファクタリングしています。

[f3f1d89d46] 卜部昌平 2019-10-25 07:44:15 UTC

GC のテストで GC.stress = true にしてあるとうまくいかない GC.stat 系のテストなどを GC.stress だったら skip するようにしています。

[88135845f1] Koichi Sasada 2019-10-25 08:58:54 UTC

vm_core.h で定義している inline 関数 def_iseq_ptr() で VM_CHECK_MODE が1以上の時だけ実行している rb_method_definition_t::type のチェックを一時的に常に実行するようにしています。 CI でのエラーの調査のためのようです。

ruby-trunk-changes 2019-10-24

今日はメソッド呼び出しに使う構造体のメモリ確保の方針変更によるパフォーマンス改善のほか date, fiddle, webrick などのライブラリの更新がありました。

[039faecdb8] aycabta 2019-10-23 14:58:59 UTC

lib/readline.rb で readline.so が require できない時の fallback で require "reline" する時に 既に定数 Reline が定義済みだったら require しないようにしています。require は重複しても false を返すだけなのでここまでしなくてもいい気がしますが、stub で Reline を定義して抑制したいってことかな。

[659f7c0aeb] git 2019-10-23 15:00:59 UTC

version.h の日付更新

[7bc787fa06] aycabta 2019-10-23 15:12:52 UTC

標準添付ライブラリ reline の Windows 環境での Ctrl-Enter で改行を入力する処理を追加。

[7391db4ab3] Nobuyoshi Nakada 2019-10-23 16:18:19 UTC

bundled gems の minitest のバージョンを 5.12.2 に更新しています。

[f1d4216bd9] Nobuyoshi Nakada 2019-10-23 16:42:31 UTC

make refresh-gems というターゲットを追加して bundled gems の更新と展開を行うようにしています。こういうのまだなかったのか。

[6df6611ce7] aycabta 2019-10-23 17:45:15 UTC

標準添付ライブラリ reline で Windows 環境で左側の Alt キーのみを meta キーとして扱うようにしているそうです。German のキーボード配列では右の Alt を Shift として扱うという慣習? があるらしい。いろいろあるんですねー。

[df91896f32] BurdetteLamar 2019-10-20 17:28:22 UTC

ENV#[] と ENV#fetch の rdoc 用コメントの説明を追加しています。 fetch のデフォルト値って nil か文字列じゃなくてもいいんだな……。

[f26f0f4109] Yusuke Endoh 2019-10-23 23:04:45 UTC

df91896f32fdf78c26fc38466927c0bd87444185 の Hash#fetch の rdoc 用コメントで非 ASCII 文字によるクオート記号がまぎれこんでたのを修正しています。

[281f754126] Yusuke Endoh 2019-10-23 23:30:33 UTC

include/ruby/backward/cxxanyargs.hpp の rb_rescue2() が可変長引数を扱う va_end() の前に return してたのを修正しています。 Coverity Scan による検出とのこと。

[2791989a31] Hiroshi SHIBATA 2019-10-24 07:11:01 UTC

tool/sync_default_gems.rb で e2mmap の gemspec ファイルをコピーする先を変更しています。

[ff953a003e] Hiroshi SHIBATA 2019-10-24 07:12:34 UTC

同じく default gem の e2mmap の gemspec ファイルで version.rb を require するパスを修正しています。

[65e8267938] Hiroshi SHIBATA 2019-10-24 07:17:17 UTC

が ff953a003e03f5f070112ececefab4c07ff4cb0e は revert しています。 require_relative を使ってるので gemspec を移動したので require するパスはそのままでよかった。

[4c3e3b8028] Koichi Sasada 2019-10-24 06:03:26 UTC

fa8ac91e957a076f6df1adaecad7896817138009 の Fiber#transfer した時に呼び元の Fiber に transfered のフラグを立てて resume 禁止するよう変更してたのを revert しています。やはりこれはささださんの意図の通りの変更ではなかったか。

[38e931fa2c] Koichi Sasada 2019-10-24 07:28:15 UTC

Fiber#to_s で文字列化した時に Fiber#transfer で起動されたことのある Fiberは "transfered" という文字列を状態のところに追加するようにしています。

[89e7997622] Alan Wu 2019-07-31 01:36:05 UTC

メソッド呼び出しでだいたい一緒に使われる struct rb_call_info と struct rb_call_cache を struct rb_call_data という1つの構造体に埋め込んでまとめて確保することで、メモリ消費量の削減とアクセスのローカリティの改善によるパフォーマンス向上を狙っています。なのですがこの実現で VM 命令の attribute を sp_inc から comptime_sp_inc という attribute を分離する必要ができてその関連で VMソースコード生成や MJIT 用のテンプレートにも変更が行なわれています。なぜこれ分けないといけなくなったのかはよくわかってないですが。 [ruby-core:95373] [Misc #16258]

[f1de438380] Alan Wu 2019-10-21 16:56:44 UTC

89e7997622038f82115f34dbb4ea382e02bed163 で追加した compile.c の verify_call_cache() というデバッグ用関数は処理の前に関数の先頭で return するのでなにもしない状態でしたが CPDEBUG マクロが真の時のみチェックを行うように書きなおしています。

[9eb798a3f1] Jeremy Evans 2019-07-17 21:53:55 UTC

拡張ライブラリ date の Date#to_time でユリウス暦の Date オブジェクトを変換すると日付がずれて元に戻せなくなるという不具合を修正しているらしい。暦はむずかしい。 [ruby-core:55065] [Bug #8428]

[4e40ca301c] Jeremy Evans 2019-07-24 15:03:27 UTC

拡張ライブラリ date で Date.new の引数のチェックが不足してて NoMethodError が発生したり TypeError が発生したりとケースバイケースで変わるようになっていたので、チェックを追加して常に TypeError が発生するようにしています。 [ruby-core:72641] [Bug #11935] [ruby-core:89777] [Misc #15298]

[fc0e8d00bc] Jeremy Evans 2019-08-25 17:01:13 UTC

拡張ライブラリ date で Date を Range の終点に持ち、もう一方に -Float::INFINITY を持つようなものが作れなかった不具合を修正しています。 Range が <=> メソッドを呼んで始点終点のチェックをする時に -Float::INFINITY が infinite? メソッドを呼んでチェックするみたいで、Date#infinite? メソッドを追加するだけのシンプルな修正です。 [ruby-core:78220] [Bug #12961]

[2e37c1960a] Jeremy Evans 2019-10-18 18:56:05 UTC

拡張ライブラリ date に rb_check_trusted() での taint チェックや OBJ_INFECT() での taint flag伝播の処理を削っています。 2.7 で taint は deprecated になるそうなのでそれに先んじて削除。date は default gem ですが古いバージョンでも $SAFE がサポートされなくなってきているので削っても大きな影響はないということで。

[913807bd6c] zverok 2019-08-11 10:50:20 UTC

拡張ライブラリ date の Date#inspect および DateTime#inspect の表示をシンプルにしています。暦を意味するなにか? がくっついてたけど、まあ確かに読みかたはわからないんですよねー。とはいえこんなにサラっと変えて大丈夫だろうか…。

[9d3a4ab05b] zverok 2019-08-11 10:56:41 UTC

913807bd6ce98d3d362d27caef4f5e2aef0e5d79 の Date#inspect, DateTime#inspect の表示の変更に合わせて rdoc 用コメントも修正しています。

[487d96c6b1] Hiroshi SHIBATA 2019-08-03 11:37:51 UTC

default gem date の gemspec ファイルから development dependency の rake-compiler を削除しています。

[70ca56deda] Hiroshi SHIBATA 2019-10-24 09:50:57 UTC

rubyspec の Date のテストで変更により失敗するようになってしまったものをとりあえず 2.7 以前でのみテストするように ruby_version_is による guard を追加しています。

[7733db665a] Aaron Patterson 2019-01-10 00:22:26 UTC

拡張ライブラリ fiddle の Fiddle::Function.new で第1引数に渡された関数に対応するオブジェクトが GC で回収されてしまわないようにインスタンス変数 @closure にセットしておくようにしています。 [Bug #13286]

[5ebb0d50f6] Kenta Murata 2019-05-27 09:53:33 UTC

拡張ライブラリ fiddle のテストで環境変数 RUBYOPT や RUBYLIB の影響を受けないようにこれらをクリアしてからテスト実行するようにしています。

[4d844cbaed] Sutou Kouhei 2019-05-27 21:04:19 UTC

5ebb0d50f6560b35bc03deb79341a115c5f782ee の fiddle のテストの修正のリファクタリング。親プロセスで環境変数を一時的に書き換えるのでなく assert_in_out_err の引数で子プロセスに渡す環境変数の指定をするようにしています。

[30d46966a9] Nobuyoshi Nakada 2019-06-13 07:08:22 UTC

拡張ライブラリ fiddle のテスト用ヘルパーでポインタのサイズを得るのに RbConfig::SIZEOF['void*'] を参照するようにリファクタリングしています。

[ce6caade7c] Vít Ondruch 2019-07-10 21:19:32 UTC

拡張ライブラリ fiddle で ffi_closure_free() のかわりに munmap(3) を直接呼ぶ実装があったのですが、どうやらこれは昔の libffi で不具合があったバージョンがあったようで、それを回避するためにやっていた extconf.rb でのチェックや preprocessor でのチェックなど不要になったので削って ffi_closure_free() を常に利用するようにしています。

[b809784817] Jeremy Evans 2019-10-19 23:10:47 UTC

拡張ライブラリ fiddle でも taint flag のチェックや伝播などの実装を削っています。

[f0452574b1] thekuwayama 2019-07-05 14:25:47 UTC

標準添付ライブラリ webrick のテストで Net::HTTP#write_timeout= は 2.6.0 以降でサポートされるようになったので RUBY_VERSION をチェックして代入するようにしています。 webrick も default gems なので古い ruby でもテストできるようにしないといけないため。

[8189d496df] Jeremy Evans 2019-07-08 02:17:10 UTC

標準添付ライブラリ webrick から WEBrick::HTTPResponse#to_s というメソッド定義を削除しています。 この中でなぜか send_response を呼んでその結果というか書き込まれたレスポンスを返すようになっていたので。うへー。 [ruby-core:67428] [Bug #10715]

[84ed4c3d59] Hiroshi SHIBATA 2019-10-04 13:51:39 UTC

webrick のバージョンを 1.5.0 に更新しています。

[37c266aa57] Jeremy Evans 2019-08-06 22:48:18 UTC

標準添付ライブラリ webrick で HTTP header の値の前後の空白を削る処理のなかで連続する空白を空白1つにまとめるという処理もしていましたが、これは標準では許されてない挙動だったので削っています。 [ruby-core:47521] [Bug #7021]

[c28d50a753] Jeremy Evans 2019-08-27 05:22:00 UTC

標準添付ライブラリ webrickWEBrick::HTTPRequest で X-Forwarded-Host ヘッダを処理しているところでホスト部IPv6 のアドレスだった場合を考慮してポート番号との分離を修正しています。

[f126d80b1e] Jeremy Evans 2019-10-18 18:40:36 UTC

標準添付ライブラリ webrick でも tainted? をチェックしていたところを削っています。ただ RUBY_VERSION が 2.7 より古い場合は untaint の呼び出しは残しています。

[efd641ffab] Hiroshi SHIBATA 2019-10-24 10:52:54 UTC

ce6caade7c57a505f73086ccd7b33c14f7715f22 で fiddle で常に ffi_prep_closure() を使うようにしたのを revert しています。 CI には古い環境もあるからそれが壊れたかな?

[de5ee47c3d] Hiroshi SHIBATA 2019-10-24 10:53:26 UTC

fiddle のテストの変更 4d844cbaed518743776594fa5ae33b86fe176ad1 を revert。この変更自体というよりその元になった 5ebb0d50f6560b35bc03deb79341a115c5f782ee の revert のため。

[dc44ab2913] Hiroshi SHIBATA 2019-10-24 10:53:33 UTC

ということで fiddle のテストで RUBYOPT と RUBYLIB をクリアする 5ebb0d50f6560b35bc03deb79341a115c5f782ee を revert。これも CI のエラー対応かなぁ。

ruby-trunk-changes 2019-10-23

今日は C++ の拡張ライブラリでのメソッドを定義する関数の引数の厳密なチェックをリリース版では無効にするようにする変更などがありました。
また昨日 2.7.0-preview2 がリリースされました。あと2ヶ月ほどで 2.7.0 のリリースですね。
https://www.ruby-lang.org/ja/news/2019/10/22/ruby-2-7-0-preview2-released/

[501b517dfb] Yusuke Endoh 2019-10-22 11:06:07 UTC

NEWS ファイルの CGI.escapeHTML の高速化についてのエントリに pull request の URL を追記しています。

[ed3333f873] Nobuyoshi Nakada 2019-10-22 12:05:52 UTC

tool/lib/vcs.rb の ChangeLog 生成のためのコミット範囲の取得のための from が nil だった場合の考慮が漏れてたので追加しています。

[aec0a293a4] "NARUSE, Yui" 2019-10-22 12:12:50 UTC

bin/format-release というスクリプトを追加して tool/make-snapshot の出力を元に www.ruby-lang.org のパッケージのチェックサムやサイズなどの情報の YAML ファイルを変更するパッチを生成するようにしています。

[04075305d3] Nobuyoshi Nakada 2019-10-22 12:33:11 UTC

.gitignore に /ext/-test-/cxxanyargs/failure.failed を追加しています。

[d736511e42] "NARUSE, Yui" 2019-10-22 12:37:49 UTC

aec0a293a4f9d2f8f8d085f57023ec3ba4bf6525 で追加した bin/format-release は削除して tool/format-release に統合するようにしています。あれ、format-release でも既に diffy 使ってたか。

[99ca5705a2] "NARUSE, Yui" 2019-10-22 13:15:52 UTC

tool/release.sh を AWS S3 へのアップロードするスクリプトとして書き直しています。あー、release.sh ってリポジトリにあるスクリプトが元だったのか…。すっかり忘れてました。

[8390057d1e] Nobuyoshi Nakada 2019-10-22 13:49:41 UTC

c8542ab484efb6ee0009cd081789d9a68f482483 で追加した Array#intersection のベンチマークを追加しています。 [ruby-core:94855] [Feature #16155]

[51bab75f49] Nobuyoshi Nakada 2019-10-22 15:19:25 UTC

Kernel#ruby2_keywords は ruby2_keywords.gem という gem でも提供されるようになったのでその互換性? のために rb_provide() で ruby2_keywords.rb をロード済みにするようにしています。

[1a80ee4573] git 2019-10-22 15:42:44 UTC

version.h の日付更新

[801a11d0ab] Nobuyoshi Nakada 2019-10-22 16:05:14 UTC

bootstraptest/ 配下のテストで CPDEBUG を真にしてビルドした時に微妙にメッセージなどが変わってこけるテストの修正。

[afab8122c3] Nobuyoshi Nakada 2019-10-22 17:04:36 UTC

append_compile_error() にて CPDEBUG が真の時に Qnil や Qfalse になる可能性があった? みたいでその場合にかわりに rb_eSyntaxError を使うようにする fallback の分岐を追加しています。

[601f1fb456] Nobuyoshi Nakada 2019-10-22 17:05:28 UTC

test/unit の assert_syntax_error や assert_valid_syntax という assertion から使う syntax_check というメソッドで SyntaxError 以外の例外は捕捉して無視するようにしています。これも CPDEBUG モードの対策かな。

[d5d5844744] Nobuyoshi Nakada 2019-10-22 17:30:14 UTC

結果が使われないところに書かれてるリテラルについて警告を出すのをチェックするテストで専用の assert_warning という assertion を利用するようにリファクタリングしています。

[46f175ed5c] Nobuyoshi Nakada 2019-10-22 17:53:36 UTC

vm_opts.h の OPT_SUPPORT_JOKE というマクロの定義は未定義の時のみするようにして、ファイルを書きかえなくてもコンパイル時に -DOPT_SUPPORT_JOKE=1 を指定すれば joke 命令が有効になるようにしています。また .travis.yml で OPT_SUPPORT_JOKE を有効にした時のビルドを vm_opts.h を sed で書きかえてビルドしてたのをコンパイルオプションの指定だけに切り替えています。また 97a03a035695e948ce6b3a0f91bfd0302fbc30de で CPDEBUG を有効にしたビルドも追加した時に DEFS でコンパイルオプション追加させてたのを cppflags 変数による指定に変更しています。

[959ddf44b3] Kazuhiro NISHIYAMA 2019-10-23 03:00:44 UTC

NEWS ファイルと doc/ChangeLog-1.8.0 の typo 修正。

[5d7aef20dd] Kazuhiro NISHIYAMA 2019-10-23 04:18:48 UTC

NEWS ファイルの typo や文法の修正。

[cbec533677] Kazuhiro NISHIYAMA 2019-10-23 04:23:43 UTC

NEWS ファイルの削除された bundled gems の名前に gem 名も併記するようにしています。

[67f010af9b] Nobuyoshi Nakada 2019-10-23 06:09:44 UTC

common.mk の enc/unicode/ 配下に生成する name2ctype.h の依存関係に $(UNICODE_EMOJI_FILES) も追加しています。Unicode からダウンロードする絵文字関係のデータファイルですね。

[8bb716ab91] aycabta 2019-10-22 11:42:03 UTC

lib/reline/windows.rb のコメントのインデント修正のみ。

[1d91feaf13] Nobuyoshi Nakada 2019-10-23 11:13:34 UTC

include/ruby/ruby.h の RUBY_METHOD_FUNC マクロ定義に ANYARGS を使わないようにするのを RUBY_DEVEL が真の時だけに限定しています。これはリリース版じゃない時だったかな。つまり開発版でのみメソッド定義関数の引数の厳密なチェックをするようにしています。 [ruby-core:95480] [Bug #16271]

ruby-trunk-changes 2019-10-22

今日は別のメソッドに引数をそのまま委譲するための記法 m(...) のような引数の書きかたの追加や Fiber#transfer の挙動のちょっとした変更のほか、NEWS ファイルの更新や整理がありました。

[f364564e66] Yusuke Endoh 2019-10-21 12:22:53 UTC

Bignum な整数(今は Bignum というクラスはなくなったので内部的な表現が T_BIGNUM な Integer ということですが)の二乗を計算する時に整数の話によるオーバーフローを考慮しないといけない部分が残っていたのを修正しています。とても大きな数の二乗を計算するとその後の assertion にひっかかって rb_bug() で異常終了してしまう可能性があったようです。 [ruby-core:95453] [Bug #16269]

[228ebdbf2f] Yusuke Endoh 2019-10-21 12:26:47 UTC

NEWS ファイルの英文修正。

[ec2da08e2b] Nobuyoshi Nakada 2019-10-21 12:30:47 UTC

NEWS ファイルのサンプルコードのインデントの修正のみ。

[0f0d05a3b1] Koichi Sasada 2019-10-21 07:59:52 UTC

NEWS ファイルの削除した bundled gems の表現を変更。

[9bbc28340e] Koichi Sasada 2019-10-21 08:00:16 UTC

NEWS ファイルに Proc#to_s に行番号などの表記を変更したことを追記。

[ee302f54a0] Koichi Sasada 2019-10-21 08:09:52 UTC

NEWS ファイルに特異クラス直下のコンテキストで yield を呼べないようにした変更について追記しています。

[349ad6178c] git 2019-10-21 16:07:35 UTC

version.h の日付更新

[6067c0a220] Nobuyoshi Nakada 2019-10-21 16:27:26 UTC

NEWS ファイルの行頭にチケットの参照があるとマークアップとして解釈されてしまうので折り返さないようにして回避しています。

[35f90bf1b9] Nobuyoshi Nakada 2019-10-21 16:27:49 UTC

NEWS ファイルの Dir のメソッドについての言及でクラスメソッドの表記が誤っていたのを修正しています。

[62d4382877] Nobuyoshi Nakada 2019-10-18 18:05:03 UTC

メソッドの仮引数に m1(...) のように書くことで任意の引数を受け取って、それをさらに別のメソッド呼び出しに m2(...) と渡すことで任意の引数(キーワード引数や keyword splat など含めてまるっと)委譲することができるようにしています。こんな新機能提案があったのか。すっかり見逃してた。 これまでの m1(**a) で受けて m2(**a) で委譲するのがキーワード引数をうまく扱えないことに対する代案ということでしょうかね。 [ruby-core:95338] [Feature #16253]

[f37cc1c719] Jeremy Evans 2019-07-08 01:51:42 UTC

標準添付ライブラリ resolv で UDPSocket を使った bind が Errno::EACCES を発生させることがあるようで、その場合に TCP を使った方式に fallback させるように修正しています。 [ruby-core:67636] [Bug #10747]

[fa8ac91e95] Jeremy Evans 2019-10-21 23:54:58 UTC

Fiber#transfer を使って別の Fiber を呼び出した時に transfered というフラグを立てるのは呼び出されるほうの Fiber ではなく呼び出し元の Fiber のほうに立てるようにしています。ドキュメントはこう書いてるよっていうんだけどそうなのかな。 今みたら r35519 でも rdoc のサンプルにブツブツ言ってたけどドキュメントのほうが誤解を招く内容だったって可能性はないのか。 [ruby-core:61642] [Bug #9664] [ruby-core:76270] [Bug #12555]

[9c553139ae] Alan Wu 2019-10-21 16:29:47 UTC

compile.c の CPDEBUG が 1以上の数で定義されている時だけ行なわれていた append_compile_error() の prototype 宣言が変更に追随できていなかったのを修正しています。

[97a03a0356] Alan Wu 2019-10-21 16:44:16 UTC

で .travis.yml に -DCPDEBUG=1 をコンパイルオプションに追加するビルドを追加しています。

[5e0d33a856] MSP-Greg 2019-10-21 21:36:10 UTC

appveyor.yml のテストする gem の設定をビルドマトリックスごとに分けて msys2 でのみテストするようにしています。

[22845176d7] MSP-Greg 2019-10-21 21:36:38 UTC

27261007eb45adae4d5b30cbafa2ef27a2345b3f で test/ruby/test_exception.rb の did_you_mean.gem が使われてるかどうかの判定に defined? を使うようにした変更で定数の参照のかわりに symbol リテラルになってしまっていたところを修正。たぶんこれ "::DidYouMean" とトップレベルの定数であることを明示しようとしたんだと思うんですよね。

[0e735b218f] Yusuke Endoh 2019-10-22 10:32:04 UTC

NEWS ファイルの net/ftp の新機能メソッドの説明を詳しくしています。

[fac4339a12] Yusuke Endoh 2019-10-22 10:39:42 UTC

NEWS ファイルの Enumerator::Lazy#eager の項にサンプルコードを追記しています。

[02aadf1032] Yusuke Endoh 2019-10-22 10:46:44 UTC

fac4339a1273df64fe764579f0d3ccccf64b74b4 の NEWS に追加したサンプルコードの修正。

ruby-trunk-changes 2019-10-21

今日は主に Struct.new に keyword_init: true を渡した時のインスタンス作成時のキーワード引数の扱いの修正と Hash を複製する時の余計のインスタンス生成の抑制による最適化などがありました。

[ca7de0334d] Nobuyoshi Nakada 2019-10-20 11:45:56 UTC

拡張ライブラリ ripper で beginless range リテラルで使われる BDOT2 と BDOT3 というトークンを ripper_token2eventid() で operator として対応付けるように対応しています。

[9223466752] MSP-Greg 2019-10-19 22:23:18 UTC

NoMethodError のテストで did_you_mean.gem を使っている時と使っていない時でメッセージが変化するので DidYouMean 定数の有無で分岐させるようにしています。 [ruby-core:95429] [Bug #16263]

[1d29c9bd46] git 2019-10-21 00:11:47 UTC

version.h の日付更新

[27261007eb] Nobuyoshi Nakada 2019-10-21 00:27:25 UTC

92234667526dfb66cfeff0eab49fa3e7588ff73e で DidYouMean 定数の有無で分岐していたのを defined? で DidYouMean.formatter が定義されてるかどうかまでチェックするようにしています。定数だけだと stub が入っている可能性があるため。 [ruby-core:95429] [Bug #16263]

[71ffe40a44] MSP-Greg 2019-10-20 23:30:42 UTC

標準添付ライブラリ optparse で did_you_mean.gem を使うようにしたのを確認しているテストで候補の表示順が誤っていたのを修正しています。 [ruby-core:95429] [Bug #16263]

[263ee6639d] Nobuyoshi Nakada 2019-10-21 00:12:38 UTC

71ffe40a447a17a1c3388374b7c9979c826b131d の続きで、標準添付ライブラリ optparse で did_you_mean.gem で検出された候補を表示する順序が安定するように、元のオプション名の順序と & で論理積を取るようにしています。 [ruby-core:95429] [Bug #16263]

[e70e81b54e] "K.Takata" 2019-07-29 12:38:05 UTC

st.c にメモリ確保後の NULL チェックが漏れていたところがあったのでエラーチェックを追加しています。 Coverity Scan での検出とのこと。

[375124be51] "K.Takata" 2019-07-30 03:08:33 UTC

e70e81b54e10f1882874884564454f566c41b0dd の st.c でのエラーチェックは #ifndef RUBY という preprocessor の分岐でかこむようにしているんですが、うーん、これはなんだろ?

[44da5a1c87] Nobuyoshi Nakada 2019-10-21 02:45:54 UTC

ext/ripper/eventids2.c の token_to_eventid というトークンと種類を示すインデックスとの対応テーブルをトップレベルの static 変数として格納していたのを ripper_token2eventid() 内の static 変数に移動して、インデックス(オフセット)のみを並べた配列として定義してループで探索せず一発で lookup できるようにリファクタリングしています。この初期化子の書きかたおもしろいんだけど標準なんだろうか。

[215e4b8721] git 2019-10-21 02:50:44 UTC

44da5a1c872879b05acab045263d0d4f906f04ba のインデントのタブを空白に展開。

[431132f037] Nobuyoshi Nakada 2019-10-21 03:20:19 UTC

Struct.new に keyword_init キーワード引数に true を渡して作ったクラスのインスタンスは rb_class_new_instance_kw() を使って作成して、new に渡されたキーワード引数を委譲させるようにしています。

[8b8b9c1a1f] Koichi Sasada 2019-10-21 07:48:37 UTC

72825c35b0d8b9d566663de961fddbf4f010fff7 による array hash 実装による小さめの Hash の hash 値の格納方法の変更について追記しています。 [ruby-core:91530] [Feature #15602]

[b970259044] Dylan Thacker-Smith 2019-10-21 08:29:21 UTC

Hash#initialize_copy の実装でコピー後に rb_hash_rehash() を呼んでいて、rb_hash_rehash() の内部でもさらにもうひとつ Hash オブジェクトを作って挿入後にポインタ付け替えをしていて無駄なので、Hash#replace の実装に手を加えてこっちを使うようにしています。代表的には Hash#dup で Hash の複製する時のパフォーマンス改善のためのようです。 https://github.com/ruby/ruby/pull/2489 [ruby-core:94507] [Bug #16121]

[5d63a9da40] Nobuyoshi Nakada 2019-10-21 08:45:27 UTC

b9702590445dfea62d271d0a5c942b7adfaaacdd の変更のインデント修正のみ。 [ruby-core:94507] [Bug #16121]

[c8f97d1620] Yusuke Endoh 2019-10-21 09:46:54 UTC

NEWS ファイルの構成の変更/移動やサンプルコードの追記など。