ruby-trunk-changes 2021-12-21

今日は拡張ライブラリ openssl の OpenSSL 3.0 対応のための更新や rubygems, bundler, reline, irb, did_you_mean の更新など標準添付ライブラリの更新、Primitive.mandatory_only? 対応のための内部構造の不具合修正などがありました。

[582606dc58] Kazuki Yamaguchi 2021-11-03 14:31:29 UTC

拡張ライブラリ openssl の OpenSSL::PKey::RSA のテストにテストケースを追加しています。

[6ef0f272eb] Kazuki Yamaguchi 2021-03-20 14:16:16 UTC

拡張ライブラリ openssl の OpenSSL 3.0 対応の一環で PEM ファイルからの読み込みのための実装を OpenSSL のバージョンによって preprocessor 分岐で変更するようにしています。OpenSSL の仕様が 3.0 で変わったのでそれを吸収しているようです。

[02a58fbfd1] Kazuki Yamaguchi 2021-04-12 04:55:10 UTC

拡張ライブラリ openssl の OpenSSL::PKey の各種鍵の作成時の不要なエラーチェックを削除しています。

[c1a36ebfda] Kazuki Yamaguchi 2021-04-12 09:32:40 UTC

拡張ライブラリ openssl の OpneSSL::PKey の各種鍵オブジェクトの初期化時のメモリ確保の方法を変更しています。 OpenSSL 側の構造体のメモリ確保のタイミングを遅らせているのかな? ちょっと読み切れませんでした。

[df6589e418] Kazuki Yamaguchi 2021-04-22 07:33:59 UTC

拡張ライブラリ openssl で EVP_PKEY_dup() という API があればこれを利用して initialize_copy を実装し、なければ undef しておくようにしています。

[dc3f37c6cc] Kazuki Yamaguchi 2021-12-11 16:25:20 UTC

拡張ライブラリ openssl で OpenSSL::PKey::DH#set_key が OpenSSL 3.0 でうまく動作しないとのことで内部でこのメソッドを利用しているところを使わない方法で実装しなおしています。

[50b90c5fc3] Kazuki Yamaguchi 2021-12-16 17:22:25 UTC

拡張ライブラリ openssl で OpenSSL 3.0 で OpenSSL::PKey::EC#public_key= がうまく動かないようなので OpenSSL::PKey::EC#dh_compute_key の実装でこのメソッドを使わない方法で実装しなおしています。

[0d698be04f] Kazuki Yamaguchi 2021-10-22 07:24:07 UTC

拡張ライブラリ openssl の OpenSSL::PKey::DH#generate_key! を OpenSSL 3.0 とリンクしている時は例外が発生するようにしています。

[b93ae54258] Kazuki Yamaguchi 2021-12-16 17:21:42 UTC

拡張ライブラリ openssl の OpenSSL::PKey::EC#generate_key! を OpenSSL 3.0 とリンクしている時は例外が発生するようにしています。

[8ebf597885] Kazuki Yamaguchi 2021-09-21 09:29:59 UTC

拡張ライブラリ openssl の OpenSSL::PKey::Xxx の #set_xxx というメソッド群は OpenSSL 30 とリンクしている時には例外が発生するようにしています。

[cfcdd2b4bd] Kazuki Yamaguchi 2021-10-24 08:50:18 UTC

拡張ライブラリ openssl の OpenSSL::Cipher のテストで不要になっていたプラットフォームのチェックなどを削っています。

[c1a7c6df18] Kazuki Yamaguchi 2021-12-11 07:27:42 UTC

拡張ライブラリ openssl の ext/openssl/ossl_hmac.c で変数の明示的な初期化を追加しています。

[79a6f4349d] Kazuki Yamaguchi 2021-12-11 07:30:30 UTC

拡張ライブラリ openssl の OpenSSL::HMA のテストを OpenSSL 3.0 利用時には通らないので skip するようにしています。

[b2fb503dab] Kazuki Yamaguchi 2021-04-14 15:51:58 UTC

