Hatena::ブログ(Diary)

PB memo このページをアンテナに追加 RSSフィード

2014-11-23 ruby-trunk-changes r48538 - r48549

[][]ruby-trunk-changes r48538 - r48549

今日は細かな変更だけでした。bundled gem の power_assert は 0.2.2 に更新されています。

nobu: r48538 2014-11-23 07:46:57 +0900

io.c の rb_io_sysread() の不要な代入を削除しています。 https://github.com/ruby/ruby/pull/767

svn: r48539 2014-11-23 07:47:10 +0900

version.h の日付更新。

nobu: r48540 2014-11-23 08:47:22 +0900

test/ruby/test_variable.rb の未初期化変数の参照や未使用のローカル変数などの警告除去。

nobu: r48541 2014-11-23 09:00:38 +0900

標準添付ライブラリ rexml の lib/rexml/dtd/elementdecl.rb で定義されている正規表現の定数 PATTERN_RE が2度代入されているので1つ目をコメントアウトしています。また文字クラスに '\w' と '_' が書かれていたのですが '_' は '\w' に含まれていて冗長なので削っています。

normal: r48542 2014-11-23 10:49:45 +0900

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

normal: r48543 2014-11-23 10:49:57 +0900

構造体 struct rb_execarg, struct load_file_arg, struct args_info などのメンバーの順番の入れ換えで x86-64 環境でのサイズを削減しています。

ktsj: r48544 2014-11-23 12:37:53 +0900

gem/bundled_gems の power_assert のバージョンを 0.2.2 にしています。

nobu: r48545 2014-11-24 02:02:43 +0900

parse.y で intern_cstr() を呼んでいるところを TOK_INTERN() という専用のマクロがあったのでそれを使うようにリファクタリングしています。

nobu: r48546 2014-11-24 02:03:08 +0900

$stdout, $stderr, $> などに代入するオブジェクトは write メソッドが実装されていないといけないので、そのチェックをしています。そこで発生させる例外のメッセージにクラス名やメソッド名を PRIsVALUE を使ってエンコーディングを保持したまま埋め込むようにしています。

svn: r48547 2014-11-24 02:03:15 +0900

version.h の日付更新。

nobu: r48548 2014-11-24 02:03:32 +0900

RubyVM::InstructionSequence の disassemble の時のメソッド名を PRIsVALUE を使って埋め込むようにしています。

nobu: r48549 2014-11-24 02:03:48 +0900

特殊変数 $/ には nil文字列しか代入できないのでチェックをしていますが、ここでも変数名を PRIsVALUE を使って埋め込むようにしています。

変数名は固定じゃないか…と思うのですが、テストをみるとグローバル変数名って alias で別名が付けられるんですね。知らなかった…。メソッドだけだと思ってた。

2014-11-22 ruby-trunk-changes r48531 - r48537

[][]ruby-trunk-changes r48531 - r48537

今日は resolv.rb の不具合修正のほかまたビルドプロセスの微調整などがありました。

nobu: r48531 2014-11-22 00:58:35 +0900

r48530 で ext/ripper/ripper.c の生成時の VPATH に $(PWD) か $(MAKEDIR) を利用していたのを、win32/Makefile.sub で PWD に $(MAKEDIR) を設定しておくことで差異を吸収して common.mk では $(PWD) を使うように戻しています。

svn: r48532 2014-11-22 00:58:39 +0900

version.h の日付更新。

nobu: r48533 2014-11-22 01:11:55 +0900

Module#const_missing で Symbol を pindown しないようにして、GC されない Symbol の生成を防いでいます。

tenderlove: r48534 2014-11-22 05:04:27 +0900

標準添付ライブラリ resolv で Resolv::DNS::Config#generate_candidates で /etc/resolv.conf に options ndots:2 のように ndots というオプションが 2 以上に設定されているとうまく動かないという不具合を修正しています。うーむ名前解決もよくわかってない仕様がありますねぇ。 [ruby-core:65836] [Bug #10412]

akr: r48535 2014-11-22 09:54:33 +0900

tool/make-snapshot で PWD を設定しておくようにしています。 ext/ripper/ripper.c の生成ルールの絡みだと思います。

nobu: r48536 2014-11-22 16:10:20 +0900

verconf.h の生成ルールで tool/generic_erb.rb にオプション -c を指定して更新がある時だけ再生成するようにして loadpath.c の不要な再コンパイルを抑制するようにしています。

