D言語/DLang2.099.0は先月リリースされました。
この発表は、これがメジャーリリースであることを示しており、アップデートのハイライトは次のとおりです。
- Dコードモジュールは、ImportCを介してCコードにインポートできます。
- スロー式を導入する
- PE / COFF出力は、WindowsでのDMDのデフォルト出力になりました
- ……
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());
}
PS公開する前に、最新バージョンが 2.099.1であることを確認してください。更新は主にバグ修正であり、コンパイラとライブラリに対する2つの重要な変更です。