ruby-trunk-changes 2020-07-04

今日は Object# tap や Kernel#then, #frozen? などのメソッドを ruby 実装にする変更や MJIT でインスタンス変数操作向けの最適化、builtin 関数呼び出しの cexpr!/cstmt! の C の式/文から ruby 側のローカル変数を参照できるようにする機能強化などがありました。

[e8010c7401] Burdette Lamar 2020-07-03 14:49:36 UTC

Array のメソッドの rdoc 用コメントの markup 修正やサンプルなどの強化。 https://github.com/ruby/ruby/pull/3276

[f3a0d7a203] Takashi Kokubun 2020-07-03 16:52:35 UTC

Object#tap の実装を ruby 実装にしています。 tap みたいなのは ruby 実装のほうが速そうですね。 https://github.com/ruby/ruby/pull/3281

[ccb2e6eaa5] git 2020-07-03 16:52:54 UTC

version.h の日付更新

[a69dd699ee] Takashi Kokubun 2020-07-04 00:52:52 UTC

インスタンス変数のテーブルのインデックスの inline cache の値を可能なら MJIT で JIT コンパイルした時にも利用するようにする機能を追加しています。 https://github.com/ruby/ruby/pull/3284

[24fa37d87a] Takashi Kokubun 2020-07-04 01:02:43 UTC

Kernel#then, Kernel#yield_self, Kernel#frozen? などのメソッドも ruby 実装にしています。 then/yield_self はブロックが与えられてた場合は純粋な ruby 実装になってます(そうでない時は Enumerator を返すので C 関数を builtin 関数機能で呼び出す)。 https://github.com/ruby/ruby/pull/3283

[7a5da7d55d] David Rodríguez 2020-06-15 14:48:33 UTC

.gitignore から "." で始まって "-" を含むファイル名のパターンを消しています。 元々なにを意図して ignore してたのかわかりませんが、.gitlab-ci.yml.tt みたいな名前が無視されてしまうからとのこと。 bundler による gem 生成時のためのテンプレートファイルの名前ですね。 かわりに .downloaded-cache や .top-enc.mk などいくつか明示的に .gitignore に追加しています。

[74e1bca79d] Koichi Sasada 2020-07-04 08:23:34 UTC

ruby 実装の組み込みメソッド定義から Primitive.cexpr! や Primitive.cstmt! での実装を呼び出す時に、ruby 側のメソッド引数のほかにメソッド内のローカル変数の参照も集めて C 実装内から参照できるようにしています。