D Language/DLang 2.099.0 foi lançado no mês passado.
O anúncio mostra que este é um lançamento importante, e os destaques da atualização incluem:
- Módulos de código D podem ser importados para código C via ImportC
- Introduzir expressões de arremesso
- A saída PE/COFF agora é a saída padrão do DMD no Windows
- ……
Consulte o Registro de alterações para obter detalhes .
Importar módulos de código D na fonte C usando ImportC
A partir do D 2.099.0, __import
os módulos de código D podem ser importados diretamente para arquivos C por meio de palavras-chave.
// 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;
}
Compile com o seguinte código:
dmd dhelloimport.c dsayhello.d
Também é possível importar módulos de código C que foram compilados com ImportC:
// 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;
}
Compile com o seguinte código:
dmd chelloimport.c csayhello.c
Introduzir expressões de arremesso
No ciclo de vida da linguagem D, throw
é um comando (instrução) e não pode ser usado em uma expressão, pois a expressão deve ter um tipo, e como throw
não retorna um valor, não existe um tipo adequado, o que a torna impossível usar a seguinte sintaxe.
(string err) => throw new Exception(err);
Apenas os seguintes esquemas podem ser usados:
(string err) { throw new Exception(err); }
No entanto, a partir de D 2.099.0, o seguinte trecho de código compila:
void foo(int function() f) {}
void main() {
foo(() => throw new Exception());
}
Consulte o Registro de alterações para obter detalhes .
PS Veja que a versão mais recente é 2.099.1 antes de publicar . As atualizações são principalmente correções de bugs, bem como duas mudanças importantes no compilador e nas bibliotecas.