Kompilator języka D w wersji 2.100

Twórcy języka programowania D zaprezentowali wydanie głównego kompilatora referencyjnego DMD 2.100.0, który obsługuje systemy GNU/Linux, Windows, macOS i FreeBSD. Kod kompilatora jest rozpowszechniany na bezpłatnej licencji BSL (Boost Software License).

D jest typem statycznym, ma składnię podobną do C/C++ i zapewnia wydajność języków skompilowanych, czerpiąc jednocześnie część korzyści z wydajności programowania i bezpieczeństwa języków dynamicznych. Na przykład zapewnia obsługę tablic asocjacyjnych, wnioskowanie o typach, automatyczne zarządzanie pamięcią, programowanie równoległe, opcjonalny moduł zbierający elementy bezużyteczne, system szablonów, komponenty metaprogramowania, możliwość korzystania z bibliotek C oraz niektórych bibliotek C++ i Objective-C.

Wśród zmian w nowej wersji:

  • Stary styl przeciążania operatorów stosowany w gałęzi D1 został wycofany. Zastępuje opNeg, opAdd_r, opAddAssign itp. pojawiły się opUnary, opBinary, opBinaryRight i opOpAssign. Stary styl przeciążania operatorów został uznany za przestarzały w 2019 r. i począwszy od wersji 2.100 będzie powodował wyświetlenie błędu.
  • Słowo kluczowe Delete zostało przestarzałe od 2018 roku. Zamiast usuwać, powinieneś użyć funkcjizniszczenia lub core.memory.__delete.
  • Zaimplementowano nowy atrybut @mustuse, który można zastosować do typów struktur i unii jako alternatywną metodę obsługi błędów, gdy kod nie obsługuje wyjątków (na przykład w blokach @nogc). Jeśli wyrażenie oznaczone atrybutem @mustuse nie zostanie użyte w kodzie, kompilator wygeneruje błąd.
  • W przypadku tablic statycznych użycie właściwości „.tupleof” pozwala uzyskać sekwencję wartości (lwartość) każdego elementu tablicy. void foo(int, int, int) { /* … */ } int[3] ia = [1, 2, 3]; foo(ia.tupleof); // analogowe foo(1, 2, 3); pływak[3] fa; fa.tupleof = ia.tupleof; // proste przypisanie fa = ia skutkuje błędem accord(fa == [1F, 2F, 3F]);

Źródło: opennet.ru

Dodaj komentarz