ruby-trunk-changes 2021-02-14

今日は主に tool/rbinstall.rb での default gems 化されている標準添付ライブラリのインストール方法の変更や Windows 環境でのマルチバイト文字を含むファイル名のファイル操作の不具合修正などがありました。

[31f4dec637] Nobuyoshi Nakada 2021-02-14 02:05:23 UTC

tool/rbinstall.rb で default gems の gemspec ファイルが lib/ や ext/ 直下にない場合の対応でのディレクトリ構成の対応を柔軟にするようにしているようです。

[07a8f09b9f] git 2021-02-14 02:07:03 UTC

version.h の日付更新

[fc56b96b09] Nobuyoshi Nakada 2021-02-14 04:20:22 UTC

31f4dec6373c15a58899f8b86e35d48a7d813bf6 の続きで tool/rbinstall.rb で、.gemspec ファイルだけ存在してて ruby スクリプトが存在してない時? に対応するようにしているようです。

[763b8fed3d] Vít Ondruch 2019-10-10 10:32:59 UTC

tool/rbinstall.rb で default gems になっている標準添付ライブラリの install に rubygems の Gem::Installer を継承している RbInstall::UnpackedInstaller の実装を流用するようにしています。これは以前から bundled gems のインストール時に使うために使ってたクラスです。

[ff527e7e32] Vít Ondruch 2019-10-16 16:01:35 UTC

bin/bundle、bin/bundler、bin/erb、bin/irb、bin/racc、bin/rdoc、bin/ri などのファイルを削除しています。tool/rbinstall.rb で gem としてインストールするようにしたのでそれぞれのライブラリ内のものがコピーされるので不要になったということです。確かにここだけ更新忘れてたりありそうなので良いことですね。

[504d6dc429] Nobuyoshi Nakada 2021-02-14 07:49:14 UTC

31f4dec6373c15a58899f8b86e35d48a7d813bf6fc56b96b09e477686975c978142e3af9179219cd の tool/rbinstall.rb の default gems インストールについての変更を revert しています。

[0dad341006] Nobuyoshi Nakada 2021-02-14 08:41:02 UTC

tool/rbinstall.rb の default gems のインストールのための再修正。RbInstall::DirPackage というクラスでインストール時のディレクトリ名の変換用の Hash を受け取れるようにして、spec.bindir の指定を "libexec" にすりかえるようにしているようです。

[416956afa6] Nobuyoshi Nakada 2021-02-14 08:47:46 UTC

tool/lib/test/unit.rb の並列テスト時に失敗したテストをまとめてリトライする時に --verbose オプションの設定を伝播させるのが漏れてたのを修正しています。

[a681c484a3] "xtkoba (Tee KOBAYASHI)" 2021-02-14 10:43:45 UTC

