ruby-trunk-changes 2021-04-15

今日は macOS でのビルドの修正や rubygems と bundler の更新などがありました。

[b190f6ef13] universato 2021-04-14 17:13:42 UTC

標準添付ライブラリ matrix の Matrix#set_value で引数のタイプが不正な時の例外メッセージの typo 修正。

[d9a5281363] git 2021-04-14 17:51:49 UTC

version.h の日付更新

[92545977de] Kenichi Kamiya 2021-04-15 02:14:43 UTC

Hash#has_value? の rdoc 用コメントの call-seq に #value? も別名として追加しています。 https://github.com/ruby/ruby/pull/4293

[df0f60b690] Yusuke Endoh 2021-04-15 04:38:45 UTC

d8c8b79d24bf0f3177535501ad9b801e552fb2ad の Matrix#** の不具合修正で一緒に rubyspec の変更もされていましたがその後 3.0.1 以降は新しい挙動になることが期待されるような ruby_version_is の記述になっていたのを 3.1 以降になるように変更しています。かなり古くからある不具合だったので安定版では修正しないことにしたので。

[fd978621cc] Nobuyoshi Nakada 2021-04-15 03:49:06 UTC

68a6f6c4abbd554c20ccd85a538dc4576aad87f0macOS 向けに common.mk で INSTRUBY コマンドで環境変数 SDKROOT をセットするようにしたのと関連ありそうですが、tool/mkconfig.rb で環境変数 SDKROOT がなかった時にかわりに RbConfig::CONFIG["prefix"] のディレクトリに "include/" があればそちらを使い、なければ /usr/bin/xcrun というコマンドでパスを取得するようにしています。 Apple が独自に当ててるパッチを参考にしてるみたいですね。 https://opensource.apple.com/source/ruby/ruby-145.40.1/patches/tool_mkconfig.rb.diff

[0d9496f924] Hiroshi SHIBATA 2021-04-15 03:45:38 UTC

tool/sync_default_gems.rb での bundler の同期時に bundler.gemspec ファイルの変更を取り消すようにしています。 upstream とは内容が違うのかな。

[ed149dbf46] Hiroshi SHIBATA 2021-04-15 03:47:04 UTC

標準添付されている bundler を upstream リポジトリの最新版と同期しています。

[96741765d8] Hiroshi SHIBATA 2021-04-15 03:47:18 UTC

同じく rubygems を upstream リポジトリの最新版と同期しています。

[7af7a539bc] Hiroshi SHIBATA 2021-04-15 04:36:06 UTC

tool/sync_default_gems.rb で bundler の upstream からの同期時にいくつかのスクリプトを tool/bundler/ の下にコピーするようにして、実際にスクリプトを追加しています。 bundler のテスト実行時に必要なものみたいです。

[26888d5e03] Nobuyoshi Nakada 2021-04-15 09:07:23 UTC

fd978621ccbc9519afc05ad031ba2518e9a6f379 のさらに続きで tool/rbinstall.rb で常に環境変数 SDKROOT を設定しておくようにしています。未設定の場合は空文字列をセットしておくようにしています。

ruby-trunk-changes 2021-04-14

今日は struct RVALUE の宣言の共用体内に struct RSymbol のメンバーを復活させる変更だけでした。

[4eefb05725] Peter Zhu 2021-04-12 18:20:55 UTC

struct RVALUE 型の宣言の共用体内に struct RSymbol のメンバーがなくなってたので追加しています。 0ca714fa1aa3fbe4fb60ae1e5b730e544dabc27b で struct RSymbol を非公開の構造体にした時にうっかり(?)消していたみたいです。なくてもビルドできてるもんなのかなと思ったけど、サイズは同じだし RSYMBOL() マクロでアクセスする際は共用体のメンバーを使うんじゃなくて struct RSymbol * に直接キャストしているから、なくても大きな問題はなかったみたいですね。

ruby-trunk-changes 2021-04-13

今日は MSVC でのビルドエラー対策や String#crypt の Multi Ractor 対応などがありました。

[df7efdcb6b] Nobuyoshi Nakada 2021-04-12 13:47:07 UTC

