Memory Safe D 仕様
プログラムの メモリ安全性 (Memory Safety) の定義は、 そのプログラムがメモリを破壊することが不可能であることです。 したがって、 Safe D のプログラミング言語としての機能は、 メモリ破壊を決して引き起こさないと保証されたものだけから成り立っています。
Safe D は、モジュール単位で、 コンパイラの -safe スイッチによって有効にすることができます。
システムモジュール
静的にメモリ安全性がチェックできないようなタスクは多く存在します。 システムモジュール に対しては、 オプションの如何に関わらず、 安全性のチェックは行われません。 システムモジュールの安全性は手で入念に検査されなければなりません。 安全性は、宣言や文単位ではなく、モジュール単位で成業されます。 これは、安全でないコードと安全なコードを明確に分離し、 モジュール化を進めることを目的としています。 安全でないコードをシステムモジュールに限定することで、 メモリ破壊エラーが実際に発生してしまった場合でも、 プログラマは、プログラム全体ではなく特定のモジュールのみを確認すれば済むことになります。
禁止される項目
- インラインアセンブラ
- const や immutable 属性をキャストで取り除くこと
- shared 属性をキャストで取り除くこと
- ポインタ型から別のポインタ型へのキャスト。
ただし以下を除く:
- void* へのキャストは許可
- 数値型へのポインタから、 同じまたは小さいサイズの別の数値型ポインタへのキャスト
- 非ポインタ型からポインタ型へのキャスト
Safe なモジュールから、システムモジュールを import してその public なインターフェイスを使用することは可能です。
制限
Safe D は、コードに可搬性があることも、 健全なプログラミング習慣に従っていることも、バイト順に影響されないことも、 その他のバグを引き起こさないことも、保証しません。 メモリ破壊の可能性のみに焦点を当てた仕様となっています。

フォーラム
コメント
English
ダウンロード
トップ