言語設計
明示的な低レベル制御、静的型付け、ネイティブ相互運用性、明確な機能境界という Wave の原則を説明します。
Wave Foundation
設計方針
Wave は、システムレベルの制御をソースコード上で見える状態に保つことを目指します。この方針は、次の具体的な機能に表れています。
- ローカル変数宣言を含め、関数とデータの境界で型を明示します。
ptr<T>、&、derefによってアドレスとメモリアクセスを明示します。- C ABI の境界は
extern(c)とexport(c)で宣言します。 wavecはターゲット、CPU 機能、リンカー、フリースタンディングビルドの制御を公開します。- 関数、構造体、列挙型、ジェネリクス、
protoが高水準のプログラム構造を提供します。
言語と標準ライブラリ
言語構文と標準ライブラリは別の層です。たとえば、print、println、input は言語の文ですが、文字列検索、ファイルシステム、ネットワーク、メモリ補助機能は標準ライブラリのモジュールです。
この区別を明確にすると、ある機能が言語文法、ライブラリ API、ツールチェーンのどこに属するか判断しやすくなります。
ローカル変数
var fixed: i32 = 10;
var state: i32 = 0;
var counter: i32 = 0;
var はローカル変数を宣言する構文です。
明示的な契約
Wave の文書では、各言語機能を構文と観測可能な動作によって説明します。低レベル操作については、プログラムが守る必要のあるメモリ、ABI、ターゲット、所有権の規則も示します。これにより、コンパイラ内部の知識に依存せずにソースコードを理解できます。