Ukukhululwa komqokeleli wolwimi D 2.111

I-DMD 2.111, umqokeleli wesalathiso solwimi lwe-D, ikhutshiwe. Ikhowudi yomqokeleli isasazwa phantsi kwe-BSL yasimahla (iLayisensi yeSoftware yeBoost). Iinkqubo ezixhaswayo ziyasebenza. Linux, Windows, macOS kunye neFreeBSD.

Ulwimi D luchwethezwa ngokwezibalo, lune-syntax efana ne-C/C++, kwaye lubonelela ngokusebenza kweelwimi ezihlanganisiweyo. Ulwimi lwe-D luboleka ezinye iimpawu kwiilwimi eziguqukayo eziluncedo ekuphuculeni ukusebenza kakuhle kunye nokuqinisekisa ukhuseleko. Umzekelo, kukho inkxaso ye: i-associative arrays, inkcazo yohlobo olungathanga ngqo, ulawulo lwememori oluzenzekelayo, izixhobo zokucwangcisa ezihambelanayo, iitemplates, amacandelo e-metaprogramming. Umqokeleli wenkunkuma unokuzikhethela. Iinkqubo ze-D zinokusebenzisa amathala eencwadi e-C, kunye namanye amathala eencwadi e-C++ kunye ne-Objective-C.

