D programmeerimiskeele kompilaatori versiooni 2.111 vÀljaanne

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

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