ruby-trunk-changes r51825 - r51842

今日は主に Process.spawn などでの fd の扱いの変更や標準添付ライブラリ net/ftp の機能追加などがありました。

ko1: r51825 2015-09-12 00:50:42 +0900

r51794 でうっかり RubyVM::InstructionSequence.load が追加されていたのをまた削除しています。 おっと見逃してました。

svn: r51826 2015-09-12 00:51:03 +0900

version.h の日付更新。

ko1: r51827 2015-09-12 03:25:54 +0900

rb_call_info_t::aux.opt_pc という共用体のメンバを削除しています。 vm_call_iseq_setup_normal() などの関数の引数に opt_pc を渡すようにしています。また opt_pc に 0 を渡すショートカット関数も追加しています。そもそも opt_pc というのはなにをするものなんだろう。と思って記録を辿ると r37185 で追加されているのですが、この時の日記にもよくわからないと書かれているので、まああまり気にしないことにします。

normal: r51828 2015-09-12 05:36:18 +0900

String から Rational への変換でエラーが発生した時の例外メッセージにその文字列を埋め込む時に PRIsVALUE を使ってエンコーディングを保持するように修正しています。

nobu: r51829 2015-09-12 10:29:32 +0900

r51828 の Rational への変換エラー時のメッセージのエンコーディング保持のテストを追加しています。

nobu: r51830 2015-09-12 13:48:36 +0900

r51829 で追加した r51828 のためのテストを default_external に依存しないように EntUtil.with_default_external を利用するように修正しています。

nobu: r51831 2015-09-12 14:23:22 +0900

Windows 版の IO#fcntl のフラグに F_GETFD と F_SETFD、F_DUPFD_CLOEXEC の対応を追加しています。それぞれ GetHandleInformation()、SetHandleInformation() および DuplicateHandle() を使った実装(F_DUPFD_CLOEXEC は F_DUPFD と同様で DuplicateHandle() の第6引数のフラグのみ違う)が追加されています。

nobu: r51832 2015-09-12 14:30:05 +0900

Process.spawn や exec で redirect するオプションに渡した fd の cloexec フラグを取得して、子プロセスにはそれが継承させないようにしているみたいです。子プロセスが ruby 以外のプロセスの場合を考慮してのことかなぁ。

hsbt: r51834 2015-09-12 16:14:38 +0900

File.readable?, File.readable_real?, File.writable?, File.writable_real?, File.executable?, File.executable_real? などのメソッドの rdoc 用コメントにグループも考慮するように追記しています。また access(3) と eaccess(3) についても言及しています。 https://github.com/ruby/ruby/pull/1007

shugo: r51835 2015-09-12 17:57:17 +0900

標準添付ライブラリ net/ftp で MLST, MLSD コマンドの対応を追加しています。 RFC 3659 で追加されたファイルリスト取得のコマンドで、結果がセミコロン区切りの標準化されたフォーマットで得られるというコマンドだそうです。知らなかった。

svn: r51836 2015-09-12 17:57:58 +0900

r51835 の追加部分の行末の空白除去。

shugo: r51837 2015-09-12 18:03:44 +0900

標準添付ライブラリ net/ftp で時刻を parse する Proc オブジェクトで UTC の Time オブジェクトを得るのに "+00:00" ではなくて "Z" をつけて Time.strptime で解析するようにしています。

nobu: r51838 2015-09-12 18:05:41 +0900

r51806 の ChangeLog エントリに非ASCII 文字が含まれていたので置換しています。

nobu: r51839 2015-09-12 18:14:00 +0900

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

shugo: r51840 2015-09-12 18:16:21 +0900

r51835 で追加した標準添付ライブラリ net/ftp の MLST, MLSD のレスポンスの parse で、先頭のコードのあとの空白がないなどのプロトコル異常のチェックを強化して FTPProtoError 例外を発生させるようにしています。

nobu: r51841 2015-09-12 19:09:03 +0900

r51832 の追加修正でしょうか。 Windows 版の dup2() の実装 rb_w32_dup2() で dup2() のエラーチェックを追加しているのと、msvcrt の dup2() は newfd ではなくて 0 を返すことがあるそうで、戻り値ではなく newfd のほうを返すようにしています。

shugo: r51842 2015-09-12 21:29:32 +0900

r51835 で追加された標準添付ライブラリ net/ftp の MLST と MLSD のレスポンスのフォーマットの Unix.mode, Unix.owner, Unix.group, Unix.ctime, Unix.atime などのフィールドにも対応するようにしています。これらは標準化されたものではなくて拡張みたいです。