D keele kompilaatori versioon 2.112 on vÀlja antud

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

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster