Compilador de lenguaje D versión 2.100

Los desarrolladores del lenguaje de programación D presentaron el lanzamiento del compilador de referencia principal DMD 2.100.0, que soporta los sistemas GNU/Linux, Windows, macOS y FreeBSD. El código del compilador se distribuye bajo la BSL (Licencia de software Boost) gratuita.

D tiene un tipo estático, tiene una sintaxis similar a C/C++ y proporciona el rendimiento de los lenguajes compilados, al tiempo que toma prestados algunos de los beneficios de eficiencia y seguridad del desarrollo de los lenguajes dinámicos. Por ejemplo, proporciona soporte para matrices asociativas, inferencia de tipos, administración automática de memoria, programación paralela, un recolector de basura opcional, un sistema de plantillas, componentes de metaprogramación, la capacidad de usar bibliotecas C y algunas bibliotecas C++ y Objective-C.

Entre los cambios en la nueva versión:

  • Se ha descontinuado el antiguo estilo de sobrecarga de operadores utilizado en la sucursal D1. Reemplaza opNeg, opAdd_r, opAddAssign, etc. vinieron opUnary, opBinary, opBinaryRight y opOpAssign. El antiguo estilo de sobrecarga de operadores quedó obsoleto en 2019 y arrojará un error a partir de la versión 2.100.
  • La palabra clave eliminar ha quedado obsoleta desde 2018. En lugar de eliminar, debe utilizar la función destruir o core.memory.__delete.
  • Se ha implementado un nuevo atributo @mustuse que se puede aplicar a tipos de estructura y unión como método alternativo de manejo de errores cuando el código no puede manejar excepciones (por ejemplo, en bloques @nogc). Si una expresión marcada con el atributo @mustuse no se utiliza en el código, el compilador generará un error.
  • Para arreglos estáticos se permite el uso de la propiedad ".tupleof" para obtener la secuencia de valores (lvalue) de cada elemento del arreglo. void foo(int, int, int) { /* … */ } int[3] ia = [1, 2, 3]; foo(ia.tupleof); // analógico foo(1, 2, 3); flotador[3]fa; fa.tupleof = ia.tupleof; // la asignación simple fa = ia da como resultado un error afirmar(fa == [1F, 2F, 3F]);

Fuente: opennet.ru

Añadir un comentario