Hatena::ブログ(Diary)

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

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 っていうマクロを記号? の前に使っていたのを削っています。うん、全然わからない。

2016-09-25 ruby-trunk-changes r56235 - r56239

[][]ruby-trunk-changes r56235 - r56239

今日は --dump=parsetree オプションでの配列リテラルなどの表示の形式の変更などがありました。

ktsj: r56235 2016-09-25 19:23:33 +0900

ruby の --dump=parsetree オプションで AST をダンプする時に配列リテラルや "return a,b" のような複数の値を返す時(実際には配列が返されますが)の構文で要素毎に NODE_ARRAY のヘッダが出力されてしまっていたのを修正して各要素がフラットに並ぶようにしています。

svn: r56236 2016-09-25 19:23:34 +0900

version.h の日付更新。

nobu: r56237 2016-09-25 22:33:08 +0900

rb_proc_arity() から rb_proc_min_max_arity() を呼んでいたため GetProcPtr() を2回重複して呼んでいたので直接 rb_block_min_max_arity() を呼び出すようにする最適化

nobu: r56238 2016-09-25 22:48:08 +0900

標準添付ライブラリ erb の ERB::Compiler::TrimScanner の attr_accessor :stag を削除しています。親クラスの ERB::Compiler::Scanner で定義済みなので不要だったとのこと。 https://github.com/ruby/ruby/pull/1445

nobu: r56239 2016-09-25 23:48:22 +0900

make_unused_kw_hash() で最後の引数 key_only で挙動を変化させていたのを、 make_unknown_kw_hash() と make_rest_kw_hash() という別の関数として分離するリファクタリング

2016-09-24 ruby-trunk-changes r56222 - r56231

[][]ruby-trunk-changes r56222 - r56231

今日は misc/ruby-mode.el のテストの新しい Emacs 向けの修正や、AppVeyor でのテスト時の zlib のビルド方法などの修正がありました。

nobu: r56222 2016-09-24 10:18:34 +0900

misc/ruby-mode.el のテストの test/misc/test_ruby_mode.rb で emacsバックアップファイルを作らせないための方法に save-buffer に引数 0 を渡すようにしています。そういえばここしばらく変更されてなかったのですっかり忘れてましたが misc/ruby-mode.el のテストというものがあるんでした…(新しめの emacsインストールされている時のみ動く)。

svn: r56223 2016-09-24 10:18:35 +0900

version.h の日付更新。

nobu: r56224 2016-09-24 10:19:43 +0900

