Eine neue Version der Programmiersprache Nim wurde veröffentlicht. Diese weist teilweise Inkompatibilitäten zur Version 1.0 auf, zum Beispiel aufgrund strengerer Typumwandlungen. Für diesen Fall gibt es ein Flag —useVersion:1.0.
Die Hauptneuerung ist ein neuer Garbage Collector, der über die Option —gc:arc aktiviert wird. Der Autor der Sprache, Andreas Rumpf, plant, einen detaillierten Artikel über die Vorteile von ARC zu schreiben und bietet vorerst an, sich seine Präsentation auf FOSDEM anzusehen, in der die Ergebnisse der Benchmarks gezeigt werden.
- Der Compiler unterstützt jetzt die Option —asm für ein einfacheres Studium des generierten Assemblercodes.
- Die align pragma kann für Variablen und Felder von Objekten verwendet werden, ähnlich wie alignas in C/C++.
- =sink Operator ist jetzt optional. Der Compiler kann nun eine Kombination aus =destroy und copyMem verwenden, um Objekte effizient zu verschieben.
- Umwandlungen in unsigned integers werden zur Laufzeit nicht überprüft. Details in https://github.com/nim-lang/RFCs/issues/175
- Eine neue Syntax für lvalue: var b {.byaddr.} = expr, die über import std/decls eingebunden wird.
- Der Compiler unterstützt den neuen Schlüssel —panics:on, der zur Laufzeitfehler wie IndexError oder OverflowError in fatale Fehler umwandelt, die nicht über try abgefangen werden können. Dies kann die Effizienz zur Laufzeit und die Programmgröße verbessern.
- Der generierte JS-Code verwendet nur Leerzeichen anstelle einer Mischung aus Leerzeichen und Tabs.
- Der Compiler hat die Unterstützung für die .localPassc pragma hinzugefügt, mit der spezielle Optionen des C(++)-Backends für C(++)-Dateien, die aus dem aktuellen Nim-Modul generiert werden, behandelt werden können.
- Nimpretty akzeptiert jetzt kein negatives Argument mehr zur Einstellung der Einrückungen, da dies Dateien beschädigte.
- Neue Makros (collect, dup, capture) wurden hinzugefügt, die über import sugar eingebunden werden können.
Darüber hinaus wurden zahlreiche Änderungen an der Standardbibliothek und viele Fehlerbehebungen vorgenommen.
Quelle: linux.org.ru
