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