Shkëputja e kompilatorit të gjuhës D 2.112

ËshtĂ« publikuar versioni DMD 2.112, kompileri referencĂ« pĂ«r gjuhĂ«n D. Kodi i kompilerit shpĂ«rndahet nĂ«n licencĂ«n e lirĂ« BSL (Boost Software License). Sistemet e mbĂ«shtetura janĂ« 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.

Ndryshimet në versionin 2.112 përfshijnë:

  • Operacione mbi Array tĂ« Asocojuara (hashmap) janĂ« realizuar nĂ«pĂ«rmjet shablloneve.
  • Fushat bitore janĂ« pĂ«rfshirĂ« nĂ« gjuhĂ« dhe tani nuk Ă«shtĂ« nevoja tĂ« pĂ«rdoret veçanĂ«risht ‘-preview=bitfields’.
  • OperatorĂ«t ‘else’ tĂ« varur, tĂ« caktuar pa shenjat e bllokut me kllapa, tani do tĂ« japin njĂ« gabim nĂ« vend tĂ« njĂ« paralajmĂ«rimi: int i, j; if (i) if (j) return 1; else // Gabim: else Ă«shtĂ« varur, shtoni { } pas kushtit `if (i)` return 2;
  • NjĂ« çelĂ«s i ri ‘-extI’ u shtua pĂ«r tĂ« caktuar rrugĂ«t e jashtme tĂ« importit, i cili Ă«shtĂ« analog me parametrin e rrugĂ«s sĂ« importit (-I), me pĂ«rjashtimin qĂ« tregon se moduli i gjetur me tĂ« Ă«shtĂ« jashtĂ« skedarit ekzekutiv qĂ« po kompilohet aktualisht. NĂ« Windows, ai pĂ«rdoret kur parametri i rimbushjes dllimport Ă«shtĂ« caktuar nĂ« çdo vlerĂ« pĂ«rveç ‘none’, pĂ«r tĂ« importuar detyrueshĂ«m simbolet e modulit tĂ« jashtĂ«m pĂ«rmes DllImport.
  • JanĂ« shtuar modulet pĂ«r skedarĂ«t C. NgjashĂ«m me zgjerimin ‘__import’, fjala kyçe ‘__module’ transferon shpalljen e moduleve nga gjuha D nĂ« gjuhĂ«n C. Kjo Ă«shtĂ« veçanĂ«risht e dobishme kur duhet tĂ« importohen disa skedarĂ« C me tĂ« njĂ«jtin emĂ«r (p.sh., hello/utils.c dhe world/utils.c), pasi tĂ« dy skedarĂ«t duhet tĂ« importohen me import utils, kur ato janĂ« tĂ« shĂ«nuara nĂ« linjĂ«n e komandĂ«s, gjĂ« qĂ« çon nĂ« konflikte. —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);
  • Kthimi i paqartĂ« i numrave tĂ« plotĂ« nĂ« caktimin e vlerave tĂ« tipit ‘int op= float’ u shpall i vjetruar. Kjo u bĂ« pĂ«r tĂ« parandaluar gabimet e mundshme, kur caktimi ‘op=’ prerĂ« nĂ« mĂ«nyrĂ« tĂ« paqartĂ« anĂ«n e djathtĂ« tĂ« shprehjes nga njĂ« vlerĂ« e ndryshme nĂ« zero. uint a; float b = 0.1; a += b; // VjetĂ«rsim: `uint += float` po bĂ«n transformim pĂ«r prerje.
  • NĂ« runtime janĂ« shtuar disa realizime tĂ« reja tĂ« shablloneve.
  • JanĂ« rregulluar gabimet qĂ« lidhen me ndryshimin e pa dokumentuar nĂ« ABI macOS 15.4.
  • Makrositet C tani konvertohen nĂ« shabllone kur punojnĂ« ‘ImportC’: 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; }
  • NĂ« bibliotekĂ«n standarde u implementua funksioni ‘lazyCache’, i cili ofron njĂ« mekanizĂ«m caching pĂ«r intervale me vlerĂ«sim tĂ« shtyrĂ«. Ndryshe nga cache, i cili vlerĂ«son menjĂ«herĂ« elementet e intervalit gjatĂ« krijimit, lazyCache e shtyn vlerĂ«simin derisa elementet tĂ« kĂ«rkohen qartĂ«. auto result = iota(-4, 5).map!(a => tuple(a, expensiveComputation(a)))().lazyCache(); // AsnjĂ« llogaritje e kryer nĂ« kĂ«tĂ« pikĂ« auto firstElement = result.front; // Elementi i parĂ« tani vlerĂ«sohet
  • PĂ«rmirĂ«simi i pĂ«rputhshmĂ«risĂ« prapa ‘getrandom()’ nĂ« versionet e vjetra tĂ« Linux dhe sistemeve tĂ« tjera.
  • ‘std.uni’ u pĂ«rditĂ«sua pĂ«r tĂ« mbĂ«shtetur Unicode 17.
  • NĂ« ‘std.uuid’ u shtua mbĂ«shtetje pĂ«r uuid v7.
  • NjĂ« API i ri pĂ«r ‘std.conv’, ku u shfaqĂ«n tre funksione ‘writeText’, ‘writeWText’ dhe ‘writeDText’.
  • NĂ« menaxherin e paketave dub u shtua opsioni ‘-dest dhe çelĂ«si frameworks. —Ishte: lflags ‘-framework’ ‘Cocoa’ —Tani Ă«shtĂ« e mundur: frameworks ‘Cocoa’ ‘OpenGL’

Gjithashtu mund të theksohet zhvillimi i një sërë projektesh interesantë në gjuhën D:

  • NĂ« fushĂ«n e zhvillimit tĂ« lojĂ«rave (GameDev) kishte kĂ«to pĂ«rditĂ«sime: nĂ« dvn, njĂ« motor pĂ«r krijimin e romaneve vizuale, u shtuan shembuj pĂ«rdorimi. NĂ« portin e motorit Godot u shtua mbĂ«shtetje eksperimentale pĂ«r eksportin nĂ« Web. NĂ« Steam u publikua loja The Art of Reflection, e realizuar duke pĂ«rdorur teknologjitĂ« D dhe DirectX nĂ« motorin e saj.
  • NĂ« fushĂ«n e zhvillimit tĂ« uebit, po zhvillohet plani i lehtĂ« pĂ«r planifikuesin e fibrave photon, i cili tregoi rezultate tĂ« larta nĂ« testin e performancĂ«s TechEmpower dhe hyri nĂ« 10 rezultatet mĂ« tĂ« mira nĂ« disa teste (Plaintest, JSON). Ky motor u integrua nĂ« kuadrin e njohur tĂ« uebit Vibe.D, duke arritur rritje tĂ« performancĂ«s pa ndryshuar kodin e aplikacioneve web.
  • Pas njoftimit pĂ«r fillimin e zhvillimit tĂ« grumbulluesit tĂ« ri tĂ« plehrave nĂ« konferencĂ«n Dconf (video1, video2), ky pĂ«rditĂ«sim hyri nĂ« versionin e ri. GC i ri gjithashtu mund tĂ« provohet pĂ«r t'u instaluar si njĂ« paketĂ« tĂ« veçantĂ«. NdĂ«rkohĂ«, po mbĂ«shtetet arkitektura x86_64 pĂ«r OC Linux dhe Windows. Puna vazhdon pĂ«r mbĂ«shtetje tĂ« macOS dhe arkitekturave tĂ« tjera.

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