test/misc/test_ruby_mode.rb で Emacs 25.1 がこれまで出していたメッセージが出なくなったのでそれに依存していたテストで明示的にメッセージを出して成功したことを判定するようにしています。 [ruby-core:77355] [Bug #12785]

nobu: r56225 2016-09-24 11:28:25 +0900

コメントやメッセージの "Integer" つけられた冠詞が "a" だったところを "an" に修正しています。 https://github.com/ruby/ruby/pull/1438

kazu: r56226 2016-09-24 14:26:42 +0900

spec/README に書かれている rubyspec の URL が古いものだったので現在のページに変更しています。

nobu: r56227 2016-09-24 20:52:56 +0900

appveyor.yml で Windows 環境のテスト時に Libressl と zlib のパッケージファイルをダウンロードするのに "ps: Start-FileDownload ..." というのを使っていたのを "appveyor DownloadFile ..." というコマンドを使うように変更しています。 Start-FileDownload は1回しか使えなくなっていたそうです。

nobu: r56228 2016-09-24 21:51:14 +0900

appveyor.yml で btest, test-basic に渡す環境変数に OPTS のかわりに TESTOPTS を使うようにしています。

nobu: r56229 2016-09-24 21:51:14 +0900

appveyor.yml で Libressl のパッケージをダウンロードしてインストールしていたのをやめて、AppVeyor の環境に元々入っている OpenSSL-Win64 があるみたいなので、それを利用するようにしています。

nobu: r56230 2016-09-24 22:26:21 +0900

ext/extmk.rb で $extso という変数に名前が格納されていたら Makefile の EXTSO という変数に格納して、tool/rbinstall.rb でそのライブラリも一緒にインストールするようにして、zlib の Windows 向けのビルドで zlib1.dll を $extso に追加するようにしています。

nobu: r56231 2016-09-24 22:26:24 +0900

appveyor.yml で zlib のパッケージファイルを ext/zlib の下に展開しておくことで、最近 zlib の extconf.rb で対応していた zlib のライブラリを一緒にビルドする機能を使うようにしています。

2016-09-23 ruby-trunk-changes r56205 - r56221

[][]ruby-trunk-changes r56205 - r56221

今日は主に Refinements で Module も refine できるようにする変更や、forwardable で private method を警告つきで委譲可能にする変更などがありました。

kazu: r56205 2016-09-22 23:05:48 +0900

r56105 の svn:ignore の対応にあわせて .gitignore に /enc/unicode/data/9.0.0/*.txt を追加しています。

nobu: r56206 2016-09-23 10:32:55 +0900

r56205 だと enc/unicode/data/9.0.0 の下だけ無視するようになっていたので、バージョンに依存しないように /enc/unicode/data/*/*.txt に再変更しています。

svn: r56207 2016-09-23 10:32:56 +0900

version.h の日付更新。

nobu: r56208 2016-09-23 12:15:31 +0900

ISeq の末尾呼び出し最適化で jump 命令による無条件分岐の先に leave があった場合も末尾呼び出し最適化が有効になるようにしています。

nobu: r56209 2016-09-23 14:27:38 +0900

標準添付ライブラリ fileutils のテストで使う一時ディレクトリを pid のみ suffix に付けたパスを生成していたのを Dir.mktmpdir を利用するようにしています。

nobu: r56210 2016-09-23 15:47:06 +0900

標準添付ライブラリ forwardadble で private method が委譲できなくなっていたので、警告つきで可能にするように戻しています。うーん、確かに意図的に private method を委譲したいことはそんなにはない気がする(というかそもそも private をそんなに使わない…)。 [ruby-core:77341] [Bug #12782]

knu: r56211 2016-09-23 20:21:52 +0900

ruby, erb, irb, ri などの man ページ用のファイルで Kl というマクロを使って URL にリンクをはるようにしています。

knu: r56212 2016-09-23 20:21:55 +0900

man/ruby.1 の Rich Libraries の節のリンク切れしていた URL を更新したり参照を追加したりしています。

shugo: r56213 2016-09-23 20:46:33 +0900

Refinements で Class だけでなく Module のメソッドも再定義できるようにしています。 Refinements の Module#refine は Class しか対象にできなかったんですね。けどそんなに実装に大きな変更はないみたいです。 [ruby-core:76199] [Feature #12534]

svn: r56214 2016-09-23 20:46:34 +0900

r56213 で混入した diff というファイルの行末の空白除去。

svn: r56215 2016-09-23 20:46:34 +0900

r56213 で混入した diff ファイルの svn property 設定。

shugo: r56216 2016-09-23 21:08:00 +0900

r56213 で混入したファイルを削除しています。

nobu: r56217 2016-09-23 21:16:00 +0900

r56210 で標準添付ライブラリ forwardable.rb に混入してたデバッグ用の puts を削除しています。

knu: r56218 2016-09-23 21:40:16 +0900

tool/mdoc2man.rb に r56211 で追加した Lk というマクロを解釈する機能を追加しています。

nobu: r56219 2016-09-23 23:18:39 +0900

r56204 の拡張ライブラリ zlib の extconf.rb の変更で zlib のソースがソースディレクトリにある場合の Windows 版での DLLインストール先が $(BINDIR) だったのを修正しています。

nobu: r56220 2016-09-23 23:18:41 +0900

拡張ライブラリ zlib の extconf.rb で zlib のソースがソースディレクトリにある場合に have_func() や have_type() でのチェックを省略して -DHAVE_XXX オプションを追加しています。zsrc がある場合も -I でヘッダファイルを探すパスは追加しているから have_xxx でのチェックも有効ではないのかなぁ。まあでもわざわざソースを置いてるからには最近のバージョンだろ、ということみたいです。

shugo: r56221 2016-09-23 23:59:26 +0900

r56213 の Refinements の Module 対応で make_method_entry_refined() で Ruby と同様の感じで || 演算子を使っていたところを条件演算子で書き換えています。 C だと || は論理演算子なので真偽値を返すので必ずしも評価値がそのまま結果として返されないからですね。

2016-09-22 ruby-trunk-changes r56201 - r56204

[][]ruby-trunk-changes r56201 - r56204

今日は拡張ライブラリ zlib のビルド時の変更がありました。

kazu: r56201 2016-09-22 13:06:53 +0900

r56194 と同様に GC#garbage_collect の rdoc 用コメントの呼び出し例で引数を省略した形式でも GC.garbage_collect とは呼べないので ObjectSpace.garbage_collect および GC を include して呼ぶ方法を記述するようにしています。 [ruby-core:77327] [Bug #12777]

svn: r56202 2016-09-22 13:06:54 +0900

version.h の日付更新。

nobu: r56203 2016-09-22 15:35:27 +0900

Windows でのテスト用の dlntest.dll を作成する位置がビルドディレクトリ直下だったのを、ext/-test-/win32/dln/dlntest.dll に置くようにしています。

nobu: r56204 2016-09-22 15:35:28 +0900

拡張ライブラリ zlib の extconf.rb でソースディレクトリに "zlib-(バージョン番号)" のようなディレクトリがあったら zlib のソースが含まれているものとして、-I オプションを追加し、さらに Windows 環境であったらこのソースを元に DLLビルドするようにしています。けど all ターゲットをコマンドなしで追加するようにしているのはなぜだろう…。

[追記]all ターゲットは元々出ているので、その上の位置にターゲットを追加することになるのでデフォルトのターゲットが変わってしまわないようにコマンドなしの all: を追加していたそうです。[/追記]