拡張ライブラリ openssl で OpenSSL 3.0 では OpenSSL::Engine が依存している Engine API というものがまるっと deprecated になっているということで定数自体定義しないようにしています。

[0b3482c0e7] Kazuki Yamaguchi 2021-11-17 02:39:06 UTC

拡張ライブラリ openssl に OpenSSL::SSL::OP_CLEANSE_PLAINTEXT など OP_ という prefix の定数のうち OpenSSL 3.0 で追加されたものを追加しています。

[15eefd30ad] Kazuki Yamaguchi 2021-12-11 15:28:35 UTC

拡張ライブラリ openssl のテストの rescue する範囲を修正して socket への書き込みに IO#puts でなく "<<" メソッドを使うようにして書き込む文字列も長めにしています。

[2df917ed4f] Kazuki Yamaguchi 2021-12-11 15:47:35 UTC

拡張ライブラリ openssl の TLS のバージョンについてのテストを更新して最新版で通るようにしています。

[61e426ae05] Kazuki Yamaguchi 2021-03-20 14:16:41 UTC

拡張ライブラリ openssl の ossl_pkey_check_public_key() という API で OpenSSL 3.0 とリンクしている時に public key がみつからなかったら例外を発生させるようにしています。 SEGV を避けるためみたいですね。

[ac757b218c] Kazuki Yamaguchi 2021-04-12 01:43:46 UTC

拡張ライブラリ openssl の pkey_generate() という API で OpenSSL 3.0 とリンクしている場合は EVP_PKEY_CTX_new_from_name() という API を利用するようにしています。

[6b67f06312] Kazuki Yamaguchi 2021-12-20 14:59:34 UTC

拡張ライブラリ openssl のテストで fd リークを修正しています。

[e54e99bd16] git 2021-12-20 15:11:19 UTC

version.h の日付更新

[95c61c8d82] aycabta 2021-12-20 09:46:08 UTC

標準添付ライブラリ reline の Reline::ANSI.deprep で SIGINT のシグナルハンドラのリセットをしていたのを削除しています。

[c3a3f65b45] aycabta 2021-12-20 09:46:57 UTC

標準添付ライブラリ reline の Reline::LineEditor#reset からシグナルハンドラまわりの処理を set_signal_handlers というメソッドに切り出して、Reline::Core#inner_readline からこれを呼び出すようにして不要なシグナルハンドラ設定を繰り返さないようにしています。

[37aea9d798] aycabta 2021-12-20 15:16:32 UTC

c3a3f65b4575898ae2ae457bc4f56d1e6bdb169f で切り出した Reline::LineEditor#set_signal_handlers の呼び出し位置を少し移動しています。

[81f08edbd6] zverok 2021-12-20 07:07:25 UTC

Threade::Backtrace.limit の rdoc 用コメントを追加しています。

[c57ac4c6e0] Nobuyoshi Nakada 2021-12-20 16:05:51 UTC

tool/rbinstall.rb の default gems インストール処理で拡張ライブラリのインストール先ディレクトリの指定を修正しています。configure 時に --static-linked-ext が指定されてた時におかしくなってたみたいです。

[3bd5f27f73] Jeremy Evans 2021-12-20 16:26:14 UTC

Class#descendants の実装を削除しています。これ取り下げられたんですね。なにか問題があったのかな。 [Feature #14394]

[8b1b4e384f] Brandon Fish 2021-12-20 18:19:23 UTC

rubygems のテストで TruffleRuby でうまく動かないものを RUBY_ENGINE をチェックして skip するようにしています。

[39cf0b5314] Alan Wu 2021-12-20 21:13:34 UTC

gc.c のデバッガ用関数 rb_raw_obj_info() でオブジェクトが回収対象のゴミかどうかの表示を追加しています。

[a350ed4123] David Rodríguez 2021-12-19 19:11:16 UTC

libexec/bundle の古い bundler 向けのチェックはもう不要とのことで削除しています。

[01f95ede0e] David Rodríguez 2021-12-19 21:36:15 UTC

bundler のテスト用のヘルパーで参照する環境変数 BUNDLE_SPEC_RUN を BUNDLER_SPEC_RUN に改名しています。

