Ilmus vĂ€lja DMD 2.111, D keele standardkompilaator. Kompilaatori kood levitatakse avatud litsentsi 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Ă€ljaanne sisaldab muudatusi, mis on toimunud ĂŒle poole aasta jooksul ning mis ei olnud osa 2.110 versioonist, mis pigem oli vĂ€iksem ja sisendas vaid parandusi. Muudatuste hulka kuuluvad versioonis 2.111:
- Lisatud on kompileerimise aja profiilimise funktsioon, mida saab lubada DMD kompilaatori lipuga â-ftime-traceâ. Kompilaator LDC omas juba seda funktsiooni. Video juhend time-traceâi kasutamiseks.
- Kompilaatori lipp â-iâ töötleb nĂŒĂŒd Ă”igesti ka C keeles kirjutatud faile.
- Mallimiksides on lisatud vĂ”imalus kasutada mÀÀramis-sĂŒntaksit: mixin MyMixinTemplate!(Args) myName; // vana stiil mixin myName = MyMixinTemplate!(Args); // uus stiil
- NĂŒĂŒd genereeritakse âextern(Objective-C)â meetoditele automaatselt valikud, isegi kui atribuut â@selectorâ pole mÀÀratud: extern(Objective-C) extern class NSObject { static NSObject alloc(); // genereeritakse kui âallocâ NSObject init(); // genereeritakse kui âinitâ } extern(Objective-C) class Fox : NSObject { bool fluffy; @property bool isFluffy() => fluffy; // âisFluffyâ @property void isFluffy(bool value) { fluffy = value; } // âsetFluffy:â void yip(int a) @selector(âbark:â) { // âbark:â // ⊠} void doSomething(int a, int b, int c) { // âdoSomething:b:c:â // ⊠} }
- Lisatud on placement-vĂ€ljend ânewâ algvÀÀrtuse mÀÀramiseks (ilma GC-ta). struct S { float d; int i; char c; } ⊠S s; S* p = new (s) S(3.14, 42, âXâ); // asetab uue objekti s-sse
- Uus mĂ€rksĂ”na â__rvalueâ, mis vĂ”imaldab teostada move-semantikat. Seda on kasutatud raamatukogude primitiivide âmoveâ ja âforwardâ lisamiseks.
- Lisatud on lipp â-preview=saferâ, mille kasutamisel kehtitakse kĂ”ik â@safeâ koodile rakendatavad kontrollid, samas kui raskesti parandatavad osad (nt â@systemâ funktsioonide kutsed) on endiselt lubatud Safer D reĆŸiimis.
- Parandatud on andmeklasside ârefâ ja âauto refâ tugi, mida saab nĂŒĂŒd rakendada kohalikest, globaalsetest ja staatilistest muutujatest. Parameetreid âauto refâ tuleb mÀÀrata ainult koos.
- TĂ€htis on, et mĂ”ningatel funktsioonidel, mis on tunnustatud kui vananenud, on nĂŒĂŒd veateade. Nende hulka kuulub âdeleteâ asendamine âdestroyââiga, âcaseââides juhtumite âumbes kukkumineâ, muutuja autonoomne initsialiseerimine.
- LĂŒhendatud sĂŒntaks meetodite mÀÀramiseks on nĂŒĂŒd saadaval ka konstruktorites: struct Number { int x; void vf(int); this(int x) => vf(x); this(float x) => this(cast(int) x); }
- Runtimeâis on lisatud Windowsi sidumised BCryptâile.
- Standardraamatukogus on rakendatud ODBC 4.0 import ja laiendatud Unicode töötluse meetodeid, mille versioon on tÔstetud 16-le.
- Uus API âstd.sumtypeâ, kus on ilmunud kolm funktsiooni âhas!Tâ, âget!Tâ ja âtryGet!Tâ.
- Pakihalduris dub on parandatud viga, mis puudutas âcImportPathsâ.
Lisaks tuleks mÀrkida rida suuri projekte, mis on D keeles arendatud:
MĂ€ngude arendamise valdkonnas (GameDev) areneb mitmeid mootorid: HipremeEngine â mitme platvormi mootor, mis lisaks peamistele lauaarvutisĂŒsteemidele Windows/Linux/macOS toetab iOS/Android/Xbox/WebAssembly/PS Vita. Teine projekt â Dagon, jĂ€tkab 3D-mootori arendamist, millel on ulatuslikud graafika vĂ”imalused.
Graafikakogumite valdkonnas, peale OpenGLi, arendatakse ka selliste teekide nagu SDL (kaasa arvatud 3 ja 2 versioonid) ning Sokol toetamist. Graafiliste piltide (dekoodeerimine/kodeerimine) töötlemine areneb pakendis gamut, mis suudab töötada paljude formaatidega. Toetatakse nii klassikalisi vorme nagu PNG, JPEG ja BMP, kui ka kaasaegseid JPEG-XL, QOI ja QOIX.
Graafiliste kasutajaliideste (GUI) loomiseks on loodud uus gID teekide ökosĂŒsteem, mis pakub mĂ€histeid paljudele GObjectâi pĂ”histele teekidele, sealhulgas tĂ€ieliku toe GTK 3/4, Arrow/Parquet ja Adw jaoks. NĂ€iteid ja loetelu sisenevatest teekidest saab leida hoidlast. Samuti on populaarsust kogumas deklaratiivne raamistik Fluid, mis sobib kasutamiseks mĂ€ngudes.
RISC-V arhitektuuril pĂ”hinevas veebiarenduses on demonstreeritud Serverino raamistiku tööd. See minimalistlik ja tĂ”hus veebi raamistiku töötab sĂ”ltumatult ning suudab töötada vĂ€ga nĂ”rkadel masinatel, sealhulgas mĂ”nedes madala mĂ€lu mahuga sisseehitatud sĂŒsteemides.
JĂ€tkub Inochi2D raamatukogu arendus 2D-nukuanimatsiooni jaoks reaalajas. Projekti hiljutiste uuenduste hulka kuuluvad eraldi mĂ€luhalduse raamatukogud ja kohandatud runtime, mis vĂ”imaldavad kasutada paljusid keele vĂ”imalusi ilma prĂŒgikorjajata.
Allikas: opennet.ru
