Anteは、Rustに似た所有権セマンティクスを備えて設計された低レベルの関数型プログラミング言語です。しかし、Anteは複数の参照が同時に同じデータにアクセスおよび変更できる「共有可変性」を許可することで、より寛容な設計を目指しています。この設計選択は、ダングリングポインタのようなメモリ安全性の問題を防ぎつつ、オブザーバーパターンのような一般的なパターンを簡素化し、C#などの言語との相互運用をより容易にすることを目的としています。
Anteプログラミング言語は、独自の所有権セマンティクスを持つ低レベルの関数型言語です。
このアプローチの核心となるメカニズムは「形状の安定性(shape stability)」です。開発者は、多くの変異はデータの基礎となる構造(または形状)を変更しないため、本質的に安全であると主張しています。例えば、タプル内の文字列を更新しても、メモリ上のレイアウトが一定であるため、そのタプルに対する他の参照が無効になることはありません。対照的に、ベクトルの変異は再割り当てを引き起こす可能性があり、その要素に対する既存の参照をダングリング状態にする可能性があります。安定した形状(変異によって参照の有効性が維持されるもの)と、不安定な場所(コレクション型から返されるものなど)を区別することで、Anteは従来の借用チェッカーが拒否する特定の形式のエイリアス変異を許可できます。
これを静的に実装するために、Anteは標準的なライフタイムの代わりに「場所(places)」を使用します。場所は、抽象的なコード領域ではなく、参照が借用する特定の事物のセットを表します。不安定な場所は特別なインジケーター(`!`)でマークされ、その特定の場所に対するいかなる変異も、それを参照するすべての変数を無効にします。これにより、手動の回避策やベクトルへの強制的なインデックスを必要とせずに、複雑なデータフローや循環的な可変性を実現できますが、同時に異なるトレードオフも生じます。批判的な意見としては、形状の安定性を通じて参照エラーを防ぐことに主に焦点を当てることで、マルチスレッド環境における一般的なデータレースの回避など、より高レベルの不変性を手動で強制する責任の一部がプログラマに移る可能性があると指摘されています。