D keele kompilaatori väljalase 2.100

Programmeerimiskeele D arendajad esitlesid peamise võrdluskompilaatori DMD 2.100.0 väljalaskmist, mis toetab GNU/Linuxi, Windowsi, macOS-i ja FreeBSD süsteeme. Kompilaatori koodi levitatakse tasuta BSL-i (Boost Software License) all.

D on staatiliselt trükitud, selle süntaks sarnaneb C/C++-ga ja tagab kompileeritud keelte jõudluse, laenates samas osa dünaamiliste keelte arendustõhususe ja turvalisuse eelistest. Näiteks toetab see assotsiatiivseid massiive, tüübijäreldusi, automaatset mäluhaldust, paralleelset programmeerimist, valikulist prügikogujat, mallide süsteemi, metaprogrammeerimiskomponente, võimalust kasutada C-teeke ning mõningaid C++ ja Objective-C teeke.

Uue versiooni muudatuste hulgas:

  • D1 harus kasutatud vana operaatori ülekoormamise stiil on lõpetatud. Asendab opNeg, opAdd_r, opAddAssign jne. tulid opUnary, opBinary, opBinaryRight ja opOpAssign. Vana operaatori ülekoormamise stiil katkestati 2019. aastal ja see annab alates versioonist 2.100 vea.
  • Kustutamismärksõna tugi on katkestatud alates 2018. aastast. Kustutamise asemel tuleks kasutada hävitamise või core.memory.__delete funktsiooni.
  • Rakendatud on uus @mustuse atribuut, mida saab rakendada struktuuri- ja liittüüpidele alternatiivse veakäsitluse meetodina, kui kood ei saa käsitleda erandeid (näiteks @nogc plokkides). Kui koodis @mustuse atribuudiga märgitud avaldist ei kasutata, genereerib kompilaator vea.
  • Staatiliste massiivide puhul on lubatud kasutada atribuuti ".tupleof", et saada massiivi iga elemendi väärtuste jada (lvalue). void foo(int, int, int) { /* … */ } int[3] ia = [1, 2, 3]; foo(ia.tupleof); // analoog foo(1, 2, 3); ujuk[3] fa; fa.tupleof = ia.tupleof; // lihtne omistamine fa = ia annab tulemuseks vea assert(fa == [1F, 2F, 3F]);

Allikas: opennet.ru

Lisa kommentaar