Ukukhishwa komdidiyeli wolimi we-D 2.111

I-DMD 2.111, i-reference compiler yolimi lwe-D, ikhishwe. Ikhodi ye-compiler isatshalaliswa ngaphansi kwe-BSL yamahhala (i-Boost Software License). Izinhlelo ezisekelwayo ziyi Linux, Windows, macOS kanye ne-FreeBSD.

Ulimi D luthayiphiwe ngokwezibalo, lune-syntax efana ne-C/C++, futhi luhlinzeka ngokusebenza kwezilimi ezihlanganisiwe. Ulimi lwe-D luphinde luboleke ezinye izici ezivela ezilimini eziguqukayo eziwusizo ekuthuthukiseni ukusebenza kahle nokuqinisekisa ukuphepha. Isibonelo, kukhona ukusekelwa: ama-associative arrays, incazelo yohlobo olungaqondile, ukuphathwa kwememori okuzenzakalelayo, amathuluzi okuhlela ahambisanayo, izifanekiso, izingxenye ze-metaprogramming. Umqoqi kadoti uyatholakala ngokuzikhethela. Izinhlelo zika-D zingasebenzisa imitapo yolwazi ye-C, kanye neminye imitapo yolwazi ye-C++ kanye ne-Objective-C.

Ukukhishwa kufaka phakathi izinguquko ezisuka ngaphezu kwesigamu sonyaka ebezingafakwanga ekukhishweni kwe-2.110, obekungaphezulu kokukhishwa kokulungisa okuqukethe kuphela ukulungiswa. Phakathi kwezinguquko ekukhishweni kwe-2.111:

  • Kwengezwe isici sokuphrofayela sesikhathi sokwakha, esinikwe amandla ngefulegi elithi "-ftime-trace" kumdidiyeli we-DMD. I-LDC compiler isivele inalesi sici. Isifundo sevidiyo sendlela yokusebenzisa ukulandelela isikhathi.
  • Ifulegi le-compiler elithi "-i" manje seliphatha kahle amafayela olimi C futhi.
  • Amandla okusebenzisa i-syntax yesabelo yengezwe kuzingxube zesifanekiso: mixin MyMixinTemplate!(Args) myName; // isitayela esidala mixin myName = MyMixinTemplate!(Args); // isitayela esisha
  • Ezindleleni ze-"extern(Objective-C)", izikhethi manje zikhiqizwa ngokuzenzakalelayo ngisho noma isibaluli esithi "@selector" singacacisiwe: extern(Objective-C) extern class NSObject {static NSObject alloc(); // Ikhiqiza njenge "alloc" NSObject init(); // Ikhiqiza njenge-"init"} isigaba sangaphandle (Injongo-C) Fox: I-NSObject {bool fluffy; @property bool isFluffy() => fluffy; // "isFluffy" @property void isFluffy(bool value) {fluffy = inani; } // "setFluffy:" void yip(int a) @selector("igxolo:"") {// "igxolo:" // ... } i-void doSomething(int a, int b, int c) {// "doSomething:b:c:" // ... } }
  • Kwengezwe isisho sokubeka esithi "okusha" ukuze kuqalwe ngenani elishiwo (ngaphandle kwe-GC). isakhiwo S {ntanta d; ngi; igama c; } … S s; S* p = okusha (izi) S(3.14, 42, 'X'); // beka into entsha ku-s
  • Igama elingukhiye elisha elithi "__rvalue" ukuze kusetshenziswe ukunyakaza kwe-semantics. Isetshenziselwa ukwengeza iziqalo zelabhulali ethi "hambisa" kanye "phambili".
  • Kwengezwe ifulege elithi "-preview=safer", elivumela wonke amasheke asetshenziswe kukhodi ethi "@safe" kuyo yonke ikhodi, kuyilapho izingxenye okunzima ukuzilungisa (njengokubiza imisebenzi ethi "@system") zisazovunyelwa kumodi ye-Safer D.
  • Ukusekelwa okuthuthukisiwe kwezigaba zedatha ye-'ref' kanye ne-'auto ref', manje engasetshenziswa kokuguquguqukayo kwendawo, yomhlaba wonke, kanye ne-static. "i-auto ref" imingcele kufanele ichazwe ndawonye kuphela.
  • Kunikwe amandla okukhiphayo kwephutha kwezinye izici ezehlisiwe. Phakathi kwazo kufaka esikhundleni sokuthi "susa" ngokuthi "destroy", "ukwehla" ku-"case" enamanani amaningi, kanye nokuziqalisa ngokwakho kokuguquguquka.
  • I-syntax efushanisiwe yokuchaza izindlela manje ingasetshenziswa kubakhi futhi: Inombolo yesakhiwo { int x; i-vf (int); lokhu(int x) => vf(x); lokhu(ntanta x) => lokhu(cast(int) x); }
  • Kungezwe esikhathini sokusebenza Windows-ukubopha ku-BCrypt.
  • Umtapo wolwazi ojwayelekile usebenzisa ukungenisa kwe-ODBC 4.0 futhi wandisa izindlela zokusebenza ne-Unicode, inguqulo yayo ekhushulwe yaba ngu-16.
  • I-API entsha ye-"std.sumtype", lapho imisebenzi emithathu ethi "has!T", "get!T" kanye "tryGet!T" ivela.
  • Ulungise iphutha ngokuthi "cImportPaths" kusiphathi sephakeji ye-dub.

Ukwengeza, kufanelekile ukuqaphela ukuthuthukiswa kwenani lamaphrojekthi amakhulu ngolimi D:

Emkhakheni wokuthuthukiswa kwemidlalo (i-GameDev), izinjini eziningana ziyathuthukiswa: I-HipremeEngine iyinjini ehlanganisa amapulatifomu amaningi, ngaphezu kwezinhlelo eziyinhloko zedeskithophu, Windows/Linux/macOS isekela i-iOS/Android/Xbox/WebAssembly/PS Vita. Enye iphrojekthi, i-Dagon, iyaqhubeka nokuthuthukiswa kwenjini ye-3D enamakhono amakhulu ehluzo.

Endaweni yemitapo yolwazi enemifanekiso, ngaphezu kwe-OpenGL, ukusekelwa kwemitapo yolwazi efana ne-SDL (okuhlanganisa nezinguqulo 3 no-2) kanye ne-Sokol kuyathuthukiswa. Ukusebenza ngezithombe eziyingcaca (ukukhipha amakhodi/ukufaka ikhodi) kuthuthukiswa kuphakheji ye-gamut, engasebenza namafomethi amaningi. Kukhona ukusekelwa kwazo zombili izithombe zakudala ze-PNG, i-JPEG ne-BMP, kanye ne-JPEG-XL yesimanjemanje, i-QOI ne-QOIX.

Ukuze kwakhiwe i-graphical user interfaces (GUIs), kwakhiwa uhlelo olusha lwe-ecosystem lwemitapo yolwazi ye-gID, oluhlinzeka ngokubophezela kumalabhulali amaningi asekelwe ku-GObject, okuhlanganisa ukusekela okugcwele kwe-GTK 3/4, Arrow/Parquet kanye ne-Adw. Izibonelo nohlu lwemitapo yolwazi efakiwe lungatholakala endaweni yokugcina. Futhi ukuthola ukuthandwa uhlaka olumemezelayo lwe-Fluid, olufanele ukusetshenziswa emidlalweni.

Endaweni yokuthuthukiswa kwewebhu ekwakhiweni kwe-RISC-V, umsebenzi wohlaka lwe-Serverino uyaboniswa. Lolu hlaka lwewebhu olulula futhi olusebenzayo ngaphandle kokunye ukuncika lungasebenza emishinini ebuthaka kakhulu, kuhlanganise namasistimu ashumekiwe anememori ephansi.

Ukuthuthukiswa komtapo wopopayi wesikhathi sangempela we-2D, Inochi2D, kuyaqhubeka. Izinto ezintsha zakamuva kuphrojekthi zihlanganisa amalabhulali okuphatha inkumbulo ahlukene kanye nesikhathi sokusebenza ngokwezifiso, okuvumela izici eziningi zolimi ukuthi zisetshenziswe ngaphandle komqoqi kadoti.

Source: opennet.ru

Thenga ukusingathwa okuthembekile kwamasayithi anokuvikelwa kwe-DDoS, amaseva e-VPS VDS 🔥 Thenga ukusingathwa kwewebhusayithi okuthembekile ngokuvikelwa kwe-DDoS, amaseva e-VPS VDS | ProHoster