Die neue Version der Programmiersprache Nim 0.20

Es fand Release der Systemprogrammiersprache Nim 0.20.0. Die Sprache verwendet statische Typisierung und wurde mit Blick auf Pascal, C++, Python und Lisp entwickelt. Der Quellcode in Nim wird in C-, C++- oder JavaScript-Code kompiliert. Anschließend wird der generierte C/C++-Code mit einem beliebigen verfügbaren Compiler (clang, gcc, icc, Visual C++) in eine ausführbare Datei übersetzt, wodurch eine nahezu C-ähnliche Leistung erzielt wird, abgesehen von den Kosten des Garbage Collectors. Ähnlich wie in Python werden in Nim Einrückungen als Blocktrennzeichen verwendet. Es werden Metaprogrammierungsmittel und Funktionen zur Erstellung von domänenspezifischen Sprachen (DSL) unterstützt. Projektcode wird geliefert unter der MIT-Lizenz.

Die Veröffentlichung von Nim 0.20 kann als Kandidat für die erste stabile Version 1.0 angesehen werden. Sie umfasst mehrere inkompatible Änderungen, die erforderlich sind, um einen ersten stabilen Branch zu bilden, der den Status der Sprache festhält. Die Version 1.0 wird als stabiler Release mit langfristigem Support präsentiert, bei dem die Rückwärtskompatibilität in dem stabilisierten Teil der Sprache garantiert wird. Zusätzlich wird im Compiler ein experimenteller Modus verfügbar sein, in dem neue Funktionen entwickelt werden, die möglicherweise die Rückwärtskompatibilität beeinträchtigen.

Zu den in Nim 0.20 vorgeschlagenen Änderungen gehören:

  • „Not“ ist jetzt immer ein unärer Operator, d.h. Ausdrücke wie „assert(not a)“ sind jetzt nicht mehr erlaubt und es ist nur die Angabe „assert not a“ zulässig;
  • Strenge Überprüfungen der Umwandlung von Ganzzahlen und Gleitkommazahlen während der Kompilierung wurden integriert, d.h. der Ausdruck „const b = uint16(-1)“ führt jetzt zu einem Fehler, da -1 nicht in einen vorzeichenlosen Ganzzahltyp umgewandelt werden kann;
  • Die Entpackung von Tupeln für Konstanten und Schleifenvariablen wurde ermöglicht.
    Zum Beispiel kann man jetzt Zuweisungen wie ‘const (d, e) = (7, „acht“)’ und „for (x, y) in f“ verwenden;
  • Die Standardinitialisierung von Hashes und Tabellen ist sichergestellt. Nach der Deklaration von „var s: HashSet[int]“ kann man sofort „s.incl(5)“ ausführen, was zuvor einen Fehler verursachte;
  • Die Fehlerausgaben bei Problemen mit dem „case“-Operator und Array-Indexüberschreitungen sind informativer geworden;
  • Änderungen der Tabellenlänge während der Iteration sind nicht mehr erlaubt.

Quelle: opennet.ru

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Servern 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Servern | ProHoster