D-Sprach-Compiler-Version 2.100

Die Entwickler der Programmiersprache D stellten die Veröffentlichung des Hauptreferenzcompilers DMD 2.100.0 vor, der GNU/Linux-, Windows-, macOS- und FreeBSD-Systeme unterstützt. Der Compiler-Code wird unter der kostenlosen BSL (Boost Software License) vertrieben.

D ist statisch typisiert, hat eine ähnliche Syntax wie C/C++ und bietet die Leistung kompilierter Sprachen, übernimmt jedoch einige der Entwicklungseffizienz- und Sicherheitsvorteile dynamischer Sprachen. Es bietet beispielsweise Unterstützung für assoziative Arrays, Typinferenz, automatische Speicherverwaltung, parallele Programmierung, einen optionalen Garbage Collector, ein Vorlagensystem, Metaprogrammierungskomponenten, die Möglichkeit, C-Bibliotheken sowie einige C++- und Objective-C-Bibliotheken zu verwenden.

Zu den Änderungen in der neuen Version gehören:

  • Der alte Stil der Operatorüberladung, der im D1-Zweig verwendet wurde, wurde eingestellt. Ersetzt opNeg, opAdd_r, opAddAssign usw. Es kamen opUnary, opBinary, opBinaryRight und opOpAssign. Der alte Stil der Operatorüberladung wurde 2019 eingestellt und wird ab Version 2.100 einen Fehler auslösen.
  • Das Schlüsselwort delete ist seit 2018 veraltet. Anstelle von delete sollten Sie die Funktion destroy oder core.memory.__delete verwenden.
  • Es wurde ein neues @mustuse-Attribut implementiert, das auf Struktur- und Union-Typen als alternative Methode zur Fehlerbehandlung angewendet werden kann, wenn der Code keine Ausnahmen verarbeiten kann (z. B. in @nogc-Blöcken). Wenn ein mit dem @mustuse-Attribut gekennzeichneter Ausdruck nicht im Code verwendet wird, generiert der Compiler einen Fehler.
  • Bei statischen Arrays ist die Verwendung der Eigenschaft „.tupleof“ zulässig, um die Wertefolge (lvalue) jedes Elements des Arrays zu erhalten. void foo(int, int, int) { /* … */ } int[3] ia = [1, 2, 3]; foo(ia.tupleof); // analog foo(1, 2, 3); float[3] fa; fa.tupleof = ia.tupleof; // einfache Zuweisung fa = ia führt zu einem Fehler Assert(fa == [1F, 2F, 3F]);

Source: opennet.ru

Kommentar hinzufügen