ruby-trunk-changes r40262 - r40278

今日は Etc の使う Struct で作るクラスの名称の変更や Vector の新メソッド追加、正規表現エンジン鬼雲の不具合修正、ビルド方法の修正などがありました。

akr:r40262 2013-04-12 21:01:51 +0900

pack.c にあった gcc のバージョンをチェックする GCC_VERSION_SINCE() マクロの定義を internal.h に移動。また bignum.c の整数の 1 のビット数を数える関数で GCC 3.4.0 以降だったら __builtin_popcountl() という組込み関数を利用するようにしています。

akr:r40263 2013-04-12 21:07:27 +0900

r40262 で pack.o が internal.h に依存するようになったので common.mk の依存関係に追加しています。

nobu:r40264 2013-04-13 00:16:00 +0900

拡張ライブラリ etc の Etc.getpwnam や Etc.getgrnam などが返す Struct を使ったクラスのオブジェクトがなぜか Struct::Passwd や Struct::Group として定義されていたので Etc::Passwd, Etc::Group として定義するようにしています。へー etc は使ってましたけどまったく気がついてませんでした。

svn:r40265 2013-04-13 00:16:07 +0900

version.h の日付更新。

nobu:r40266 2013-04-13 00:23:22 +0900

r40264 で Etc::Group に設定するクラスを間違えていたのを修正。

akr:r40268 2013-04-13 09:46:29 +0900

mkmf.rb で ruby_headers に ruby/ruby.h, ruby/missing.h, ruby/intern.h, ruby/st.h ruby/subst.h を追加するようにして、その結果増えた依存関係を拡張ライブラリの depend ファイルに追加しています。

nobu:r40269 2013-04-13 10:20:34 +0900

struct.c の Struct のインスタンス(クラス)を作る関数 make_struct() を anonymous_struct(), new_struct(), setup_struct() に分解しています。 anonymous_struct は定数名を持たないクラスを作る時で new_struct() は名前を持たせる時、setup_struct() は共通の初期化部分という分けかたみたいです。
このコミットで ChangeLog がかなり削られてしまっていて後に r40271 で修正されています。

nobu:r40270 2013-04-13 10:20:39 +0900

struct.c で Struct の属性名を保持するために使っている Array を klass = 0 にして ObjectSpace から見えないようにしています。

nobu:r40271 2013-04-13 10:23:05 +0900

r40269 で ChangeLog のエントリが消されてしまっていたのを戻しています。

nobu:r40272 2013-04-13 11:33:58 +0900

拡張ライブラリ ripper の depend ファイルで probes.h の依存関係で記述するディレクトリパスを $(top_srcdir) から $(topdir) に変更しています。probes.h は自動生成されるヘッダでプラットフォームによって異なるので、ソースディレクトリ以外のところでビルドする場合にソースディレクトリにはおけないということだそうです。 拡張ライブラリの場合の topdir は全体のビルドディレクトリみたいです。 RbConfig::CONFIG["topdir"] はプラットフォーム依存の(拡張ライブラリ)のロードパスが格納されていたりするのでちょっと混乱しました。

marcandre:r40273 2013-04-13 12:08:28 +0900

標準添付ライブラリ matrix.rb に Vector#cross_product というメソッドを新設しています。 これは3次元の Vector に限定していわゆる外積を計算するもののようです。 https://github.com/ruby/ruby/pull/276
テストが欲しいですね。

marcandre:r40274 2013-04-13 13:31:15 +0900

Array#include? の rdoc コメントの英語の修正。

usa:r40275 2013-04-13 18:57:02 +0900

r40272 の続き(?) ext/ripper/depend で依存する parse.h と id.h のディレクトリ指定を $(top_srcdir) から {$(VPATH)} に変更しています。 parse.h と id.h も生成されるファイルなので $(topdir) に作られる(かもしれない?)からみたいです。ビルドプロセス難しいです……。

naruse:r40276 2013-04-13 20:30:35 +0900

鬼雲 5.13.4 をマージしています。正規表現に /\n?\z/ のような改行コードを含むものがマルチバイト文字列だとうまくマッチしないことがある不具合を修正しているそうです。 [ruby-core:53944] [Bug #8210]

naruse:r40277 2013-04-13 20:44:05 +0900

r40275 の ext/ripper/depend の id.h parse.h のディレクトリ指定の変更が今度は Unix 系のプラットフォームでのビルドを壊してしまったそうで、ディレクトリの指定そのものを消してファイル名のみ記述するようにしています。

usa:r40278 2013-04-13 21:14:37 +0900

r40275 および r40277 の続きで mkmf.rb で生成する Makefile 内で distdatadir という変数を定義して、プラットフォームによって(というか正確には nmake を使っているかどうかによって) {$(VPATH)} もしくは $(top_srcdir) を使うようにしています。ビルド難しいです。