D nyelvi fordító 2.100 kiadás

A D programozási nyelv fejlesztői bemutatták a fő referencia-fordító DMD 2.100.0 kiadását, amely támogatja a GNU/Linux, Windows, macOS és FreeBSD rendszereket. A fordítókód az ingyenes BSL (Boost Software License) alatt kerül terjesztésre.

A D statikusan begépelt, szintaxisa hasonló a C/C++-hoz, és biztosítja a lefordított nyelvek teljesítményét, miközben kölcsönveszi a dinamikus nyelvek fejlesztési hatékonyságának és biztonsági előnyeinek egy részét. Például támogatja az asszociatív tömböket, a típuskövetkeztetést, az automatikus memóriakezelést, a párhuzamos programozást, az opcionális szemétgyűjtőt, a sablonrendszert, a metaprogramozási összetevőket, a C-könyvtárak használatának lehetőségét, valamint néhány C++ és Objective-C könyvtárat.

Az új kiadás változásai között:

  • A D1 ágban használt régi típusú kezelői túlterhelés megszűnt. Lecseréli az opNeg, opAdd_r, opAddAssign stb. jött az opUnary, az opBinary, az opBinaryRight és az opOpAssign. A régi típusú operátortúlterhelés 2019-ben elavult, és a 2.100-as kiadástól hibát fog kiadni.
  • A törlés kulcsszó 2018 óta elavult. A törlés helyett a destrukciót vagy a core.memory.__delete függvényt érdemes használni.
  • Egy új @mustuse attribútumot implementáltak, amely a struct és union típusokra alkalmazható alternatív hibakezelési módszerként, amikor a kód nem tud kivételeket kezelni (például @nogc blokkokban). Ha a @mustuse attribútummal jelölt kifejezést nem használjuk a kódban, a fordító hibát generál.
  • Statikus tömbök esetén a ".tupleof" tulajdonság használata megengedett a tömb minden elemének értéksorozatának (lvalue) megszerzéséhez. void foo(int, int, int) { /* … */ } int[3] ia = [1, 2, 3]; foo(ia.tupleof); // analóg foo(1, 2, 3); float[3] fa; fa.tupleof = ia.tupleof; // egyszerű hozzárendelés fa = ia hibát eredményez assert(fa == [1F, 2F, 3F]);

Forrás: opennet.ru

Hozzászólás