[7bd25b9753] David Rodríguez 2021-12-19 19:55:48 UTC

libexec/bundle に新たに rubygems 3.2.3 より前で ruby も 2.6 以前の時チェックと警告出力を追加しています。

[6ad8cf7071] Burdette Lamar 2021-12-20 22:28:58 UTC

IO のいくつかのメソッドの rdoc 用コメントの手直し。 https://github.com/ruby/ruby/pull/5307

[9de5c4ec76] Samuel Williams 2021-12-19 20:03:52 UTC

IO::Buffer.map の実装で引数に File 以外のオブジェクトが渡された時に ArgumentError を発生させるチェックを追加しています。

[71bf5cef75] Samuel Williams 2021-12-19 20:43:22 UTC

IO::Buffer.for に freeze された文字列を渡した時に IO::Buffer#immutable? が true を返すようにしています。読み込み用かもしれないのでエラーにはならないんですね。

[49166fc74a] Samuel Williams 2021-12-19 20:59:45 UTC

rb_file_size() で receiver が T_FILE 型のオブジェクトでなかった場合(IO::Buffer のことだと思います) rb_funcall() で size メソッドを呼ぶという実装にしています。それとは別に(?) IO::Buffer が発生させる各種例外のクラスを RuntimeError としていたところを専用の例外クラスを使うように変更しています。

[71bbc40ffa] Samuel Williams 2021-12-19 23:11:21 UTC

IO::Buffer#to_str メソッドを #get_string と改名して文字列として暗黙の変換をしないようにしています。また get_string ではoffset, length と Encoding の指定を引数で受けつけるようにしています。

[c3d8d26ad7] Samuel Williams 2021-12-19 23:11:58 UTC

IO::Buffer#set と IO::Buffer#get メソッドのテストを追加しています。

[da46b8d8e5] Samuel Williams 2021-12-19 23:17:38 UTC

71bbc40ffa4bb16ef0fc31f8015f61709fac36ce で追加した IO::Buffer#get_string のデフォルトの Encoding の指定を ASCII-8BIT にしています。

[c86bcd434d] Samuel Williams 2021-12-19 23:37:05 UTC

include/ruby/io/buffer.h のビットフラグとして使う enum rb_io_buffer_flags を 0はじまりにしてしまっていたので 1 からはじめるように修正しています。

[2de5dc539b] Samuel Williams 2021-12-20 08:22:28 UTC

IO::Buffer#clean で offset 引数の扱いの不具合を修正しています。

[9fbf94ff04] Samuel Williams 2021-12-20 08:22:46 UTC

IO::Buffer のメソッド名をいくつか改名して、テストや blocking fiber テスト用の Scheduler で IO::Buffer のメソッド名の変更などに追随させています。

[617687df09] Samuel Williams 2021-12-20 10:06:21 UTC

IO::Buffer の実装で RB_IO_BUFFER_IMMUTABLE というフラグ名を RB_IO_BUFFER_READONLY に改名してメソッド名も immutable? を readonly? に改名しています。また IO::Buffer#empty? というメソッドもついでに(?)一緒に追加されています。

[224dfb2d6e] zverok 2021-12-15 22:33:25 UTC

blocking Fiber 用の Scheduler のインターフェースを定めた仮想のクラスの SchedulerInterface#io_read と SchedulerInterface#io_write という空のメソッドを追加しているかのようなコードを書いて rdoc にドキュメント生成させるようにしています。

[eae5a34be3] zverok 2021-12-17 23:01:46 UTC

同じく SchedulerInterface#address_resolve と SchedulerInterface#address_resolve の rdoc 生成を追加しています。

[711342d935] Samuel Williams 2021-12-20 23:30:17 UTC

SchedulerInterface#address_resolve の rdoc 用コメントの説明を強化しています。

[df48db987d] Koichi Sasada 2021-12-20 21:03:51 UTC

