ruby-trunk-changes 2019-09-10

今日は Addrinfo.getaddrinfo のタイムアウト機能の追加(リトライ)や NODE からの参照するオブジェクトの mark を直接するようにする変更(リトライ)などがありました。

[92a8726994] 卜部昌平 2019-09-07 08:48:02 UTC

53d21087da078cf999cc4757b03b2ff0fab4c2cf で一旦削除した C++ 拡張ライブラリ向けヘッダファイルのテストのための拡張ライブラリを復活させています。

[1364217bcd] 卜部昌平 2019-09-07 09:41:34 UTC

.travis.yml の apt-get でインストールするパッケージに g++-8 を追加して C++ 拡張ライブラリをビルドできるようにしています。

[042c436cd9] 卜部昌平 2019-09-07 09:46:37 UTC

ext/-test-/cxxanyargs/cxxanyargs.cpp の static なメンバー変数に静的な初期化を追加しています。

[150f514e19] 卜部昌平 2019-09-09 02:13:31 UTC

構造体 struct RArray の宣言で shared_root につける const が古い C++コンパイラでは問題があるそうで preprocessor で分岐して問題の環境では消すようにしています。

[89c5d5a64e] 卜部昌平 2019-09-09 04:19:33 UTC

テスト用拡張ライブラリの ext/-test-/cxxanyargs/extconf.rb で C++ コンパイラがない環境ではこの拡張ライブラリのビルドをスキップさせるようにしているようです。たぶん……。

[805b0a4811] Nobuyoshi Nakada 2019-09-08 12:04:46 UTC

標準添付ライブラリ reline の Reline::ANSI.getc で拡張ライブラリ io/console の IO#getch を使うようにリファクタリングしています。

[685f12bbca] Nobuyoshi Nakada 2019-09-08 13:19:10 UTC

805b0a481132938638dbd32830cf5dca3910efb1 の続きで IO#getch のかわりに IO#raw と IO#getbyte を使って raw モードで 1バイト読むように修正しています。

[6d9e54816f] Nobuyoshi Nakada 2019-09-08 13:34:01 UTC

805b0a481132938638dbd32830cf5dca3910efb1 および 685f12bbca50ff9b7a16b3016b3b8b3f2ac8b796 のさらに続きで getbyte で 1バイト読んでみて 0x16 (つまり escape?) だったらもう 1 byte 読んでそっちを返すようにしています。

[9b53a69d57] git 2019-09-09 15:57:34 UTC

version.h の日付更新

[4524780d17] Aaron Patterson 2019-09-09 16:37:06 UTC

092f31e7e23c0ee04df987f0c0f979d036971804 で 581fcde0884e493206b04b3e6b7a069b941dfe46 から f211ab20157a840770567ea182b1372e339cd82a までの NODE から指すオブジェクトを mark 用配列に入れるのをやめて NODE の mark 関数から直接 mark するようにする変更を復活させています。

[d8a4af47a5] Aaron Patterson 2019-09-09 17:15:07 UTC

4524780d1795e750e23896866eb447be2670ddcd の追加修正。 parse.y で add_mark_object() を使って RGenGC 用 Writer Barrier の追加をするようにしていましたが、NEW_NODE() とかで NODE 生成するその引数で直接 add_mark_object() を呼ぶと順序が前後してしまって、Write Barrier 設定後に実際にオブジェクトへの参照を対象の NODE にセットする前に GC 発生するタイミングが生じてしまっていたのを修正しています。はー、ラクをしようとするとはまるという例でしたね。

[00744a03d5] Jeremy Evans 2019-09-09 22:20:54 UTC

