D kalbos kompiliatoriaus 2.100 leidimas

D programavimo kalbos kūrėjai pristatė pagrindinio informacinio kompiliatoriaus DMD 2.100.0 išleidimą, kuris palaiko GNU/Linux, Windows, macOS ir FreeBSD sistemas. Kompiliatoriaus kodas platinamas pagal nemokamą BSL (Boost Software License).

D yra įvestas statiškai, jo sintaksė panaši į C/C++ ir užtikrina sudarytų kalbų našumą, kartu pasiskolinanti kai kuriuos dinaminių kalbų kūrimo efektyvumo ir saugumo pranašumus. Pavyzdžiui, ji palaiko asociatyvinius masyvus, tipo išvadas, automatinį atminties valdymą, lygiagretųjį programavimą, pasirenkamą šiukšlių rinktuvą, šablonų sistemą, metaprogramavimo komponentus, galimybę naudoti C bibliotekas ir kai kurias C++ bei Objective-C bibliotekas.

Tarp naujojo leidimo pakeitimų:

  • Senasis operatoriaus perkrovimo stilius, naudotas D1 atšaka, buvo nutrauktas. Pakeisti opNeg, opAdd_r, opAddAssign ir kt. atsirado opUnary, opBinary, opBinaryRight ir opOpAssign. Senasis operatoriaus perkrovos stilius buvo nebenaudojamas 2019 m. ir išleis klaidą nuo 2.100 versijos.
  • Ištrinti raktinį žodį nebenaudojama nuo 2018 m. Vietoj trynimo turėtumėte naudoti funkciją demontuoti arba core.memory.__delete.
  • Įdiegtas naujas @mustuse atributas, kurį galima pritaikyti struktūrų ir sąjungų tipams kaip alternatyvų klaidų apdorojimo būdą, kai kodas negali apdoroti išimčių (pavyzdžiui, @nogc blokuose). Jei kode nenaudojama @mustuse atributu pažymėta išraiška, kompiliatorius sugeneruos klaidą.
  • Statiniams masyvams leidžiama naudoti ypatybę ".tupleof", kad būtų gauta kiekvieno masyvo elemento reikšmių seka (lvalu). void foo(int, int, int) { /* … */ } int[3] ia = [1, 2, 3]; foo(ia.dupleof); // analoginis foo(1, 2, 3); plūdė[3] fa; fa.tupleof = ia.tupleof; // paprastas priskyrimas fa = ia sukelia klaidą assert(fa == [1F, 2F, 3F]);

Šaltinis: opennet.ru

Добавить комментарий