今日も backtrace 関係の修正がありました。RubyVM::FrameInfo というクラスが導入され、RubyVM::FrameInfo.caller メソッドで caller の情報がオブジェクトとして取り出せるようになりました。また OpenSSL の client-side renegotiation という機能を制御できるようにする機能追加がありました。
emboss:r35797 2012-05-26 09:56:33 +0900
拡張ライブラリ openssl に OpenSSL::SSL::SSLContext#disable_client_renegotiation, #allow_client_renegotiation というメソッドを追加して、client-side renegotiation という機能の制御をできるようにして、デフォルトを off に(handshake count を 0 に)しています。 renegotiation の機能を突いた脆弱性というのがあるようです。 RFC 5746 を参照。
svn:r35798 2012-05-26 09:56:37 +0900
version.h の日付更新。
ko1:r35799 2012-05-26 11:10:37 +0900
backtrace に格納するフレーム情報の種類に C の関数の情報を呼び元の Ruby のメソッドなどの情報からコピーする FRAME_INFO_TYPE_ISEQ_CALCED というのを増やしています。また storage というメンバーも追加していますがこちらはまだ未使用です。
ko1:r35800 2012-05-26 12:25:15 +0900
frame_info_to_str() の switch 文の break がもれていたのを修正。
また backtrace_object() で lev, n 引数を削除して返すフレーム情報のオフセットと数の指定はこの関数ではしないようにして backtrace_collect() で削るようにしています。
また caller を呼ぶベンチマークを追加しています。
ko1:r35801 2012-05-26 13:49:23 +0900
RubyVM::FrameInfo というクラスを追加して、RubyVM::FrameInfo.caller というクラスメソッドで caller の情報を文字列ではなくて RubyVM::FrameInfo のインスタンスの配列として取り出せるようにしています。RubyVM::FrameInfo はファイル名、行番号、メソッド名、iseq などを取り出すことができてプログラムで扱うのが楽です(文字列からパースしなくていい)。メソッド名については Ruby 2.0 までに良い名前を考えて変更したいとのこと。
ko1:r35802 2012-05-26 13:51:32 +0900
NEWS ファイルに caller の第2引数の追加について書いています。
ko1:r35804 2012-05-26 15:31:31 +0900
caller のテストで深いバックトレースを作るためにメソッドを再帰的に呼び出す回数を 20 -> 10 と減らしています。環境によってスタック不足でエラーになっていたようです。
nobu:r35805 2012-05-26 16:24:59 +0900
File.realpath と File.realdirpath のテストで渡すパスの作成方法を変更しています。Windows の UNC を意識した変更ということなのですが、どっちかというと元のパスの作りかたのほうの意図がわからないですね。なにをしていたんだろうこれ。
nobu:r35806 2012-05-26 16:26:36 +0900
と思ったら File.readdirpath で UNC の時にセパレータ('/')を追加する修正が入っています。
ここで追加されているテストってたまたま //:/foo にディレクトリが存在しないと Errno::ENOENT になってスキップされると思うのですが、でもその位置にないとテストにならないということでしょうか。[追記]なかださんに教えていただきました。UNC 上では存在しないパスを指定してもエラーにならないそうです。なんということでしょう。[/追記]
ko1:r35807 2012-05-26 17:08:16 +0900
caller の引数の lev と n の型を size_t から int に変更しています。
tadf:r35808 2012-05-26 18:10:42 +0900
Time#strftime と DateTime#strftime の '%Z' の項目の rdoc 用コメントを少し変更しています。
おそらく [Bug #6491] に関連しての変更でしょう。
tadf:r35809 2012-05-26 18:16:26 +0900
DateTime#strftime の '%y' と '%Y' 指示子の処理をそれぞれ '%g' と '%G' の処理とまとめています。
tadf:r35810 2012-05-26 18:21:21 +0900
Time#strftime と DateTime#strftime の '%Z' の rdoc 記述もう少し変更。
tadf:r35811 2012-05-26 19:05:25 +0900
DateTime#strftime の '%N' 指示子の精度のコメントに例を追記しています。
nagachika:r35812 2012-05-27 03:18:45 +0900
svn:r35813 2012-05-27 03:18:49 +0900
version.h の日付更新。