AliceModel

この記事では、標準AliceScript実装モデルについて説明します


taiseiue | 2021-12-25

AliceModelまたは標準AliceScript実装モデル(SAIM :Standard AliceScript Implementation Model )は、複数のAliceModel実装間で使用されるAliceScriptのインタプリタとそれに付属するAPIの正式な仕様です。

AliceModelは、AliceScriptのインタプリタの各実装による差異を最小限にとどめるために策定されました。これにより、AliceModelを実装するどのインタプリタでも、同じコードやパッケージを実行することが可能になります。

AliceModelはAliceScriptの言語構造とそれに対するインタプリタの実装を定めたAlice.Interpreterと付属するAPIから呼び出すことができる機能を定めたAlice.Runtimeからなります。

AliceModelのバージョン

AliceModelはバージョン管理されています。AliceModelのバージョンは直線的かつ基本的に論理的同心円形です。 バージョンナンバリングの大小のみで新旧を比較でき、より新しいバージョンは普通それ以前のバージョンの機能を含みえます。

その一方で、一部には新しいバージョンとそれ以前のバージョンの間で変更されたものもあります。それらの変更点は、破壊的変更と呼ばれ、一覧を破壊的変更の一覧にまとめています。また、一度策定された同一バージョンのAliceModelの間でその内容に差異が生じることはありえません。

モデルと仕様

AliceModelは、AliceScriptのインタプリタとAPIを定めただけにすぎず、そのインタプリタやAPIの詳細な仕様や実装方法について定めるものではありません。

それらの仕様はAliceModelを実装する各実装(AliceScriptやAliceSisterなど)によって管理されています。 それぞれの実装は仕様通りに記述されたAliceScriptのコードを逐次的に読み取り、それに応じた動作を提供します。この点で、AliceModelはAliceScript言語の仕様といえます。

Alice.Runtime

AliceModelの各実装は、開発者にとってわかりやすい方法で、AliceModelに実装されるAPIを公開します。このとき、ある実装ではある機能が重視されていて、他のAliceModelの実装ではその機能が重視されていない状況もあります。AliceModelの実装は、その実装間で互換性のない機能を含むことができます。

それらをまとめてAlice.Runtime.Extとよぶことにします。ただし、これらの実装間の差異はできる限り埋められるべきで、それがあったとしてもその実装のその機能の部分をAliceModel準拠と称することはできません。これは、同一バージョンのAliceModel実装間で同一のコードを実行できるようにするというAliceModelの策定意図を体現するためです。