Linguagem D (DLang) 2.095.0 lançada, suporte aprimorado para Objective-C

DLang 2.095.0 versão foi liberado . Esta versão aumenta, principalmente, o suporte para Objective-C, adiciona a capacidade de declarar o protocolo Objective-C, e melhora o compilador inteiro, biblioteca e ferramentas. Um total de 27 alterações principais e 78 correções de 61 contribuidores estão incluídos. Alguns destaques são os seguintes:

  • Geração de cabeçalho  C ++ 

Por algum tempo, o DMD incluiu suporte experimental para gerar arquivos de cabeçalho C ++ a partir do código-fonte D por meio da opção de linha de comando -CH para facilitar a chamada da biblioteca D a partir de C ++. Por exemplo, dado o seguinte arquivo de origem D.

CPP-ex.d

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

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

E a seguinte linha de comando: 

dmd -HC cpp-ex.d

O compilador envia o seguinte para stdout (-HCf especifica um nome de arquivo, -HCd especifica um diretório).

// gerado automaticamente por Marte Digital D Compiler 

#pragma once 

#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 
/ // Representa um 
modelo de array D [] <nome do tipo T> 
struct _d_dynamicArray 
{ 
    size_t length; 
    T * ptr; 

    _d_dynamicArray (): comprimento (0), ptr (NULL) {} 

    _d_dynamicArray (tamanho_t comprimento_in, T * ptr_in) 
        : comprimento (comprimento_in), ptr (ptr_in) {} 

    T & operador [] (const size_t idx) { 
        assert (idx < comprimento); 
        return ptr [idx]; 
    }

    const T & operador [] (const size_t idx) const { 
        assert (idx <length); 
        return ptr [idx]; 
    } 
}; 
#endif 

struct A; 

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

extern void printA (A & a);

Muitas correções e melhorias foram feitas para este recurso nesta versão. Deve-se observar que a geração de cabeçalhos C também é suportada por meio de -H, -Hf e -Hd.

  • Mudanças no padrão C ++ padrão

O padrão C ++ 11 agora é usado por padrão. Além disso, o compilador agora aceitará -extern-std = c ++ 20. Na prática, o único efeito atualmente é alterar o valor do tempo de compilação, __traits (getTargetInfo, "cppStd"), mas novos tipos podem ser adicionados no futuro.

  • Suporte aprimorado para Objective-C

Esta versão aumenta a compatibilidade do Objective-C, suportando o protocolo Objective-C. Isso é conseguido reutilizando a interface no contexto de extern (Objective-C). Além disso, os atributos @optional e @selector ajudam a realizar essa tarefa.

  • Feedback de tempo de compilação aprimorado

Para obter mais detalhes, verifique o log de alterações: https://dlang.org/changelog/2.095.0.html

Link para download: http://downloads.dlang.org/releases/2.x/2.095.0/

Acho que você gosta

Origin www.oschina.net/news/126362/dlang-2-095-0-released
Recomendado
Clasificación