Hatena::ブログ(Diary)

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

2017-04-30 ruby-trunk-changes r58507 - r58512

[][]ruby-trunk-changes r58507 - r58512

今日は Solaris 環境での tool/git-refresh の不具合修正をしています。

nobu: r58507 2017-04-30 12:52:06 +0900

r58467 の tool/git-refresh の branch 変数の対応で Solaris の shell でまた動かなくなったそうで置換つきの変数展開をやめて $branch が空だったら unset するようにしています。 [ruby-dev:50102] [Bug #13522]

svn: r58508 2017-04-30 12:52:07 +0900

version.h の日付更新。

normal: r58509 2017-04-30 16:24:36 +0900

benchmark/bm_vm_thread_sized_queue.rb に SizedQueue の push/pop のベンチマークスクリプトを追加しています。

svn: r58510 2017-04-30 16:24:37 +0900

r58509 で追加した benchmark/bm_vm_thread_sized_queue.rb の svn property 設定。

normal: r58511 2017-04-30 18:06:39 +0900

SizedQueue#clear の rdoc 用コメントでクラス名が間違っていたのを修正。

nobu: r58512 2017-04-30 19:53:42 +0900

r58507 に続いて tool/git-refresh の条件つき展開を空白を含まないように word 毎に変数展開を書くようにしています。 [ruby-dev:50102] [Bug #13522]

2017-04-29 ruby-trunk-changes r58502 - r58506

[][]ruby-trunk-changes r58502 - r58506

今日は eval 系メソッドに負の行番号を渡した時の不具合(?)修正がありました。

hsbt: r58502 2017-04-28 21:14:56 +0900

拡張ライブラリ gdbm の .gemspec ファイルでバージョン番号を 2.0.0.beta1 に更新しています。 gdbm.gem は既に存在していて 1.3.1 までバージョンがリリースされているのでそれよりも新しくしているようです。

nobu: r58503 2017-04-29 11:58:53 +0900

eval 系のメソッドで明示的に行番号を渡した時に、負の行番号を渡すと値がずれる不具合を修正しています。まあそもそも負の行番号ってなんだって感じではありますが。 [ruby-core:80920] [Bug #13523]

svn: r58504 2017-04-29 11:58:54 +0900

version.h の日付更新。

nobu: r58505 2017-04-29 19:27:46 +0900

proc.c の rb_block_min_max_arity() で再帰呼び出しを使っていたところを goto によるループ(って言うのかな)に展開しています。

normal: r58506 2017-04-29 19:50:59 +0900

load.c の rb_construct_expanded_load_path() で絶対パス化した文字列オブジェクトについて rb_str_freeze() を呼ぶのをやめています。 expand_path() のマクロで rb_fstring() が使われてるってコミットログから読み取ったのですが、そんなことはないような気が…。rstr_shrink() は呼ばれているけど、どこで freeze されるのかわかりませんでした。

2017-04-28 ruby-trunk-changes r58493 - r58501

[][]ruby-trunk-changes r58493 - r58501

今日は例外のバックトレースの行番号が正しく取れないことがある不具合の修正などがありました。

eregon: r58493 2017-04-27 21:07:43 +0900

require のファイルロードが再帰している時の警告のバックトレース部分が Warning.warn のカスタマイズが効かずに標準エラー出力に出てしまう不具合の修正のやりなおしで Warning.warn を何度も呼ぶのではなくて文字列としてまとめてから一気に出力するようにしています。 [ruby-core:80850] [Bug #13505]

nobu: r58494 2017-04-27 21:30:55 +0900

common.mk の ext/ripper/ripper.c の生成のルールでソースディレクトリ以外でのビルド時に対応するように VPATH の指定を変更しています。

nobu: r58495 2017-04-28 11:05:54 +0900

sprintf.c の rb_str_format() で CHECK() マクロによる精度のサイズのチェックを PUSH() マクロの後に変更する修正。どういう条件で問題になるんだろ。

svn: r58496 2017-04-28 11:05:55 +0900

version.h の日付更新。

nobu: r58497 2017-04-28 11:10:51 +0900

sprintf.c で数値の文字列化に snprintf(3) のかわりに ultoa() を使ったり、文字列の連結に rb_str_xxx の関数群を利用するようにするリファクタリング

nobu: r58498 2017-04-28 14:08:44 +0900

r58497 で追加した ultoa() を ruby_ultoa() に改名しています。 MSVC に同名のライブラリ関数があったそうです。

nobu: r58499 2017-04-28 17:06:33 +0900

def によるメソッド定義に直接 rescue 節を書いた時にそのなかで raise した時などバックトレースの行数が正しく出ないことがある不具合の修正。 [ruby-core:79388] [Bug #13181]

nobu: r58500 2017-04-28 18:50:43 +0900

r58499 で追加した set_line_body() は RIPPER が未定義の時だけ定義するように #ifndef を移動しています。

nobu: r58501 2017-04-28 20:42:58 +0900

r58497 で不要になった(スコープが変わった) rb_str_format() の変数を削除しています。

2017-04-27 ruby-trunk-changes r58488 - r58492

[][]ruby-trunk-changes r58488 - r58492

今日は newhash 命令の最適化のリベンジがありました。

stomar: r58488 2017-04-27 05:09:34 +0900

Warning.warn の rdoc 用コメントのちょっとした修正。

svn: r58489 2017-04-27 05:09:35 +0900

version.h の日付更新。

nobu: r58490 2017-04-27 05:13:07 +0900

r58487 の Warning#write メソッドの追加を revert して Warning::buffer という String を継承した内部的クラスを導入して(名前が大文字で始まってないので定数から参照できない)、そこに write メソッドを追加して、 rb_str_tmp_new() で生成した一時的文字列オブジェクトの klass をこの内部的クラスにしてから rb_io_puts() を使って複数行の文字列を1つの String オブジェクトに組み立ててから rb_write_warning_str() を呼ぶようにしています。うーん細かい。 [ruby-core:80875] [Feature #12944]

normal: r58491 2017-04-27 12:16:39 +0900

rb_provide() で rb_fstring_cstr() を使って fstring を、rb_require() では rb_str_new_cstr() で静的 String オブジェクトを利用するようにして object slot を消費しないようにしています。

shyouhei: r58492 2017-04-27 13:21:04 +0900

r58427 で導入して、GC 回りで不具合があったので r58463 で一旦 revert した newhash 命令の最適化を再度入れています。 要素を1つずつ insert せずに rb_hash_bulk_insert() という関数で C 関数レベルで一度に要素をセットした Hash を作るようにしています。はじめから必要な要素数に見当ったサイズのテーブルを作っておいてから最後に rehash するようにしています。最後の rehash つきでもこっちのほうが速いのか(特に大きな Hash リテラルの場合)。 https://github.com/ruby/ruby/pull/1600

2017-04-26 ruby-trunk-changes r58480 - r58487

[][]ruby-trunk-changes r58480 - r58487

今日は昨日の spec/default.mspec の変更の再修正など小さな修正だけでした。

ko1: r58480 2017-04-26 02:24:06 +0900

r58478 と r58479 でビルドディレクトリがソースディレクトリと別の場合は動かなくなっていたので revert しています。

svn: r58481 2017-04-26 02:24:07 +0900

version.h の日付更新。

ko1: r58482 2017-04-26 02:50:34 +0900

Tracer.or で Trace 有効化している時に無限再帰が起こった時のテストに Timeout モジュールタイムアウトをかけるようにしています。でも効かなかったみたいです。

naruse: r58483 2017-04-26 04:13:26 +0900

test/coverage/test_coverage.rb で警告メッセージの抑制のため EnvUtil.suppress_warning を利用しています。

eregon: r58484 2017-04-26 04:34:07 +0900

r58480 で revert された r58479 ですが load のかわりに require を使うようにしてやりなおしています。

normal: r58485 2017-04-26 05:20:08 +0900

thread_sync.c の rb_mutex_lock() の注意事項が書かれたコメントの typo 修正。

nobu: r58486 2017-04-26 09:30:05 +0900

r58476 で range.c の range_init() で args が未使用になっていたので変数を消しています。

nobu: r58487 2017-04-26 17:11:32 +0900

Warning モジュールに write メソッドを実装して rb_warn_m() からの複数の文字列の出力を rb_io_puts() を使って実装するようにしています。 [ruby-core:80849] [Feature #12944]