Hatena::ブログ(Diary)

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

2016-09-30 ruby-trunk-changes r56291 - r56298

[][]ruby-trunk-changes r56291 - r56298

今日は標準添付ライブラリ yaml/store の不具合修正などがありました。

kazu: r56291 2016-09-29 22:43:46 +0900

標準添付ライブラリ yaml/store で YAML::Store#initialize から親クラスの PStore のメソッド引数なしの super で呼ばれていたため、余分な引数が渡されて PStore#initialize の thread_safe に意図せず真が渡されるようになっていたので、YAML::Store#initialize にも省略可能な引数 thread_safe を追加してインタフェースを合わせています。またもうひとつの引数 yaml_opts も YAML に dump する時に使われていなかったので、それも修正しています。そして yaml/store のテストを追加しています。 [ruby-dev:49821] [Bug #12800]

svn: r56292 2016-09-29 22:43:47 +0900

r56291 で追加されたファイルの svn property 設定。

kazu: r56293 2016-09-29 22:56:11 +0900

標準添付ライブラリ yaml/store の YAML::Store#initialize の rdoc 用コメントに thread_safe 引数を省略して yaml_opts を渡すパターンも追記しています。

kazu: r56294 2016-09-29 23:40:34 +0900

r56291 での標準添付ライブラリ yaml/store の修正で YAML::Store#dump で引数の table でなくインスタンス変数 @table をダンプしていたのを修正しています。

nobu: r56295 2016-09-30 13:02:17 +0900

Range のテストで Test::Unit::Assertion#for を使ってループで回しているテストケースのなかのある assertion が失敗しても続きをチェックするようにしています。

svn: r56296 2016-09-30 13:02:18 +0900

version.h の日付更新。

hsbt: r56297 2016-09-30 18:43:24 +0900

doc/syntax/control_expressions.rdoc の英文法の修正。 https://github.com/ruby/ruby/pull/1448

hsbt: r56298 2016-09-30 19:06:24 +0900

