Hatena::ブログ(Diary)

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

2017-01-23 ruby-trunk-changes r57395 - r57407

[][]ruby-trunk-changes r57395 - r57407

今日は拡張ライブラリまわりのビルドプロセスの変更や標準添付ライブラリ csv の field_size_limit と改行を含むカラムについての不具合修正などがありました。

nobu: r57395 2017-01-22 21:50:36 +0900

ext/extinit.c を生成するためのテンプレートが ext/extmk.rb に埋め込まれていたのを template/extinit.c.tmpl に切り出しています。

nobu: r57396 2017-01-23 11:18:59 +0900

r57395 で extinit.c のテンプレートを template/extinit.c.tmpl に切り出したので extinit.c の作りなおしができるように EXTINITS 変数を sub make に伝播させるように ext/extmk.rb で submakeopts に追加しています。

svn: r57397 2017-01-23 11:18:59 +0900

version.h の日付更新。

nobu: r57398 2017-01-23 11:19:00 +0900

ext/extmk.rb で extinit.c に渡すための features 名(basename)とそのファイルパスは "," 区切りで渡されてましたが、extinit.c のテンプレートでは basename のほうは無視されていたので、最初からファイルパスのみ渡すようにしています。

shyouhei: r57399 2017-01-23 11:47:16 +0900

RubyVM の命令列に出てくる命令のテスト coverage を上げるため、命令ごとにそれが登場するように式を compile するテストを bootstraptest (make test で実行されるテスト)に追加しています。

svn: r57400 2017-01-23 11:47:17 +0900

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

nobu: r57401 2017-01-23 11:50:23 +0900

ext/ 以下の 拡張ライブラリの configure を並列に実行できるようにしているようです。ビルドプロセスの変更でいかにもすんなりいかなさそうなところですね…。

nobu: r57402 2017-01-23 12:43:43 +0900

r57401 で追加した template/configure-ext.mk.tmpl で .PHONY ターゲットとして指定した FORCE を実際に空のターゲットとして宣言するようにしています。 BSD make ではそうする必要があったとのこと。

nobu: r57403 2017-01-23 12:51:25 +0900

r57401 の拡張ライブラリ並列 configure 対応の nmake 向け対応。

nobu: r57404 2017-01-23 13:22:23 +0900

r57401 の拡張ライブラリ並列 configure 対応の nmake 向け対応もうひとつ。やはり一筋縄ではいかなかった模様。けどこれで一旦落ち着いたみたい? ですね(まだ油断はできない)。

nobu: r57405 2017-01-23 13:49:19 +0900

Exception#message の rdoc 用コメントに Exception の to_str として挙動するという古い記述が残っていたので削っています。 https://github.com/ruby/ruby/pull/1517

nobu: r57406 2017-01-23 14:59:28 +0900

