ruby-trunk-changes 2019-09-03

今日は Array#uniq を Array を継承したクラスのインスタンスから呼んだ時の不具合修正や Array リテラル内で keyword splat 記法を書いた時のための newarraykwsplat 命令という新しい VM 命令の追加などがありました。

[53a7abe2cd] Yusuke Endoh 2019-09-02 13:30:12 UTC

標準添付ライブラリ drb のテストで Solaris で skip を追加。またこのテストを 0660d7cb538cf5284d50f66adfcbd78609839715 で armv7l-linux でも skip した時に Timeout の設定を削ってたので復活させています。

[6a9c5ef186] Nobuyoshi Nakada 2019-09-02 14:10:58 UTC

tool/lib/vcs.rb で ChangeLog 生成のためにコミットログを抽出する時の整形を修正しています。 git-svn 利用時と同じようになるようにしているらしい。

[ca8ae759d0] Takashi Kokubun 2019-09-02 14:35:51 UTC

4e15be8bade0a6a75c209eff3b96b4c4f03019a9 で compile.c をいじった時に SUPPORT_JOKE というジョーク VM 命令を有効にした時のコードに追随漏れがあったのを修正しています。

[834e771860] Takashi Kokubun 2019-09-02 14:48:38 UTC

.travis.yml に SUPPORT_JOKE を設定してビルドするジョブを追加しています。うーむもう SUPPORT_JOKE 消してもいいんじゃないかな。サンプルとしての意味もあるんだろうけど。

[60a49a6ff9] Takashi Kokubun 2019-09-02 15:07:36 UTC

834e77186086a4ae1fc73edbe035e90157d79fab の SUPPORT_JOKE を有効にしてビルドするジョブですが、コンパイラのオプションに -DSUPPORT_JOKE を渡してビルドしてもヘッダファイルで上書きされてしまうので vm_opts.h を sed で書き換えてからビルドするようにしています。

[be86591458] git 2019-09-02 15:08:39 UTC

version.h の日付更新

[f560609d66] Jeremy Evans 2019-09-02 15:21:30 UTC

配列リテラル内の keyword splat 記法(つまり "[ **kwargs ]" みたいなの)で渡された Hash が空の時にそもそも要素を追加しないようにするために newarraykwsplat という新たな VM 命令を追加しています。わー、こんなの書けたのか。知らなかった。 https://github.com/ruby/ruby/pull/2418

[d83ade1db5] Nobuyoshi Nakada 2019-09-02 14:42:21 UTC

tool/lib/vcs.rb でコミットログを parse しやすく取り出すために --format で NUL 文字埋め込むように指定してたのを git-log の -z オプションを利用するようにリファクタリングしています。

[f1d8d0f47b] Takashi Kokubun 2019-09-02 15:30:17 UTC

.travis.yml のビルド対象ブランチ名に feature とか bug とか travis- といった prefix のものもあったのを削っています。

[1d68d29c14] Takashi Kokubun 2019-09-02 15:36:18 UTC

.travis.yml の通知先に irc の #ruby-ja があったのを削除しています。これまだあったのか。 #ruby-core のほうももうほとんど通知を受け取るべき人は残っていないのでは。

[91aa8bfff8] Takashi Kokubun 2019-09-02 16:01:47 UTC

Travis-CI の macOS 環境はビルドが安定しないので、GitHub Actions で macOS 環境のテストもできるようになったので削除しています。これで macOS 向けテスト除外の設定とかも削除できています。

[52f0c31558] Takashi Kokubun 2019-09-02 16:06:29 UTC

91aa8bfff8a9f9c0af96915c120d863fc474e8d5 の続きで before_script に macOS 向けのタイムスタンプファイルの時刻のずれのデバッグ用に入れてた ls コマンドを削っています。

[6c3ab99eae] Takashi Kokubun 2019-09-02 16:11:18 UTC

.travis.yml でビルドする環境は全て linux のみになったので os の設定はトップレベルに移動してマトリクス毎の設定は削除しています。

[e13da00824] Takashi Kokubun 2019-09-02 16:25:58 UTC

make help の出力で make test に BTESTS 変数の指定でファイル単位の実行テスト指定ができることを追記しています。

[1a5a01e9ce] Takashi Kokubun 2019-09-02 16:39:00 UTC

f560609d66502101264706877577220e3ebf5a38 で newarraykwsplat という VM 命令が追加されたので bootstraptest と MJIT のテストでこの命令を使うスクリプトを含めるようにしています。

[a848b62819] Takashi Kokubun 2019-09-02 16:53:47 UTC

vm_core.h の rb_vmdebug_debug_print_post() の prototype 宣言で OPT_STACK_CACHING という VM の最適化手法を使う場合に引数が追加されているのを反映させるようにしています。 Stack Caching 懐かしい。

[1994adf938] Jeremy Evans 2019-07-15 21:03:28 UTC