標準添付ライブラリ uri/http で Symbol の配列に %i 記法を使うようにしたり、不要な明示的 return の削除や特異メソッドを呼ぶ時に `::` を使っていたところを `.` を使うようにしたりといったスタイルの修正と、テストを追加しています。 [ruby-core:77255] [Misc #12756] https://github.com/ruby/ruby/pull/1427

2016-09-29 ruby-trunk-changes r56283 - r56290

[][]ruby-trunk-changes r56283 - r56290

今日は標準添付ライブラリ pstore で使う checksum アルゴリズムMD5 以外も使えるようにする変更などがありました。

nobu: r56283 2016-09-28 23:12:33 +0900

PStore のテストで Thread 間の同期を取るのに sleep で調整していたのを Queue を使うようにしています。

nobu: r56284 2016-09-28 23:14:21 +0900

標準添付ライブラリ pstore で checksum の計算に MD5 を利用していましたが FIPS mode のシステムでは Digest::MD5 は利用できないので、他のアルゴリズムもあわせて使えるものを探すようにしています。 MD5 が最後になっているので、これだとこれまで保存したものを読んだときにエラーになるのでは…と思ったのですが、読んだ checksum は transaction で書き込む時に変化していないかのチェックに使うだけ(ETag みたいな感じですね)なのでアルゴリズムが変化しても問題ないみたいでした。 [ruby-core:47341] [Feature #6943]

nobu: r56285 2016-09-29 19:21:04 +0900

thread_sync.c で rb_define_alias() の呼び出しにつけていたコメントが rdoc によってドキュメント化されてしまっていたので削除しています。 https://github.com/ruby/ruby/pull/1450

svn: r56286 2016-09-29 19:21:05 +0900

version.h の日付更新。

nobu: r56287 2016-09-29 19:34:25 +0900

Queue, SizedQueue の push, pop メソッドの rdoc 用コメントで発生する例外が ThreadError であることを明記するようにしています。 https://github.com/ruby/ruby/pull/1451

nobu: r56288 2016-09-29 19:38:35 +0900

appveyor.yml で zlib ライブラリのソースパッケージのダウンロード元の URLsourceforge.net のミラーに変更しています。

nobu: r56289 2016-09-29 20:33:03 +0900

parse.y で a..b や a...b のような Range オブジェクトを作る範囲を示す文法の処理を deferred_dots_gen() という関数に切り出して共有するようにしています。

kazu: r56290 2016-09-29 21:08:30 +0900

r56284 で PStore#load_data で使う checksum が MD5 だけではなくなったので rdoc 用コメントも変更しています。

2016-09-28 ruby-trunk-changes r56277 - r56282

[][]ruby-trunk-changes r56277 - r56282

今日は rubygems の 2.6.7 への更新などがありました。

nobu: r56277 2016-09-28 09:57:53 +0900

標準添付されている rubygems を 2.6.7 に更新しています。 リリースノートはこちら。 https://github.com/rubygems/rubygems/commit/60f35bd1d2359fc30301d2d4cd72bc6833e8d12a 拡張ライブラリを含むパッケージのインストールの修正というのがあるのでこれを取り込んだのかもしれませんね。

nobu: r56278 2016-09-28 10:16:43 +0900

r56277 で 2.6.7 じゃなくて master ブランチを取り込んでしまったみたいなのであらためて 2.6.7 に戻して、さらに r56225 の typo 修正を再適用しています。

shyouhei: r56279 2016-09-28 10:49:16 +0900

.travis.yml の不要なコメントを削除しています。

nobu: r56280 2016-09-28 13:00:27 +0900

Signal の番号から名前を返す Signal.signame の rdoc 用コメントに、対応するシグナルのない番号が渡された場合には nil を返すことを追記しています。 https://github.com/ruby/ruby/pull/1449

nobu: r56281 2016-09-28 14:11:20 +0900

拡張ライブラリ strscan で S_RESTLEN() というマクロがあるので使えるところでこれを利用するようにリファクタリングしています。

nobu: r56282 2016-09-28 14:11:22 +0900

拡張ライブラリ strscan() でバッファ末尾までのサイズで切り詰めるためのコードで S_LEN() マクロを繰り返し書かなくてすむように minl() という inline 関数を定義してこれを利用するようにリファクタリングしています。

2016-09-27 ruby-trunk-changes r56260 - r56276

[][]ruby-trunk-changes r56260 - r56276

今日は先日の文法エラー修正による新たな文法エラーの不具合の修正や、Warning.warn というメソッドで警告の扱いをカスタマイズできる仕組みの導入などがありました。

headius: r56260 2016-09-27 06:12:12 +0900

拡張ライブラリ ripper のインデント除去つきヒアドキュメント <<~ ... の対応のテストを追加しています。テストで snippet 用のヒアドキュメントのマーカーとその中で使われてるインデント除去つきヒアドキュメントのマーカーが同じになっていて、snippet 内でヒアドキュメントが終端してない状態になっていますがこれは意図した内容になっているのかな?

svn: r56261 2016-09-27 06:12:13 +0900

version.h の日付更新。

naruse: r56262 2016-09-27 12:17:47 +0900

標準添付ライブラリ webrickcgiHTTP ヘッダの Cookieパースする時に複数の Cookie を "," で区切って並べる記法を受け付けないようにしています。 [ruby-core:77416] [Bug #12791]

この挙動が元で Pythonフレームワーク django脆弱性の修正として同様の修正をしているようです。 https://gist.github.com/mala/457a25650950d4daf4144f98159802cc

kazu: r56263 2016-09-27 12:50:41 +0900

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

nobu: r56264 2016-09-27 14:26:26 +0900

r56263 で ChangeLog の先頭にまぎれこんだ余分な行を削除しています。

nobu: r56265 2016-09-27 14:34:41 +0900

iseqw_s_compile_file() から rb_parser_compile_file() を呼んでいたのを rb_parser_compile_file_path() を呼ぶように変更してファイル名の String オブジェクトバッファを取り出さずそのまま引数に渡すようにしています。これにより Encoding 情報もそのまま渡せるようになっています。

nobu: r56266 2016-09-27 15:23:36 +0900

iseqw_s_compile() や iseqw_s_compile_file() で引数の処理を rb_scan_args() で可変長の引数を取り出さずに rb_error_arity() による arity チェックと組み合わせて直接 argv から要素を取り出すようにしています。また ":" を使ってキーワード引数を Hash オブジェクトとして取り出すようにしています。どっちかというとキーワード引数の取り出しのほうが本命みたいですね。

nobu: r56267 2016-09-27 17:35:30 +0900

ruby 本体のテスト用の test/unit の assertion assert_in_out_err に success というキーワード引数を追加して、指定時には子プロセスの終了ステータスの success? メソッドの結果のチェックを行なうようにしています。

nobu: r56268 2016-09-27 17:35:31 +0900

RubyVM::InstructionSequence.compile_file で SyntaxError でコンパイルに失敗した場合に、rb_thread_t::errinfo に例外が格納されたまま例外を投げなおしていなかったので、File の close 後に例外発生させるようにしています。 またテストに r56267 で追加した assert_in_out_err の success キーワード引数をさっそく利用しています。

shyouhei: r56269 2016-09-27 18:19:14 +0900

rb_warn() やその variant たちが警告メッセージを出力する時に Warning というモジュールの Warning.warn メソッドを呼び出すことで出力するようにしておいて、このメソッドを再定義することで警告の出力方法をカスタマイズできるようにしています。チケットのほうでもトップレベルの名前空間に追加することで衝突の可能性について危惧されていて RubyVM::Warning や Exception::Warning という候補が上げられていますが、ここではトップレベルに Warning モジュールが追加されています。 [ruby-core:75016] [Feature #12299]

kazu: r56270 2016-09-27 21:13:52 +0900

r56260 で追加した ripper のテストで、渡している snippet のヒアドキュメントのマーカーが一致していなかったのを修正しています。

shyouhei: r56271 2016-09-27 23:01:17 +0900

NEWS ファイルに r56269 で追加した Warning モジュールと Warning.warn について追記しています。

nobu: r56272 2016-09-27 23:19:32 +0900

演算子の前後の空白がバランスが取れてない時に二項演算子として解釈する時に警告を出力する機能についてテストケースを追加して、左側の値が Symbol やローカル変数の時のケースもチェックするようにしています。

nobu: r56273 2016-09-27 23:22:33 +0900

r56198 でかっこなしで引数を渡すメソッドの後の do...end ブロックが Syntax Error になることがある不具合の修正の影響で、ローカル変数と同名のメソッド呼び出しに do...end ブロックを渡すのが SyntaxError になっていたのを修正しています。 [ruby-core:72482] [Bug #11873]

nobu: r56274 2016-09-28 00:21:01 +0900

r56269 で追加した Warning.warn の引数文字列オブジェクトであることと、ASCII compatible な文字列であることをチェックするようにしています。 [ruby-core:77430] [Bug #12793]

svn: r56275 2016-09-28 00:21:02 +0900

version.h の日付更新。

nagachika: r56276 2016-09-28 03:09:00 +0900

r56271 の NEWS ファイルの追記で Warning の特異メソッド名が warning となっていたので warn に修正しました。

2016-09-26 ruby-trunk-changes r56245 - r56256

[][]ruby-trunk-changes r56245 - r56256

今日はいくつか整数オーバフロー検出の強化や throw false での不具合修正、Tempfile.create の第1引数を省略可能にする変更などがありました。

nobu: r56245 2016-09-26 07:29:16 +0900

WindowsDLL のロードのテスト test/-ext-/win32/test_dln.rb で File とか ENV といった定数を参照する時に明示的にトップレベルの名前空間からみるように ::File や ::ENV, ::RbConfig のように参照するようにしています。 途中のスコープの同名の定数をみてしまうのを避けるようにしています。

svn: r56246 2016-09-26 07:29:17 +0900

version.h の日付更新。

rhe: r56247 2016-09-26 11:09:50 +0900

enc_strlen() と rb_enc_strlen_cr() で rb_enc_mbminlen() 単位で丸めるための演算整数オーバフローの回避のために演算順序を変更しています。

rhe: r56248 2016-09-26 11:50:31 +0900

tool/rbinstall.rb で bundled gem パッケージのインストール時に拡張ライブラリビルドに失敗していた時に gemspec ファイルもコピーしないようにしています。

nobu: r56249 2016-09-26 12:00:14 +0900

gems/bundled_gems から証明書の期限切れで r56188 で削除していた minitest の 5.9.1 がリリースされたので復活させています。

nobu: r56250 2016-09-26 14:10:56 +0900

String#lstrip に single byte 文字のみ含む文字列の場合の最適化を行なっています。rstrip のほうでは既に行なっていたようです。 [ruby-core:77392] [Feature #12788]

sonots: r56251 2016-09-26 14:45:29 +0900

標準添付ライブラリ tempfile で Tempfile.create も Tempfile.new の第1引数が省略可能になったのに追随して第1引数を省略可能にしています。 [ruby-core:72747] [Feature #11965]

rhe: r56252 2016-09-26 15:43:51 +0900

対応する catch がない throw で引数に false を渡すと [BUG] で異常終了してしまう不具合を修正しています。 TH_PUSH_TAG() で struct rb_vm_tag::tag は 0 (= Qfalse) に初期化されているので throw false は catch ではない struct rb_vm_tag にも捕捉されてしまって不正な位置に飛んでしまうみたいです。うーむなるほど。[ruby-core:77229] [Bug #12743]

rhe: r56253 2016-09-26 16:24:55 +0900

拡張ライブラリ stringio の StriongIO#seek とバッファの拡張する strio_extend() で file position やバッファサイズの計算で整数オーバフローを避けるようにチェックを追加しています。

nobu: r56254 2016-09-26 16:33:16 +0900

r56252 の throw false のテストで発生した例外の UncaughtThrowError#tag のチェックも追加しています。 [ruby-core:77229] [Bug #12743]

knu: r56256 2016-09-26 21:39:18 +0900

man/ のファイルで Ns っていうマクロを記号? の前に使っていたのを削っています。うん、全然わからない。