ruby-trunk-changes r60632 - r60642

今日は ripper も rb_ast_t 型の NODE を使うようにして T_NODE 型オブジェクトをついに削除しています。

nobu: r60632 2017-11-04 10:48:45 +0900

spec/ruby で require のファイルパス補完のために __dir__ を利用していたのを __FILE__ を使うようにしています。 rubyspec は過去のバージョンでも実行するので __dir__ がまだないバージョン向け…かと思ったらコメントによると __dir__ は symbolic link が解決されているからだそうでした。

svn: r60633 2017-11-04 10:48:46 +0900

version.h の日付更新。

mame: r60634 2017-11-04 12:04:54 +0900

NODE_STRTERM と NODE_HEREDOC というヒアドキュメントの parse 時の一時バッファ利用のための NODE を T_IMEMO 型オブジェクトに新たなサブタイプ imemo_strterm というのを追加してこれを利用するようにしています。 NODE をいろいろ便利に使ってるのをやめようとする動きの一環みたいです。

mame: r60635 2017-11-04 13:59:19 +0900

なのですが r60634 の NODE_STRTERM と NODE_HEREDOC の T_IMEMO への移動は revert されています。 mswin と mingw でビルドできなかったからとのこと。

rhe: r60636 2017-11-04 15:56:16 +0900

拡張ライブラリ openssl の OpenSSL::SSL::SSLContext#min_version= のテストが OpenSSL/LibreSSL などのバージョンによって失敗することがあるのを修正しています。 [ruby-core:83479] [Bug #14039]

mame: r60637 2017-11-04 16:21:36 +0900

r60634 の NODE_STRTERM と NODE_HEREDOC の T_IMEMO オブジェクト化の再チャレンジ。内容は全く一緒みたいです。修正は次で行なっている模様。

mame: r60638 2017-11-04 16:21:37 +0900

r60634 (r60637) の NODE_STRTERM と NODE_HEREDOC の T_IMEMO 化で起きてた mswin/mingw での不具合修正みたいです。rb_strterm_literal_t および rb_strterm_heredoc_t で LLP64 環境向けに alignment の調整のために全メンバを VALUE 型との union として定義するようにしています。

mame: r60639 2017-11-04 18:18:08 +0900

r60485 (r60488 + r60489) の ast_t の導入(今は rb_ast_t という名前に変更されています)の時に ripper は T_NODE 型のオブジェクトを利用するままでしたが、ripper も rb_ast_t のほうを利用するようにしているそうです。意外と差分が少ない…のはここまででリファクタリングしたからかもしれないですね。

mame: r60640 2017-11-04 19:02:43 +0900

struct RVALUE から struct RNode を消して、ついに T_NODE 型のオブジェクトを削除しています。 T_NODE 型のオブジェクトが GC の mark や free でみつかったら rb_bug() で異常終了するようにしています。

mame: r60641 2017-11-04 19:56:49 +0900

拡張ライブラリ objspace の ObjectSpace.count_imemo_objects に imemo_strterm タイプの対応を追加しています。

mame: r60642 2017-11-04 19:56:50 +0900

r60634 (r60637) で追加した T_IMEMO 型オブジェクトの imemo_strterm タイプを imemo_parser_strterm に改名しています。