ruby-trunk-changes r66906 - r66911

今日は標準添付ライブラリ tmpdir で一時ディレクトリが残るケースがある不具合修正や SyntaxError のメッセージの改善の続きなどがありました。

kazu: r66906 2019-01-22 21:43:57 +0900

String#dump の rdoc 用コメントのサンプルコードに通常の表示できる文字以外の文字を含むケースのサンプルを追記しています。

nobu: r66907 2019-01-23 08:21:58 +0900

parse.y の set_yylval_str() および set_yylval_literal() マクロで引数を add_mark_object() に渡す処理も含めるようにして、呼び元で毎回 add_mark_object() を呼んでたのを共通化するリファクタリング

svn: r66908 2019-01-23 08:22:10 +0900

version.h の日付更新。

nobu: r66909 2019-01-23 15:06:47 +0900

標準添付ライブラリ tmpdir の Dir.mktmpdir にブロックを渡した時に、ブロックを呼び出した後で親ディレクトリが world writable なのを確認してエラーにするので、作成した一時ディレクトリが残ることがあったので、ディレクトリのパーミッションチェックは Dir.mktmpdir に親ディレクトリが明示的に渡されなくてシステムの一時ディレクトリ(/tmp とか)が利用された時だけにしています。これ後始末をするというのではだめなのかなと思ったのですが、チケットの起票者はそのような変更を提案してて、しかし安全にディレクトリ削除するのが難しい? みたいで、引数で明示的に渡した時はパーミッションについてはユーザーの責任ということにするのかな? [ruby-core:91216] [Bug #15555]

nobu: r66910 2019-01-23 18:08:22 +0900

parse.y で SyntaxError のメッセージを内部的なトークン名から自然な名前にする変更の続き。tSTRING_CONTENT とか tSTRING_END とか、具体的な文字にしにくいトークンの説明も自然言語化しています。

nobu: r66911 2019-01-23 18:39:45 +0900

r66910 の続きで SyntaxError のメッセージで文字列内の式展開の "}" のトークンもそのまま "}" と表示するようにしています。

ruby-trunk-changes r66898 - r66905

今日は rubygems の更新や SyntaxError のメッセージの改善の続きなどがありました。

eregon: r66898 2019-01-21 21:31:10 +0900

r66893 で benchmark/app_aobench.rb に追加した srand(0) の呼び出しをファイル先頭のほうに移動しています。

eregon: r66899 2019-01-21 21:31:20 +0900

benchmark/app_aobench.rb で PPM ファイルのヘッダ書き出し時に format にない余計な引数があったのを削っています。

eregon: r66900 2019-01-21 21:31:29 +0900

benchmark/app_aobench.rb では実際にレンダリングした画像を出力するコードはコメントアウトされているのですが、一部コードが足りてなかったのでコメントアウトされた状態で追加しています。

nobu: r66901 2019-01-22 10:56:26 +0900

r66836 で configure.ac で warnflags を置換する sed の引数が間違ってたのを修正しています。

svn: r66902 2019-01-22 10:56:35 +0900

version.h の日付更新。

nobu: r66903 2019-01-22 15:24:59 +0900

parse.y で最近何度かにわけて SyntaxError の時に unexpected token の例外メッセージに内部的な token 名が表示されるのをわかりやすい名前で表示するようにしてきていましたが、トークン名をクオートして表示するようにしています。

hsbt: r66904 2019-01-22 15:28:04 +0900

rubygems に upstream の 3.1.0.pre1 をマージしています。コマンドラインオプションや rubygems.org の認証用の環境変数の対応追加など機能的な追加もあるようです。

nobu: r66905 2019-01-22 16:25:08 +0900

r66903 で追加した parse.y のマクロ yystpcpy() の ripper 利用時のダミーの定義を削除しています。そして Init_ripper() の中で yystpcpy の参照を追加しています。うーんよくわからないのですが bison のバージョンによる違いの対応みたいです。

ruby-trunk-changes r66882 - r66897

今日は rubyspec/mspec の更新や文法エラー時のエラーメッセージ改善、ドキュメントの修正などがありました。

stomar: r66882 2019-01-21 00:02:07 +0900

RubyVM.resolve_feature_path の rdoc 用コメントの英文の修正。

svn: r66883 2019-01-21 00:02:08 +0900

version.h の日付更新。

stomar: r66884 2019-01-21 00:04:41 +0900

Time.new の rdoc 用コメントの引数 tz の説明の military time zone についての補足にかっこをつけてます(英文の修正?)。

stomar: r66885 2019-01-21 00:06:11 +0900

標準添付ライブラリ securerandom の全体の rdoc 用コメントの文法修正。

stomar: r66886 2019-01-21 00:07:17 +0900

Kernel#system の rdoc 用コメントの文法修正。

eregon: r66887 2019-01-21 05:38:27 +0900

spec/mspec に upstream リポジトリの変更をマージ。

eregon: r66888 2019-01-21 05:38:57 +0900

ruby/spec の upstream の変更をマージ。

eregon: r66889 2019-01-21 06:25:08 +0900

ruby/spec の upstream の変更に追随続き。

k0kubun: r66890 2019-01-21 10:11:57 +0900

IO#read_nonblock に exception: false を渡した時のテストを MJIT 有効時に skip するようにしています。 CI でランダムに失敗するそうです。

glass: r66891 2019-01-21 15:23:55 +0900

Net::HTTP#transport_request の通信処理で Errno::ETIMEDOUT が発生した時にもリトライ処理するようにしています。 https://github.com/ruby/ruby/pull/2012

mame: r66892 2019-01-21 16:13:32 +0900

benchmark/app_aobench.rb が default script encoding の変更の影響で動かなくなってたらしいので magic comment を追加して US-ASCII を指定するようにしています。 AO Bench なつかしいなー。 [ruby-core:91194] [Bug #15552]

mame: r66893 2019-01-21 16:29:00 +0900

r66892 の続きでついでに benchmark/app_aobench.rb に srand(0) を追加しています。乱数によるサンプリングを行うので seed を固定しておかないと計算内容が完全に固定にならないので念のため seed を固定。 [ruby-core:91194] [Bug #15552]

mame: r66894 2019-01-21 17:51:51 +0900

String#dump の rdoc 用コメントに eval すると元の String に戻るはず、ということを明記しています。

glass: r66895 2019-01-21 19:11:04 +0900

system call copy_file_range(2) を利用するのにこれまで syscall() に __NR_copy_file_range を渡して使ってましたが最近の glibc が対応してるようで configure で存在チェックして普通に呼べるなら呼ぶようにしています。 r60284 あたりで追加した機能なので 1年ちょっと前まではまだ呼べなかったのが呼べるようになってきたのですね。

nobu: r66896 2019-01-21 19:24:56 +0900

SyntaxError の時に期待していない token のエラーを出す時に tEND みたいな内部のトークン名が出てしまう問題の追加の対応でバッククオートや % 系のリテラル正規表現リテラル用の "/" などもわかりやすい名前で表示するようにしています。

samuel: r66897 2019-01-21 19:56:29 +0900

r66894 の追加修正。 String#dump の rdoc 用コメントの文法修正。

ruby-trunk-changes r66873 - r66875

今日は Set#reset でインスタンスが freeze されてた時の例外の変更などがありました。

nobu: r66873 2019-01-20 13:38:52 +0900

標準添付ライブラリ forwardable の rdoc 用コメントの英文の表現を変更。 [ruby-core:71281] [Misc #11639]

svn: r66874 2019-01-20 13:38:55 +0900

version.h の日付更新。

kazu: r66875 2019-01-20 13:44:25 +0900

標準添付ライブラリ set の Set#reset で freeze されている時に発生させる例外を FrozenError に変更しています。FrozenError の導入時に変え忘れたんですね。

ruby-trunk-changes r66867 - r66872

今日は default gems のインストール時の修正や MJIT の実行時コンパイルOpenBSD 対応などがありました。

hsbt: r66867 2019-01-19 12:36:22 +0900

tool/rbinstall.rb の r58345 および r58371 の default gems の gemspec.files まわりの変更を revert しています。 default gems の require をした時に gem のほうでなくて標準添付ライブラリのほうが load されてしまうという問題があったのが、どうやらこのせいだったみたいです。 [ruby-core:90867] [Bug #15500]

svn: r66868 2019-01-19 12:36:25 +0900

version.h の日付更新。

k0kubun: r66869 2019-01-19 16:26:59 +0900

MJIT を OpenBSD 上の gcc でも動くように -nodefaultlibs -nostdlib のオプションは削るようにしています。 [ruby-core:91172] [Bug #15548]

k0kubun: r66870 2019-01-19 16:35:30 +0900

MJIT の実行時コンパイル用の -nodefaultlibs -nostdlib フラグをつける時には -nostartfiles もつけるようにしています。

naruse: r66871 2019-01-19 16:49:47 +0900

bootstraptest/test_insns.rb でインデント除去つきヒアドキュメントを使ってたのですが、古い Ruby で実行することを考慮して <<- を使うようにしています。 bootstraptest/ の text_xxx.rb も BASERUBY で実行されるのか。

k0kubun: r66872 2019-01-19 18:08:10 +0900

r66870 を revert しています。 MinGW で -nostartfiles をつけるとうまくいかなかったようです。

ruby-trunk-changes r66856 - r66866

今日は tool/rbinstall.rb や tool/make-snapshot などビルドプロセスやテスト実行まわりのツールの修正が主でした。

nobu: r66856 2019-01-18 08:23:14 +0900

tool/rbinstall.rb に -x/--exclude オプションを追加して make install-nodoc でドキュメントのインストールをスキップできるようにしています。

svn: r66857 2019-01-18 08:23:19 +0900

version.h の日付更新。

nobu: r66858 2019-01-18 08:52:58 +0900

tool/make-snapshot で tar パッケージを作る時に Gem::Package::TarWriter でファイルエントリの mode を書き込む時に元のファイルをそのままコピーするのではなく 644 または 755 を使うようにしています。

nobu: r66859 2019-01-18 10:55:25 +0900

bootstraptest/runner.rb を実行する ruby を指定する BOOTSTRAPRUBY を BASERUBY があれば BASERUBY を、なければ従来どおり MINIRUBY を使うようにしています。

ko1: r66860 2019-01-18 11:04:41 +0900

bootstraptest/test_insns.rb でも古い ruby での実行を考慮して RbConfig::LIMITS の参照前に defined? でチェックするようにしています。

nobu: r66861 2019-01-18 11:36:14 +0900

doc/extension.rdoc および doc/extension.ja.rdoc に rb_str_modify() の説明を追加しています。今まで入ってなかったのか。 [ruby-core:91134] [Bug #15543]

nobu: r66863 2019-01-18 14:14:59 +0900

r66859 で BOOTSTRAPRUBY の設定のため HAVE_BASERUBY をチェックしてたところを test コマンド利用から AS_CASE() マクロを利用するように書き換えています。

nobu: r66864 2019-01-18 15:13:10 +0900

r66863 で HAVE_BASERUBY だけでなく build_os が msys かどうかもみてましたが、これを mingw と修正しています。 mingw の場合は BASERUBY は使えないのか。なんでだろ…。

nobu: r66865 2019-01-18 18:31:32 +0900

tool/make-snapshot で生成する Makefile の prereq というターゲットは prepare-package に変更して、common.mk にある prereq に追加するのをやめています。そして prepare-package から prereq に依存関係を張っておくようにしています。

nobu: r66866 2019-01-18 18:52:50 +0900

古い標準添付ライブラリやテストで iterator? というメソッドでブロックが渡されているかチェックしていたのを block_given? に変更しています。 iterator? とか前世紀ぶりくらいに聞いた気がする…。

ruby-trunk-changes r66838 - r66844

今日は 2.6 以降の Dir.glob の不具合修正などがありました。

shirosaki: r66838 2019-01-16 23:06:37 +0900

2.6 で Dir.glob のパターンの最後に "/" があってもディレクトリ以外にもマッチしてしまうという不具合があったので修正しています。 [ruby-core:91110] [Bug #15540]

nobu: r66840 2019-01-17 09:36:08 +0900

rubyspec に rb_str_modify() という API を呼ぶ拡張ライブラリを用意して、String オブジェクトの共有状態解除に使うようにしています。

svn: r66841 2019-01-17 09:36:10 +0900

version.h の日付更新。

ko1: r66842 2019-01-17 10:36:21 +0900

bootstraptest/runner.rb で MJIT が有効な時にタイムアウトを伸ばすために RubyVM::MJIT.enabled? を呼んでるところを defined? で定数の存在チェックしてから呼ぶようにしています。ここは BASERUBY で呼ばれるから古い ruby で実行する可能性があるみたいでした。
[追記]ささださん曰く「通常はBASERUBYじゃなくてminirubyで呼んでます。miniruby で動かせなくなってしまったのでしかたなく古い ruby で動かそうとして困ったので」とのことでした。[/追記]

ko1: r66843 2019-01-17 16:52:47 +0900

hash.c の Hash の要素数が少ない時の array 実装の時に使う RHASH_AR_TABLE_SIZE_DEC() を関数マクロから inline 関数に変更し、size が 0 になる時は bound も 0 にリセットするようにしています。

hsbt: r66844 2019-01-17 22:45:48 +0900

tool/rbinstall.rb の default gem のインストール部分でインストール先にすでに gemspec ファイルがあったら一旦削除するようにしています。 for the Ruby committers とありますが、まあつまり trunk でビルドし続けてる人は古いバージョンの? gemspec ファイルが残ってしまうので掃除するようにしているってことだと思います。 [ruby-core:77284] [Bug #12764]