ruby-trunk-changes r55746 - r55759

今日は Windows-{1250, 1251, 1253, 1257} などの casemap 対応、内部的な関数として rb_vm_pop_frame() を追加するリファクタリングなどがありました。

duerst: r55746 2016-07-26 13:05:03 +0900

test/ruby/enc/test_case_comprehensive.rb で Unicode 用のデータファイルが存在しない時にテストクラスの定義自体をやめてテストしないようにするための条件を TestComprehensiveCaseFold.data_files_available? というメソッドに切り出して、また明示的な skip を追加するメソッド TestComprehensiveCaseFold.data_files_available も追加しています。

svn: r55747 2016-07-26 13:05:04 +0900

r55746 の行末の空白除去。

svn: r55748 2016-07-26 13:05:04 +0900

version.h の日付更新。

duerst: r55749 2016-07-26 15:30:39 +0900

Windows-1251 の Encoding での大文字小文字変換の casemap 対応。

duerst: r55750 2016-07-26 15:54:18 +0900

Encoding Windows-1253 の大文字小文字の casemap 対応の実装。 コミットログは Windows-1251 になってますね。

duerst: r55751 2016-07-26 16:19:43 +0900

Encoding Windows-1250 の大文字小文字変換の casemap 対応の実装。 r55749 と 55750 の ChangeLog エントリの修正も含まれています。

duerst: r55752 2016-07-26 16:33:18 +0900

Encoding Windows-1257 の大文字小文字変換の casemap 対応の実装。

ko1: r55753 2016-07-26 18:57:50 +0900

gc_mark() に inline 修飾子をつけています。できるだけ inline 化してほしいからだそうです(って書くとあたりまえですが)。

ko1: r55754 2016-07-26 19:07:12 +0900

rb_raw_obj_info() で T_DATA 型のオブジェクトのうち Proc オブジェクトの表示に対応しています。

ko1: r55755 2016-07-26 19:28:21 +0900

rb_vm_pop_frame() という vm_pop_frame() を wrap した関数を追加して、rb_thread_t::cfp を直接操作していたところでこの関数経由で control frame を pop するようにしています。また vm_pop_frame() に cfp と ep という引数を追加しています。 ep はまだ使ってないな、と思ったらコメントにも "we'll use ep soon" と書かれているのでそのうちこれを使う変更を入れる予定みたいです。

nobu: r55756 2016-07-26 21:51:50 +0900

r55736 で OS X (そういえば今度から macOS が正式な名前になったんでしたっけ)での DTrace を使ったテストで PTY を使うようにしたので readlines で取得した行から "\r" を chomp して削るように修正しています。

nobu: r55757 2016-07-26 22:02:33 +0900

テストで(minitest の?) assert_includes を使っていたところを assert_include を利用するように修正しています。

nobu: r55758 2016-07-26 22:02:34 +0900

make の love ターゲットの時に test-almost というターゲットの依存関係に install を追加しています。そもそも test-almost ってなんだっけ…。忘れてしまってましたが test/unit を標準添付ライブラリから test/lib に移動して ruby 自体のテスト専用のライブラリとした時に make check は make test-all から test framework 自体のテストは除いたものにしてて、それのことでした。うーんすっかり忘れてた。つまりその時から make love で install が必須じゃなくなってたんですかね。それも気がつかなかった。

nobu: r55759 2016-07-26 22:43:38 +0900

run_finalizer() で longjmp() による clobbered の警告回避のため、errinfo や safe_level を退避しておく変数を volatile つきの構造体として宣言してまとめておくようにしています。