ruby-trunk-changes 2019-12-27

今日は主にインタプリタ内で prototype 宣言を取り込むための interna.l.h をソースファイル毎のヘッダファイルに分けるため internal/*.h に分割するリファクタリングや reline で UTF-8 に変換不可能な文字を無視するようにする変更などがありました。

[ba78bf9778] 卜部昌平 2019-12-25 05:19:48 UTC

debug_counter.h に必要なヘッダの #include を追加しています。

[b739a63eb4] 卜部昌平 2019-11-29 06:18:34 UTC

internal.h を internal/*.h というヘッダファイル群に分割しています。

[1dd149d3b1] 卜部昌平 2019-12-04 01:55:55 UTC

include/ruby/encoding.h および include/ruby/io.h は internal.h より前に #include されてないといけないので既に RUBY_INTERNAL_H が定義されてたらエラーにする pragma が追加されてましたが、internal.h の先頭でこれらを #include することでこれを不要にしています。これ include しちゃうのはいいのかな。

[863dbb21d8] 卜部昌平 2019-12-02 05:48:42 UTC

C99 を前提としているため不要になった preprocessor の分岐の削除や明示的なエラーにする pragma の追加など。

[0958e19ffb] 卜部昌平 2019-12-02 05:58:43 UTC

コンパイラ毎の attribute の機能の有無を判定する __has_attribute_xxx みたいなマクロを定義しています。

[64ec438b5b] 卜部昌平 2019-12-02 06:50:11 UTC

internal/bits.h のビット演算のリファクタリング。また internal/compiler.h に __has_builtin__xxxx のようなコンパイラの builtin function の有無を判定するためのマクロを追加しています。

[6581db2187] 卜部昌平 2019-12-02 08:02:24 UTC

internal/warnings.h のマクロ定義のコンパイルエラー修正など。

[68c0dc8d36] 卜部昌平 2019-12-02 08:06:40 UTC

internal/static_assert.h の STATIC_ASSERT() の定義で可能なら static_assert() マクロを利用するようにしています。

[f6dc053faf] 卜部昌平 2019-12-03 01:48:45 UTC

FIXNUM_XXX マクロを internal/numeric.h から internal/fixnum.h に移動、internal/compilers.h に GCC 版の時の __has_builtin____builtin_add_overflow の定義を追加など。

[099778a6da] 卜部昌平 2019-12-03 02:30:11 UTC

internal/bignum.h の #include 追加、BIGNUM_SIGN()、BIGNUM_POSITIVE_P() などの関数マクロを inline 関数化など。

[f0c02a0949] 卜部昌平 2019-12-03 03:00:49 UTC

internal/numeric.h の #include の追加、MJIT 向け export の追加など。

[e72b8592d9] 卜部昌平 2019-12-03 03:37:15 UTC

internal/hash.h の RHASH_XXX() なマクロ群を inline 関数に書き換え。

[7d71d916a2] 卜部昌平 2019-12-03 04:18:53 UTC

internal/struct.h でも RSTRUCT_XXX() なマクロを inline 関数に書き換え。

[63c9f620cf] 卜部昌平 2019-12-03 04:49:14 UTC

internal/class.h の #include 追加など。

[989068cf70] 卜部昌平 2019-12-03 05:42:53 UTC

internal/imemo.h のマクロの inline 関数化など。

[f3a229fe2d] 卜部昌平 2019-12-03 06:11:09 UTC

internal/variable.h の #include 追加。マクロの inline 関数化など。

[0723db6c39] 卜部昌平 2019-12-03 06:32:02 UTC

internal/array.h の #include 追加、マクロの inline 関数化など。

[23c2a27bf6] 卜部昌平 2019-12-03 07:12:39 UTC

internal/compile.h で rb_iseq_event_flags() の MJIT_SYMBOL_EXPORT_{BEGIN,END} での MJIT 向け export。ヘッダ #include 追加など。

[ec6f6b53d8] 卜部昌平 2019-12-03 08:06:37 UTC

internal/error.h に #include 追加、マクロの inline 関数化、internal/file.h から一部の宣言を移動など。

[adc49f0f9a] 卜部昌平 2019-12-03 08:20:07 UTC

internal/sanitizers.h の #include 追加や valgrind 対応のマクロ? 追加。

[c27bcd7057] 卜部昌平 2019-12-04 01:26:41 UTC

internal/gc.h の #include 追加、internal/compilers.h から RB_OBJ_WRITE() の定義など一部の移動、MJIT 向け export の追加など。

[d0e0c884bb] 卜部昌平 2019-12-04 02:43:51 UTC

internal/object.h の一部マクロの inline 関数化や不要になった構造体宣言の削除など。

[c524df0780] 卜部昌平 2019-12-04 03:10:06 UTC

internal/proc.h の #include 追加、MJIT 向け export 追加、internal/string.h から rb_sym_to_proc() の宣言を移動など。

[719efe72b0] 卜部昌平 2019-12-04 03:30:06 UTC

internal/process.h の #include 追加、マクロの inline 関数への変更など。

[797c46917e] 卜部昌平 2019-12-04 04:06:15 UTC

internal/range.h のマクロの inline 関数化。

[1a80d7bcda] 卜部昌平 2019-12-04 05:01:56 UTC

internal/string.h の #include 追加、マクロの inline 関数化、またここで利用するため internal/compilers.h に __has_builtin____builtin_constant_p の定義を追加。

[ce2c97d738] 卜部昌平 2019-12-04 05:15:46 UTC

internal/symbol.h に #include 追加、internal/parse.h から一部宣言の移動など。

[e0b1be0162] 卜部昌平 2019-12-04 06:40:18 UTC

internal/thread.h の #include 追加と MJIT 向け export の追加。

[3ae09b30f8] 卜部昌平 2019-12-04 07:42:30 UTC

internal/vm.h の宣言の順番の入れ替えや MJIT 向け export の追加。

[bf53d6c7d1] 卜部昌平 2019-12-03 05:47:38 UTC

その他の internal/*.h の #include 追加やコメント追加など。

[33e9601938] 卜部昌平 2019-12-03 02:02:10 UTC

bf53d6c7d19f877c821901b3288d7f80955ffbb7 で TIMET_MAX_PLUS_ONE というマクロを削除して利用していたところに展開してましたが、int から double への promotion で警告が出るのを抑制するため対象の警告を局所的に無効化するか、TIMESPEC_SEC_MAX_as_doube という static 変数を導入してこれを経由して参照するようにしています。

[5e22f873ed] 卜部昌平 2019-12-04 08:16:30 UTC

ソースコードで internal.h を #include してたのを internal/*.h の必要なものを #include するように分解しています。これは大仕事。

[8184adabe5] 卜部昌平 2019-12-25 04:40:10 UTC

missing/stdbool.h を削除して internal/stdbool.h に統合しています。

[0c2d731ef2] 卜部昌平 2019-12-20 01:44:37 UTC

internal.h の分割に関連して依存関係の再生成をしています。

[7bf44e9222] Yusuke Endoh 2019-12-26 12:20:50 UTC

hash.c に HASH_DEBUG 定義時に #include "internal/debug.h" を追加しています。

[baf37a5f9c] Nobuyoshi Nakada 2019-12-26 15:46:50 UTC

vm_dump.c で LIST_HEAD というマクロが sys/queue.h と ccan/list/list.h で衝突するのでシステムヘッダの #include の後で #undef するようにしています。

[30dbd9e4c7] git 2019-12-26 15:47:21 UTC

version.h の日付更新

[018769e291] Kazuhiro NISHIYAMA 2019-12-27 00:20:58 UTC

internal/gc.h の SIZED_REALLOC_N() マクロの定義の typo 修正。 n と m がひっくりかえってた。 メモリアライメントに厳しい Solaris (というか sparc?) でエラーになっていたそうです。

[8c5430e274] 卜部昌平 2019-12-27 01:17:06 UTC

internal/bits.h の swap16, swap32, swap64 などのマクロを inline 関数化したら OpenBSD の関数? と衝突したそうなので関数名に ruby_ の prefix を追加して、マクロで prefix 追加した関数の呼び出しに置換するようにしています。

[729b7ce270] Kazuhiro NISHIYAMA 2019-12-27 04:06:31 UTC

tool/lib/leakchecker.rb にテストで Warning.[] のカテゴリ毎の設定の変更が戻されてないのを検出するようにしています。

[778634f778] aycabta 2019-12-27 07:02:07 UTC

標準添付ライブラリ reline の Reline::LineEditor でキー入力を UTF-8 として Encode してみて変換できない文字は無視するようにしています。変換したものを使うわけではないので結果の Encoding は変えないけど、UTF-8 に変換できないような文字は捨てるってことですね。

[4db898284d] aycabta 2019-12-27 07:07:30 UTC

8a705245e55575d4d310a2e956b89a36a5931971 の reline の補完処理の修正に対応するテストを追加。

[bf77fc23e7] Nobuyoshi Nakada 2019-12-27 08:51:24 UTC

Object#=~ の rdoc 用コメントの deprecated にされてる理由を記述してるところを英文を修正。 [ruby-core:96342] [Bug #16437]