ruby-trunk-changes r39477 - r39495

今日も粛々と変更は続きます。そんな中 trunk の RUBY_VERSION は "2.1.0" に変更されました。 trunk のバージョンは 2.1.0 になりました。
その他 socket のリファクタリング、String#byteslice の不具合修正、ビルドプロセスの修正、RubyGems の証明書情報ロードを必要になるまで遅延するようにする変更などがありました。

akr:r39477 2013-02-25 02:51:17 +0900

拡張ライブラリ socket でソケットアドレス構造体を模倣した sockaddr_storage という構造体を定義して利用していましたが、キャストを多用しないといけなかったので、 sockaddr, sockaddr_in, sockaddr_in6, sockaddr_un などと sockaddr_storage を union にした union_sockaddr という共用体を定義してこれを使うようにリファクタリングしています。

svn:r39478 2013-02-25 02:51:23 +0900

version.h の日付更新。

kazu:r39479 2013-02-25 09:41:07 +0900

ChangeLog と NEWS ファイルを doc/ChangeLog-2.0.0 と doc/NEWS-2.0.0 として移動して ChangeLog と NEWS ファイルを空にしています。

kazu:r39480 2013-02-25 09:44:08 +0900

NEWS ファイルの先頭の emacs 向けのモード指定を rd から rdoc に変更しています。

knu:r39481 2013-02-25 11:09:07 +0900

r39294 で入れた(正確には再導入した) configure.in の unexpand_shvar の test コマンドでの比較を "==" ではなく -eq を使うようにしています。 "==" は ksh 拡張なので素の sh では使えないそうです。 [ruby-dev:47094] [Bug #7941]

matz:r39482 2013-02-25 11:38:49 +0900

Matz の手により version.h の RUBY_VERSION が "2.0.0" から "2.1.0" に更新されました。 trunk は 2.1.0 時代に突入しました。

akr:r39483 2013-02-25 12:40:16 +0900

拡張ライブラリ socket の extconf.rb でソケットアドレス構造体の ss_family と ss_len メンバの存在チェックをして必要に応じて __ss_family や __ss_len といったメンバーのエイリアスとしてマクロを定義して違いを吸収しようとするコードを削除しています。 SunOS 向けのコードでしか使わないから消したとのことです。軽く探してみましたが、それがどこのことはかわかりませんでした。

zzak:r39484 2013-02-25 12:50:20 +0900

Thread.new の rdoc コメントを追加して、Thread を継承したクラスを作った時の注意事項を記述しています。

nobu:r39485 2013-02-25 13:10:54 +0900

r39484 で Thread.start, fork のコメントにも Thread を継承したら initialize 内で super を呼べと記述していましたが、start/fork とは関係のない記述として削除しています。

nobu:r39486 2013-02-25 13:12:45 +0900

ビルドプロセスの変更で configure で ext/Setup.* ファイル(static link する拡張ライブラリを指定するファイル)を選択するルールを変更しているみたいなのですが、多分汎用的な判定ルールにしただけで事実上は変更ないんじゃないかと思います。
あと、いくつかの Setup ファイルでプラットフォームの指定を追加しています。

nobu:r39487 2013-02-25 13:54:27 +0900

String#lines, bytes, chars, codepoints などのメソッドが Enumerator を返さず Array を返すようになったのですが、当面はブロックを渡されると各要素を yield するようにしているのですが、将来的には単に無視されるようになる予定で、その実装を切り替える条件コンパイルの条件を STRING_ENUMERATORS_WANTARRAY として定義しています。 今は 0 です。

nobu:r39488 2013-02-25 14:41:16 +0900

mkmf.rb で $DEFLIBPATH に使う変数名を RbConfig::CONFIG["libdirname"] から取得しようとしていたところで、未定義だったら $libdir を使うようにしています。 tool/rbinstall.rb でも同様の修正をしています。
ビルドプロセス難しすぎますね。

nobu:r39489 2013-02-25 15:47:23 +0900

enc/depend で VisualC++ でビルドするために linker へのオプションでオプションとファイル名の間に空白を受け付けないなどの仕様の違いを吸収するために頑張っているみたいです。 static link 版の時だけひっかかる問題だそうで、テストをすりぬけてたんですね。 [ruby-core:52851] [Bug #7950]

nobu:r39490 2013-02-25 15:59:10 +0900

r39489 の再修正。 RbConfig::CONFIG["ARFLAGS"] や ["RANLIB"] が nil の場合を考慮するようにしています。 [ruby-core:52851] [Bug #7950]

drbrain:r39491 2013-02-25 16:30:41 +0900

RubyGems 2.0 が署名検証するようになったため .gem/credentials の情報をロードするようになりましたが、.gem/credentials の permission をチェックするようになったため RVM でのインストールで失敗することがあったそうで(詳細は呼んでいません)、常にロードするのでなく必要になった時にチェック/読み込みをするように修正しています。

nobu:r39492 2013-02-25 16:47:21 +0900

make distclean で miniprelude.c を削除してしまっていて、make distclean すると $(BASERUBY) が存在しない状態でビルドできなくなってしまう不具合を修正しています。 rubysvn リポジトリからチェックアウトした状態からのビルドには ruby が必要なのですが、tar.gz ファイルなどのパッケージには必要なファイルが生成済みでリリースされています。この ruby を使って生成する必要があるファイルを distclean で消してしまってたということです。 [ruby-core:46832] [Bug #6807]

nobu:r39493 2013-02-25 17:10:40 +0900

String#lines, bytes, chars, codepoints などのテストで RUBY_VERSION >= "2.1.0" という条件で渡されたブロックが無視される機能をテストしているのですが、この条件を ENUMERATOR_WANTARRAY という定数としてまとめています。

nobu:r39494 2013-02-25 17:10:44 +0900

r39493 の続きで、テスト内容の切り替えの条件である ENUMERATORS_WANTARRAY の判定を RUBY_VERSION >= "3.0.0" に変更しています。2.x 系のあいだはブロックを受け付ける(ただし警告は出る)んですね。

naruse:r39495 2013-02-25 21:18:48 +0900

マルチバイト文字を含む String を byteslice で文字の途中で切り出してしまった時に String#valid_encoding? は false になるはずなのに true になってしまう不具合を修正しています。 [ruby-dev:47108] [Bug #7954]