ruby-trunk-changes 2020-05-26

今日は速度のためデフォルトで assertion が有効になっていたのをやめる変更や、Thread#thread_variable? の不具合修正などがありました。

[21991e6ca5] Koichi Sasada 2020-05-20 02:38:44 UTC

マクロで有効になる assertion 類のマクロの定義に NDEBUG というマクロのかわりに RUBY_DEBUG を使うようにしています。 NDEBUG は否定(定義されてると assertion が無効になる)なので通常のビルドで assertion が有効になっていたため、実行が遅くなっていたので明示的に RUBY_DEBUG=1 を指定して有効にした時だけ assertion が有効になるようにしています。 https://github.com/ruby/ruby/pull/3120 [ruby-core:98174] [Feature #16837]

[4ac42874bc] Koichi Sasada 2020-05-20 08:20:59 UTC

21991e6ca59274e41a472b5256bd3245f6596c90RUBY_DEBUG が 1以上でかつ NDEBUG が定義されていると衝突しているので、RUBY_DEBUG のほうを尊重させていると #warning でビルド時の警告を出力するようにしていたのをコンパイラによって #pragma や #error を使うようにしています。

[7bafc9f433] git 2020-05-25 18:21:39 UTC

version.h の日付更新

[c9fe4ebd29] Koichi Sasada 2020-05-25 19:49:11 UTC

21991e6ca59274e41a472b5256bd3245f6596c90RUBY_DEBUG を使うようにする変更で、わざと SEGV を発生させて rb_bug() による出力をチェックするテストで使っていた fiddle を使った方法が rb_class_of() に不正な値で SEGV 発生するのが起きなくなっちゃったようなので、inspect メソッドを呼ぶことで SEGV 発生させるようにしています。

[faab5cbeb7] Jeremy Evans 2020-05-26 02:46:12 UTC

Fiber#raise の rdoc 用コメントにまだ実行開始していない Fiber について呼ぶと開始した時に例外が発生すると書いてあったのですが、実際には Fiber#raise の呼び出し自体が FiberError を発生させるようになっていたのでそのように説明を修正しています。 [ruby-core:98511] [Bug #16912]

[4e1f2283b4] Jeremy Evans 2020-05-26 02:29:32 UTC

Thread#thread_variable? というメソッドで渡された Symbol が thread local variable に登録済みかのチェックに一旦 ID を経由していたので GC されない symbol (たしか immortal symbol っていうんだっけ。コミットログでは pinned symbol と表現されている)にのみ有効だったので、オブジェクトをそのまま Symbol に変換して渡すようにしています。変更前のテストをみると Thread#[]= で immortal 化しないようにするのは意図的で、thread_variable? でチェックする際に渡す Symbol は dynamic (かつ mortal) かもしれないのでその場合も動くようにしたということかな。 [ruby-core:98480] [Bug #16906]

[385ac07fd8] Jean Boussier 2020-05-04 14:56:45 UTC

NameError に原因となった参照の名前などを埋め込むための内部クラス NameError::message クラス(定数になってないので ruby レベルだとアクセスできない)の to_str メソッドで対象の receiver を文字列化するのに receiver が Class/Module だった時は inspect のかわりに name メソッドを使うようにしています。 [ruby-core:98147] [Feature #16832]

[d63bba1e24] Nobuyoshi Nakada 2020-05-26 06:14:55 UTC

LEGAL ファイルの Copyright の表記に node-list の記法(item:: のように書く見出しつきリストの記法)を利用するようにしています。

[04eb05a8e0] Nobuyoshi Nakada 2020-05-26 04:07:30 UTC

rb_bug() などで C のバックトレースを表示する際にアドレスを表示するのに %I64x という prefix つきの指示子を使っていましたが PRI_64_PREFIX というマクロを利用するようにしています。

[17d17de0e8] Nobuyoshi Nakada 2020-05-26 05:19:20 UTC

feb8dc55b6d2acd8f87e0415af65ff861cc55828 で win32/file.c の #include <wchar.h> を #include "ruby/ruby.h" より前に移動してたのを revert して、かわりに include/ruby/internal/memory.h で memcpy() を代替実装にマクロで上書きしていたのを MinGW ではやめるようにしています。

[5917fe2303] Nobuyoshi Nakada 2020-05-26 10:17:47 UTC

拡張ライブラリ fiddle の extlibs に同梱版の libffi にあてるの cygwin 向けのためのパッチも追加しています。