ruby-trunk-changes r64061 - r64070

今日はメインスレッドで Fiber を使ってた時にシグナルの配送遅延する可能性があった不具合修正や Solaris のビルドエラー(リトライ)などがありました。

nobu: r64061 2018-07-26 16:23:14 +0900

svn property の svn:ignore にテスト用の拡張ライブラリ(ext/-test-/*)のビルド結果のファイルを追加したみたいです。

normal: r64062 2018-07-26 17:30:10 +0900

Fiber のコンテキスト切り替え時に、シグナルによる割り込みを通知する interrupt_flag が rb_execution_context_t に移動されているため切り替え時に喪失される可能性があったので、ec_switch() で ec を復帰した後に RUBY_VM_SET_TRAP_INTERRUPT() を呼び直すようにしています。んーでもどうせ後で 呼ばれた時に割り込みフラグが立つのではないかと考えると、切り換える前の interrupt_flag を復帰したやつにコピーしないといけないんじゃないかな、と思ってしまったけどこの interrupt_flag は割り込みをチェックするかどうかのフラグだから余分かもしれないけどフラグを立てておいてチェックされないまま割り込みが滞留するのを防ぐってことですね、多分。 [ruby-core:88119] [Bug #14939]

nobu: r64063 2018-07-26 18:32:42 +0900

fork(2) は Solaris では deprecated だそうで(かわりは何だろう?)、gcc で警告が出るそうなので process.c と mjit.c の対応する部分で #pragma を使って部分的に警告のオプションを抑制するようにしています。

nobu: r64064 2018-07-26 18:34:30 +0900

ruby.c の runtime_libruby_path() で dladdr(3) に const void * のポインタを渡していますが、Solaris ではこの引数に const 修飾子がついていないそうなので警告除去のため明示的なキャストを追加しています。

nobu: r64065 2018-07-26 21:04:32 +0900

process.c の after_fork_ruby() という環境は fork(2) と daemon(3) が使える環境でのみ利用されるので、関数定義自体も preprocess の分岐で括って未使用の関数定義にならないようにしています。

kazu: r64066 2018-07-26 21:47:01 +0900

標準添付ライブラリ webrick のテストで正規表現内の "." がエスケープされずに使われていたのを修正しています。

nobu: r64067 2018-07-26 21:48:02 +0900

r63982 で Dir.glob の実装で DT_UNKNOWN が未定義な環境のための修正が Solaris のビルド失敗のため r64038 で revert されたもののリトライ。なんだけどうーんどこが変わったのかよくわからない。

k0kubun: r64068 2018-07-26 22:05:47 +0900

r64052 で MJIT の .so へのコンパイルを mswin 以外では *.o を作ってから *.so にするようにしてましたが、.o から .so にするのはコンパイルじゃなくてリンクだから、ということで関数名を compile_o_to_so() から link_o_to_so() に変更しています。

marcandre: r64069 2018-07-27 03:46:10 +0900

標準添付ライブラリ ostruct で Module#remove_method が [Feature #14133] によって 2.5 から public になっているため不要になっていた Object#__send__ をやめて直接メソッドを呼ぶようにしています。 https://github.com/ruby/ruby/pull/1890

svn: r64070 2018-07-27 03:46:11 +0900

version.h の日付更新。