string.c の crypt.h または missing/crypt.h の #include する位置を ruby 内部のヘッダ群の #include 後に移動しています。 LONG_LONG マクロの再定義対策とのこと。

[12f7ba5ed4] Nobuyoshi Nakada 2021-04-12 13:56:15 UTC

String#crypt の実装で呼ぶ crypt(3) は MT-safe ではないみたいで複数 Ractor から呼ばないようにするため排他するため専用の mutex を追加しています。その初期化を利用時にするためにさらに rb_atomic_t なメンバーも作って RUBY_ATOMIC_CAS() で二重に初期化しないようにするなど結構手が込んでます。

[6878d51731] git 2021-04-13 04:12:52 UTC

version.h の日付更新

[f411fcd145] 卜部昌平 2021-04-09 08:56:43 UTC

include/ruby/internal/token_paste.h で定義されていた RBIMPL_TOKEN_PASTE() という引数を連結したトークンに展開するマクロを削除して、それを使っていたところを単に "x ## y" のような構文で連結するようにしています。

[6413dc27dc] 卜部昌平 2021-04-09 09:01:15 UTC

f411fcd14587cfbf1efb86944134b993c04b050e の include/ruby/internal/token_paste.h の削除に伴なう #include directive の削除と common.mk および各種拡張ライブラリの depend ファイルの依存関係の更新。

[f8e1bf283d] 卜部昌平 2021-04-12 02:37:01 UTC

include/ruby/internal/core/rdata.h で定義しているマクロで rb_data_object_xxx_ のような名前のマクロを同じ名前に展開するように定義していたのが MSVC で再帰的な展開になってビルドエラーになるとのことで、マクロ名を rb_data_object_xxxx_2 に改名しています。最終的に rb_data_object_wrap_0 が rb_data_object_wrap に展開されるようになってて循環はしているので、改名すると直るのがよくわからないですが、直るそうです。

[393923b50d] Nobuyoshi Nakada 2021-04-13 05:49:49 UTC

RB_LL2NUM()/RB_ULL2NUM()/RB_NUM2ULL() などのマクロを RB_NUM2LL() と同様に inline 関数版に展開するようにしています。

ruby-trunk-changes 2021-04-12

今日は Android 向けのビルドのための型チェック追加や mkmf.rb の MinGW 向け修正などがありました。

[799ea1d154] Nobuyoshi Nakada 2021-04-11 11:15:59 UTC

