ruby-trunk-changes r60662 - r60673

今日は rb_thread_t と rb_execution_context_t の構造体の変更や Enumerable#cycle が返す Enumerator の Enumerator#size メソッドの修正などがありました。

svn: r60663 2017-11-06 00:10:41 +0900

version.h の日付更新。

nobu: r60664 2017-11-06 06:13:17 +0900

tool/runruby.rb に -C/--chdir オプションを追加してディレクトリに移動してから実行できるようにしています。

nobu: r60665 2017-11-06 06:13:18 +0900

r59949 あたりで Ripper::Lexer::Elem を導入して Lexer の状態の文字列化を調整したところにさらに Ripper::Lexer::State というクラス(Struct のインスタンス)を導入して Lexer の state の文字列化を担当させて、rb_parser_lex_state_name() で rb_fstring() を呼んで fstring を返すようにしています。作る時には一時オブジェクトはできてしまうけど戻り値は共有のバッファの文字列オブジェクトが返されるので戻り値を保持している時にはメモリが節約できるかもしれない、という感じですね。

marcandre: r60666 2017-11-06 07:14:25 +0900

Enumerable#cycle にブロックなしで呼んで作った Enumerator の size メソッドが、receiver の要素数が 0 の時にも Infinity を返してたので常に 0 を返すように修正しています。 [ruby-core:83680] [Bug #14082]

nobu: r60667 2017-11-06 08:27:46 +0900

r60666 の修正のテストの Enumerator::Lazy 版も追加しています。 [ruby-core:83680] [Bug #14082]

nobu: r60668 2017-11-06 08:32:50 +0900

Enumerable#cycle が返す Enumerator の size メソッドの実装で receiver の要素数よりまえに引数のチェックをして、不正な引数が渡されたのに無視されないようにしています。

hsbt: r60669 2017-11-06 11:02:04 +0900

rubygems の upstream から 2.7.1 をマージしています。 gem update --system の不具合修正らしいです。mkdir 忘れとかそんなのっぽい。

ko1: r60670 2017-11-06 14:41:48 +0900

rb_execution_context_t のメンバー fiber を fiber_ptr に改名しています。 thread_ptr に倣ったとのこと。

ko1: r60671 2017-11-06 16:35:37 +0900

bootstraptest/runner.rb でテストが Interrupt で割り込まれた(端末からのシグナルとか)時に rescue 節で実行したテスト数と現在実行中のファイルを表示するようにしています。

ko1: r60672 2017-11-06 16:44:28 +0900

rb_thread_t のメンバー interrupt_flag と interrupt_mask を rb_execution_context_t に移動しています。

ko1: r60673 2017-11-06 17:22:27 +0900

r60672 の続きかと思いますが fiber_current() で rb_thread_t を得る必要がなくなったので GET_THREAD() のかわりに GET_EC() を使うようにリファクタリングしています。