ruby-trunk-changes r61296 - r61304

今日は Kernel#__dir__ の Encoding の修正や Thread#join の race condition の修正などがありました。

k0kubun: r61296 2017-12-16 22:02:25 +0900

vm.c の rb_frame_method_id_and_class() の定義に RUBY_FUNC_EXPORTED というマクロによる修飾子を追加しています。このマクロなんだっけなーと日記を検索したけど出てこなかったのですが configure でチェックして定義されていて、doc/ChangeLog-1.9.3 に記述があるのでかなり昔からあるみたいです。 extern でに場合によっては gcc 拡張の __attribute__ ((__visibility__("default"))) みたいなのが付くみたいです。[ruby-core:84302] [Bug #14192]

nobu: r61297 2017-12-16 22:25:11 +0900

Kernel#__dir__ が返す文字列の Encoding について、Encoding が取得できなかった時(ASCII-8BIT の時?)に、元になった opt->script_name の Encoding をコピーするようにしています。

nobu: r61298 2017-12-17 14:35:27 +0900

vm_method.c の method_definition_addref_complement() で METHOD_DEBUG マクロが真値の時に出力されるデバッグメッセージの参照しているカウンタが間違っていたのを修正しています。

nobu: r61299 2017-12-17 14:35:28 +0900

vm_method.c の prepare_callable_method_entry() で rb_classext_t::callable_m_tbl のテーブルの確保を遅延するためのチェックですが、その後の method entry がみつからなかった時の分岐の中にテーブル確保のためのチェックを移動しています。これは me が見付かるほうが多いからそっちの分岐を減らすためかなぁ。

svn: r61300 2017-12-17 14:35:28 +0900

version.h の日付更新。

normal: r61301 2017-12-17 17:26:12 +0900

thread.c の sleep_timeval() から struct timeval の操作についての処理を timeval_update_expire() と timeval_add() という関数として切り出すリファクタリング

normal: r61302 2017-12-17 17:26:17 +0900

thread_join_sleep() で待ち時間の上限がある時に RUBY_VM_CHECK_INTS_BLOCKING() の呼び出しと th->status の復帰が抜けてたので分岐内の処理を一部分岐の後に括り出しています。このため sleep_wait_for_interrupt() を呼んでたのは native_sleep() を呼ぶようにして、利用箇所がなくなった sleep_wait_for_interrupt() の定義は削除しています。 sleep_wait_for_interrupt() の中でも RUBY_VM_CHECK_INTS_BLOCKING() が呼ばれている所はあるので th->status の管理のほうが主眼かも。 r61274 の追加修正みたいですね。 [ruby-core:84248] [Bug #14181]

nobu: r61303 2017-12-17 18:40:19 +0900

r61301 で追加した timeval_add() のインデントとスタイルの修正。

nobu: r61304 2017-12-17 20:13:23 +0900

make exts-note というターゲットを追加して、build-ext の最後に表示される、うまく設定できなくてビルドされない拡張ライブラリを表示する部分だけ実行できるようにしています。 これで手元で gdbm がビルドされてないのに気がつきました…。