Compilatorul limbaj D versiunea 2.100

Dezvoltatorii limbajului de programare D au prezentat lansarea compilatorului de referință principal DMD 2.100.0, care acceptă sistemele GNU/Linux, Windows, macOS și FreeBSD. Codul compilatorului este distribuit sub licența gratuită BSL (Boost Software License).

D este tipat static, are o sintaxă similară cu C/C++ și oferă performanța limbajelor compilate, împrumutând în același timp unele dintre eficiența dezvoltării și beneficiile de securitate ale limbajelor dinamice. De exemplu, oferă suport pentru matrice asociative, inferență de tip, management automat al memoriei, programare paralelă, un colector de gunoi opțional, un sistem de șabloane, componente de metaprogramare, capacitatea de a utiliza biblioteci C și unele biblioteci C++ și Objective-C.

Printre modificările din noua versiune:

  • Vechiul stil de supraîncărcare a operatorului folosit în filiala D1 a fost întrerupt. Înlocuiește opNeg, opAdd_r, opAddAssign etc. au venit opUnary, opBinary, opBinaryRight și opOpAssign. Vechiul stil de supraîncărcare a operatorului a fost depreciat în 2019 și va genera o eroare începând cu versiunea 2.100.
  • Cuvântul cheie ștergere a fost retras din 2018. În loc de ștergere, ar trebui să utilizați funcția destroy sau core.memory.__delete.
  • A fost implementat un nou atribut @mustuse care poate fi aplicat tipurilor struct și union ca metodă alternativă de tratare a erorilor atunci când codul nu poate gestiona excepțiile (de exemplu, în blocurile @nogc). Dacă o expresie marcată cu atributul @mustuse nu este utilizată în cod, compilatorul va genera o eroare.
  • Pentru tablourile statice, utilizarea proprietății „.tupleof” este permisă pentru a obține succesiunea de valori (lvalue) a fiecărui element al matricei. void foo(int, int, int) { /* … */ } int[3] ia = [1, 2, 3]; foo(ia.tupleof); // analog foo(1, 2, 3); float[3] fa; fa.tupleof = ia.tupleof; // atribuirea simplă fa = ia are ca rezultat o afirmație de eroare (fa == [1F, 2F, 3F]);

Sursa: opennet.ru

Adauga un comentariu