Array#uniq で receiver が Array を継承したクラスのインスタンスだった場合に Array ではなくてそのクラスのインスタンスを作って返すようにしています。配列のサイズに依存して Array のインスタンスになることがあったみたいです。 [ruby-core:51792] [Bug #7768]

[c181ecc161] Nobuyoshi Nakada 2019-09-03 02:14:07 UTC

tool/make-snapshot で全ファイルの更新時刻をちょっと前に揃えるようにしてたのを、時刻が未来(正確には設定しようとしているちょっと前の時刻より未来)の時だけ調節するようにしています。また生成するパッケージに .tar のままで圧縮しないものも作っているようです。これはなんでだろ。あと tar パッケージ作る時にファイルパスでソートした順にファイル追加するようにしているようです。

[703f0cd3d0] Nobuyoshi Nakada 2019-09-03 02:30:40 UTC

c181ecc161c5482426f045322cf00d00b15d96c6 で tool/make-snapshot の PACKAGES って定数に .tar も追加してましたが通常パッケージを作る対象は DEFAULT_PACKAGES という定数の別に追加して、こっちからは tar は除外するようにしています。

[542a1ade80] Nobuyoshi Nakada 2019-09-03 02:31:14 UTC

tool/lib/vcs.rb の ChangeLog 生成のためにコミットログを整形する処理で git-log の --date=iso-local というオプションが古い git でサポートされていないとのことで、使えるかチェックしてだめなら --date=iso に変更するようにしています。

[b0a7221dcf] Nobuyoshi Nakada 2019-09-03 02:43:38 UTC

c181ecc161c5482426f045322cf00d00b15d96c6 で tool/make-snapshot で全ファイルのタイムスタンプを弄ってたのをやめた時にカレントディレクトリの更新時刻も変更されなくなってましたがこれは常にパッケージ作成の時刻(正確にはコマンド実行のちょっと前)に更新するようにしています。

[e6c4ea22d6] Nobuyoshi Nakada 2019-09-03 03:28:00 UTC

tool/make-snapshot で生成した .tar ファイルのタイムスタンプも調整するようにしています。 .gz にした時のチェックサムを再現可能にするためらしいけど時刻も明示的に指定して作るのかな。

[547887138f] Yusuke Endoh 2019-09-03 03:27:53 UTC

Fiber を大量に作る負荷テスト的なテストで作成する Fiber 数を OpenBSD で 1桁減らすようにしています。

[355ccdeae5] "d0 (Daisuke Fujimura)" 2019-09-03 03:52:04 UTC

0b81e7d6e2810adac081965f0da1d8064888c0bd とかそのあたりの define method 系関数の GCC 拡張利用した引数の数チェックできるようにする変更で Cygwin でビルドできなくなってたそうなので preprocessor の分岐に条件を追加しています。 [ruby-core:94751] [Bug #16134]

[1a9cc3b27c] Takashi Kokubun 2019-09-02 17:51:48 UTC

VM 命令定義の DEFINE_INSN マクロに DEFINE_INSN_IF() というバリエーションを追加して SUPPORT_JOKE とか STACK_CACHING 有効化時のみ定義する VM 命令に使っています。また SUPPORT_JOKE を定義するために指定するマクロ名を OPT_SUPPORT_JOKE という別のマクロを一段かませるようにしています。これはなんでだろ。

[e913fa94d3] 卜部昌平 2019-09-03 03:18:36 UTC

既に未使用になっていた ruby_eval_string_from_file_protect() およびそこから呼ばれてる eval_string_from_file_helper() という関数の定義を削除しています。

[83889292f5] Naohisa Goto 2019-09-03 07:51:01 UTC

拡張ライブラリ socket の MSG_OOB フラグを使ったテストを Solaris で skip していたのを、Solaris では OOB は 1 byte のみ許されるので、OOB 使って送信するメッセージを1文字にすることで skip しないですませるようにテストを対応しています。

[36a0c668b6] Kazuhiro NISHIYAMA 2019-09-03 09:36:08 UTC

.github/workflows/doxygen.yml で GitHub Actions による Doxygen のビルドで同一のコミットで既にビルド済みの時にスキップするために全ステップに if: で条件書いてたのですが、if で環境変数チェックは無効らしいので削除しています。つまりスキップできてなかったってことですかね。

[afe8bf2489] Takashi Kokubun 2019-09-03 11:33:46 UTC

拡張ライブラリ socket の BasicSocket#setsockopt の :TIMESTAMP についてのテストで MJIT 有効化時にタイムアウトを伸ばしています。

[7cb19b3f5b] Takashi Kokubun 2019-09-03 12:03:10 UTC

GitHub Actions の Windows 環境での choco というパッケージマネージャ? でのインストールが失敗することがあるみたいで、3回までリトライするようにしています。

[beaabd2308] Takashi Kokubun 2019-09-03 12:08:07 UTC

1a9cc3b27c020c33c87d8b4fe659243aacfeedf3 の再修正。やっぱり SUPPORT_JOKE を全体的に OPT_SUPPORT_JOKE で置き換えるようにしています。