v0.22 Release Note

Last updated:
Created: 2007-08-08








by Fumisky Wells
v0.19 以来仕様に変わりは無く、内部構造の作り替え version です。 C++ の仮想関数を普通の C 関数に置換える作業を延々とやってました。 将来的にユーザ定義クラスを導入するためには必要な作業かと。 でも、完全に置換えられなかったんですね。まあ、とりあえずこの段階で 区切りをつけることとします。

Refactoring

  1. C++ 仮想関数を可能な限り普通の C関数に追い出しました。 具体的には Type クラスの下記です: ユーザ定義クラスの実装に向けての布石です。
  2. 上と引き替えに、自前の仮想関数テーブル A_vptr を導入しています。
  3. Type を S_entry の派生クラスとしました。 つまり、型 is-a 名前空間、ということです。
  4. Typecache を汎用型毎でなく全体で一つとしました。
  5. Type_iter, Type_iter_generic は不要となりました。
  6. Alan の型システムを以下の3グループにまとめました:
    1. 通常型(intなど)
    2. 汎用型(list[str] など)
    3. オブジェクト指向型(未実装)
    それぞれが不自由無く使えるかどうか、は今後の課題です。
  7. vm の opコード として以下を廃止しました。 C++仮想関数を普通の関数呼出しに置換えたためです:
  8. 定数 atom は一カ所で初期化して使用するようにしました。 例: atom("init") → a_init。 高速化が期待できる?。
  9. 構文木中の演算子を表現するのに従来は token 値を使っていましたが、 atom 値を使うように変更しました。