ruby-trunk-changes 2021-01-23

今日は主に emscripten 向けのビルドの対応のための変更や Rational#coerce の不具合修正などがありました。

[c3244a3574] Nobuyoshi Nakada 2021-01-22 13:29:17 UTC

c8121b2e3d85c5dc4219918604c4d301204e6455 の追加修正。 aarch64-darwin の時の target_cpu を arm64 に変更する時に target_alias 変数が元からない場合は空のままにしておくようにするため変数の置換の記法? を使うようにしているようです。こんな記法ができるんだな。

[f1c36f2e6b] Nobuyoshi Nakada 2021-01-22 14:21:25 UTC

coroutine 配下のヘッダファイルに #ifndef での二重 include 防止のための guard を追加しています。

[e34eb58ac7] Nobuyoshi Nakada 2021-01-22 14:40:32 UTC

c8121b2e3d85c5dc4219918604c4d301204e6455 および c3244a3574da8ddc35523ef1b882dd2aadfc2818 の続きだと思われますが tool/m4/ruby_default_arch.m4 と tool/m4/ruby_universal_arch.m4 で ARCH_FLAG に arm64 をセットするための対応を追加。

[07b4b1b1cb] Nobuyoshi Nakada 2021-01-22 14:41:52 UTC

macOSuniversal binary の時の coroutine/ の実装を追加しています。universal を選択するとソースコード内で CPU アーキテクチャを示すマクロをみて必要なソースコードを #include するようにしています。

[6e44de752e] Burdette Lamar 2021-01-22 21:01:09 UTC

String クラスの rdoc 用コメントにもメソッドの種類別一覧を含む説明を追加しています。 https://github.com/ruby/ruby/pull/4093

[db7d0b89f6] git 2021-01-22 21:01:39 UTC

version.h の日付更新

[1def8a6004] Gannon McGibbon 2021-01-22 22:15:38 UTC

rubygems のコメントの iff を使わないように書きかえています。

[ccd7b7ab9a] Nobuyoshi Nakada 2021-01-23 00:24:43 UTC

tool/lib/vcs.rb の ChangeLog 生成のための git log 取得の --format オプションを fuller に変更しています。

[6ef761a515] Nobuyoshi Nakada 2021-01-23 00:24:52 UTC

tool/lib/vcs.rb で ChangeLog 生成するために git notes による修正のためのメモを git fetch しようとして失敗した時にエラー終了させてましたが、警告を出力するだけにして処理は続行するようにしています。

[1dfddac393] Yusuke Endoh 2021-01-23 01:09:06 UTC

configure でコンパイラのオプションから -fstack-protector を消す条件として emscripten 向けのコンパイル時というのも追加しています。

[47d6c55755] Yusuke Endoh 2021-01-23 01:11:09 UTC

gc.c の machine stack のオーバーフロー検出のための stack_check() の定義を emscripten 向けのビルド時には無効にするようにしています。

[37258b64c7] Gannon McGibbon 2021-01-21 01:16:22 UTC

標準添付ライブラリ net/http の Net::HTTP.post_form の rdoc 用コメントの iff も "if and only if" で書きかえています。

[a55eb9a2af] Nobuyoshi Nakada 2021-01-23 01:28:07 UTC

Rational に coerce メソッドを呼び出して作った Rational オブジェクトで不正な内容のオブジェクトができてしまって SEGV することがあったのを修正。f_rational_new_no_reduce2() で作成していたのを nurat_convert で分子分母を与えて Rational 作成させるようにしています。 [ruby-dev:50994] [Bug #17572]

[9de68a5221] Kazuhiro NISHIYAMA 2021-01-23 01:52:17 UTC

RubyVM::JIT の改名に関連して d961f14df3629f933613b062034deea0346de1cd で net/http のテストで新旧の定数両方チェックするようにしてましたが、そうすると今度は新しい ruby で RubyVM::MJIT の参照が警告されてしまうので、まず defined?(RubyVM::JIT) でチェックして存在したら enabled? の結果によらず RubyVM::MJIT は参照しないように条件を書きかえています。

[9efd590a13] Nobuyoshi Nakada 2021-01-23 02:04:45 UTC

a55eb9a2af7950d180d9d31ffde2bce66710f44f の続きで Rational#coerce に Float を要素として持つ Complex を渡された時にその要素を Rational に変換した Complex を返すようにしています。 [ruby-dev:50994] [Bug #17572]

[33fb87cc9c] Yusuke Endoh 2021-01-23 04:22:56 UTC

emscripten では popen(3) が使えないということで __EMSCRIPTEN__ マクロの有無によって pipe_open() を NotImplementedError を発生させる実装に変更しています。

[05f89dd13b] Yusuke Endoh 2021-01-23 04:23:26 UTC

emscripten では pthread_kill() が使えないとのことで Thread 実装で GVL をはずしてブロックする処理をしているスレッドを起こすのに SIGVTALRM シグナルを使う実装を利用しないようにしています。

[dd65aa95f9] Yusuke Endoh 2021-01-23 07:05:33 UTC

bignum.c で LONG2FIX() に渡す引数を明示的に long に cast するようにしています。BDIGIT_DBL の型が long long の場合に警告が出るのでそれを抑制するためとのこと。

[f12c33b611] Yusuke Endoh 2021-01-23 07:07:41 UTC

configure 時に target_os が emscripten の時に -s ALLOW_MEMORY_GROWTH=1 というオプションをリンカに渡すようにしています。また -lm -lc を明示的に渡す必要もあるようです。

[62283f7a7a] Yusuke Endoh 2021-01-23 09:54:50 UTC

coroutine/ に emscripten 向けの実装を追加しています。 emscripten_fiber_init() とか emscripten_fiber_swap() といった関数はライブラリ(っていうのかな、実行環境というか)から提供されてるものでしょうか。

[8dfae85adb] Nobuyoshi Nakada 2021-01-23 10:57:07 UTC

respond_to? メソッドが引数 1つだけで定義されてた時の警告を deprecated カテゴリの警告として扱うように変更しています。てことはデフォルトでは警告されなくなるということですね。 [ruby-dev:50995] [Bug #17575]
[追記]この変更してる部分は警告の本体じゃなくて対象のファイル名と行数を出力する部分のみ deprecated カテゴリじゃなくなってたのでそこを追随させたということだそうです。[/追記]