Compilador de llenguatge D versió 2.100

Els desenvolupadors del llenguatge de programació D van presentar el llançament del compilador de referència principal DMD 2.100.0, que admet sistemes GNU/Linux, Windows, macOS i FreeBSD. El codi del compilador es distribueix sota la BSL (Boost Software License) gratuïta.

D s'escriu de forma estàtica, té una sintaxi semblant a C/C++ i proporciona el rendiment dels llenguatges compilats, alhora que pren en préstec alguns dels avantatges d'eficiència i seguretat del desenvolupament dels llenguatges dinàmics. Per exemple, proporciona suport per a matrius associatives, inferència de tipus, gestió automàtica de memòria, programació paral·lela, un col·lector d'escombraries opcional, un sistema de plantilles, components de metaprogramació, la capacitat d'utilitzar biblioteques C i algunes biblioteques C++ i Objective-C.

Entre els canvis a la nova versió:

  • L'antic estil de sobrecàrrega de l'operador utilitzat a la branca D1 s'ha interromput. Substitueix opNeg, opAdd_r, opAddAssign, etc. van venir opUnary, opBinary, opBinaryRight i opOpAssign. L'antic estil de sobrecàrrega d'operadors va quedar obsolet el 2019 i generarà un error a partir de la versió 2.100.
  • La paraula clau suprimir ha estat obsoleta des del 2018. En lloc de suprimir, hauríeu d'utilitzar la funció destruir o core.memory.__delete.
  • S'ha implementat un nou atribut @mustuse que es pot aplicar als tipus d'estructura i unió com a mètode alternatiu de gestió d'errors quan el codi no pot gestionar excepcions (per exemple, en blocs @nogc). Si no s'utilitza una expressió marcada amb l'atribut @mustuse al codi, el compilador generarà un error.
  • Per a matrius estàtiques, es permet l'ús de la propietat ".tupleof" per obtenir la seqüència de valors (lvalue) de cada element de la matriu. void foo(int, int, int) { /* … */ } int[3] ia = [1, 2, 3]; foo(ia.tupleof); // foo analògic (1, 2, 3); flotar[3] fa; fa.tupleof = ia.tupleof; // assignació simple fa = ia dóna lloc a un error assert(fa == [1F, 2F, 3F]);

Font: opennet.ru

Afegeix comentari