ruby-trunk-changes 2019-11-11

今日は組み込みメソッド定義を ruby スクリプトでする時に使える __builtin_inline! という C のソースコードをその場で埋め込めるメソッドの追加や rubygems と bundler の更新などがありました。

[ef03d48cb2] Yuichiro Kaneko 2019-11-10 13:18:08 UTC

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

[6e70fa49b1] Kazuki Tsujimoto 2019-11-10 13:34:49 UTC

後置 in による短縮形の pattern match の記法で Array pattern や Hash pattern の [] や {} が省略されたら SyntaxError になるように修正しています。 [ruby-core:95098] [Feature #16182]

[b5996b25ae] Takashi Kokubun 2019-11-10 21:33:23 UTC

irb の色付けでクオート記号を bold 表示するようにしています。

[958d954a19] git 2019-11-10 21:34:25 UTC

version.h の日付更新

[25c53a8eec] Takashi Kokubun 2019-11-10 21:41:34 UTC

irb の色付けで %I{} による Symbol の配列のリテラルのクオート記号に色をつけるようにしています。

[fcd9bc28e3] Takashi Kokubun 2019-11-10 21:54:44 UTC

25c53a8eec4f73f4d0d127144b24bf68218149e3 の続き? irb で %i と %I の色付けを Symbol と同じになるようにしているようです。

[a733893939] Takashi Kokubun 2019-11-10 22:12:13 UTC

0483d01f6bdd3d16b31244a7aaadb4c31f6ecee7 で切り出した MJIT のテストの mark_tested_insn で uplevel 変数がそもそも渡されてなかったのでキーワード引数で渡すように修正しています。あーそこには気がついていなかった…。

[b5dff926e7] Nobuyoshi Nakada 2019-11-11 00:16:00 UTC

test/ruby/test_parse.rb と test/ruby/test_syntax.rb で SyntaxError になることを確認するテストに assert_raise を使っていたのを assert_syntax_error を使うようにしています。また assert_nothing_raised のかわりに assert_valid_syntax を使うようにしています。一箇所(じゃないかもしれないけど) assert_raise で閉じてない =begin が文法エラーになるのを確認しているところが =end を補ってしまって assert_valid_syntax になっててテスト内容が代わってしまってそうだけどこれはいいのかな。と、思ったけど少し後で再度同じようなテストが追加されていたので意図的だったようです。

[b42656b9c4] Yuichiro Kaneko 2019-11-11 00:22:46 UTC

.gitignore ファイルに *.rbinc を追加してソースディレクトリでビルドした時に生成される *.rbinc ファイルを無視するようにしています。

[ade0388894] Nobuyoshi Nakada 2019-11-11 00:35:37 UTC

複数行コメントを追加する =begin や =end で末尾に NUL 文字や Ctrl-D, Ctrl-Z といった文字コードが挿入されていても受け付けるようにしています。あーこっちで =begin だけで閉じてないテストは再追加されてるのか。

[69ec3f70fa] Nobuyoshi Nakada 2019-11-11 00:59:40 UTC

ade038889468e7755d7ebfe75975e0e77d1e1dec の追加修正で =begin/=end の後の NUL 文字や Ctrl-D/Ctrl-Z は警告を出力するようにしています。

[6f9be8505d] Nobuyoshi Nakada 2019-11-11 03:09:19 UTC

69ec3f70fab0c1c537c68fb135cc315181b1d750 の追加修正でテストの警告のチェック内容を少しゆるめています。

[390293525a] Nobuyoshi Nakada 2019-11-11 03:19:40 UTC

6f9be8505d172b110ec449478a791d70b9b74afb のテスト修正は revert して tool/rbinstall.rb で gemspec ファイル内の NUL 文字を含む行を消すようにしています。 gemspec ファイル対応のためだったのかな。

[6eaac7cfac] Nobuyoshi Nakada 2019-11-11 03:57:40 UTC

69ec3f70fab0c1c537c68fb135cc315181b1d750 の警告メッセージを少し修正しています。

[31ee6f6f5d] Nobuyoshi Nakada 2019-11-11 04:10:55 UTC

make up でソースコード更新後に extract-gems も実行されるように依存関係を追加しています。 optparse のテストで did_you_mean.gem が利用できなくてエラーになる場合があったようです。

[65f7e3156f] Nobuyoshi Nakada 2019-11-11 06:56:59 UTC

拡張ライブラリ json の gemspec ファイル内の spec.files を整形して重複したファイルを削除しています。

[9142f802f1] Koichi Sasada 2019-11-09 17:25:57 UTC

21f7cca2c6394aaaec9189a7cb08a9ad8a2196e3 で vm_call_iseq_setup_kwparm_nokwarg の klocals の末尾をクリアするようにしていましたが、そこにあるコメントの内容がやっぱり食い違ってた(不要だと書いてた)のでコメント内容をクリアする理由に書きなおしています。 VALUE として不正な値にしないためとのこと。

[05a5c69e1a] Koichi Sasada 2019-11-09 22:16:56 UTC

common.mk の miniprelude.c の依存関係に組み込みクラス実装用の .rb ファイル群を追加しています。動的に読み込むのではなくて miniprelude.c に埋め込むようになったので。

[3141642380] Koichi Sasada 2019-11-11 07:38:46 UTC

組込みクラス実装する ruby スクリプト内で使える __builtin_inline! というメソッドを追加して、引数の文字列内に直接 C の実装を書けるようにしています。ほえー、どうしてるのかと思ったら __builtin_inline{0,1,2,...} のような通し番号をつけた C の関数を生成して、この関数引数は ec と self のみで後は呼び元の ruby スクリプトでのメソッドの引数を rb_vm_lvar で参照してローカル変数として代入する文を定義する関数の先頭に挿入することで渡すようにしています。また __builtin_inline! の引数は文字列リテラルじゃないといけない?(putstring 命令のオペランドでないといけない)ようです。すごい。野心的な機能だなぁ。

[7d463e360b] Hiroshi SHIBATA 2019-11-11 06:03:57 UTC

rubygems に upstream から 3.1.0.pre3 をマージしています。不具合修正や 2.7 対応など。

[ba5b51ca59] "NARUSE, Yui" 2019-11-11 08:37:14 UTC

6eaac7cfac668d6669be694fd7b723c4982ed218 の =begin/=end の後の NUL 文字などの警告の変更を revert。

[fd69f82675] "NARUSE, Yui" 2019-11-11 08:37:21 UTC

続いて 69ec3f70fab0c1c537c68fb135cc315181b1d750 の =begin/=end の後の NUL 文字などに警告する変更を revert しています。

[7585bc3187] Hiroshi SHIBATA 2019-11-11 08:57:45 UTC

bundler に upstream から 2.1.0.pre.3 をマージしています。

[9d3213ac85] Kazuhiro NISHIYAMA 2019-11-11 10:03:43 UTC

test/ruby/test_default_gems.rb のテストは git コマンドが利用可能じゃないと失敗するので(gemspec ファイル内で git ls-files を使ってるからかと)、git が使えなかったら skip するようにしています。

[8b27c23b5d] Hiroshi SHIBATA 2019-11-11 11:19:29 UTC

rubygems の更新で失敗したテストの対応で spec.activate の前後の mutex の操作の変更を revert しています。