標準添付ライブラリ mkmf.rb で生成する Makefile 内の arch_hdrdir 変数にセットする(ruby の)変数 $arch_hdrdir を mkintpath メソッドを通して Windows 環境でのパス名の調整をするようにしているようです。 MinGW での拡張ライブラリビルドのエラー対策みたいです。 [ruby-core:97248] [Bug #16651]

[a5688b5ce6] Nobuyoshi Nakada 2021-04-12 05:42:26 UTC

ARM アーキテクチャAndroid 向けの 32bit 版ビルド時にコンパイルエラーになるとのことで struct stat::st_dev および st_rdev のメンバーの型をチェックして dev_t 以外の時にも対応するようにしています。 Android では dev_t 型じゃないということみたいですね。 [ruby-core:103386] [Bug #17793]

[59171378fb] git 2021-04-12 06:58:32 UTC

version.h の日付更新

ruby-trunk-changes 2021-04-11

今日は主に標準添付ライブラリ optparse のドキュメントの配置の修正などがありました。

[f60fba03bf] Zachary Scott 2021-04-10 23:37:39 UTC

README.md のビルド方法のところで ext/Setup の編集については optional であることを強調しています。拡張ライブラリを静的にインタプリタにリンクする場合なので基本的にはやらないですね。

[97abd0f6af] git 2021-04-10 23:40:42 UTC

version.h の日付更新

[c795f30ef0] Burdette Lamar 2021-04-09 13:21:34 UTC

5891159f9608f058b3fb2ba96a9874fc81f3d7b3 などで標準添付ライブラリ optparse のドキュメントやサンプルを doc/option_params に配置していたのを doc/ruby に移動しています。

[ff0dac1849] Burdette Lamar 2021-04-10 15:05:44 UTC

標準添付ライブラリ optparse のドキュメントの一部を doc/argument_converters.rdoc に切り出しています。

[1bad4bdf52] Burdette Lamar 2021-04-10 21:30:19 UTC

標準添付ライブラリ optparse のドキュメントを doc/ruby/ 配下のファイルおよび doc/tutorial.rdoc に追加しています。

[bd7430c7aa] Nobuyoshi Nakada 2021-04-09 14:20:03 UTC

rakelib/.document というファイルを追加していますが、これは optparse の upstream からの同期でミスで追加されたものっぽい。ということで後に revert されています。

[cb01437c24] Nobuyoshi Nakada 2021-04-10 23:49:30 UTC

doc/creates_option.rdoc のリンクの修正。

[f89486965b] Nobuyoshi Nakada 2021-04-11 00:03:07 UTC

標準添付ライブラリ optparse のドキュメントが doc/ruby/ 配下や doc/tutorial.rdoc に置かれてしまっていたので doc/optparse/ を掘ってその下に置くように移動しています。

[ec01587827] Nobuyoshi Nakada 2021-04-11 00:05:36 UTC

bd7430c7aacd135419609eec72e3889cd00a6f73 を revert して追加された rakelib/.document を削除しています。

[dbdd8c2dfe] Nobuyoshi Nakada 2021-04-11 00:59:01 UTC

tool/sync_default_gems.rb で upstream からの同期の時に無視するファイルのパターンに rakelib/ を追加しています。

[37b96d6773] Nobuyoshi Nakada 2021-04-11 04:18:47 UTC

tool/sync_default_gems.rb で default gems の upstream からのマージで無視するファイルのパターンをメンテナンスしていたのを逆に gem 名のサブディレクトリ? のみを対象にするようにしているようです。

[60bdf03b6d] Nobuyoshi Nakada 2021-04-11 04:21:33 UTC

File.fnmatch の rdoc 用コメントのサンプルの表示用に空白でそろえてたところがズレてたのを修正しています。

[9f9045123e] "tompng (tomoya ishida)" 2021-04-11 10:04:31 UTC

Hash の要素(key)を削除した時にそれが st_table::entries_start (テーブル内の開始要素)だった時にそれを +1 しておいたのを、そこも削除済みだった時に次に要素が残ってるところまでずらしておくようにしておくことで、大量に要素が消された後の Hash#first で不要なスキャンをなくして高速にしています。なるほど……。いやまあわかるけど Hash#first 自体そんなに使わないような気はする……。 [ruby-dev:51046] [Bug #17779]

ruby-trunk-changes 2021-04-10

今日は AIXmacOS でのビルド対応のためのビルドプロセスまわりに修正などがありました。

[9c31fb6114] Jeremy Evans 2021-04-09 17:44:07 UTC

Enumerator::Lazy#with_index の rdoc 用コメントにブロックが渡された時の挙動について間違って Enumerable の時の記述が書かれてたので修正しています。 [ruby-core:103336] [Bug #17789]

[ff43ecc0c1] git 2021-04-09 17:48:12 UTC

version.h の日付更新

[836da24e97] Samuel Williams 2021-04-09 21:00:05 UTC

include/ruby/fiber/scheduler.h の rb_fiber_scheduler_xxx() 系の関数宣言を RBIMPL_SYMBOL_EXPORT_BEGIN()/RBIMPL_SYMBOL_EXPORT_END() ではさんで export するようにしています。

[0a93a3f4c6] Nobuyoshi Nakada 2021-04-10 02:39:45 UTC

win32/setup.mak で生成する verconf.mk の RUBY_RELEASE_{YEAR,MONTH,DAY} などの変数を上書き定義するようにしています。

[68a6f6c4ab] Nobuyoshi Nakada 2021-04-10 02:57:45 UTC

common.mk の INSTRUBY で macOS では SDKROOT という環境変数を "/" に設定しておくようにしています。なんでだろ。

[af8ac97fcc] Nobuyoshi Nakada 2021-04-10 02:59:09 UTC

tool/rbinstall.rb の GemInstaller#ensure_writable_dir でディレクトリ名の最後には "/" を付加するようにしています。

[6c7d39aabe] Nobuyoshi Nakada 2021-04-10 03:41:36 UTC

tool/rbinstall.rb で使う UnpackedInstaller (Gem::Installer を継承)で write_default_spec メソッドを再定義して default gems の gemspec ファイルを uninstall 時に参照するための出力ファイルに追記しておくようにしています。

[3a3033c138] Nobuyoshi Nakada 2021-04-09 04:52:13 UTC

internal/bits.h で __builtin_unreachable() というコンパイラ依存の組み込み関数が直接使われてたのを UNREACHABLE_RETURN() マクロを利用するようにしています。 AIX でのビルド対応のためみたいです。 [ruby-core:103317] [Bug #17787]

[c569c298fe] Nobuyoshi Nakada 2021-04-09 05:49:30 UTC

template/Makefile.in の CPPOUTFLAG という変数の定義を COUTFLAG に委譲せず ">" と決め打ちで書いて shell によるリダイレクトを利用するようにしています。これも AIX ビルド対応みたいです。 [ruby-core:103317] [Bug #17787]

[8b7cab70eb] Nobuyoshi Nakada 2021-04-09 08:37:14 UTC

configure のコンパイラオプション -fdeclspec のチェックを RUBY_TRY_CFLAGS() から RUBY_TRY_LDFLAGS() でのチェックに変更して LDFLAGS に追加させるようにしています。これも AIX ビルド対応みたいです。 [ruby-core:103317] [Bug #17787]

[4a6c7f8696] Nobuyoshi Nakada 2021-04-09 08:51:31 UTC

configure で atomic/sync 関係の組み込み関数の存在チェックを GCC 系のコンパイラでのみ実施するようにしていたのを、常にチェックするようにしています。これも AIX ビルド対応みたいです。 [ruby-core:103317] [Bug #17787]

ruby-trunk-changes 2021-04-09

今日は標準添付ライブラリ irb と reline の更新などがありました。

[9e940eae60] Nobuyoshi Nakada 2021-04-07 03:12:27 UTC

標準添付ライブラリ irb の gemspec ファイルから add_development_dependency の指定を削除しています。Gemfile に移動したとのこと。

[16f31da92e] aycabta 2021-04-03 17:44:59 UTC

標準添付ライブラリ reline の gemspec ファイルで vterm.gem の devlopment_dependency を追加するのを環境変数 WITH_VTERM が設定されてた時だけにしています。

[5543695a19] aycabta 2021-04-05 07:03:53 UTC

標準添付ライブラリ reline の Reline::ANSI::RAW_KEYSTROKE_CONFIG と Reline::Windows::RAW_KEYSTROKE_CONFIG という定数を削除してそれぞれの特異メソッド set_default_key_bindings の引数に渡した config に add_default_key_binding_by_keymap メソッドを呼び出して keystroke を登録させるようにしています。

[b0b3022f95] Nobuyoshi Nakada 2021-04-07 02:56:39 UTC

標準添付ライブラリ reline の gemspec ファイルからも add_development_dependency の指定は削除しています。

[0395aa6bbb] Nobuyoshi Nakada 2021-04-08 12:26:10 UTC

eval_intern.h の rb_char_next() の戻り値の型から const 修飾子を削除して return 時にキャストするようにしています。

[5c4ff3f00c] Jeremy Evans 2021-04-08 14:53:06 UTC

Thread.handle_interrupt の rdoc 用コメントに、全ての割り込みを捕捉するためには引数に Exception クラスのかわりに Object を指定すると良いという Tips を追記しています。なるほど〜それは知らなかった。 [ruby-core:92038] [Bug #15735]

[a6ae593ca0] git 2021-04-08 15:01:08 UTC

version.h の日付更新

[6496c76d2a] aycabta 2021-04-09 02:57:23 UTC

標準添付ライブラリ reline の Reline::Config#reset に reset_default_key_bindings の呼び出しを追加しています。

[582f4bc188] Yusuke Endoh 2021-04-09 04:59:46 UTC

RubyVM::AbstractSyntaxTree と GC.compact の併用についてのテストが CI でタイムアウトを起こすということでデバッグのため assert_separately を利用して子プロセスで実行させてみるようにしています。タイムアウト時に SIGSEGV を送信するように指定しているのでどこで止まってるのかバックトレースが取れるはずとのこと。なるほど。