Izdaja prevajalnika jezika D 2.100

Razvijalci programskega jezika D so predstavili izdajo glavnega referenčnega prevajalnika DMD 2.100.0, ki podpira sisteme GNU/Linux, Windows, macOS in FreeBSD. Koda prevajalnika se distribuira pod brezplačno licenco BSL (Boost Software License).

D je statično tipiziran, ima sintakso, podobno C/C++, in zagotavlja zmogljivost prevedenih jezikov, medtem ko si izposoja nekatere razvojne učinkovitosti in varnostne prednosti dinamičnih jezikov. Zagotavlja na primer podporo za asociativne nize, tipsko sklepanje, samodejno upravljanje pomnilnika, vzporedno programiranje, izbirni zbiralnik smeti, sistem predlog, komponente za metaprogramiranje, možnost uporabe knjižnic C ter nekaterih knjižnic C++ in Objective-C.

Med spremembami v novi izdaji:

  • Stari slog preobremenitve operaterja, uporabljen v veji D1, je bil opuščen. Zamenja opNeg, opAdd_r, opAddAssign itd. pojavili so se opUnary, opBinary, opBinaryRight in opOpAssign. Stari slog preobremenitve operaterja je bil leta 2019 opuščen in bo od izdaje 2.100 sprožil napako.
  • Ključna beseda delete je od leta 2018 opuščena. Namesto delete bi morali uporabiti funkcijo destroy ali core.memory.__delete.
  • Implementiran je bil nov atribut @mustuse, ki ga je mogoče uporabiti za tipe struct in union kot alternativno metodo za obravnavanje napak, ko koda ne more obravnavati izjem (na primer v blokih @nogc). Če izraz, označen z atributom @mustuse, ni uporabljen v kodi, bo prevajalnik ustvaril napako.
  • Za statična polja je dovoljena uporaba lastnosti ".tupleof" za pridobitev zaporedja vrednosti (lvalue) vsakega elementa polja. void foo(int, int, int) { /* … */ } int[3] ia = [1, 2, 3]; foo(ia.tupleof); // analogni foo(1, 2, 3); float[3] fa; fa.tupleof = ia.tupleof; // preprosta dodelitev fa = ia povzroči napako assert(fa == [1F, 2F, 3F]);

Vir: opennet.ru

Dodaj komentar