Lëshimi i kompilatorit të gjuhës D 2.111

Ë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

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster