ruby-trunk-changes r59554 - r59570

今日は Fiber まわりのリファクタリングやキーワード引数の splat 渡しの互換性のための変更、openssl の更新などがありました。

nobu: r59554 2017-08-10 09:32:12 +0900

メソッドの呼び出し時の **h での Hash のキーワード引数への展開ですが、省略可能引数に対応する引数が足りない時には ** で渡したものが渡されるようになっています。なんか仕様としては変な気がしますが、互換性のためにこうしないと ActiveRecord のメソッドで動かなくなるのがあるみたいです。うーむ。 [ruby-core:82280] [Bug #13791]

svn: r59555 2017-08-10 09:32:13 +0900

version.h の日付更新。

nobu: r59556 2017-08-10 09:50:45 +0900

メソッドの引数で m("key".to_sym => v) のように Hash リテラルのかっこを省略した記法でキーが key: の記法でない時にキーワード引数にしないようにしています。これも互換性のための変更みたいです。 [ruby-core:82291] [Bug #13793]

ko1: r59557 2017-08-10 10:47:13 +0900

Fiber の実体の構造体 struct rb_fiber_struct の status の値に FIBER_RESUMED/FIBER_SUSPENDED という状態を追加して、今 resume で実行中なのか、yield を呼んで中断している状態なのかを管理するようにしています。また fiber_verify() という関数を追加して fib->cont.saved_thread.ec.stack の値と status の整合性を GC の mark 時にチェックするようにしています。

ko1: r59558 2017-08-10 11:58:36 +0900

Fiber#to_s と Fiber#inspect で Fiber の status も表示するようにしています。

ko1: r59559 2017-08-10 12:09:51 +0900

cont.c の余計な改行を除去。

ko1: r59560 2017-08-10 12:20:39 +0900

Thread#inspect を Thread#to_s に変更して、inspect は to_s への alias として定義するようにしています。 to_s でも詳細な情報が入るようになりました。

ko1: r59561 2017-08-10 12:34:25 +0900

cont.c のいくつかの引数や変数に const 修飾子を追加しています。

nobu: r59562 2017-08-10 13:03:48 +0900

r59557 の struct rb_fiber_struct::status の状態追加の修正。 #if !FIBER_USE_NATIVE の時にビルドエラーになっていたようです。

ko1: r59563 2017-08-10 13:55:12 +0900

rb_execution_context_t の stack および stack_size を vm_stack, vm_stack_size と頭に vm_ をつける改名。 VM スタックであること(machine stack ではなくて)がはっきりわかるようにしています。

nobu: r59564 2017-08-10 14:54:56 +0900

スクリプトファイルの先頭の shebang (#! ではじまる行)に ruby という文字が含まれていたらそのオプションを解釈するようにする処理で、-- でオプションの解釈を止める処理が効いていなくて余計なオプションとしての解釈をしていた不具合を修正しています。 [ruby-core:82267] [Bug #13786]

ko1: r59565 2017-08-10 15:01:57 +0900

Fiber の struct rb_fiber_struct::cont->saved_thread に保存しておいた Thread の状態を復旧させる処理を fiber_restore_thread() という関数に切り出しています。

ko1: r59566 2017-08-10 15:26:52 +0900

cont.c で到達しないはずの箇所に rb_bug() を書いていたのを VM_UNREACHABLE() という専用のマクロを利用するように変更しています。

rhe: r59567 2017-08-10 18:23:45 +0900

upstream の ruby/openssl の 2.0.5 をマージしています。 https://github.com/ruby/openssl/compare/v2.0.4...v2.0.5 SSLv2, SSLv3, TLSv1 などの OpenSSL::SSL::SSLContext::METHODS からの削除や mswin でのビルドエラーの修正などがありました。

nobu: r59568 2017-08-10 20:40:49 +0900

vm_core.h の VM_UNREACHABLE() マクロの VM_CHECK_MODE が 0 の時の定義をなにもしない (void)0 から include/ruby/ruby.h で定義している UNREACHABLE に変更しています。

knu: r59569 2017-08-10 21:37:04 +0900

misc/ruby-electric.el を upstream (ってどこだろ…)から 2.3.1 をマージしています。 enhanced-ruby-mode というのをサポートしているそうです。

nagachika: r59570 2017-08-10 21:57:07 +0900

r59563 のコメントの typo 修正。