D言語(DLang)2.095.0がリリースされ、Objective-Cのサポートが強化されました

DLang 2.095.0バージョンがリリースされました。このバージョンは、主にObjective-Cのサポートを強化し、Objective-Cプロトコルを宣言する機能を追加し、コンパイラ、ライブラリ、およびツール全体を改善します。61人の貢献者からの合計27の主要な変更と78の修正が含まれています。いくつかのハイライトは次のとおりです。

  • C ++ ヘッダーの 生成

しばらくの間、DMDには、C ++からのDライブラリの呼び出しを容易にするために-CHコマンドラインオプションを介してDソースコードからC ++ヘッダーファイルを生成するための実験的なサポートが含まれていました。たとえば、次のDソースファイルがあるとします。

CPP-例d

extern(C ++):
struct A { 
    int x; 
} 

void printA(ref A a){ 
    import std.stdio:writeln; 
    writeln(a); 
}

そして、次のコマンドライン: 

dmd -HC cpp-ex.d

コンパイラは以下をstdoutに出力します(-HCfはファイル名を指定し、-HCdはディレクトリを指定します)。

//自動デジタル火星Dコンパイラによって生成された

後の#pragma

の#include <assert.h>
の#include <STDDEF.H>
の#include <stdint.h>
の#include <math.h>の

#ifdefのCUSTOM_D_ARRAY_TYPE
の#define _d_dynamicArray CUSTOM_D_ARRAY_TYPE
の#else 
/ // D []配列
テンプレートを
表します<typenameT> struct _d_dynamicArray 
{ 
    size_t length; 
    T * ptr; 

    _d_dynamicArray():length(0)、ptr(NULL){} 

    _d_dynamicArray(size_t length_in、T * ptr_in)
        :length(length_in)、ptr(ptr_in){} 

    T&operator [](const size_t idx){ 
        assert(idx <長さ); 
        ptr [idx]を返します。
    }

    const T&operator [](const size_t idx)const { 
        assert(idx <length); 
        ptr [idx]を返します。
    } 
}; 
#endif 

struct A; 

struct A 
{ 
    int32_t x; 
    A():
        x()
    { 
    } 
}; 

extern void printA(A&a);

このバージョンでは、この機能に多くの修正と改善が加えられています。Cヘッダーの生成は、-H、-Hf、および-Hdでもサポートされていることに注意してください。

  • デフォルトのC ++標準の変更

現在、C ++ 11標準がデフォルトで使用されています。さらに、コンパイラは-extern-std = c ++ 20を受け入れるようになりました。実際には、現時点での唯一の影響は、コンパイル時の値__traits(getTargetInfo、 "cppStd")を変更することですが、将来、新しいタイプが追加される可能性があります。

  • 改善されたObjective-Cサポート

このバージョンは、Objective-Cプロトコルをサポートすることにより、Objective-Cの互換性を強化します。これは、extern(Objective-C)のコンテキストでインターフェイスを再利用することによって実現されます。さらに、@ optional属性と@selector属性はこのタスクを実行するのに役立ちます。

  • コンパイル時のフィードバックの改善

詳細については、変更ログを確認してください:https//dlang.org/changelog/2.095.0.html

ダウンロードリンク:http//downloads.dlang.org/releases/2.x/2.095.0/

おすすめ

転載: www.oschina.net/news/126362/dlang-2-095-0-released