ruby-trunk-changes 2019-04-30

今日は標準添付ライブラリ reline の再導入と irb での利用(readline がなかった時の fallback として) 、UBSAN の検出したエラーの修正などがありました。

[7c0f513e97] Urabe, Shyouhei 2019-04-29 21:52:44 +0900

string.c でチェックするマクロ __STDC_VERSION__ を typo していたのを修正。

[f4c68640d6] Urabe, Shyouhei 2019-04-29 21:52:44 +0900

string.c の search_ascii() で aligned_ptr() を利用していたけど不要なポインタがあったのでただのキャストに変更しています。

[a116f04cca] Urabe, Shyouhei 2019-04-29 21:52:44 +0900

.travis.yaml の UBSAN(Unknown Behavior のチェック用ビルド)時のコンパイルオプションで整数の符号の暗黙の変換と符号なし整数のオーバーフローについてのチェックを抑制するようにしています。

[e7b18ca6d9] Urabe, Shyouhei 2019-04-29 21:52:44 +0900

glibc では memcpy(3) に NULL を渡してはならないことになってるそうなので __GLIBC__ をチェックして必要なら空の配列の変数へのポインタを作ってそれを渡すようにしています。

[34e1079aef] Urabe, Shyouhei 2019-04-29 21:52:44 +0900

mjit.c でも同様に memcpy() に渡す変数を NULL で初期化していたところを空文字列("")で初期化するようにしています。

[f95f07dad3] Urabe, Shyouhei 2019-04-29 21:52:44 +0900

gc.c の gc_profile_clear() でも同様に memcpy(3) に NULL を渡さないように…というかそもそもバッファを残してクリアするんじゃなくてバッファを解放してしまうように変更しています。

[040b37f8b4] Kazuhiro NISHIYAMA 2019-04-29 23:02:18 +0900

tool/vcs.rb の GIT 版の get_revision で commit hash を得る時の --short オプションの引数に明示的に 10 を指定して先頭10文字を得るようにしています。

[7a34d8902a] Kazuhiro NISHIYAMA 2019-04-30 00:28:00 +0900

.gitignore にいろんなサブディレクトリに .time ファイルを無視するルールがあったので、全体的に .time ってファイル名のファイルは無視するようにルールを統合しています。

[b7d9ec8caa] git 2019-04-30 00:28:44 +0900

version.h の日付変更。

[09022b6d70] NAKAMURA Usaku 2019-04-30 03:33:31 +0900

win32/win32.c の rb_w32_getppid() で親プロセスのIDに相当するものを取得するために CreateToolhelp32Snapshot() という API を先に試すようにしています。

[ae3a986204] git 2019-04-30 03:33:51 +0900

09022b6d70ad16737964e58db039aac00a1488ea のインデントのタブを空白に展開。

[320f0aba49] NAKAMURA Usaku 2019-04-30 04:09:07 +0900

09022b6d70ad16737964e58db039aac00a1488ea を revert しています。rubyspec のエラー対策だったみたいですが効果がなかったみたいですね。

[eb45ba6116] NAKAMURA Usaku 2019-04-30 04:09:25 +0900

ということで rubyspec の Process.ppid のテストを windows では除外するようにしています。

[17350c7e55] aycabta 2019-04-30 11:44:20 +0900

標準添付ライブラリ reline を追加して irb の readline がない時の代替のラインエディタ(っていうのかな)として利用するようにしています。前回の導入で問題だった irb からの multireadline 呼び出しはなくなっているので今のところ multi line 編集機能は無効の状態かも。

[319eee0f4a] aycabta 2019-04-30 12:33:24 +0900

17350c7e5534c8678097d70698fe08614a6c3997 の再修正。reline のテストに使う Encoding を決定する場合に default_external が IBM437 の時という分岐を生やしています。 AIX 向けかな?

[3be5907e73] aycabta 2019-04-30 12:53:20 +0900

17350c7e5534c8678097d70698fe08614a6c3997 の再修正。 lib/reline/windows.rb で定義していたクラス Win32API を Reline モジュールの名前空間の下に定義するように移動しています。

[567cb1ae1d] aycabta 2019-04-30 12:53:24 +0900

319eee0f4a13d29a82eeffa348b8a3b5685e2f6e のさらに再修正。 reline のテストに使う Encoding に追加した分岐は消して、default_external ではなく UTF-8 をデフォルトの値として使うようにしています。

[94b740b249] aycabta 2019-04-30 14:40:06 +0900

標準添付ライブラリ irbirb/ruby-lex.rb で拡張ライブラリ ripper を利用するようにして独自の lexer を実装していたのを置き換えています。

[151b7d72bd] NAKAMURA Usaku 2019-04-30 15:02:03 +0900

09022b6d70ad16737964e58db039aac00a1488ea を revert するときに消し忘れてた win32/win32.c の tlhelp32.h というヘッダファイルの #include を削除しています。

[c222f4d31f] Kazuhiro NISHIYAMA 2019-04-30 16:20:46 +0900

tool/vcs.rb で ChangeLog の始点を探す branch_beginning はみつからなかった時に nil ではなく "" を返すのでエラーチェックの条件を修正しています。

[5a83a1d554] NAKAMURA Usaku 2019-04-30 18:01:17 +0900

tool/merger.rb でリダイレクト先として /dev/null が決め打ちで書かれてたので IO::NULL を利用するようにしています。あーそうでした。

[830e40ee05] NAKAMURA Usaku 2019-04-30 19:45:44 +0900

readline のテストで Readline が Reline で代用されていた時に Windows でテスト全体を skip するようにしています。