D-taalcompiler release 2.100

De ontwikkelaars van de D-programmeertaal presenteerden de release van de belangrijkste referentiecompiler DMD 2.100.0, die GNU/Linux-, Windows-, macOS- en FreeBSD-systemen ondersteunt. De compilercode wordt gedistribueerd onder de gratis BSL (Boost Software License).

D is statisch getypeerd, heeft een syntaxis die lijkt op C/C++ en levert de prestaties van gecompileerde talen, terwijl hij een deel van de ontwikkelingsefficiëntie en beveiligingsvoordelen van dynamische talen ontleent. Het biedt bijvoorbeeld ondersteuning voor associatieve arrays, type-inferentie, automatisch geheugenbeheer, parallelle programmering, een optionele garbage collector, een sjabloonsysteem, metaprogrammeercomponenten, de mogelijkheid om C-bibliotheken te gebruiken, en enkele C++- en Objective-C-bibliotheken.

Onder de veranderingen in de nieuwe release:

  • De oude stijl van overbelasting van de operator die in de D1-tak werd gebruikt, is stopgezet. Vervangt opNeg, opAdd_r, opAddAssign, enz. kwamen opUnary, opBinary, opBinaryRight en opOpAssign. De oude stijl van overbelasting door operators is in 2019 verouderd en zal vanaf release 2.100 een foutmelding geven.
  • Het sleutelwoord verwijderen is sinds 2018 verouderd. In plaats van verwijderen moet u de functie destroy of core.memory.__delete gebruiken.
  • Er is een nieuw @mustuse-attribuut geïmplementeerd dat kan worden toegepast op struct- en union-typen als een alternatieve methode voor foutafhandeling wanneer de code geen uitzonderingen kan verwerken (bijvoorbeeld in @nogc-blokken). Als een expressie gemarkeerd met het attribuut @mustuse niet in de code wordt gebruikt, genereert de compiler een fout.
  • Voor statische arrays is het gebruik van de eigenschap ".tupleof" toegestaan ​​om de reeks waarden (lvalue) van elk element van de array te verkrijgen. void foo(int, int, int) { /* … */ } int[3] ia = [1, 2, 3]; foo(ia.tupleof); // analoge foo(1, 2, 3); zweven[3] fa; fa.tupleof = ia.tupleof; // eenvoudige toewijzing fa = ia resulteert in een foutmelding (fa == [1F, 2F, 3F]);

Bron: opennet.ru

Voeg een reactie