Ăshte publikuar lĂ«shimi DMD 2.111, njĂ« kompilator referencĂ« pĂ«r gjuhĂ«n D. Kodi i kompilatorit shpĂ«rndahet nĂ«n licencĂ«n e lirĂ« BSL (Boost Software License). MbĂ«shtetet nga sistemet Linux, Windows, macOS dhe FreeBSD.
Gjuha D përdor tipizimin statik, ka një sintaksë të ngjashme me C/C++, dhe ofron performancën e gjuhëve të kompiluara. Gjuha D gjithashtu huazon disa funksionalitete nga gjuhët dinamike, të dobishme për rritjen e efikasitetit të zhvillimit dhe sigurisë. Për shembull, mbështetje për: tabela asociative, përcaktimin e tipave indirect, menaxhimin automatik të memories, mjete për programim paralel, shabllone, komponente për metaprogramim. Blerësi i plehrave është i disponueshëm në mënyrë opsionale. Në programet e shkrimeve në gjuhën D, mund të përdoren librari të gjuhës C, si dhe disa librari në C++ dhe Objective-C.
Lëshimi përfshin ndryshime nga një periudhë më shumë se gjashtë muaj që nuk u përfshinë në lëshimin 2.110, i cili ishte më shumë korrektiv dhe përmbante vetëm rregullime. Ndër ndryshimet në lëshimin 2.111:
- ĂshtĂ« shtuar njĂ« funksion pĂ«r profilimin e kohĂ«s sĂ« pĂ«rpunimit, i cili aktivizohet pĂ«rmes flamurit "-ftime-trace" nĂ« kompilatorin DMD. Kompilatori LDC tashmĂ« kishte kĂ«tĂ« funksion. NjĂ« video me udhĂ«zime pĂ«r pĂ«rdorimin e time-trace.
- Flamuri i kompilatorit "-i" tani përpunon saktësisht edhe skedarët në gjuhën C.
- Në miksin e shablloneve është shtuar mundësia për të përdorur sintaksën e asignimit: mixin MyMixinTemplate!(Args) myName; // stili i vjetër mixin myName = MyMixinTemplate!(Args); // stili i ri
- Për metodat "extern(Objective-C)" tani krijohen automatikisht selektorë, edhe nëse nuk është specifikuar atributi "@selector": extern(Objective-C) extern class NSObject { static NSObject alloc(); // Krijon si "alloc" NSObject init(); // Krijon si "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:" // ... } }
- ĂshtĂ« shtuar shprehja placement "new" pĂ«r inicializimin me vlerĂ«n e specifikuar (pa GC). struct S { float d; int i; char c; } ... S s; S* p = new (s) S(3.14, 42, 'X'); // vendos njĂ« objekt tĂ« ri nĂ« s
- Fjalori i ri "__rvalue", i cili lejon realizimin e semantikës së kalimit. Përdoret për të shtuar primitivët e bibliotekës "move" dhe "forward".
- ĂshtĂ« shtuar flamuri "-preview=safer", me pĂ«rdorimin e tĂ« cilit tĂ« gjitha verifikimet e pĂ«rdorura nĂ« kodin "@safe" pĂ«rfshihen pĂ«r gjithĂ« kodin, megjithatĂ« pjesĂ«t e vĂ«shtira pĂ«r t'u korrigjuar (tĂ« tilla si thirrjet e funksioneve "@system") do tĂ« lejohen ende nĂ« modin Safer D.
- ĂshtĂ« pĂ«rmirĂ«suar mbĂ«shtetja pĂ«r klasat e tĂ« dhĂ«nave "ref" dhe "auto ref", tĂ« cilat tani mund tĂ« aplikohen pĂ«r variablat lokale, globale dhe statike. Parametrat "auto ref" duhet tĂ« pĂ«rcaktohen vetĂ«m sĂ« bashku.
- Janë përfshirë njoftimet e gabimeve për disa mundësi që kanë statusin e të dhëna të vjetra. Ndër to janë zëvendësimi "delete" me "destroy", "shkëputjet" në shumëzësit "case", inicializimi i vetvetes të variablave.
- Sintaksa e shkurtuar për përcaktimin e metodave tani mund të përdoret edhe në konstruktorë: struct Number { int x; void vf(int); this(int x) => vf(x); this(float x) => this(cast(int) x); }
- Në runtime janë shtuar lidhjet për Windows në BCrypt.
- Në bibliotekën standarde është realizuar importi ODBC 4.0 dhe janë zgjeruar metodat e punës me Unicode, versioni i të cilit është rritur në 16.
- Një API i ri për "std.sumtype", ku janë shtuar tre funksione "has!T", "get!T" dhe "tryGet!T".
- Në menaxherin e paketave dub është korrigjuar një gabim me "cImportPaths".
Përveç kësaj, duhet përmendur zhvillimi i disa projekteve të mëdha në gjuhën D:
NĂ« fushĂ«n e zhvillimit tĂ« lojĂ«rave (GameDev) po zhvillohen disa mjete: HipremeEngine â njĂ« motor me shumĂ« platforma, i cili pĂ«rveç sistemeve kryesore desktop Windows/Linux/macOS mbĂ«shtet iOS/Android/Xbox/WebAssembly/PS Vita. Projekti tjetĂ«r â Dagon, vazhdon zhvillimin e motorit 3D me mundĂ«si tĂ« gjera grafike.
Në fushën e bibliotekave grafike, përveç OpenGL, po zhvillohet mbështetja për biblioteka si SDL (përfshirë versionin 3 dhe 2) dhe Sokol. Puna me imazhe grafike (decoding/encoding) po zhvillohet në paketën gamut, e cila di të punojë me shumë formate. Ka mbështetje për imazhe klasike PNG, JPEG dhe BMP, si dhe më moderne JPEG-XL, QOI dhe QOIX.
Për ndërtimin e ndërfaqeve grafike të përdoruesit (GUI) është formuar një ekosistem i ri bibliotekash gID, që ofron lidhje me shumë biblioteka të bazuara në GObject, përfshirë mbështetje të plotë për GTK 3/4, Arrow/Parquet dhe Adw. shembuj dhe listën e bibliotekave përfshirëse mund të gjenden në repozitor. gjithashtu, një framework deklarativ Fluid, që është i përshtatshëm për përdorim në lojëra, po fiton popullaritet.
Në fushën e zhvillimit të uebit në arkitekturën RISC-V, është demonstruar funksionaliteti i kornizës Serverino. Kjo kornizë minimale dhe e performancës së lartë mund të funksionojë pa varësi të tjera, madje edhe në makina të dobëta, duke përfshirë disa sisteme të integruara me kapacitet të vogël memorie.
Zhvillimi i bibliotekës për animacion 2D me kukulla në kohë reale - Inochi2D vazhdon. Ndër risitë e fundit të projektit janë paraqitur biblioteka të veçanta për menaxhimin e memories dhe një runtime i vet, që lejon përdorimin e shumë mundësive të gjuhës pa grumbullues mbeturinash.
Burimi: opennet.ru