Ukukhululwa kubandakanya utshintsho olungaphezu kwesiqingatha sonyaka olungabandakanywanga kwi-2.110 ukukhululwa, okwakungaphezulu kokukhululwa kokulungiswa okuqulethe izilungiso kuphela. Phakathi kotshintsho ekukhutshweni kwe-2.111:

  • Ixesha elongeziweyo leprofayile yexesha lokwakha, elenziwe kusetyenziswa iflegi "-ftime-trace" kumqokeleli weDMD. Umqokeleli we-LDC sele enalo olu phawu. Isifundo sevidiyo sendlela yokusebenzisa umkhondo wexesha.
  • I-"-i" iflegi yomqokeleli ngoku iphatha ngokuchanekileyo iifayile zolwimi lwe-C ngokunjalo.
  • Ukukwazi ukusebenzisa i-syntax yesabelo yongezwe kwi-template mixins: mixin MyMixinTemplate!(Args) myName; // isitayile esidala mixin myName = MyMixinTemplate!(Args); // isitayile esitsha
  • Kwiindlela ze "extern(Objective-C)", abakhethi benziwa ngoku ngokuzenzekelayo nokuba uphawu "@selector" aluchazwanga: i-extern(Objective-C) extern class NSObject { static NSObject alloc(); // Ivelisa njenge "alloc" NSObject init(); // Ivelisa njenge "init" } iklasi yangaphandle (Injongo-C) Fox : NSObject {bool fluffy; @property bool isFluffy() => fluffy; // "isFluffy" @property void isFluffy(ixabiso le-bool) {fluffy = ixabiso; } // "setFluffy:" akukho yip(int a) @selector("ixolo:") {// "ixolo:" // ... } i-doSomething engekho (int a, int b, int c) { // "doSomething:b:c:" // ... }}
  • Kongezwe intetho yokubekwa "entsha" ukuqalisa ngexabiso elikhankanyiweyo (ngaphandle kweGC). isakhi S {dada d; mna; igama c; } … Imiz; S* p = (ezintsha) S(3.14, 42, 'X'); // beka into entsha kwi-s
  • Igama elitsha elingundoqo "__rvalue" ukuphumeza intshukumo yesemantics. Isetyenziselwa ukudibanisa "ukuhambisa" kunye "nokuqhubela phambili" ithala leencwadi lokuqala.
  • Kongezwe iflegi ethi "-preview=safer", eyenza ukuba zonke iitshekhi zisetyenziswe kwikhowudi ethi "@safe" kuyo yonke ikhowudi, ngelixa iindawo ekunzima ukulungisa kuzo (ezifana nokufowunela "@system" functions) zisaya kuvunyelwa kwimowudi eKhuselekileyo D.
  • Inkxaso ephuculweyo ye'ref' kunye ne'auto ref' iiklasi zedatha, ezinokuthi ngoku zisetyenziswe kwizinto zasekhaya, zehlabathi, kunye nezizinzileyo. Iiparamitha ze-"auto ref" mazichazwe kunye kuphela.
  • Isiphumo semposiso senzelwe ukuba sisebenze kwezinye iimpawu eziyehliweyo. Phakathi kwazo kukutshintsha "ukucima" ngokuthi "ukutshabalalisa", "ukuwa phantsi" kwi "case" enexabiso elininzi, kunye nokuziqalisa kwezinto eziguquguqukayo.
  • Isivakalisi esifutshane sokuchaza iindlela ngoku singasetyenziswa kubakhi ngokunjalo: i-struct Inani { int x; akukho vf(int); oku(int x) => vf(x); oku(dada x) => oku(phosa(int) x); }
  • Yongezwe kwixesha lokusebenza Windows-izibophelelo kwi-BCrypt.
  • Ilayibrari esemgangathweni isebenzisa i-ODBC 4.0 yokungenisa kwaye yandisa iindlela zokusebenza kunye ne-Unicode, inguqulelo yayo iye yanda ukuya kwi-16.
  • I-API entsha ye-"std.sumtype", apho imisebenzi emithathu ethi "has!T", "get!T" kunye no-"tryGet!T" ivela.
  • Kulungiswe ibug nge "cImportPaths" kumphathi wepakethe yedub.

Ukongeza, kubalulekile ukuqaphela uphuhliso lwenani leeprojekthi ezinkulu kulwimi lwe-D:

Kwicandelo lophuhliso lwemidlalo (iGameDev), iinjini ezininzi ziyaphuhliswa: I-HipremeEngine yinjini esebenza ngamaqonga ahlukeneyo, ukongeza kwiinkqubo eziphambili zedesktop, Windows/Linux/macOS ixhasa i-iOS/Android/Xbox/WebAssembly/PS Vita. Enye iprojekthi, iDagon, iyaqhubeka nophuhliso lwenjini ye-3D enezakhono ezininzi zemizobo.

Kwindawo yeelayibrari zegraphic, ukongeza kwi-OpenGL, inkxaso yamathala eencwadi anjengeSDL (kubandakanywa neenguqulelo 3 kunye no-2) kunye neSokol iyaphuhliswa. Ukusebenza ngemifanekiso eqingqiweyo (i-decoding / encoding) iphuhliswa kwiphakheji ye-gamut, enokusebenza ngeefomathi ezininzi. Kukho inkxaso yazo zombini ii-PNG zakudala, iJPEG kunye nemifanekiso ye-BMP, kunye neJPEG-XL yale mihla, QOI kunye neQOIX.

Ukwakha ujongano lomsebenzisi wegraphical (GUIs), inkqubo entsha ye-ecosystem yamathala eencwadi e-gID isekiwe, ibonelela ngezibophelelo kumathala eencwadi amaninzi ase-GObject, kuquka nenkxaso epheleleyo ye-GTK 3/4, i-Arrow/Parquet ne-Adw. Imizekelo kunye noluhlu lwamathala eencwadi aqukiweyo lunokufumaneka kwindawo yokugcina. Kwakhona ukufumana ukuthandwa sisakhelo sokubhengeza i-Fluid, esilungele ukusetyenziswa kwimidlalo.

Kwindawo yophuhliso lwewebhu kuyilo lwe-RISC-V, umsebenzi wesakhelo seServerino ubonisiwe. Esi sikhokelo sewebhu esincinci nesisebenzayo ngaphandle kokunye ukuxhomekeka kunokusebenza koomatshini ababuthathaka kakhulu, kubandakanya iinkqubo ezizinzisiweyo ezinememori ephantsi.

Ukuphuhliswa kwethala leencwadi lexesha lokwenyani le-2D puppet animation, Inochi2D, iyaqhubeka. Izinto ezintsha zamva nje kwiprojekthi ziquka iilayibrari zolawulo lweememori ezihlukeneyo kunye nexesha lokuqhuba isiko, elivumela ukuba iimpawu ezininzi zolwimi zisetyenziswe ngaphandle komqokeleli wenkunkuma.

umthombo: opennet.ru

Thenga ukusingathwa okuthembekileyo kwiindawo ezinokhuseleko lweDDoS, iiseva zeVPS VDS 🔥 Thenga ukusingathwa kwewebhusayithi okuthembekileyo ngokhuseleko lwe-DDoS, iiseva zeVPS VDS | ProHoster