Exception についての rdoc 用コメントを整形/追記しています。 [ruby-core:94859] [Misc #16156]

[f4aa06c0ff] Nobuyoshi Nakada 2019-07-24 20:05:39 UTC

拡張ライブラリ io/console の gemspec ファイルの spec.files から lib/io/console.rb を削っています。

[803dc9e1e4] Nobuyoshi Nakada 2019-09-09 14:14:30 UTC

拡張ライブラリ io/console の ttymode() のコールバック関数に渡す引数を第1引数の io 以外にも指定できるように引数を追加し、これを利用して端末から設定情報を読み取る read_vt_response() という関数を追加しています。が、まだ使用してはいない。

[53ed4fb376] Nobuyoshi Nakada 2019-09-09 14:17:38 UTC

803dc9e1e48325515bf7c5ce176cf2b5bc0792a9 で追加した console_vt_response() を利用して Windows 以外の環境でも拡張ライブラリ io/console で IO#cursor で現在のカーソル位置を取得できるようにしています。すごい。

[3d9c7c2835] Nobuyoshi Nakada 2019-09-09 14:48:47 UTC

拡張ライブラリ io/console で Windows 以外の環境でもエスケープシーケンスを利用して IO#goto をサポートするようにしています。すごい。

[e8be056af9] Nobuyoshi Nakada 2019-09-09 14:51:44 UTC

拡張ライブラリ io/console にカーソル位置を上下左右に動かす IO#cursor_up, #cursor_down, #cursor_left, #cursor_right メソッドを追加しています。便利。

[9844a349bf] Nobuyoshi Nakada 2019-09-09 14:53:05 UTC

拡張ライブラリ io/console にカーソルを指定の桁に移動させる IO#goto_column を追加しています。

[c1412bd6d9] Nobuyoshi Nakada 2019-09-09 14:55:45 UTC

拡張ライブラリ io/console に端末の現在の行or次の 1行を消す IO#erase_line と全体を消す IO#erase_screen を追加。また全画面消したうえでカーソル位置を原点にする IO#clear_screen も定義していますが、この実装の関数は e8be056af92b2f13162567c057322a2c16797b79 で定義済みだったみたい。

[74790e2dc4] Nobuyoshi Nakada 2019-09-09 15:01:06 UTC

拡張ライブラリ io/console の端末のスクロールを行う IO#scroll_forward と IO#scroll_backward というメソッドを追加しています。

[3678c37119] Nobuyoshi Nakada 2019-09-09 16:04:47 UTC

拡張ライブラリ io/console に Windows 環境でのみサポートされる IO#check_winsize_changed というメソッドを追加しています。端末のサイズ変更があったのを検出するためのメソッドみたいです。どうやら変更を検出したらブロックを呼び出すみたいなブロックつきのメソッドのようです。

[0e9d56f5e7] Masaki Matsushita 2019-09-10 00:57:31 UTC

c4efbf663ea1849986383ca97bfc8c2609142c68 で一旦 revert した拡張ライブラリ socket の Addrinfo.getaddrinfo の timeout キーワード引数対応を再度入れています。前回との違いをみるとテストで使う service 名に ssh を使うようにしているだけなので、どうやら Solaris での問題というのはテストの問題だけだったようです。

[8d3db4f26c] Jeremy Evans 2019-09-09 23:19:26 UTC

configure で OpenBSDC/C++コンパイラに cc/c++ コマンドをデフォルトとするようにしています。

[20e428ec40] 卜部昌平 2019-09-10 03:22:26 UTC

CentOS 6 の古いコンパイラ(?)だと DEPRECATED_TYPE() が使えなかったようで、C++ 用ヘッダでは configure で直接 __attribute__*1 が使えるかチェックして RUBY_CXX_DEPRECATED というマクロを定義してこれを使うようにしています。

[f5024de002] Masaki Matsushita 2019-09-10 03:39:49 UTC

0e9d56f5e73ed2fd8e7c858fdea7b7d5b905bb64 で復活させた Addrinfo.getaddrinfo のテストですが Solaris 10 ではさらに ai.protocol の値も違ってたそうで assertion を削っています。

[df1721c668] Nobuyoshi Nakada 2019-09-10 05:37:17 UTC

internal.h で _Pragma("GCC diagnostic push") を使うマクロを定義する条件を GCC のバージョンが 4.2.0 以上から 4.6.0 以上に修正しています。

[487d290044] 卜部昌平 2019-09-10 07:03:30 UTC

20e428ec40ee1c83708b3ade6a0007ab2a435f83 の configure.ac の typo 修正。

[ad6cbc1d33] Nobuyoshi Nakada 2019-09-10 08:20:12 UTC

41bc766763dba63ae2529f2f9070b8e26399745c で警告抑制のために追加した LONG_MAX_as_double という定数の定義は必要な時だけするようにしています。

[b5ab918d0c] Nobuyoshi Nakada 2019-09-10 08:22:06 UTC

ext/io/console/console.c の未使用変数の警告除去。

[83ef58f264] Nobuyoshi Nakada 2019-09-10 08:27:07 UTC

803dc9e1e48325515bf7c5ce176cf2b5bc0792a9 で console_vt_response() 定義のために定義した構造体 struct ttymode_callback_args や static 関数 ttymode_callback() の定義は Windows 環境では不要なので preprocessor の分岐内に入れて Windows 環境での警告を抑制しています。

*1:__deprecated__