ruby-trunk-changes r48566 - r48592

今日はパッケージからのビルド時の余計な自動生成ファイルの再生成の抑制や、拡張ライブラリ continuation の obsolete 警告の追加、C の拡張ライブラリでキーワード引数を取り出すための関数の公開 API 化などがありました。

akr: r48566 2014-11-26 00:22:01 +0900

template/prelude.c.tmpl で RbConfig::CONFIG の値の参照を展開する処理は、もうこの値の参照を使っていないとのことで削っています。

svn: r48567 2014-11-26 00:22:11 +0900

version.h の日付更新。

akr: r48568 2014-11-26 00:55:34 +0900

make prereq に preludes の依存をしていたのをやめて miniprelude.c に依存するようにしています。 tar パッケージからビルドする時に再生成されるのを防ぐためみたいです。

akr: r48569 2014-11-26 02:12:03 +0900

tool/make-snapshot で enc/trans/newline.c を生成するのを防いでいるそうです。手元だと newline.c はビルド時にビルドディレクトリ直下にできるみたいですね。

nobu: r48570 2014-11-26 03:43:47 +0900

taint で汚染されたオブジェクトが禁止されたメソッドに渡された時の例外メッセージで PRIsVALUE を使って埋め込むようにしてエンコーディングを保持するようにしています。

nobu: r48571 2014-11-26 03:43:58 +0900

同じく rb_secure() でも $SAFE の値で禁止されたメソッドが呼ばれた時の例外にメソッド名を埋め込む時に PRIsVALUE を使ってエンコーディングを保持するようにしています。

nobu: r48572 2014-11-26 03:44:07 +0900

さらに $SAFE=3 で定義されたメソッドを呼ぼうとした時に発生する SecurityError のメッセージでも PRIsVALUE を使ってメソッド名を埋め込むようにしています。

nobu: r48573 2014-11-26 03:44:12 +0900

メソッドの再定義時の警告メッセージに埋め込むメソッド名も PRIsVALUE を利用するようにしています。

nobu: r48574 2014-11-26 03:44:16 +0900

Object#inspect でインスタンス変数の内容を書き込むのにも PRIsVALUE を使うようにして、インスタンス変数名のエンコーディングも保持するようにしています。

nobu: r48575 2014-11-26 03:44:22 +0900

メソッド定義やら ISeq コンパイルなどの各所で rb_id2name() で C の文字列を取得して埋め込んでいたところを rb_id2str() を使って String オブジェクトを取得して PRIsVALUE を使って埋め込むようにしています。

nobu: r48576 2014-11-26 03:58:05 +0900

Module#remove_method で対象のメソッドがない時の例外メッセージでも PRIsVALUE を使って埋め込むようにしています。

akr: r48577 2014-11-26 06:09:34 +0900

make incs の依存関係から encdb.h と transdb.h を削除して all-incs の依存関係に移動しています。 tarball パッケージからビルドする時の不要な再生成を抑制するためみたいです。

normal: r48578 2014-11-26 11:03:06 +0900

iseq.c の iseq_s_compile_file() で入力ファイルを close していなかったのを修正しています。一応 RubyVM::InstructionSequence.compile_file で ruby のメソッドから呼べる関数ですね。

ko1: r48579 2014-11-26 15:48:21 +0900

compile.c の iseq_set_sequence() で命令列へのコンパイル時に adjuststack 命令が不要だった時に jump 命令を使っていたのを nop を利用するようにしています。 ISeq.load でコンパイル結果をロードして最適化にかけると消えるので roundtrip テストが失敗する、というのを回避するためみたいです。 https://bugs.ruby-lang.org/issues/8543#change-50085

nobu: r48580 2014-11-26 17:01:56 +0900

proc.c で $SAFE のレベルを 4 と固定の値が書かれていたのを RUBY_SAFE_LEVEL_MAX を参照するように修正しています。既に 3 が最大の SAFE レベルになっているので間違ってたみたいですね。

naruse: r48581 2014-11-26 17:22:27 +0900

r48563 の net/http で SSL の SNI を使った時の不具合修正のテストを追加しています。

naruse: r48582 2014-11-26 17:22:35 +0900

r48563 の net/http の修正で Time.now を使ってセッションのタイムアウトを測っていたのを Process.clock_gettime で時刻を取得するようにしてオブジェクトの生成を抑制しています。

nobu: r48583 2014-11-26 17:25:48 +0900

メソッド定義でキーワード引数名に大文字ではじまる名前などキーワードとして不正な文字列が指定された時に SEGV する可能性がある不具合を修正しています。 [ruby-dev:48742] [Bug #10545]

akr: r48584 2014-11-26 19:46:50 +0900

標準添付ライブラリ tsort で TSort.tsort や TSort.tsort_each などがブロックを渡されなかった時に Enumerator を返すようにしています。 [ruby-core:66270] [Feature #10508]

nobu: r48585 2014-11-26 19:54:35 +0900

Windows 版で標準のコンソールではないコンソールを利用している時に console のリセット処理をしないようにしているそうです。 [ruby-core:66471] [Bug #10546]

ko1: r48586 2014-11-26 20:00:19 +0900

GC のテストで test_latest_gc_info の一部を子プロセスに分離して実施するようにしています。 mysterious behavior を回避するためだそうです。

sorah: r48587 2014-11-26 20:32:16 +0900

r48585 の ChangeLog エントリの typo 修正。

tarui: r48588 2014-11-26 20:50:55 +0900

拡張ライブラリ continuation に require された時に警告メッセージを出して obsolete であることを表示するようにしています。 callcc は obsolete なので Fiber などの代替を利用するように移行しましょう。 [ruby-core:66486] [Feature #10548]

hsbt: r48589 2014-11-26 21:18:49 +0900

test/inlinetest.rb という未使用のテストのヘルパーを削除しています。

nobu: r48590 2014-11-26 22:28:15 +0900

C 実装のメソッドでキーワード引数を取り出すための関数 rb_get_kwargs() と rb_extract_keywords() を公開 API にして README.EXT(.ja) にも説明を追記しています。 おお、これでキーワード引数を受け取るメソッドを拡張ライブラリで実装しやすくなりますね(2.2 からは)。

svn: r48591 2014-11-26 22:28:32 +0900

r48590 の README.EXT の追記部分の行末の空白除去。

tarui: r48592 2014-11-26 22:31:23 +0900

r48588 の require "continuation" での警告の追加で autoload のテストがこけるようになってしまったので autoload 対象のライブラリを continuation から date に変更しています。