標準添付ライブラリ csv でクオートして改行をカラムに含んでいるデータの時に field_size_limit の指定が正しく判定されないことがある不具合を修正しています。 [ruby-dev:49964] [Bug #13149]

nobu: r57407 2017-01-23 15:16:04 +0900

special_object_p() が T_SYMBOL の時(つまり即値じゃない dynamic symbol? mortal symbol? どっちでしたっけ?) も Qtrue を返すようにしています。 Symbol#clone で複製しようとすると例外が発生していたのを修正して self を返すようにしています。 [ruby-core:79216] [Bug #13145]

2017-01-22 ruby-trunk-changes r57389 - r57394

[][]ruby-trunk-changes r57389 - r57394

今日は tempfile の frozen_string_literal の変更とドキュメントの追記などがありました。

kazu: r57389 2017-01-21 21:21:05 +0900

標準添付ライブラリ tempfile とそのテストの magic commect frozen_string_literal を true に変更しています。

kazu: r57390 2017-01-22 12:06:17 +0900

Hash#fetch の rdoc 用コメントの英文法の修正。 https://github.com/ruby/ruby/pull/1515

svn: r57391 2017-01-22 12:06:18 +0900

version.h の日付更新。

shyouhei: r57392 2017-01-22 13:02:42 +0900

NEWS ファイルに r57382 で SipHashの実装を SipHash24 から SipHash13 に変更した旨を追記しています。

shyouhei: r57393 2017-01-22 13:14:21 +0900

NEWS ファイルに r57384 で SecureRandom の乱数源の優先順位を変更したことを追記しています。

nobu: r57394 2017-01-22 17:04:37 +0900

win32/Makefile.sub で make distclean-ext, realclean-ext で ext ディレクトリを削除する時に先に ext/extinit.c を削除するようにしています。

2017-01-21 ruby-trunk-changes r57387 - r57388

[][]ruby-trunk-changes r57387 - r57388

今日は make clean で消すファイルの追加だけでした。

nobu: r57387 2017-01-21 15:17:07 +0900

make clean で ruby-runner とそのソースコード(自動生成されるもの)を削除するようにしています。

svn: r57388 2017-01-21 15:17:08 +0900

version.h の日付更新。

2017-01-20 ruby-trunk-changes r57377 - r57386

[][]ruby-trunk-changes r57377 - r57386

今日は Array#sample の一部条件での高速化、SecureRandom で利用する乱数源の優先度の変更などがありました。

nobu: r57377 2017-01-20 10:02:37 +0900

r57370 の Kernel#warn で Warning.warn を呼ぶようにした変更に関連して空文字列の時に追加する改行コードを rb_default_rs を使うようにしています。 [ruby-core:78156] [Feature #12944]

svn: r57378 2017-01-20 10:02:38 +0900

version.h の日付更新。

nobu: r57379 2017-01-20 11:27:28 +0900

大きなサイズの配列に対する Array#sample を呼ぶと引数が 10 よりも大きい時に非常に遅くなるというのを改善するという [Bug #13136] のチケットのためにまずベンチマークスクリプトを追加しています。

nobu: r57380 2017-01-20 11:39:27 +0900

r57379 でベンチマークを追加した Array#sample について大きなサイズの配列から 11以上の要素を取り出す時に配列サイズに応じた処理の切り替えをするようにして高速化しています。 [ruby-dev:49956] [Bug #13136]

nobu: r57381 2017-01-20 13:27:55 +0900

条件分岐の条件に defined? が書かれていた時に生成する VM 命令を少し最適化しています。

shyouhei: r57382 2017-01-20 15:01:23 +0900

random.c で利用している SipHash の実装を SipHash24 から SipHash13 に変更しています。こちらのほうが高速で、かつ充分に Secure だから、ということかな? [ruby-core:78549] [Feature #13017]

nobu: r57383 2017-01-20 16:45:10 +0900

r55505 で GNUMakefile.in で sub-make に渡す時に -j オプションを filter-out で削るようにしていたのをコメントアウトしています。 make test-all の並列化が伝播しなくなっていたのを戻したみたいです。

shyouhei: r57384 2017-01-20 17:00:00 +0900

Random.raw_seed を Random.urandom に改名して、標準添付ライブラリ securerandom で OpenSSL の実装よりも先に Random.urandom の実装を試すようにしています。 [ruby-core:61094] [Bug #9569]

nobu: r57385 2017-01-20 19:59:47 +0900

ext/extmk.rb で自動生成されたファイルを検出して extconf.rb からやりなおしになるのを避けるように条件を調整しています。

kazu: r57386 2017-01-20 22:33:06 +0900

lib/rbconfig/datadir.rb という標準添付ライブラリを削除しています。既に 2011年から deprecated になってました。

2017-01-19 ruby-trunk-changes r57363 - r57376

[][]ruby-trunk-changes r57363 - r57376

今日はまず do..end のブロックに begin なしで rescue,ensure,else が書けるようになった文法の変更と、Kernel#warn が Warning.warn によるカスタマイズが効くようにする変更、その他古くからあった不具合修正などがありました。

kazu: r57363 2017-01-18 21:35:10 +0900

標準添付ライブラリ profiler の magic comment frozen_string_literal を true に変更しています。

normal: r57364 2017-01-19 03:23:49 +0900

非 IO オブジェクトを入力とした時の IO.copy_stream のベンチマークスクリプトを追加しています。 [Bug #13085] で報告されている問題のために入れたみたいですね。

svn: r57365 2017-01-19 03:23:49 +0900

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

svn: r57366 2017-01-19 03:23:49 +0900

version.h の日付更新。

nobu: r57367 2017-01-19 10:38:59 +0900

メソッド呼び出しのかっこの前に空白があった時に警告するようにしています。いままでもあったような気がしてましたが出てなかったですね。

nobu: r57368 2017-01-19 12:42:07 +0900

r57300 の続き? iseq_setup() で iseq->aux.compile_data->err_info にエラー情報があったらエラーを返すようにしています。 [ruby-core:76531] [Bug #12613]

nobu: r57369 2017-01-19 14:24:34 +0900

id_table.c のコメントの typo 修正。

nobu: r57370 2017-01-19 15:25:06 +0900

Kernel#warn で r56269 で導入された Warning.warn を呼び出すようにしてカスタマイズが効くようにしています。ただし Kernel#warn の挙動が少し変化するみたいです。 [ruby-core:78156] [Feature #12944]

nobu: r57371 2017-01-19 15:39:44 +0900

ENV#fetch の rdoc 用コメントの指定された環境変数がない時の例外クラスの記述を修正しています。 https://github.com/ruby/ruby/pull/1514

hsbt: r57372 2017-01-19 16:07:17 +0900

標準添付ライブラリ fileutils の rdoc 用コメントの記述を修正。 https://github.com/ruby/ruby/pull/1510

nobu: r57373 2017-01-19 16:18:23 +0900

ruby の -l オプション標準入力から読む時に chop で改行を落とす挙動をしているのは chomp に変更しています。 "This is because -l is older than chomp." だそうで。 [ruby-core:78099] [Bug #12926]

shugo: r57374 2017-01-19 17:13:03 +0900

String#rindex で正規表現に // が渡されると Regexp.last_match や $~ が nil になる不具合を修正しています。不要な分岐があったみたいですね。 [ruby-core:79110] [Bug #13135]

naruse: r57375 2017-01-19 18:34:30 +0900

protected の rdoc 用コメントに Java の protected とは違うよと挙動について注釈を追記しています。どうも rdoc で private メソッドのドキュメントを生成するために protected にするという Tips が出回ってるみたいで(?)、そうじゃなくて :doc: タグを使えと書かれています。

nobu: r57376 2017-01-19 18:54:58 +0900

do...end ブロックに def...end の時と同様に begin なしの rescue, else, ensure などの節を書けるようにしているみたいです。つまり

ary.each do
  do_something
ensure
  cleanup
end

みたいに書けるみたいですね。 [ruby-core:78021] [Feature #12906]

parse.y の変更はたった1行! しかし、経験上 parse.y をこんなふうにいじると後からぽろぽろ出てくるので、是非 trunk でお手元のスクリプトが SyntaxError にならないか試してもらうのが良いでしょう(リリースしてから気がつくとつらい)。