ruby-trunk-changes 2021-12-18

今日は YJIT の対応するメソッド呼び出しの方法(引数の種類)の拡張や blocking fiber の IO::Buffer 対応の強化などがありました。

[f7e266e6d2] Burdette Lamar 2021-12-17 12:05:31 UTC

String と Symbol の upcase, downcase, swapcase, casecmp, capitalize やその派生系などの大文字小文字に関するメソッド群の rdoc 用コメントの手直し。Unicode の文字における特別な大文字小文字の対応関係についても専用のセクションが追加されて少し触れられています。 https://github.com/ruby/ruby/pull/5245

[73d44512e8] Nobuyoshi Nakada 2021-12-17 16:04:17 UTC

GitHub Actions の bundled gems のバージョン更新用 workflow に NEWS の記述の更新コミットも自動で行なわせるようにしています。

[55a93533e8] git 2021-12-17 16:18:08 UTC

version.h の日付更新

[74b58dd690] git 2021-12-17 16:18:25 UTC

NEWS の bundled gems のバージョン更新が 73d44512e84f86a22f2d0a86544c32e89c5b7ccf の workflow で更新されています。

[dbb5abc45b] Koichi Sasada 2021-12-17 18:24:57 UTC

gems/bundled_gems の debug.gem のバージョンが 1.4.0 に更新されています。

[6a1365d725] git 2021-12-17 19:21:56 UTC

NEWS の bundled gems の debug.gem のバージョンが自動的に 1.4.0 に更新されています。

[5588aa79d4] Burdette Lamar 2021-12-17 23:02:12 UTC

Symbol クラスの rdoc 用コメントにメソッド一覧を追加しています。 https://github.com/ruby/ruby/pull/5289

[83aa68447c] John Hawthorn 2021-12-16 18:19:24 UTC

YJIT で省略可能な引数とキーワード引数が両方あるメソッドの対応を追加しているようです。ただし省略可能な引数は全て実際に渡された呼び出しのみ対応しているみたいです。まえもキーワード引数は全て明示的に渡されてないと YJIT でコンパイル対象になってなかったというのがあったと思うので、呼び出しかたで JIT コンパイルされなくなるものはまだあるみたいですね。

[c2197bf821] John Hawthorn 2021-12-16 23:08:07 UTC

83aa68447c87169b3610b6e04abebdcc592f0c16 の続きで YJIT でデフォルト値のない必須キーワード引数と通常のキーワード引数が両方あるメソッドを通常のキーワード引数だけ指定して呼んだ場合に ArgumentError にならず不正な引数を渡して呼び出すようになってしまっていたのを修正しています。

[cc5fcae170] Alan Wu 2021-12-17 16:44:55 UTC

yjit_codegen.c の iseq_supported_args_p() という関数を呼び元に展開して、さらにメソッドのブロック引数の有無のチェックを修正しています。ちょっとよくわかってませんが define_method にブロックを渡して定義されたメソッドにブロック引数があるケース?に YJIT が対応していなくてコンパイルをあきらめるようにしているようです。

[a8b11b5cdd] Baron Bloomer 2021-07-29 08:31:33 UTC

標準添付ライブラリ logger のデフォルトの時刻の出力フォーマットを Logger::Formatter::DatetimeFormat という定数に格納しています。

[4375546810] Baron Bloomer 2021-08-17 10:57:45 UTC

標準添付ライブラリ logger の Logger::Formatter のテストを追加しています。

[e442ec4ea0] Hiroshi SHIBATA 2021-12-16 04:49:35 UTC

43755468102e3d62830d076d1fae0d6beba2b25b で追加された test/logger/test_formatter.rb の require を修正しています。

[de6ef2ca71] rm155 2021-07-16 22:05:52 UTC

標準添付ライブラリ benchmark の lib/benchmark/version.rb に magic comment の frozen_string_literal: true を追加しています。

[5a6baaba38] Charles Oliver Nutter 2021-09-24 04:57:26 UTC

標準添付ライブラリ pp で RubyVM::AbstractSyntaxTree を利用するコードが追加されていたのを CRuby 以外でも動くように defined? で定数の存在チェックをするようにしています。

