ruby-trunk-changes 2021-06-27

今日は String#encode のキーワード引数 xml を使った時の不具合修正や irb の show_source のパフォーマンス改善、IO#each_byte や IO#each_codepoint のブロック内で close された時の不具合修正などがありました。

[e86c1f6fc5] Jeremy Evans 2021-06-26 19:32:39 UTC

String#encode にキーワード引数 xml というのがあり、これを渡して 非 ASCII-Comptible な Encoding 間の変換をすると結果がおかしくなるという不具合を修正しています。一旦 UTF-8 への変換を中継するようにしているみたいです。 [ruby-dev:49493] [Bug #12052]

[b1428b279f] git 2021-06-26 19:32:56 UTC

version.h の日付更新

[1fd8b6f2b9] Nobuyoshi Nakada 2021-06-26 13:23:54 UTC

time.c で定義されている月の長さや通年の日数を保持してるテーブルの型を int から int8_t や int16_t にしてサイズを削減しています。

[bf789af28a] Nobuyoshi Nakada 2021-06-26 13:52:30 UTC

time.c でうるう年を考慮した月の日数の算出をマクロとして切り出すリファクタリング

[6eb7c663c6] Masataka Pocke Kuwabara 2021-06-25 05:29:28 UTC

標準添付ライブラリ irb の builtin command の show_source でソーススクリプトファイルを 1行ずつ RubyLex に処理させてたのを全体を処理していから結果を解析するようにしています。 パフォーマンスのためとのことでこっちのほうが速いのか。なんとなく不要な処理をしなくて済む可能性があるので元のほうが効率的な気がしますが。

[35c7e83bb3] Takashi Kokubun 2021-06-27 01:48:53 UTC

6eb7c663c665c633bdeae185d45e78832e672acc の標準添付ライブラリ irb の show_source の実装変更で各行のスクリプトの文字列を join で連結してたのをバッファとして使う String オブジェクトを作っておいてそこに破壊的に追記していくことで表示用の文字列を生成するようにしています。

[13939d61b4] Nobuyoshi Nakada 2021-06-27 00:42:01 UTC

IO#each_byte, IO#each_codepoint でブロック内からその IO の close が呼ばれてしまうと SEGV する可能性があったので、ブロック起動(rb_yield() 呼び出し)後にすぐ読み込みできるかチェックする rb_io_check_byte_readable() の呼び出しを追加/移動しています。 [ruby-core:102634] [Bug #17661]