nobu: r48537 2014-11-22 16:10:31 +0900

拡張ライブラリ ripper のテストで rescue 節の例外クラスの名前が取れることを確認するテストを追加しています。

2014-11-21 ruby-trunk-changes r48514 - r48530

[][]ruby-trunk-changes r48514 - r48530

今日も ripper 回りのビルドプロセスの再修正や、依存関係作成のツール tool/update-deps のリファクタリングなどがありました。

akr: r48514 2014-11-20 23:18:37 +0900

tool/update-deps で make -p の失敗時のエラー処理の追加と、自動生成されるソースの時の prefix を {$(VPATH)} から $(topdir)/ に変更などなど……。コミットメッセージをみるとコンパイラがみつけた依存関係は全て出力するようにしたとのことです。

akr: r48515 2014-11-20 23:27:44 +0900

r48514 の変数typo 修正。

usa: r48516 2014-11-21 00:19:17 +0900

標準添付ライブラリ uri/mailto でメールアドレスにマッチさせる正規表現リテラル内で "#" をエスケープしています。 # ってメタキャラクタでしたっけ。[追記]#$var でグローバル変数の埋め込みができるのでその回避のためということでした。あー #$ ありましたね。たまにこれ踏みますね。[/追記]

svn: r48517 2014-11-21 00:19:20 +0900

version.h の日付更新。

usa: r48518 2014-11-21 00:29:51 +0900

標準添付ライブラリ net/imap正規表現リテラルでなぜか式展開を利用していたところは不要だったのでそのまま書くようにしています。

usa: r48519 2014-11-21 00:35:14 +0900

r48516 の ChangeLog エントリの追加。

usa: r48520 2014-11-21 00:36:03 +0900

r48518 のぶんの ChangeLog エントリの追加。

usa: r48521 2014-11-21 00:39:03 +0900

拡張ライブラリ openssl の ext/openssl/lib/openssl/x509.rb の定数の正規表現リテラルでも ripper のテストでの誤検出の対処のため文字クラスの中の文字の順序を変更しています。

naruse: r48522 2014-11-21 08:45:44 +0900

ext/ripper/ripper.c の生成ルールで VPATH をやっぱり $(PWD) に戻しています。また変数 RM も渡すようにしています。この部分なかなか安定しませんね。

nobu: r48523 2014-11-21 09:10:25 +0900

というわけでさっそく r48522 の再修正で VPATH はやっぱり "../.." に戻したうえで top_srcdir を ../../$(srcdir) にしています。しかし $(srcdir) って絶対パスの可能性もあるんじゃないでしょうか…。あーいや、configure 起動時に相対パスで指定したら相対パスになるんでしたね、確か。

akr: r48524 2014-11-21 12:04:10 +0900

tool/update-deps で自動生成されるので VPATH の prefix が必要なファイルと同名のファイルがあるため $(top_srcdir) の prefix が必要なフィアル群をそれぞれ定数に宣言しておいて各所でファイル名で分岐していたのを、これを参照するようにリファクタリングしています。

akr: r48525 2014-11-21 12:04:26 +0900

r48524 の ChangeLog エントリの追加。

akr: r48526 2014-11-21 12:04:44 +0900

tool/update-deps の更新に伴い common.mk と各種 depend ファイルの依存関係記述を更新しています。

usa: r48527 2014-11-21 14:27:07 +0900

r48526 の依存関係の記述で $(top_srcdir) という変数が必要になったのに Windows 版の win32/Makefile.sub も追随するため top_srcdir に $(srcdir) を引き継ぐようにしています。

akr: r48528 2014-11-21 18:12:56 +0900

tool/update-deps のリファクタリングメソッドの順番の入れ替えやトップレベルに書かれてた初期化処理のメソッドへの切り出しなど。

kazu: r48529 2014-11-21 19:00:39 +0900

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

naruse: r48530 2014-11-21 19:34:55 +0900

