Avaldatud on DMD 2.112, D keele referentskompilaator. Kompilaatori kood on litsentseeritud BSL (Boost Software License) alusel. Toetatakse sĂŒsteeme Linux, Windows, macOS ja FreeBSD.
D keel kasutab staatilist tĂŒpiseerimist, selle sĂŒntaks sarnaneb C/C++ keeltele ja see tagab kompileeritud keelte jĂ”udluse. D keel laenab ka mĂ”ningaid dĂŒnaamiliste keelte vĂ”imalusi, mis on kasulikud arenduse tĂ”hususe ja turvalisuse suurendamiseks. NĂ€iteks on olemas toetus: assotsiatiivsed massiivid, kaudne tĂŒĂŒpide mÀÀramine, automaatne mĂ€lu haldamine, paralleelse programmeerimise tööriistad, mallid ja meta-programmeerimise komponendid. Valikuliselt on saadaval prĂŒgikogumise sĂŒsteem. D keeles kirjutatud programmides saab kasutada C keeles kirjutatud teeke ning samuti mĂ”ningaid C++ ja Objective-C teeke.
VĂ€ljaande 2.112 muudatused:
- Associatiivsete massiivide (hashmap) toimingud on teostatud mallide kaudu.
- BitivĂ€ljad on keelde lisatud ja nĂŒĂŒd ei ole vaja kasutada eraldi â-preview=bitfieldsâ.
- Rippuvad âelseâ operaatorid, mis on mĂ€rgitud ilma sulgudeta, genereerivad nĂŒĂŒd veateate, mitte hoiatust: int i, j; if (i) if (j) return 1; else // Viga: else on rippuv, lisage { } tingimuse `if (i)` jĂ€rel return 2;
- Uus lipp â-extIâ on lisatud vĂ€liste imporditeede nĂ€itamiseks, mis on sarnane imporditee parameetrile (-I), vĂ€lja arvatud see, et leitud moodul asub kompileeritavast tĂ€itmisfailist vĂ€ljaspool. Windowses kasutatakse seda siis, kui dllimporti ĂŒlekatteparameeter on mÀÀratud vÀÀrtusele, mis ei ole ânoneâ, et sundida importima vĂ€lise mooduli sĂŒmboleid DllImporti kaudu.
- C-failide mooduleid on lisatud. Sarnaselt laiendusele â__importâ kannab mĂ€rksĂ”na â__moduleâ moodulite avaldused D keelelt C keelele. See on eriti kasulik, kui on vaja importida mitut C-faili sama nimega (nĂ€iteks hello/utils.c ja world/utils.c), kuna mĂ”lemad failid tuleb importida âimport utilsâ kĂ€sureal, mis toob kaasa konfliktid. âhello/utils.c: #if __IMPORTC__ __module hello.utils; #endif int sqr(int x) { return x * x; } âworld/utils.c: #if __IMPORTC__ __module world.utils; #endif int max(int a, int b) { return a > b ? a : b; } âapp.d: import hello.utils; import world.utils; static assert(sqr(3) == 9); static assert(max(3, 5) == 5);
- TĂŒhistatud on vaikimisi tĂ€isarvude automaatne konverteerimine vÀÀrtuste mÀÀramisel tĂŒĂŒbist âint op= floatâ. See on tehtud, et vĂ€ltida vĂ”imalikke vigu, kui mÀÀramine âop=â lĂ”ikab parempoolse vĂ€ljendi nullvÀÀrtuseks. uint a; float b = 0.1; a += b; // TĂŒhistamine: `uint += float` teostab lĂŒhendatud konversiooni
- Runtime'i on lisatud mitu uut malli implementeerimist.
- Parandatud on dokumenteerimata muudatustega seotud vead ABI macOS 15.4.
- C-makrosid muudetakse nĂŒĂŒd mallideks ImportC kasutamisel: import core.sys.posix.stdlib; import core.sys.posix.unistd; extern(C) int main() { int status, pid = vfork(); if (pid == 0) { // ⊠return 0; } waitpid(pid, &status, 0); if (WIFEXITED(status)) { // ⊠} return 0; }
- Standardraamatukogus on teostatud funktsioon âlazyCacheâ, mis pakub vahemĂ€lu mehhanismi vahemike dĂ©ferreeritud hindamisega. Erinevalt cache'ist, mis hindab elemendid vahemiku loomise ajal koheselt, lĂŒkkab lazyCache hindamise edasi, kuni elemendid on selgesĂ”naliselt taotletud. auto result = iota(-4, 5).map!(a => tuple(a, expensiveComputation(a)))().lazyCache(); // Sellel hetkel ei ole arvutusi teostatud auto firstElement = result.front; // Esimene element on nĂŒĂŒd hinnatud
- Parandatud on 'getrandom()' tagasipöördumise ĂŒhilduvust vanemate Linuxi versioonidega ja muude sĂŒsteemidega.
- âstd.uniâ on ajakohastatud, et toetada Unicode 17.
- âstd.uuidâ on lisatud toetus uuid v7-le.
- Uus API âstd.convâ jaoks, kus on lisatud kolm funktsiooni âwriteTextâ, âwriteWTextâ ja âwriteDTextâ.
- Pakihaldurisse dub on lisatud vĂ”imalus â-dest ja vĂ”ti frameworks. âOli: lflags â-frameworkâ âCocoaâ âNĂŒĂŒd on vĂ”imalik: frameworks âCocoaâ âOpenGLâ
Samuti tuleb mÀrkida mitmete huvitavate projektide vÀljatöötamist D keeles:
- MÀngude arendamise (GameDev) valdkonnas on olnud jÀrgnevaid uuendusi: dvn, visuaalromaanide loomise mootor, on saanud kasutusnÀiteid. Godoti mootoris on eksperimentaalne tugi Webi eksportimiseks. Steamis on vÀlja antud mÀng The Art of Reflection, mis on teostatud D ja DirectX tehnoloogiate abil oma mootoris.
- Veebiarenduse valdkonnas areneb kerge kiudude ajakava photon, mis on nÀidanud kÔrgeid tulemusi TechEmpoweri jÔudlustestis ja jÔudnud mitme testi (Plaintest, JSON) top 10 hulka. See mootor on integreeritud populaarse veebiraamistikuga Vibe.D, mille tulemusena on saavutatud jÔudluse tÔus ilma veebirakenduste koodi muutmata.
- Uue prĂŒgikoristaja arendamise kuulutuse jĂ€rel Dconf konverentsil (video1, video2) on see uuendus leidnud tee uude vĂ€ljaandesse. Uut GC-d saab proovida ka eraldi paketina. Praegu toetatakse x86_64 arhitektuuri Linuxi ja Windowsi OS-ide jaoks. Tööd jĂ€tkatakse macOSi ja muude arhitektuuride toetamiseks.
Allikas: opennet.ru
