ruby-trunk-changes r45604 - r45614

今日は主に文字列連結の C API の名前の変更(旧APIも別名として保持)やそれに関連してリファクタリングなどがありました。

nobu: r45604 2014-04-17 10:03:55 +0900

FileUtils.cp の rdoc 用コメントの :preserve オプションについての記述を修正しています。 [ruby-core:62065] [Bug #9748]

svn: r45605 2014-04-17 10:04:00 +0900

version.h の日付更新。

nobu: r45606 2014-04-17 11:41:34 +0900

string.c の rb_str_cat2() から rb_str_cat() を呼び出しそこで引数 len のチェックをしていたのを、rb_str_buf_cat2() を呼び出すようにして重複しているチェックを省略するようにしています。

nobu: r45607 2014-04-17 11:41:36 +0900

r45606 からの流れっぽいですが rb_str_cat() と rb_str_cat() がそれぞれ rb_str_buf_cat() と rb_str_buf_cat2() を呼ぶだけのただのラッパだったのを RUBY_ALIAS_FUNCTION() というマクロを使って定義するようにしています。 r40998 で導入されたマクロで gcc 拡張機能を利用するもののようですね。

nobu: r45608 2014-04-17 11:41:39 +0900

configure.in の変更で、よく理解しきれてないのですが、RUBY_FUNC_ATTRIBUTE の検出方法の書きかたの修正と、FUNC_MINIMIZED という optimize("-Os","-fomit-frame-pointer") という最適化の属性を設定する gcc 拡張のマクロを定義するようにして、RUBY_ALIAS_FUNCTION_TYPE マクロの定義で利用するようにしています。ラッパ関数で余計なframeを発生させないようにしているのでしょうか。

nobu: r45609 2014-04-17 14:22:57 +0900

文字列連結の公開 API rb_str_buf_cat2() を rb_str_cat_cstr() と改名して rb_str_buf_cat2() は RUBY_ALIAS_FUNCTION マクロを使ってその別名として定義するようにしています。同様に rb_str_buf_cat() も rb_str_cat() と改名しています。 README.EXT/README.EXT.ja にも rb_str_cat_cstr() の記述を追加しています。

nobu: r45610 2014-04-17 14:23:00 +0900

rb_str_cat_cstr() にも引数の ptr が NULL でないかのチェックを追加しています。このために他の xxx_cstr() 関数にあったチェック部分を must_not_null() という関数に切り出して共有するようにしています。

hsbt: r45611 2014-04-17 15:53:05 +0900

template/opt_sc.inc.tmpl, template/optinsn.inc.tmpl, template/optunifs.inc.tmpl などの VM 用のファイルを生成するためのテンプレートのコメントに書かれている生成ツール insns2vm.rb のファイルパスを修正しています。 https://github.com/ruby/ruby/pull/595

hsbt: r45612 2014-04-17 16:31:43 +0900

prelude.rb というインタプリタ起動時に実行される Ruby スクリプトインタプリタ自体に埋め込まれているのですが、その中のコメントの Thread.exclusive のコメントを修正しています。1.9 からはもうなくなった Thread.critical をベースにした記述になっているので、Mutex ベースの実装にあわせて記述を修正しています。 https://github.com/ruby/ruby/pull/589

nobu: r45613 2014-04-17 17:24:10 +0900

gc.c の環境変数取り込みの関数 get_envparam_size() でコンパイラ警告の除去のため明示的なキャストを追加しています。

nobu: r45614 2014-04-17 17:24:15 +0900

詳細は追っていませんが、起動時のライブラリロードパスの処理で古い Cygwin 用の特別な処理をしていたところを消して、古い(どのくらいかは不明ですが) Cygwin サポートををやめています。