r48522 および r48523 のまたまた再修正。 $srcdir と $top_srcdir の変更は revert し、VPATH は $(PWD と$(MAKEDIR)を並べるようにしています。 UnixOS だと $(PWD) が存在し、Windows だと $(MAKEDIR) が存在するのでこれでどちらでもビルドできるようになる、ということみたいですね。

2014-11-20 ruby-trunk-changes r48497 - r48513

[][]ruby-trunk-changes r48497 - r48513

今日もビルドプロセス回りの変更/修正と、標準添付ライブラリ matrix の機能追加、拡張ライブラリ ripper のパースエラー検出強化などがありました。

nobu: r48497 2014-11-20 00:06:04 +0900

r48494 で tool/downloader.rb の RubyGems パッケージダウンロード時にファイルが既に存在したら再取得しないようにしたのを、RubyGems 用のクラス特有のコードではなくて共通の部分で、ims 引数nil の時の挙動として移動して、common.mk で RubyGems 用のファイルダウンロード時にこの引数に明示的に nil を渡すようにリファクタリングしています。 あとメッセージは $VERBOSE モードの時だけ出力するようにしています。

svn: r48498 2014-11-20 00:06:21 +0900

version.h の日付更新。

nobu: r48499 2014-11-20 00:19:33 +0900

r48493 および r48495 で common.mk の ripper のソースコード生成時の VPATH 指定を PWD にしたのを "../.." 固定にしています。 このルールの実行時は ext/ripper/ に居るから VPATH は常に "../.." ってことらしい…、いやよくわかりません。ビルドプロセス難しい。

nobu: r48500 2014-11-20 00:26:41 +0900

parse.y でヒアドキュメントのパース時に中間オブジェクトを生成せずに直接 parser->delayed に追加するようにしています。

akr: r48501 2014-11-20 00:57:31 +0900

ruby.c に残っていた extern 宣言を internal.h に移動しています。

nobu: r48502 2014-11-20 01:01:02 +0900

parse.y の reg_named_capture_assign_gen() で正規表現コンパイルに失敗した時に例外オブジェクトからメッセージを取り出したり設定したりする時の ID を rb_intern() を使っていたのを組込みの idMesg を利用するようにしています。

nobu: r48503 2014-11-20 02:09:38 +0900

parse.y で左辺値のノードに NODE_LASGN を使ってたのを NODE_CDECL を利用して、ノードに値を持てるようにしています。ふむ?

nobu: r48504 2014-11-20 02:10:35 +0900

r48503 の続き ripper_new_yylval() で lval 用ノードに値を持てるようになったのを利用して、正規表現リテラルパースエラーを検出できるようにしています。なるほど、ここで利用するためでしたか。 [ruby-dev:48714] [Bug #10437]

marcandre: r48505 2014-11-20 02:32:58 +0900

標準添付ライブラリ matrix に Vector#angle_with メソッドを追加しています。2 つの(次元の同じ) Vector オブジェクトのなす角をラジアン単位で返すようです。 [ruby-core:65947] [Feature #10442]

marcandre: r48506 2014-11-20 02:44:46 +0900

標準添付ライブラリ matrix に Vector.independent? および Vector#independent? メソッドを追加しています。複数の Vector オブジェクトが互いに直行している(ある Vector を他の Vector の線形結合で表現できない)かどうかを判定してくれるメソッドです。便利メソッドですね。 [ruby-core:65999] [Feature #10451]

nobu: r48507 2014-11-20 03:11:14 +0900

r48504 の ChangeLog エントリに ML とチケットの番号を追記しています。 [ruby-dev:48714] [Bug #10437]

nobu: r48508 2014-11-20 08:54:59 +0900

parse.y の構造体 struct parser_params でメンバの順番を入れ替えたり、不要なメンバを削除したりしてサイズを削減しています。

nobu: r48509 2014-11-20 08:57:56 +0900

r48506 で追加した Vector.independent? のテストで例外クラスの名前の間違いを修正しています。 [ruby-core:65999] [Feature #10451]

naruse: r48510 2014-11-20 15:52:16 +0900

ext/nkf/depend に nkf.o から nkf.c への依存関係を追加しています。 bsdmake だと明記されていないと(共通ルールがあるのに) nkf-utf8/nkf.c からコンパイルしようとしてしまうそうです。

usa: r48511 2014-11-20 16:56:08 +0900

test/ripper/test_files.rb の ripper のテストでリポジトリ内の *.rb のファイルを片っぱしからパースする時にファイル名も渡すようにしています。エラー時にどのファイルがエラーになったのかわかるようにするためでしょうか。

usa: r48512 2014-11-20 17:04:29 +0900

拡張ライブラリ psych のテストで正規表現リテラル内の "]" をバックスラッシュでエスケープするようにしています。 どうやら Ripper で parse した時の警告避けみたいです。

kazu: r48513 2014-11-20 22:45:51 +0900

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

2014-11-19 ruby-trunk-changes r48477 - r48496

[][]ruby-trunk-changes r48477 - r48496

今日はプロトタイプ宣言などを internal.h にまとめるリファクタリングやその他主にビルドプロセスまわりの変更/修正がありました。

akr: r48477 2014-11-18 23:58:03 +0900

debug.c の set_debug_option() でデバッグオプション用の変数の宣言を関数内に(SET_WHEN() マクロの展開で)していたのをやめて、値の代入だけするようにしています。また SET_WHEN() で代入する値を明示的に引数で受け取って展開するようにして ruby_initial_gc_stress_ptr の型が int* から VALUE* に変化していたのに対応しています。

nobu: r48478 2014-11-19 00:11:03 +0900

NameError や NoMethodError の例外オブジェクトの失敗した定数やメソッド名などの名前を返す name メソッドのテストを追加しています。

svn: r48479 2014-11-19 00:11:07 +0900

version.h の日付更新。

akr: r48480 2014-11-19 00:13:05 +0900

ソースファイル(*.c)で直接宣言していた extern 宣言を internal.h に集めるリファクタリングです。

akr: r48481 2014-11-19 00:24:41 +0900

r48480 の続きで enc/encdb.c で宣言を消したものの internal.h を #include していなかったので追加しています。

akr: r48482 2014-11-19 00:26:44 +0900

tool/update-deps で Makefile から読み込んだ依存関係の行をソートしておくようにしています。

akr: r48483 2014-11-19 00:28:08 +0900

r48482 の tool/update-deps のソートによる common.mk や各種 depend ファイルの依存関係の行を再生成。

nobu: r48484 2014-11-19 04:16:27 +0900

%i{} リテラルの Symbol の配列と %I{} リテラルの時で式の埋め込みが無い時にも %I{} で dynamic symbol を生成するようになっていたので、埋め込みがなければ %i{} を同じ命令を利用するように修正しています。 [ruby-core:66343]

usa: r48485 2014-11-19 04:51:14 +0900

debug.c の set_debug_option() で変数 ruby_w32_rtc_error の extern 宣言が必要とのことで追加しています。また条件コンパイルの条件を win32/win32.c の定義部分と同じものにしています。

nobu: r48486 2014-11-19 05:28:46 +0900

common.mk の変数 $PRELUDE_SCRIPTS および $GEM_PRELUDE の定義で $(srcdir) の prefix をはずしています。 tool/generic_erb.rb でサーチしてくれるので不要とのこと。ビルドプロセス難しい…。

usa: r48487 2014-11-19 07:17:53 +0900

r48486 の common.mk の $(srcdir) 削除で mswin 版のビルドができなくなったようなので revert しています。 また nmake ですかね…。

ko1: r48488 2014-11-19 07:17:54 +0900

gc.c の gc_record() でデバッグ用の出力に major GC か minor GC かのフラグを追加しています。

usa: r48489 2014-11-19 07:46:13 +0900

Windows 版の write() のエミュレーション実装 rb_w32_write() で GetOverlappedResult() を呼んだ直後の errno 生成で前の WriteFile() 呼び出しの結果を格納している変数を参照してしまっていたので、改めて GetLastError() を呼び出すようにしています。

nobu: r48490 2014-11-19 10:08:00 +0900

template/prelude.c.tmpl で {$(VPATH)} の prefix を除去してファイル名相対パスを取得するようにしています。

akr: r48492 2014-11-19 12:55:45 +0900

internal.h の宣言のソースファイル毎のコメントに "(export)" を追記しています。

naruse: r48493 2014-11-19 18:00:33 +0900

ext/ripper/ripper.c の生成時に make の VPATH 変数にカレントディレクトリ(ビルドディレクトリ)を渡して、y.tab.c の生成場所をこれで指定するようにしています。

naruse: r48494 2014-11-19 18:15:04 +0900

tool/downloader.rb で RubyGems のパッケージダウンロードの時はファイルが既にあれば再度ダウンロードしないようにしています。 gem パッケージはバージョンでファイル名も異なるので更新されるということがないはずなので。

naruse: r48495 2014-11-19 20:38:46 +0900

r48493 の common.mk の変更でカレントディレクトリの取得に pwd コマンドを呼び出していたのを $(PWD) 変数参照に修正しています。

naruse: r48496 2014-11-19 21:12:22 +0900

拡張ライブラリ json の parser.c を再生成するルールは common.mk から削除しています。 json は upstream のリポジトリのある拡張ライブラリなので、ソース生成はそっちでやったものを使いましょう、ということだと思います。