D言語/DLang2.100.0が正式にリリースされました。このリリースには、 22の主要な変更と179の修正されたBugzillaの問題が含まれています。
主な変更点
- C++ヘッダー生成を改善する
@mustuse
リターンタイプのエラーチェックを強制する新しいプロパティ- コントラクト不変バージョン識別子のサポート
- 静的配列に.tupleof プロパティを追加 します
- Zlibが1.2.12に更新されました
- std.functional は新しい関数 bindを導入します
- 非推移的なインアウトリターンの導入、およびその他の改善
ImportCを使用してCソースにDコードモジュールをインポートします
D 2.099.0以降、__import
Dコードモジュールはキーワードを介してCファイルに直接インポートできます。
// dsayhello.d
import core.stdc.stdio : puts;
extern(C) void helloImport() {
puts("Hello __import!");
}
// dhelloimport.c
__import dsayhello;
__import core.stdc.stdio : puts;
int main(int argc, char** argv) {
helloImport();
puts("Cool, eh?");
return 0;
}
次のコードでコンパイルします。
dmd dhelloimport.c dsayhello.d
ImportCでコンパイルされたCコードモジュールをインポートすることも可能です。
// csayhello.c
__import core.stdc.stdio : puts;
void helloImport() {
puts("Hello _import!");
}
// chelloimport.c
__import csayhello;
__import core.stdc.stdio : puts;
int main(int argc, char** argv) {
helloImport();
puts("Cool, eh?");
return 0;
}
次のコードでコンパイルします。
dmd chelloimport.c csayhello.c
スロー式を導入する
D言語のライフサイクルでは、ステートメント(ステートメント)であり、式には型が必要であり、値を返さないため、適切な型がないthrow
ため、式で使用できません。次の構文を使用することはできません。 throw
(string err) => throw new Exception(err);
次のスキームのみを使用できます。
(string err) { throw new Exception(err); }
ただし、D 2.099.0以降、次のコードスニペットがコンパイルされます。
void foo(int function() f) {}
void main() {
foo(() => throw new Exception());
}