ruby-trunk-changes r46039 - r46047

今日は少し前に導入された IO#statfs の削除と、File::Stat#birthtime の導入など、ファイルに関する大きめの機能的な変化がありました。

nobu: r46039 2014-05-22 14:02:15 +0900

エンコーディングeuc-jp、shift_jis の文字種の判定などのためのテーブルを gperf (GNU Perf 完全ハッシュ関数を生成するツール)を使って生成するようにしているみたいです。 enc/jis/props.h.blt、enc/jis/props.h.blt、enc/jis/props.kwd などのファイルを追加(.h は生成物だと思いますが)しています。

svn: r46040 2014-05-22 14:02:26 +0900

version.h の日付更新。

naruse: r46041 2014-05-22 19:39:29 +0900

テスト用の拡張ライブラリとして ext/-test-/file/fs.c に getmntent_r(3) でファイルシステムの種類を取得する拡張ライブラリを追加しています。とりあえず拡張ライブラリだけの追加ですね。

naruse: r46042 2014-05-22 19:39:48 +0900

r45661 で導入された IO#statfs および File::Statfs クラスが revert されています。元々テストで利用したくて追加された機能だったので、その部分はかわりに r46041 で追加したテスト用拡張ライブラリにを利用するように変更しているようです。 [Feature #9772]

naruse: r46043 2014-05-22 19:42:06 +0900

sleep のテストで、なぜか少し早く起きてきてしまうことがあったので微妙に差分のチェックを甘くしていたのを、Time.now を使うのではなくて Process.clock_gettime で CLOCK_MONOTONIC を使って厳密に指定した秒数以上間隔があくことをチェックするようにしています。 早めに起きてきてたのは、システムの時計の調整の影響なのではないかということで CLOCK_MONOTONIC であれば単調増加することが保証されているので、これでチェックすれば正確なチェックができるだろうということみたいです。

nobu: r46044 2014-05-22 19:58:08 +0900

enc/trans/escape.trans、enc/trans/gb18030.trans、および r46041 で追加された ext/-test-/file/fs.c などの行末の空白除去。

svn: r46045 2014-05-22 19:58:11 +0900

r46041 で追加された ext/-test-/file/fs.c の svn property 設定。

naruse: r46046 2014-05-22 20:17:34 +0900

configure でのチェック対象のヘッダに sys/param.h を追加。 Linux で存在するそうです。

naruse: r46047 2014-05-22 20:49:22 +0900

ファイルの属性に、そのファイルが作成された時刻 birthtime を取得できるようにしています。 File.birthtime、File#birthtime、File::Stat#birthtime などのメソッドを追加しています。 birthtime は普通に struct stat に st_birthtimespec というメンバで struct timespec 型で取得できるようです。 Windows 版の実装は別途追加されそうですね。今のところ NotImplementedError を発生させるようにしているようです。 [ruby-dev:48048] [Feature #9647]