v0.31 Release Note

Last updated:
Created: 2009-06-18








by Fumisky Wells
  1. ユーザ定義メンバ関数、コンストラクタ、デストラクタ、が書けるようになりました!
  2. これに伴い、予約語 init, term, this を追加しました。
  3. これに伴い、VM に this レジスタを追加しました。
  4. これに伴い、アドレッシングモードに THIS を追加しました。 メンバデータを VM が直接扱うようにします。
    アドレッシングモードを表現するのに 2bit いっぱい使っていたため、 THISの追加に伴い GLOBAL を廃止、ABSOLUTE に統合しました。 ただし、コード生成までは必要なので、残しています。実行時にのみ GLOBAL が無くなった、ということです。

仕様変更

map が使えません。map[str] とします。

その他

  1. パッケージ名印字 Type_pkg::name() の修正。
  2. Obj::find() の戻り値を NULL から &g_null_obj に変更。
  3. jjAggregate::concat() を追加(でも使ってない ^^;)。
  4. クラス定義時の自動的な前方参照を可能にするため、すべてのシンボルの記号表への登録を Gather_symbol で行うことにしました。
  5. クラス定義の意味解析時、スコープとしてはカレントでありつつも、同時にメンバのクラス型への登録である、という状況に適切に対応するようにしました(-> point_p)。
  6. 引数の型は仕様としては readonly + 参照、ですが、意味解析中の データ型としての実装は単なる型としました。 引数の型整合性チェックが、ユーザクラス定義のメンバと隠れメンバ関数との比較 において簡単になるためです。
  7. map[T].keys(), list[T].revserse(), list[T].sort(), list[str]:str.split(), list[str].substr.split() にて、戻り値の型が総称性の場合のパラメータの渡し方が間違っていたのを直しました。
  8. &g_type_this 型名を this -> this.type に変更。
  9. abort() の代わりに assert(false) としました。Googleコーディングスタイルガイドが参考になりました。