Windows の wutimensat() という API の wrapper の w32_utimensat() でファイルパスの codepage 指定を filecp() にしてたのを引数の cp を使うように修正しています。マルチバイト文字を含むファイルの操作でエラーになることがあったようです。 [ruby-dev:51020] [Bug #17626]

ruby-trunk-changes 2021-02-13

今日は複数 Ractor でのパフォーマンス改善のための変更と、GC の mark/update 漏れの修正がありました。

[15dbaa0b54] Peter Zhu 2021-02-11 20:32:19 UTC

rb_execution_context_t 構造体の mark 関数と GC.compact のための update 関数 rb_execution_context_mark() と rb_execution_context_update() cfp->ep の配列内の prev_ep に辿るポインタの mark/update 漏れがあったのを修正しています。これはいつからかな……と思ったらチケットのほうで報告者が bisect してくれていて a53e2850c572135ed657144bc14e47b29c64fa94 からじゃないかということなので、3.0.0 からですね。 [ruby-core:102463] [Bug #17622]

[81995797bb] git 2021-02-12 19:24:19 UTC

version.h の日付更新

[813fe4c256] Koichi Sasada 2021-02-12 20:37:46 UTC

rb_equal() の複数 Ractor で同時に実行された時のパフォーマンス向上のための変更とのこと。内容はリファクタリングに近い感じですがマルチスレッドからの実行で高速になりやすいようにしているようです。 [ruby-core:101840] [Bug #17497]

ruby-trunk-changes 2021-02-12

今日は Module#prepend で継承関係の循環を検出した時に副作用があった不具合の修正や昨日の Queue.new で初期値を指定した時の引数の変換方法の仕様変更などがありました。

[b2d2d25b94] aycabta 2021-02-08 02:08:57 UTC

irb のテストで Windows 環境では色付けを無効にして実行するようにしています。また Binding#irbirb 起動した時に起動箇所のまわりのソースコード表示の最後で色付けが有効でない時に色をクリアするエスケープシーケンスの出力を抑制するようにしています。

[6eb5b3ac27] aycabta 2021-02-09 08:29:38 UTC

irbirb_info というコマンドで RUBY_PLATFORM の内容も表示するようにしています。

[8544f51ef7] Nobuyoshi Nakada 2021-02-11 13:18:11 UTC

tool/rbinstall.rb で Windows で実行可能な binstub ファイル生成時に shell のコメントとして書き出す # の前に空白を追加しています。 sh の場合コメントは単語の最初にないといけないようです。

[81f17857a7] Nobuyoshi Nakada 2021-02-11 13:24:49 UTC

String#crypt の salt のサイズチェックでの例外発生のパスに goto を使ってたのをまとめるリファクタリング

[aea40f44aa] Nobuyoshi Nakada 2021-02-11 14:53:29 UTC

time.c のデバッグ用メッセージ出力の fprintf(3) の指示子を決めうちにせず PRI_TIMET_PREFIX などのマクロを利用するように修正しています。

[b83b27cddb] Nobuyoshi Nakada 2021-02-11 12:03:11 UTC

d77a42fbfd60f4e4f49f1feb56e089494fbf3572IRB::IrbLoader の修正の再修正。よくみると直前で if File::ALT_SEPARATOR で分岐しているので意味のない変更になってたのでそれを利用するように書きなおしています。

[b83ad02997] git 2021-02-11 15:02:33 UTC

version.h の日付更新

[2d877327e1] Jeremy Evans 2021-02-09 23:39:34 UTC

Module#prepend で自分自身に prepend するなど循環するような prepend をすると例外が発生しますが、その時に Module#ancestors が変化してしまう副作用があったのを修正しているようです。 https://github.com/ruby/ruby/pull/4165

[1a3b68e7c1] Sarun Rattanasiri 2021-02-11 21:56:51 UTC

String#casecmp? の rdoc 用コメントのサンプルの戻り値が間違ってたのを修正しています。

[e8b210542b] Nobuyoshi Nakada 2021-02-12 02:47:04 UTC

rb_to_array() という内部向けの C API を追加して、to_a による配列への変換を行なえるようにしています。

[1f0e0dfb22] Nobuyoshi Nakada 2021-02-12 03:21:49 UTC

c3b2bb0969cc47dcfb1f624c94a46cdf1e2cc2ad の Queue.new に初期値を渡せる変更の再修正。引数を Array に変換するのに to_ary ではなく to_a で変換するようにしています。 [ruby-core:100858] [Feature #17327]

ruby-trunk-changes 2021-02-11

今日は Queue.new の引数で中身を最初から持ってる Queue を作れるようにする機能追加や benchmark の Ractor を使った runner の追加などがありました。

[e271a3d4af] Nobuyoshi Nakada 2021-02-10 08:44:02 UTC

README.md および README.ja.md のビルド方法の手順として常に autoreconf で configure の(再)生成をするように変更しています。あれ、そうなのか。また autoreconf のオプションに -i を付けるように指定しています。

[fc83b4896e] Jeremy Evans 2021-02-09 22:15:31 UTC

Thread#group の rdoc に nil を返すことがあると書かれてましたが、実際にはありえないそうなので削っています。 call-seq の戻り値にまだ nil が残ってますね。 [ruby-core:101892] [Bug #17505]

[b7333b4449] git 2021-02-10 15:56:12 UTC

version.h の日付更新

[c03b723f56] Jeremy Evans 2021-02-10 16:12:12 UTC

拡張ライブラリ strscan の rdoc 用コメントのメソッド名リストのマークアップの修正。 [ruby-core:102447] [Bug #17620]

[9e66c511ff] S-H-GAMELINKS 2021-02-10 13:35:07 UTC

String#crypt の rdoc 用コメントに書かれてた URL がリンク切れになってたそうなので URL を変更しています。

[27382eb9fc] Takashi Kokubun 2021-02-11 05:24:25 UTC

make benchmark に利用する benchmark-driver のバージョンを v0.15.17 に更新して、benchmark 用のライブラリに複数 Ractor を起動して実行する runner を追加しています。 https://github.com/ruby/ruby/pull/4172

[a0216b1acf] Takashi Kokubun 2021-02-11 08:25:45 UTC

27382eb9fc3f8de4884a5b14903fecb64ba76011 で追加した benchmark の Ractor 利用する runner の計測結果の一時ファイルへの書き出しを Ractor 内で書き出さず Ractor 終了後に Ractor#take で取り出して main Ractor (?) で書き出すようにしています。

[c3b2bb0969] Chris Seaton 2021-02-11 10:14:18 UTC

Queue.new で作成時に引数でキューの内容を指定して作れるようにしています。引数に Array (または to_ary で Array に変換できるオブジェクト)を 1つ受け取ってその中の各要素を初期値の内容にするようです。 [ruby-core:100858] [Feature #17327]

[d77a42fbfd] aycabta 2021-02-10 14:24:39 UTC

標準添付ライブラリ irbIRB::IrbLoader で File::ALT_SEPARATOR が nil の環境に対応するようにしています。

ruby-trunk-changes 2021-02-10

今日は異常終了時などのレジスタ内容表示の RISC-V 対応や time.c のリファクタリング、dtoa の複数 Ractor 対応の不具合修正などがありました。

[66394aec98] Yusuke Endoh 2021-02-09 19:39:41 UTC

RISC-V のプロセッサでの rb_bug() などの異常終了時の register の内容表示の対応を追加しています。 [ruby-core:102423] [Bug #17615]

[bb10f81c90] git 2021-02-09 19:40:53 UTC

version.h の日付更新

[189bf0106f] Use amazing-print instead 2021-02-09 21:06:40 UTC

doc/ractor.md の別ファイルへのリンクが間違ってたのを修正。

[49d3830f44] Jeremy Evans 2021-02-09 22:47:36 UTC

Module#ruby2_keywords の rdoc 用コメントで戻り値が self になってたのを nil に修正しています。 [ruby-core:102158] [Bug #17560]

[231f0f6f45] Hiroshi SHIBATA 2021-02-02 11:59:04 UTC

拡張ライブラリ zlib のテストで __name__ という……なんだろうこれ、メソッド? を使っていたのが test-unit では使えないということで TestZlibDeflate#test_deflate を利用しないように書きかえているようです。

[e72757a311] Hiroshi SHIBATA 2021-02-02 11:42:13 UTC

拡張ライブラリ zlib の gemspec ファイルの spec.add_development_dependency を削除しています。development dependency は Gemfile に書くべしということで gemspec には書かない潮流。

[281dfacb5d] 卜部昌平 2021-02-10 01:11:02 UTC

.github/workflows/compilers.yml に clang-13 でのビルドを追加しています。

[ad2c7f8a1e] Nobuyoshi Nakada 2021-02-10 10:42:00 UTC

benchmark/float_to_s.yml に Float#to_s のベンチマークを追加しています。

[3acc81d9e4] Nobuyoshi Nakada 2021-02-10 06:24:23 UTC

missing/dtoa.c の Balloc() と Bfree() で freelist の操作に race condition があって二重 free する可能性があり複数 Ractor で触ると異常終了する可能性があったらしいので修正しています。 [ruby-core:102416] [Bug #17612]

[ef59a781d7] Nobuyoshi Nakada 2021-02-09 04:21:40 UTC

time.c の find_time_numguess_getter() の定義の引数に間違いとスタイル修正。

[4b6347ab39] Nobuyoshi Nakada 2021-02-09 04:59:31 UTC

time.c で DEBUG_REPORT_GUESSRANGE というマクロの有無で分岐してたのを static 変数 debug_guessrange を参照する実行時の分岐でデバッグ出力の有無を切り替えるようにしています。デバッグ有効時のみコンパイルエラーになったりするのを避けるためかな。

ruby-trunk-changes 2021-02-09

今日は blocking Fiber のための Scheduler の C API を公開 API にする変更などがありました。

[4186cd6435] Nobuyoshi Nakada 2021-02-08 12:43:40 UTC

478716f49a19cdd86f629c6a0673c1ff53630c96 のうち PTY.open の rdoc の call-seq の変更を revert しています。実際にブロックパラメーターにかっこが必要なケースがあったようです。

[ced09d521c] Nobuyoshi Nakada 2021-02-08 14:45:51 UTC

tool/lib/vcs.rb の VCS::GIT#export_changelog の引数を全て省略可能にしたり、標準出力への出力への対応を追加したりしています。

[a0faad38ce] Nobuyoshi Nakada 2021-02-08 14:55:08 UTC

tool/lib/vcs.rb の VCS::GIT#export_changelog に base_url というキーワード引数を追加して利用する git のリポジトリを指定できるようにしています。fork から生成できるようにするためかな。

[dfff1df95c] Nobuyoshi Nakada 2021-02-08 14:56:19 UTC

tool/lib/vcs.rb の VCS.detect メソッドのキーワード引数を options にマージするようにしています。

[15e933f2c6] git 2021-02-08 15:07:27 UTC

version.h の日付更新

[0d89aedb73] Nobuyoshi Nakada 2021-02-08 15:39:58 UTC

eval.c の rb_vrescue2() で EC_EXEC_TAG() の戻り値を格納する変数の初期化を magic number 0 でしていたのを定数マクロ TAG_NONE を使うようにリファクタリングしています。

[265c002239] Nobuyoshi Nakada 2021-02-08 16:00:00 UTC

random.c の random_mt_free() でデフォルトの乱数生成器を default_rand() を呼んで作ってましたが、ここは比較がしたいだけでなかったら作らなくてもいいので、rb_ractor_local_storage_ptr() で直接 ractor local storage を参照するようにしています。

[e0c100ec96] Nobuyoshi Nakada 2021-02-08 23:41:06 UTC

vm_sync.h のインデント修正のみ。

[a6f5f3cccd] Nobuyoshi Nakada 2021-02-09 01:08:30 UTC

eval.c の rb_vrescue2() の変数 result の初期化位置を前のほうに移動しています。例外の処理中に例外発生した時に未初期化のまま大域脱出してしまうのでそれを避けるためのようです。

[97cf290063] Nobuyoshi Nakada 2021-02-08 15:42:12 UTC

eval.c の rb_vrescue2() の例外処理時の可変長引数の処理を va_copy() で va_list をコピーしてから参照するようにしています。

[fad7908a5d] "S.H" 2021-02-09 04:29:42 UTC

Float#negative? と Float#negative? の実装を ruby 実装にして inline 化可能にしています。 https://github.com/ruby/ruby/pull/4160 [ruby-core:102422] [Feature #17614]

[3c593f28ed] Andrew Aladjev 2021-02-09 05:48:03 UTC

configure の Fiber 用の coroutine 実装を選択する時のデフォルト(プラットームなどで決まらない時)の ucontext を getcontext()、swapcontext()、makecontext() などのシステムコールが使えるかどうかチェックして、使えなかったら copy に fallback するように判定を追加しています。

[5f69a7f604] Samuel Williams 2021-02-09 06:39:56 UTC

どういう意図なのかよくわかってないのですが blocking Fiber のための Scheduler を Thread に設定できるようにしたものの C API を拡張ライブラリに公開するようにしているようです。 https://github.com/ruby/ruby/pull/3945

[e7416b4c7e] Nobuyoshi Nakada 2021-02-09 08:11:14 UTC

5f69a7f60467fa58c2f998daffab43e118bff36c で追加した include/ruby/fiber/scheduler.h の関数定義で無引数の関数の宣言の引数に明示的に void をつけるようにしています。

[96441b91a6] Nobuyoshi Nakada 2021-02-09 08:15:29 UTC

include/ruby.h に HAVE_RUBY_FIBER_SCHEDULER_H マクロの定義を追加しています。

[df4f8aa248] Nobuyoshi Nakada 2021-02-09 08:38:52 UTC

拡張ライブラリ io/console の extconf.rb で HAVE_RUBY_FIBER_SCHEDULER_H マクロをチェックして -DHAVE_RB_IO_WAIT=1 をコンパイラオプションに追加するようにしています。新機能の対応かなと思いましたが 3.0 での regression の修正のためとのこと。

[5bfca88f76] Nobuyoshi Nakada 2021-02-09 08:39:00 UTC

拡張ライブラリ io/console の blocking Fiber の Scheduler 対応で定義してたマクロの名前の typo を修正しています。

[6bb103f012] Nobuyoshi Nakada 2021-02-09 08:49:28 UTC

拡張ライブラリ io/console の依存関係(depend ファイル)の再生成。

ruby-trunk-changes 2021-02-08

今日は主に ARGF のメソッドのキーワード引数対応や、Module の rdoc 用コメントが rdoc に認識されるようにする修正などがありました。

[478716f49a] Nobuyoshi Nakada 2021-02-07 12:01:43 UTC

拡張ライブラリ pty の PTY.open の call-seq の修正とライセンスを記述したコメントの typo 修正およびインデント修正。

[0261519f6e] Nobuyoshi Nakada 2021-02-07 14:09:00 UTC

Module#method_undefined の rdoc 用コメントを追加しています。

[03e3cc2b72] Nobuyoshi Nakada 2021-02-07 14:10:12 UTC

object.c の Module#inherited, #method_added, #method_removed, #method_undefined……などのメソッド群の rdoc 用コメントが rdoc でそのメソッドのドキュメントとして扱われるようにダミーの #define を追加して、メソッド定義の rb_define_private_method()に渡す引数もそのマクロ経由で渡すようにしています。これまでは rb_obj_dummy1() というダミーの関数をそのまま渡してました。

[1499f626a5] Nobuyoshi Nakada 2021-02-07 14:35:06 UTC

03e3cc2b7210edc62ee2af773b7ce479afdac78b の続きで定義するマクロの名前を rb_xxx から rb_obj_xxx に改名しています。

[1ba2b5cdee] Nobuyoshi Nakada 2021-02-08 01:35:51 UTC

vm_eval.c の switch 文 の case 節に不要なかっこがついてたのを削除しています。

[1d686bdeb9] Nobuyoshi Nakada 2021-02-08 02:04:23 UTC

ARGF.each_line や ARGF.realines の chomp キーワード引数についてのテストを追加しています。

[bf627e518d] Nobuyoshi Nakada 2021-02-08 02:33:53 UTC

ARGF.putc, ARGF.puts, ARGF.gets, ARGF.readline などなど ARGF のメソッドで IO オブジェクトに委譲する時に rb_funcallv_kw() などを使うようにしてキーワード引数も委譲するようにしています。

[9328112b9d] git 2021-02-08 02:38:30 UTC

version.h の日付更新

[3a7ff66abc] Keith Bennett 2021-02-08 04:02:52 UTC

標準添付ライブラリ benchmark に Benchmark::Tms#to_h メソッドを追加しています。 [ruby-core:102336] [Feature #17601]