ruby-trunk-changes r52790 - r52803

今日は拡張ライブラリ readline の libedit でのビルド時の extconf.rb のオプションサポート強化や catch/throw の tag の static symbol 化回避の修正などがありました。

normal: r52790 2015-11-30 08:53:43 +0900

global_variable, global_entry, gvar_getter_t, gvar_setter_t, gvar_marker_t などに rb_ の prefix をつけるために #define でマクロ定義していましたが、ちゃんと利用箇所で rb_ を付けるようにしてマクロ定義を削除しています。 [ruby-core:71735] [Feature #11749]

svn: r52791 2015-11-30 08:54:25 +0900

version.h の日付更新。

nobu: r52792 2015-11-30 13:44:39 +0900

rb_cstr_intern() を rb_sym_intern() に改名して、rb_sym_intern_cstr()/rb_sym_intern_ascii()/rb_sym_intern_ascii_cstr() などの wrapper 関数を追加しています。また文字列の引数が定数だったら strlen() の呼び出し付きの関数呼び出しに展開するマクロ rb_sym_intern_cstr() と rb_sym_intern_ascii_cstr() も追加しています。おそらく定数の時に strlen(3) が最適化されて定数になることを見越して関数呼び出しのネストを抑えるためだと思いますが、xxx_cstr() のほうは関数定義しないで常にマクロでの提供でもいいような気がしますね。

nobu: r52793 2015-11-30 13:44:41 +0900

r52792 で導入した rb_sym_intern_ascii_cstr() を使って throw/catch の実装で tag の Symbol を得るところを ID2SYM() から置き換えて dynamic symbol を生成するように修正しています。

nobu: r52794 2015-11-30 17:11:17 +0900

拡張ライブラリ ripper でヒアドキュメントの最後で dispatch_ignored_scan_event() を呼び出していましたが ripper_has_scan_event() は常に真のはずなので ripper_scan_event_val() の内容を ripper_dispatch_heredoc_end() に直接展開して ripper_dispatch1() を呼び出すようにしています。 多分余計な関数呼び出しと分岐を削除しただけで実行結果には影響がないと思います。

naruse: r52795 2015-11-30 18:48:24 +0900

拡張ライブラリ readline の extconf.rb で dir_config("libedit") を追加して --enable-libedit にライブラリのパスを指定できるようにしています。 [ruby-core:71743] [Bug #11751]

kazu: r52803 2015-11-30 22:25:34 +0900

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