ruby-trunk-changes 2022-09-21

今日は主に関数ポインタの型の扱いの修正や拡張ライブラリ socket の新しい定数の追加などがありました。

[b3d8dddee7] Yusuke Endoh 2022-09-20 08:07:42 UTC

Continuation のために machine stack を退避する cont_save_machine_stack() に ASAN のための unpoison の呼び出しを追加しています。

[a8dc49b4d5] Alan Wu 2022-09-20 12:36:06 UTC

make に bmake というコマンドを利用する時の YJIT の Rust 実装をビルドの対応をしているようです。 $(YJIT_LIBS) の依存関係? かなにかで GNU make に依存した記法を使ってたみたいで他の make の実装でも動くように代替のルールを yjit/not_gmake.mk に書いておいて必要に応じて include する Makefile を生成するようにしています。

[d3733c2ba5] Maxime Chevalier-Boisvert 2022-09-20 23:30:10 UTC

YJIT の --yjit-stats オプションの処理で 5883bc7c0791de2ce5e8b22175aef07705f0c618 の追加の再修正をしています。 https://github.com/ruby/ruby/pull/6409

[45482fea3c] 卜部昌平 2022-09-12 05:41:23 UTC

GitHub Actions のいろんなコンパイルオプションを試す workflow で利用するデフォルトのコンパイラの clang 14 を clang 15 に更新しています。また clang-16 でのビルドも追加しています。

[104069e75a] 卜部昌平 2022-09-13 06:08:50 UTC

error.c の syserr_initialize() での不要な prototype 宣言を削除しています。おそらく clang 15 で警告が出てたのでしょう。

[406ebb25a0] 卜部昌平 2022-09-13 06:18:46 UTC

ractor.c の obj_refer_only_shareables_p_i() で警告が出たとのことでポインタのインクリメントに dereference の "*" を追加していますが、うーん? これは多分 (*pcnt)++ にしないといけないんじゃないかな?

[06cb030516] 卜部昌平 2022-09-13 07:26:33 UTC

vm_insnhelper.c でいろんな引数の数のメソッド呼び出しに対応した関数を呼び出すための関数の一部で関数ポインタを呼び出す関数の型に合わせた変数にキャストして代入しておいてから使うようにしています。他のところは既にキャストしてたけど一部だけ直接呼ぶようになってたみたいです。

[0cd86ffb2e] 卜部昌平 2022-09-14 02:32:24 UTC

file.c の define_filetest_function() という static 関数を関数マクロによる定義に変更しています。コミットログによると ANYARGS で任意の個数の引数を指定するのを避けるためみたいです。

[2f8012c949] 卜部昌平 2022-09-14 05:12:17 UTC

include/ruby/internal/anyargs.h で引数の数に応じて関数を用意しているところで rb_f_notimplement() を使った定義をする時に一旦 xxxx_notimpl() という関数を経由して呼び出すようにしています。これも ANYARGS を使わないようにするためみたいです。

[8a577cbc63] 卜部昌平 2022-09-14 05:17:56 UTC

vm_insnhelper.c の cref_replace_with_duplicated_cref_each_frame() という関数は戻り値の型が rb_cref_t * とポインタなのに FALSE を返しているところがあったので NULL に修正しています。

[4e64edb6cd] 卜部昌平 2022-09-14 05:35:47 UTC

vm_insnhelper.c でさらに ANYARGS の利用を避けるために引数の個数の違う関数ポインタの型の共用体を定義してこれを任意の個数の引数の関数ポインタのかわりに使うようにしています。

[ec5798d28b] 卜部昌平 2022-09-14 05:43:31 UTC

rb_f_notimplement() および rb_f_notimplement_internal() を関数ポインタとして参照しているところで明示的に ANYARGS を受け取る関数としてキャストするようにしています。

[77c61ae3ab] 卜部昌平 2022-09-14 05:47:26 UTC

vm_eval.c の cc_new() で vm_ci_new() のポインタの引数に false を渡していたのを NULL に修正しています。

[45741918e1] 卜部昌平 2022-09-16 06:14:05 UTC

古い gperf のサポートのために一部の関数の宣言をコメントアウトしていたのを削除しています。

[437800d3b0] 卜部昌平 2022-09-21 01:03:30 UTC

拡張ライブラリ pty の establishShell() で標準ライブラリ関数の getenv() を冗長に宣言していたのを削除しています。同様に拡張ライブラリ etc では逆に宣言を取り込むために stdlib.h を #include するようにしています。

[7060b23ffa] 卜部昌平 2022-09-21 01:14:00 UTC

拡張ライブラリ openssl の関数ポインタの変数の宣言に専用の型を typedef して使うようにしています。

[1ad1f07306] Takashi Kokubun 2022-09-21 04:38:42 UTC

YJIT 用の GitHub Actions の workflow で Slack への通知の設定を修正しています。

[d6e84d97fe] Hiroshi SHIBATA 2022-09-21 01:46:35 UTC

irb のヒストリファイルのテストで IRB.conf[:LC_MESSAGES] の初期設定を追加しています。環境によってテストが失敗するのを修正するためみたいですね。

[c287deecb6] Hiroshi SHIBATA 2022-09-21 01:53:06 UTC

同じく irb のヒストリファイルのテストで環境変数 IRBRC の影響を除外するため一時的に環境変数を消すようにしています。

[76b4305a59] Mau Magnaguagno 2022-08-29 21:47:32 UTC

NEWS の Regexp.new の正規表現のオプション指定に文字列を渡す新機能についての説明文を修正しています。

[e3b178066b] Koichi ITO 2022-05-23 07:40:15 UTC

Process.kill の rdoc 用コメントの call-seq の可変長引数の書きかたを修正。

[017573c3b3] David CARLIER 2022-05-18 20:30:47 UTC

拡張ライブラリ socket で SO_SETFIB という C の定数に対応する ruby の定数の定義に対応しています。 FreeBSD で存在する定数みたいです。

[8a9dfb676b] David CARLIER 2022-05-02 10:33:57 UTC

同じく拡張ライブラリ socket で C の定数 TCP_CONNECTION_INFO と TCP_KEEPALIVE の対応を追加しています。 TCP_KEEPALIVE がまだなかったというのは意外でした。

[3f387e60ef] Yuta Saito 2022-02-17 17:31:40 UTC

mspec の対象のファイルを load するためのユーティリティメソッドで File.expand_path が環境変数 HOME がなくて ~ が展開できない時に ArgumentError が発生するのを無視するように対応しています。

[ec2d13567e] David Carlier 2021-02-21 13:16:57 UTC

拡張ライブラリ socket で C の定数 SO_USER_COOKIEruby の定数に取り込むように追加しています。

[8cbbc061c4] David Carlier 2021-07-07 20:40:15 UTC

拡張ライブラリ socket で C の定数 SO_RTABLE も ruby の定数に取り込むように追加しています。OpenBSD で存在する定数みたいです。

[d35bc88b37] David Carlier 2021-12-12 11:08:19 UTC

拡張ライブラリ socket で C の定数 SO_INCOMING_CPU と SO_INCOMING_NAPI_ID も ruby の定数に取り込むように追加しています。Linux で存在する(した?)定数みたいです。

[02e25db68f] Akihiro Sada 2022-04-05 11:37:05 UTC

NEWS に標準添付ライブラリ uriURI.escape と URI.unescape の削除について追記しています。

[796069b288] David Carlier 2021-04-10 11:47:16 UTC

Process.{set,get}rlimit に使う定数に Process::RLIMIT_NPTS というのを(C の定数が定義されていたら)追加しています。