ruby-trunk-changes 2020-09-14

今日は主に reline と irb の更新や Mutex/ConditionVariable などの blocking fiber 対応、拡張ライブラリ zlib の Zlib::GzipReader.zcat メソッドの追加などがありました。

[3a3e933033] aycabta 2020-09-13 15:49:51 UTC

標準添付ライブラリ reline のバージョンを 0.1.5 に更新しています。

[5d841f5631] aycabta 2020-09-13 15:50:57 UTC

標準添付ライブラリ irb のバージョンを 1.2.5 に更新しています。

[e468d9f49c] aycabta 2020-08-29 11:48:25 UTC

irb で代入文の評価値の表示を短く省略表示するようにしているようです。IRB::Context#omit_on_assignment という設定で on/off が設定できるようです。

[8f9b1902f4] aycabta 2020-09-03 13:51:15 UTC

同じく irb で評価値を表示する時に複数行入力の時に? 省略表示するようにしているようです。

[5bb9e12573] aycabta 2020-09-13 16:00:20 UTC

irb の gemspec ファイルで reline の依存関係を 0.1.5 以上に更新しています。

[b682e0fc21] aycabta 2020-09-13 16:33:42 UTC

irb のバージョンを 1.2.6 に更新しています。

[ba73e44751] git 2020-09-13 17:20:41 UTC

version.h の日付更新

[a9ccebbda0] Hiroshi SHIBATA 2020-09-14 03:02:43 UTC

NEWS に default gems 化した標準添付ライブラリを追加しています。

[703e529751] Samuel Williams 2020-08-20 01:47:55 UTC

blocking fiber のための Scheduler を取得する rb_thread_current_scheduler() という API を追加しています。

[6747cb5754] Samuel Williams 2020-08-20 01:48:29 UTC

include/ruby/io.h のマクロ GetOpenFile() を RB_IO_POINTER() に、MakeOpenFile() を RB_IO_OPEN() に改名しています。元の名前も #define で別名として定義しているので使えそうです。

[905e9c8093] Samuel Williams 2020-08-20 01:49:09 UTC

定数 IO::WAIT_READABLE, IO::WAIT_PRIORITY, IO::WAIT_WRITABLE の WAIT_ の prefix を削除してそれぞれ IO::READABLE, IO::WRITABLE, IO::PRIORITY に変更しています。これは互換性大丈夫なのかな。 blocking fiber でだけ使ってた定数かな。

[d387029f39] Samuel Williams 2020-08-20 01:51:45 UTC

blocking fiber 用の Scheduler クラスの実装のための C API 群を追加しています。また IO#wait_priority というのを新設しています。 703e529751deb086a46a9c029ce38d4fff14e84c で導入した rb_thread_current_scheduler() をここで利用していますね。

[132453fa52] Samuel Williams 2020-08-20 12:52:36 UTC

blocking fiber 追加時に? 追加されてた Kernel#Fiber() を Fiber.schedule というクラスメソッドに改名しています。

[701dcbb3ca] Samuel Williams 2020-08-20 12:53:08 UTC

blocking fiber のための Scheduler で IO#read からコールバックを呼び出すようにしています。

[9e0a48c7a3] Samuel Williams 2020-09-05 02:30:21 UTC

io.c や process.c の Thread に設定されている blocking fiber のための Scheduler を得るのに rb_thread_scheduler_if_nonblocking() のかわりに 703e529751deb086a46a9c029ce38d4fff14e84c で追加したrb_thread_current_scheduler() を使うように変更しています。

[178c1b0922] Benoit Daloze 2020-09-05 04:26:24 UTC

Mutex を Thread 全体で共有せず Fiber ごとに排他処理できるようにしています。そのかわり Mutex#lock で Scheduler を認識して Scheduler による切り替えに対応しているようです。しかし blocking じゃない普通の Fiber で事故るとデッドロックしそう。まあでもそのような使いかたは潜在的な不具合のような気がしますが。 [ruby-core:97907] [Feature #16792]

[3dc0fc11f0] Samuel Williams 2020-09-05 03:32:13 UTC

common.mk の依存関係の更新。

[1a0cfe2839] Samuel Williams 2020-09-06 02:48:52 UTC

178c1b0922dc727897d81d7cfe9c97d5ffa97fd9 の Mutex の Fiber の Scheduler 対応で lock 取得待ちをする時にビジーループに入らないように修正しています。

[0f613cc5f1] Samuel Williams 2020-09-11 08:47:25 UTC

Mutex の Fiber 対応をしたのに追随して ConditionVariable も対応しているようです。