[73da1c5ea3] Charles Oliver Nutter 2021-09-28 14:37:07 UTC

標準添付ライブラリ pp で etc を require する時に明示的に "etc.so" と拡張ライブラリを指定する拡張子をつけていたのを削っています。JRuby では etc が拡張ライブラリではないからとのこと。わざわざ "etc.so" って書かれてたということは理由があったんじゃないかなぁと思いましたが etc.rb はリポジトリ内には存在しないので誤って load されるようなファイルはなさそうですね。

[cc73dfb92a] Charles Oliver Nutter 2021-09-28 14:53:03 UTC

標準添付ライブラリ pp のテストで 2.6 対応のため ruby2_keywords を require して、2.7 から追加された UnboundMethod#bind_call の代替実装を追加しています。

[66ec3217df] Charles Oliver Nutter 2021-12-07 21:10:16 UTC

標準添付ライブラリ pp のテストで 2.6 では一部のテストメソッドを定義しないようにしています。

[8cc01b668a] aycabta 2021-10-12 03:48:31 UTC

標準添付ライブラリ reline の lib/reline/windows.rb のメソッドのデフォルト値つきの引数の "=" の前後に空白を追加しています。

[adf6c0928d] aycabta 2021-12-14 01:09:10 UTC

標準添付ライブラリ reline の yamatanooroti を利用した端末のテストメソッドで test_bottom というのをより状況を説明する長いメソッド名に改名しています。

[7f2123bc08] aycabta 2021-12-12 01:17:06 UTC

標準添付ライブラリ reline で "[]" メソッド内の "," のあとに空白を入れるようにスタイル修正しています。

[1c49d809f4] aycabta 2021-12-15 01:18:37 UTC

標準添付ライブラリ reline の Reline::Windows.cursor_pos で String#unpack1 に "*" つきのフォーマット指示子を渡していたのが不要だったので削除しています。 receiver は 2 byte になるように切り出しているし unpack1 なのでどのみち先頭の要素しか取らないのでつけてても意味がなかったので。

[424605da7c] Nobuyoshi Nakada 2021-12-17 16:27:08 UTC

NEWS の default gems のバージョン更新のために https://stdgems.org/default_gems.json からリリース済みの安定版でのバージョンリストを取得した結果をキャッシュしておくようにしています。

[629c8f12ae] Nobuyoshi Nakada 2021-12-18 04:05:48 UTC

73d44512e84f86a22f2d0a86544c32e89c5b7ccf で bundled gems のバージョンチェックを起動するファイルパス指定の条件が pull request の場合に反転していたので修正しています。

[922a81a994] Nobuyoshi Nakada 2021-12-18 03:31:43 UTC

GitHub Actions の各 workflow の起動条件に pull request の label に Documentation がついていたら実施しないというのを追加しています。

[42d3231154] Samuel Williams 2021-12-18 05:19:30 UTC

include/ruby/fiber/scheduler.h に inline 関数の API rb_fiber_scheduler_io_result_apply() というのを追加して、IO 系の関数でエラー時に返された負の Integer を errno にセットするようにしています。そして rb_write_internal() で対象の IO の write_lock 取得済みの時に rb_thread_call_without_gvl2() を使って GVL 取得せずに書き込み処理するようにしています。こちらは IO::Buffer 対応の続きかな?

[75b5a4808f] Samuel Williams 2021-12-18 05:17:33 UTC

doc/hacking.md というファイルを追加しています。ビルド方法やテストの実行方法など ruby 本体の開発についての基本的なことを書いています。

[1560cc1688] Samuel Williams 2021-12-18 07:39:57 UTC

75b5a4808fce6e6a11ef43a12c399e4e2eb63e86 で追加した doc/hacking.md に make の -j オプションは毎回つけるんじゃなくて環境変数 MAKEFLAGS にセットしておくといいよというのを追記しています。 一部のターゲットは -j つけるとこけることがあるんだったような経験があるけど……まあそういうバグを踏めるから常にセットしておけってことですね(サイバイバルモード)。

[235f523a88] Samuel Williams 2021-12-18 10:47:10 UTC

io_buffer.c のマクロ DECLAIR_TYPE() が typo していたので DECLARE_TYPE() と改名しています。