ruby-trunk-changes r58403 - r58418

今日は default gem のインストール関係の不具合修正や insns.def の修正のほか、deprecated になっていた標準添付ライブラリ mathn の削除などがありました。

hsbt: r58403 2017-04-19 20:50:03 +0900

r58304 の tool/rbinstall.rb で default gem インストール時に Gem::Specification#to_ruby_for_cache を利用するようにしたのを revert しています。ちょっとよくわかってませんが rubygems のほうでも default gem 向けに特別な処理を入れてるそうで、それを呼ばないといけないみたいです。

rhe: r58404 2017-04-19 23:05:26 +0900

ext/extmk.rb で拡張ライブラリのビルド時にコンパイルに失敗した時にエラーの発生した拡張ライブラリ名をログに残すようにしています。 [ruby-core:80131] [Feature #13302]

nobu: r58405 2017-04-20 00:14:03 +0900

r58390 で VM の once 命令(ってのがあったんですね。正規表現の o オプション用でしたか。 http://d.hatena.ne.jp/nagachika/20140912/ruby_trunk_changes_47539_47560#r47542 参照)の実装として分離された vm_once_dispatch() で Thread が切り替わるのを待つのに再帰呼び出ししてしまっていたので、再帰が深くなって stack overflow してしまう可能性があったのを修正しています。

svn: r58406 2017-04-20 00:14:04 +0900

version.h の日付更新。

usa: r58407 2017-04-20 10:36:11 +0900

拡張ライブラリのビルドに成功しているかチェックするテスト test/ruby/test_extlibs.rb を test/test_extlibs.rb に移動しています。 ruby コアのテストではないため。

ko1: r58408 2017-04-20 13:50:53 +0900

rb_vmdebug_stack_dump_all_threads() という全 Thread のその時点のバックトレースを標準エラー出力に出力する関数を追加しています。デバッグ用ですね。

stomar: r58410 2017-04-20 16:44:54 +0900

man/ri.1 のさらに体裁や文法の修正、追記を行なっています。

stomar: r58411 2017-04-20 16:46:22 +0900

man/ の下のその他のドキュメントも記述を新しく修正したり文法の修正をしたりしています。

nobu: r58412 2017-04-20 17:13:16 +0900

r58404 の追加修正? ext/extmk.rb で必須に指定された拡張ライブラリがビルドできなかった時はビルドエラーにするようにしています。 [ruby-core:80759] [Feature #13302]

hsbt: r58413 2017-04-20 17:21:24 +0900

標準添付ライブラリ mathn を削除しています。おお、ついに削除されるのか。 https://github.com/ruby/ruby/pull/1542 [ruby-core:80247] [Feature #13334]

nobu: r58414 2017-04-20 17:31:20 +0900

拡張ライブラリビルド時の note というターゲットは個別の拡張ライブラリの ext.mk では依存関係からは消して、make build-ext の時につけ加えてまとめて出力させるようにしているみたいです。 [ruby-core:80759] [Feature #13302]

hsbt: r58415 2017-04-20 18:11:36 +0900

irb に -m オプションで bc mode というのを有効にする機能があったそうで、これは require "mathn" した状態で動くというものだったみたいです。 mathn の削除にあわせてこちらも削除しています。

shyouhei: r58416 2017-04-20 19:32:08 +0900

array.c に klass の指定つきで C の VALUE の配列から Array オブジェクトを作成する関数 rb_ary_tmp_new_from_values() を切り出して insns.def の toregexp 命令の実装で klass を 0 にして内部的オブジェクトにした配列に rb_ary_store() で1要素ずつ詰めていたところをこの関数の呼び出しに変更する最適化をしています。

nobu: r58417 2017-04-20 20:07:00 +0900

lib/irb/ruby-lex.rb で文字の判定をいくつものマッチを || で連結していたのを1つの正規表現にまとめるリファクタリング

nobu: r58418 2017-04-20 20:07:02 +0900

lib/irb/ruby-lex.rb の RubyLex#lex で行が継続しているかどうかの判定を改善しているみたいです。