ruby-trunk-changes r52972 - r53003

今日も String.new の :encoding オプションの追加、T_TYPEDDATA 型オブジェクトの memset 用コールバック関数の呼び出し条件の修正などがありました。

nobu: r52972 2015-12-09 01:17:17 +0900

テスト用のユーティリティ EnvUtil の assert_ruby_status で子プロセスの終了ステータスが0のときの出力を詳細にしています。

usa: r52976 2015-12-09 01:48:52 +0900

String.new にキーワード引数 encoding を追加しています。その名の通り生成した文字列の encoding を指定するものです。変換するわけではなくて force_encoding と同様にエンコード情報だけ指定のものに変更するようになっているようです。 [ruby-core:71927] [Feature #11785]

ko1: r52978 2015-12-09 02:19:58 +0900

r52960 で compile.c の ISeq のバイナリフォーマット化のための struct ibf_dump をオブジェクトに wrap するようにした時に追加した関数 ibf_dump_memsize() でポインタの NULL チェックを追加しています。

nobu: r52979 2015-12-09 02:28:32 +0900

r52978 では ibf_dump_memsize() を修正しましたが、そもそも memsize 用関数を呼ぶほうの rb_objspace_data_type_memsize() で RTYPEDDATA_DATA() で取り出したポインタの NULL チェックをして呼び出しを抑制するようにしています。

normal: r52980 2015-12-09 06:27:34 +0900

標準添付ライブラリ uriURI::Generic#to_s のテストを追加しています。 freeze した文字列から作った URI を to_s すると freeze された文字列を返すことをテストしています。 が、これ条件が反転しているみたいで後に r52983 で修正されています。 [ruby-core:71820] [Bug #11759]

normal: r52981 2015-12-09 06:28:26 +0900

標準添付ライブラリ uri の lib/uri_generic.rb に frozen_string_literal: true を指定する magic comment を追加して、不要な文字列リテラルへの freeze を消しています。また変更する文字列の生成には String.new を使うようにしています。 [ruby-core:71910] [Bug #11759]

nobu: r52982 2015-12-09 08:41:27 +0900

r52976 の String.new の encoding オプション追加の実装で Symbol の :encoding を作るのに rb_intern() を読んでいたのを rb_id_encoding() を使うように変更しています。

nobu: r52983 2015-12-09 08:48:37 +0900

r52980 で追加された URI::Generic#to_s の freeze されているかどうかのテストの assert 文を refute から assert_not に変更しています。

ko1: r52984 2015-12-09 09:20:57 +0900

NEWS ファイルの RubyVM::InstructionSequence の to_binary_format などのメソッドのエントリに experimental feature とのマークを追加しています。

hsbt: r52985 2015-12-09 09:25:34 +0900

test/net/smtp/test_response.rb で直接 Minitest を利用していたのを Test::Unit を利用するように変更しています。

ko1: r52986 2015-12-09 09:38:32 +0900

r52979 で memsize 用関数を呼び出す側で T_TYPEDDATA 型のオブジェクトの wrap している構造体ポインタの NULL チェックが追加されたので、r52978 の他にも memsize 用関数でポインタの NULL チェックしていたのを冗長なので削っています。

hsbt: r52987 2015-12-09 09:46:26 +0900

.gitignore に ISeq のバイナリダンプのサンプルの *.yarb という拡張子を無視させるようにしています。

ko1: r52988 2015-12-09 10:01:17 +0900

r52986 と同様に r52979 で不要になった memsize 用関数でのポインタチェックの除去を拡張ライブラリについても行なっています。

normal: r52989 2015-12-09 10:34:01 +0900

ibf_dump_object_unsupported() で rb_bug() を呼び出す時のメッセージの typo 修正。

ko1: r52990 2015-12-09 11:41:14 +0900

RubyVM::InstructionSequence.to_binary_format と RubyVM::InstructionSequence.from_binary_format_extra_data の rdoc 用コメントに説明を追記しています。

nobu: r52991 2015-12-09 11:43:55 +0900

拡張ライブラリ stringio の strio_memsize() の未使用の変数を削除しています。

ko1: r52992 2015-12-09 13:51:29 +0900

NEWS ファイルに RubyVM::InstructionSequence.from_binary_format で不正な内容をロードすると SEGV など異常終了することもあるというのを追記しています。 [ruby-core:71970]

shugo: r52993 2015-12-09 14:38:31 +0900

doc/syntax/refinements.rdoc の "Refinements and module inclusion" という節を削除しています。

ko1: r52994 2015-12-09 14:49:27 +0900

gc_mark_stacked_objects() の変数名の typo 修正。 [ruby-core:71799] [Bug #11763]

nobu: r52995 2015-12-09 15:48:15 +0900

後で revert されているので詳細はみていませんが、正規表現エンジンの鬼雲のところでリスト操作の排他を mutex を使っていたのを ATOMIC_PTR_CAS() を利用した楽観的ロックを利用するように変更しています。

ko1: r52996 2015-12-09 16:15:48 +0900

Module#define_method で定義したメソッドが public になるように修正しています。 [ruby-core:71762] [Bug #11754]

nobu: r52997 2015-12-09 16:30:44 +0900

r52995 を revert しています。 ATOMIC_PTR_CAS() は結構遅いみたいです。そうなのか…。

nobu: r52998 2015-12-09 16:46:47 +0900

拡張ライブラリ io/console の新機能 IO#getpass のテストでパスワード入力側のエコーバックの有無がプラットフォームによってまちまちなのでチェックを緩めています。

nobu: r52999 2015-12-09 17:02:06 +0900

regparse.h の SET_NTYPE() というマクロの展開結果で strict aliasing が起きているのを一旦変数を介してコピーすることで回避しています。 [ruby-core:71953] [Bug #11790]

nobu: r53000 2015-12-09 19:45:18 +0900

拡張ライブラリ io/console の IO#getpass のテストで、やぱり sleep 1 を入れるようにしています。

nobu: r53001 2015-12-09 20:53:52 +0900

IO#getpass のテストは環境変数 RUBY_TESTS に "IO#getpass" という文字列が含まれてなかったら skip するようにしています。

kazu: r53002 2015-12-09 23:14:25 +0900

r50870 の ChangeLog エントリの typo 修正です。

kazu: r53003 2015-12-09 23:14:40 +0900

NEWS ファイルのエントリに対応するチケット番号を追記しています。