ruby-trunk-changes r62432 - r62451

今日は MJIT のメソッドキャッシュ管理用のテーブル操作のデッドロック修正や拡張ライブラリ静的リンクの不具合修正などがありました。

nobu: r62432 2018-02-16 23:35:06 +0900

tool/m4/ruby_check_va_copy.m4 で shell の if 文を使っていたのを AC_IF() を使うようにし、AC_TRY_RUN() を使っていたところを AC_TRY_LINK() という専用のマクロを使うようにしています。 cross compile のサポートのためだそうです。

k0kubun: r62433 2018-02-16 23:45:39 +0900

mjit.c の mjit_add_class_serial() でクラスのメソッドキャッシュ管理のための serial number を管理してる valid_class_serials の操作に CRITICAL_SECTION_START()/CRITICAL_SECTION_FINISH() で mutex の lock を取っていたのをやめています。 GC がおきた時も lock を取得するので、rb_hash_aset() を呼ぶと GC が走って deadlock がおきる可能性があったみたいです。けどここの排他は消してもいいのかな。

nagachika: r62436 2018-02-17 01:04:21 +0900

r62422 で追加されたテストファイル test/rubygems/test_gem_server.rb で正規表現リテラルで -w つきで実行すると警告が出てたのがあったので修正しています。コミットログに書き忘れてたけど ripper のテストでリポジトリ内の全 .rb ファイルから5% を parse してみるというテストがあって、それに選ばれるとテストがこけてました。 [Bug #14481]

svn: r62437 2018-02-17 01:04:22 +0900

version.h の日付更新。

nobu: r62445 2018-02-17 10:30:05 +0900

MJIT のために export された関数でまだ rb_ の prefix がついていなかったものに rb_ をつける改名。

nobu: r62446 2018-02-17 14:22:56 +0900

configure で clockid_t 型のチェック時に time.h や sys/time.h など必要なヘッダを include してチェックするようにしています。 どっちかというと AC_CHECK_TYPE() してるほうを消して RUBY_REPLACE_TYPE() に統合しているんですが RUBY_REPLACE_TYPE() ってなんだっけな。変換用のマクロや printf() 用のフォーマット指示子用のマクロも定義するやつか。

nobu: r62447 2018-02-17 14:52:20 +0900

common.mk にあった PRE_LIBRUBY_UPDATE という変数を Makefile.in と win32/Makefile.sub に分割して、ruby スクリプトで FileUtils 使って書いてたのを各プラットフォームのコマンドを使うように書き換えています。 miniruby への依存をなくすためみたいです。

nobu: r62448 2018-02-17 14:52:21 +0900

configure のオプションで --with-static-linked-ext が指定されて拡張ライブラリの静的リンクする時の対応のため libruby.a のビルドの依存関係を修正しています。

nobu: r62449 2018-02-17 16:54:52 +0900

拡張ライブラリ socket の Addrinfo#connect_internal の可視性を private から protected に変更して、Addrinfo#connect_to から send を使って呼び出してたのを直接呼ぶように変更しています。

shyouhei: r62450 2018-02-17 18:51:23 +0900

拡張ライブラリ fiddle で long long は未定義の環境があるので TYPE_LONG_LONG の対応は定数が定義されているか defined? でチェックしてから行うようにしています。

shyouhei: r62451 2018-02-17 19:04:22 +0900

mkmf.rb のテスト test/mkmf/test_framework.rb で生成している C のソースコードで、ファイル末尾に改行がないファイルを作ってましたが、C のソースファイルは末尾に改行が必要とのことで改行コードを追加しています。それも決まっているのかー。 ISO 9899 (5.1.1.2).