D言語/DLang2.099.0がリリースされました

D言語/DLang2.099.0は先月リリースされました。

この発表は、これがメジャーリリースであることを示しており、アップデートのハイライトは次のとおりです。

  • Dコードモジュールは、ImportCを介してCコードにインポートできます。
  • スロー式を導入する
  • PE / COFF出力は、WindowsでのDMDのデフォルト出力になりました
  • ……

詳細については、変更ログを参照してください

ImportCを使用してCソースにDコードモジュールをインポートします

D 2.099.0以降、__importDコードモジュールはキーワードを介して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つの重要な変更です。

おすすめ

転載: www.oschina.net/news/190336/dlang-2-099-0-released