ruby-trunk-changes r63828 - r63839

今日は Solaris などの環境でのビルドエラーや macOS での Process.wait の race condition 修正などがありました。

ngoto: r63828 2018-07-02 22:50:53 +0900

r63232 で Makefile.in の mjit_config.h の生成ルールで ARCH_FLAG に -m64 のような architecture 指定のオプションが単独で入っているのが考慮されていなくてビルドエラーになっていたのを修正しています。 [ruby-dev:50583] [Bug #14876]

normal: r63829 2018-07-03 08:14:52 +0900

r63795 で導入した SIGCHLD_LOSSY というマクロをチェックして macOS 環境で waitpid_nogvl() で条件変数で rb_native_cond_wait() する前に rb_thread_wakeup_timer_thread() で timer thread を起動するようにしています。

svn: r63830 2018-07-03 08:14:53 +0900

version.h の日付更新。

normal: r63831 2018-07-03 09:29:06 +0900

signal まわりのテストで起動する子プロセスに --disable-gems オプションをつけて高速化するのと、test_signame_delivered というテスト(手元ではこれが止まる)のテストを10回繰り返すようにしています。

nobu: r63832 2018-07-03 09:49:32 +0900

configure.ac の cflags, cppflags, cxxflags の定義に書いてあるコメントの説明をもうちょっと詳しくしています。それぞれ対応する CFLAGS, CPPFLAGS, CXXFLAGS などの変数の指定があるとそっちで上書きされてしまう。

nobu: r63833 2018-07-03 13:43:25 +0900

rubyspec の -v コマンドラインオプションのテストを cross compile 環境では実行しないようにしています。

nobu: r63834 2018-07-03 13:43:27 +0900

template/fake.rb.in で環境変数 RUBYOPT に -r#{__FILE__} オプションを追加する処理で同じオプションが複数あったら消すようにしています。うーん、これはいいのかな?

nobu: r63835 2018-07-03 14:12:52 +0900

cont.c で Fiber が getcontext(3) に依存した実装の場合に getcontext(3) がエラーを返した時のエラー処理が実装されていなかったので、例外を発生させるようにしています。 ちなみにコメントによると getcontext(3) が失敗する理由としては SELinux の設定で禁止されている場合と、libseccomp という一部の system call を禁止するライブラリの影響下で実行されている場合などがあるそうです。なるほどー。 https://github.com/ruby/ruby/pull/1903

normal: r63836 2018-07-03 17:30:16 +0900

r63498 で USE_THREAD_CACHE をデフォルトで 1 に定義して Thread の実態である pthread を使いまわすようにしたのですが、これで pthread を使いまわすと TSD という thread 固有データが次の Thread に引き継がれてしまうので native_thread_destroy() で pool に返す前に ruby_thread_set_native() を呼んでクリアしておくようにしています。どうやら TSD は Thread Specific Data の略で Thread Local Storage の代替もしくはその実装の一種みたいなものみたいですね。そういえばちょっと前に pthread_setspecific() っていうのをみてなんだこれ、と思ったんだった。

normal: r63837 2018-07-03 18:06:28 +0900

rb_source_location() で cfp->iseq の NULL チェックを追加しています。cfp->iseq が NULL ってことは C 関数定義のメソッドの時かなぁ。

kazu: r63838 2018-07-03 20:01:06 +0900

README.ja.md の GitHubリポジトリの schema を https に変更しています。

naruse: r63839 2018-07-03 20:10:45 +0900

r63823 で追加された Time#locatime のテストで一部環境(force_tz_test が false)では with_tz のブロックが実行されないのでそのような環境のための skip を追加しています。