データ構造が定義してあるソースコード

Ruby のデータ構造の定義は、いろいろなところに偏在している。

主には次の三カ所。

  • include/ruby/ruby.h (インストールされる)
  • internal.h(インストールされない)
  • vm_core.h(インストールされない)

(なお、他にも本当はいろいろある)

歴史的には、ruby.h がトップレベルにあり、すべて *.h はインストールされていたが、ディレクトリ整理にともなって include/ruby/ruby.h と internal.h に分割された。C-extension が使って良いデータ構造、逆に言えば公開 API であるのを include/ruby/ruby.h に残し、それ以外が internal.h に移動された。

が、include/ruby/ruby.h のデータ構造も時々変るので、C-extension は struct の中身を弄るのは極力やめた方が良い。データ構造に対する操作は、マクロを用いるのが良い。