ruby 実装の組み込みメソッドから使える Primitive.mandatory_only? を使った場合に ISeq の iseq_overload が設定されている時の rb_callable_method_entry_t から rb_method_definition_t への参照の持ちかたに問題があり RGenGC のための WB が効いていないところがあったなどの問題があったので、static 変数で overloaded_cme_table というテーブルを持ってここで関連を保持するようにしています。これは VM 全体で共有しているので複数 Ractor 対応のためロックで排他処理するようにしています。

[02a9a72f43] Samuel Williams 2021-12-21 03:15:40 UTC

SchedulerInterface の rdoc 用のコメントのメソッド名の typo 修正や説明のさらなる追加など。

[c29c2afafe] Nobuyoshi Nakada 2021-10-23 03:21:50 UTC

io.c の ioctl や fcntl などのメソッドの引数処理のための関数群をリファクタリングしています。

[d58406ffca] Nobuyoshi Nakada 2021-12-21 04:40:28 UTC

Travis-CI 上で s390x でのエラーを無視するようにしています。

[9b917315f4] Nobuyoshi Nakada 2021-12-21 05:26:18 UTC

GitHub Actions で default gem の更新チェックのためのファイル群をキャッシュするための step で mkdir を追加しています。

[3c7e95966d] Yuta Saito 2021-12-18 14:59:39 UTC

tool/rbinstall.rb に --ext-build-dir というオプションを追加して、default gems の拡張ライブラリのインストール時の問題に対処しているみたいです。がチケットや処理の内容をみるとオプションはおまけというか必要にかられて追加した? ので本命は環境によってビルドされない拡張ライブラリの gem はインストールしないようにする(Linux で win32ole をインストールしない)ことみたいです。 [ruby-core:106722] [Bug #18414]

[ad450c9fe5] Koichi Sasada 2021-12-21 05:06:02 UTC

df48db987da2bd623d29d06419f2fbc8b7ecb38a の Primitive.mandatory_only? のための構造修正で導入した overloaded_cme_table というテーブルの key 側の cme をマークせず GC されたら自動的に削除されるようにしています。また static 変数としてプロセス全体で 1つにせずちゃんと rb_vm_t のメンバーとして作るように修正しています。

[69dc2ea465] Hiroshi SHIBATA 2021-12-21 05:50:44 UTC

rubygems と bundler をそれぞれ 3.3.0 と 2.3.0 に更新しています。

[10a2273e99] git 2021-12-21 05:57:28 UTC

NEWS の rubygems と bundler のバージョンの記述を更新しています。

[093aaeffbc] aycabta 2021-12-21 06:36:39 UTC

irb の複数行表示でのハイライトのための色付けをリセットするための行末のエスケープシーケンスを追加しています。

[1855f901c8] aycabta 2021-12-21 06:50:59 UTC

093aaeffbc71cd652393b66f2f6f9b865ab31efd や類似の irb でのハイライトのリセットのための行末のエスケープシーケンス追加を irb の色付けの設定が有効な時だけ行うように修正しています。

[b9aefdfc9f] Kazuhiro NISHIYAMA 2021-12-21 08:39:43 UTC

proc.c の static 関数名の typo 修正。

[48a0905d25] Kazuhiro NISHIYAMA 2021-12-21 09:20:21 UTC

hash.c の ruby_setenv() で発生させる例外メッセージに整数を埋め込む時の指示子に % が抜けていたのを修正しています。

[12fa4f2ace] Hiroshi SHIBATA 2021-12-21 10:02:41 UTC

NEWS に拡張ライブラリ psych の 4.0 への更新における Psych.load の挙動の変更について追記しています。 [ruby-core:103866] [Bug #17866]

[505dfae05d] Yuki Nishijima 2021-12-21 10:03:10 UTC

標準添付ライブラリ did_you_mean を upstream から同期しています。

[e59b18a637] git 2021-12-21 10:08:36 UTC

NEWS の default gems の did_you_mean のバージョンの記述を更新しています。

[a6f76122a2] Yuki Nishijima 2021-12-21 11:03:42 UTC

標準添付ライブラリ did_you_mean のテストの test/did_you_mean/test_ractor_compatibility.rb で Ractor 対応について判定して toplevel return でファイルごと省略する処理を helper の require 後に移動しています。