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/