ruby-trunk-changes r40814 - r40827

今日は URI.decode_www_form の変更や Set#delete_if, Set#keep_if の効率化などがありました。

nobu:r40814 2013-05-19 01:40:10 +0900

r40813 の続きで setjmpex() の宣言だけでなく実際に定義されているか AC_CHECK_FUNCS() によるチェックも追加しています。 i686-w64-mingw32 だと setjmpex() は宣言はされているけど定義されていないという状態なのでその回避のためとのこと。

svn:r40815 2013-05-19 01:40:14 +0900

version.h の日付更新。

knu:r40816 2013-05-19 02:38:02 +0900

misc/ruby-electric.el の変更です。コミットログから推測するとバッファの末尾でクオートの自動補完か何かが動かなくなっていたのを修正しているようです。

knu:r40817 2013-05-19 02:38:04 +0900

misc/ruby-electric.el の変更です。 DEL キーで直前の electric コマンドが入力した内容をまるっと削除するそうです。 electric というのは emacs においてその文字を入力するだけでなくインデントや改行の挿入など追加の入力もする機能のことみたいです。

knu:r40818 2013-05-19 02:38:08 +0900

misc/ruby-electric.el の変更です。バッククオート記号も electric にしているそうです。たぶん対応する閉じクオート記号も自動で挿入するようになったのでしょう。

knu:r40819 2013-05-19 02:48:18 +0900

標準添付ライブラリ set.rb の Set#delete_if と Set#keep_if を最初に to_a で配列化したものを each でなめて削除するのではなく select/reject を使って削除対象の要素を絞ってから削除するようにして効率化しています。

naruse:r40820 2013-05-19 03:58:13 +0900

標準添付ライブラリ uriURI.decode_www_form で key, value が指定されたエンコーディングとして不正なバイト列を含んでいた時に r40810 で追加した String#scrub! を使って不正な文字を置換するようにしています。

naruse:r40821 2013-05-19 04:00:11 +0900

String#scrub と scrub! の実装をリファクタリングしています。 rb_str_scrub() から str_scrub0() という関数を切り出して rb_str_srcub() と str_scrub_bang() の両方から利用するようにしています。 str_scrub0() は不正な文字があればそれを置換した結果を、なければ Qnil を返すようにしています。 また String#scrub! の実装する関数は rb_str_scrub_bang() という名称で static が付いてなかったのですが、rb_ を削って static 関数にしています。

eregon:r40822 2013-05-19 06:23:15 +0900

Object#inspect の rdoc 用コメントと例外メッセージの typo および英語の修正。

knu:r40823 2013-05-19 10:41:47 +0900

misc/ruby-electric.el の変更です。delete-backward-char のかわりに delete-char を利用しています。

ktsj:r40824 2013-05-19 11:42:16 +0900

拡張ライブラリ fiddle の extconf.rb で libffi のバージョンに -rc がついているものを検出した時に RUBY_LIBFFI_MODVERSION というマクロにそれが入りこまないように消し込むようにしています。 RUBY_LIBFFI_MODVERSION の定義を生成する際に数値を期待しているところに -rc# が付いてしまってエラーになるそうです。

ktsj:r40825 2013-05-19 12:10:21 +0900

ドキュメントとコメントの typo 修正です。複数のファイルに渡ってかなり多い修正です。

nobu:r40826 2013-05-19 12:11:09 +0900

r40825 で入った行末の空白の除去です。

knu:r40827 2013-05-19 17:33:27 +0900

r40819 の Set#delete_if と Set#keep_if の最適化に関係してコメントとして Hash#delete_if, Hash#keep_if を使うともっと効率が良いけど、そうするとサブクラス化した時に yield する順番が変化してしまう可能性があるためやっていないということを追記しています。 サブクラスで each を再定義した時のことを考慮しているってことでしょうか。