[8eea66a0ca] Samuel Williams 2020-09-13 23:10:02 UTC

Mutex の Fiber 対応に追随して Queue と SizedQueeu も Scheduler 対応しています。

[7fca274198] Samuel Williams 2020-09-14 00:17:11 UTC

拡張ライブラリ io/console の IO#getch でも blocking fiber の Scheduler 対応しています。

[eace12c25b] Hiroshi SHIBATA 2020-09-14 05:06:02 UTC

標準添付ライブラリ open3 の gemspec ファイルでバージョン取得するために探すファイルパスを修正しています。

[78ef7eeb36] Hiroshi SHIBATA 2020-09-14 05:07:37 UTC

標準添付ライブラリ open3 の gemspec ファイルで required_ruby_version を 2.6.0 以上に変更しています。

[ccb944fcfe] Koichi Sasada 2020-09-14 07:22:13 UTC

NEWS に Ractor の追加について追記しています。

[cdb85142f9] Hiroshi SHIBATA 2020-09-14 08:06:38 UTC

標準添付ライブラリ erb の gemspec ファイルで spec.bindir の指定を exe から libexec に変更しています。

[888e04ae05] TOMITA Masahiro 2020-07-14 15:50:16 UTC

標準添付ライブラリ net/smtpTLS を利用する時にデフォルトでホスト名のチェックを無効にするように変更しています。明示的にチェックが有効な OpenSSL::SSL::SSLContext を渡して Net::SMTP#enable_starttls_auto を呼んだ時だけ有効にしているようです。SMTP ではそういうもんなんだろうか。

[141404e898] TOMITA Masahiro 2020-07-19 12:25:25 UTC

標準添付ライブラリ net/smtp の Net::SMTP.start の省略可能な引数をキーワード引数に変更しています。rest 引数で通常引数も受付けて fallback しているのでいちおう従来の書きかたも動きそうです。

[f1d32010e6] "nicholas a. evans" 2019-02-27 19:25:51 UTC

標準添付ライブラリ net/smtp の Net::SMTP#tlsconnect で SNI をサポートするようにしています。@address が IP アドレスの時に hostname として代入していいのかな。

[d52dffd817] Jeremy Evans 2019-11-27 01:31:47 UTC

拡張ライブラリ zlib に Zlib::GzipReader.zcat という特異メソッドを追加しています。これは gzip で圧縮された複数のファイルを連結したストリームを処理できるそうです。 [Bug #9790] [Bug #11180] [Bug #14804]

[9fbbbadc96] Nobuyoshi Nakada 2020-07-16 08:38:58 UTC

tool/lib/test/unit/core_assertions.rb に Test::Unit::CoreAssertions#diff というメソッドを追加しています。どこかでこのメソッドが呼ばれて NoMethodError になるので簡易的な実装を追加しておいたようです。

[50bce2065d] Nobuyoshi Nakada 2020-07-13 10:21:01 UTC

標準添付ライブラリ tempfile のテストで assert_equal のかわりに assert_not_predicate を使ってより意味のあるエラーメッセージが出るようにしています。

[f7f849e30c] Nobuyoshi Nakada 2020-07-13 10:44:52 UTC

標準添付ライブラリ tmpdir のテストで一時ディレクトリ指定する環境変数として TMPDIR の他に TMP と TEMP というのも使ったテストを追加しています。

[04de778ef1] Nobuyoshi Nakada 2020-07-13 12:26:06 UTC

f7f849e30cbf462e521b0843a9bb2cbea1bd4d11環境変数 TMP と TEMP のテストも追加した標準添付ライブラリ tmpdir のテストで環境変数が指すパスが存在しなかったりディレクトリじゃないファイルだったりした時のテストケースも追加しています。

[df1c035d03] Nobuyoshi Nakada 2020-07-13 12:39:32 UTC

f7f849e30cbf462e521b0843a9bb2cbea1bd4d11 および 04de778ef157c472dfa31239e8a6cfabceae4cb0 のさらに続きで標準添付ライブラリ tmpdir のテストで環境変数が指すパスに書きこみ権限が無かった場合のテストケースも追加しています。

[edb5c67195] Nobuyoshi Nakada 2020-07-16 08:45:08 UTC

標準添付ライブラリ tmpdir の Dir.tmpdir で環境変数 TMPDIR, TMP, TEMP やクラス変数 @systmpdir などがなんらかの理由で採用されなかった場合にはなぜ採用できなかったのかを警告メッセージで出力するようにしています。 https://github.com/ruby/tmpdir/pull/7