Eine neue Version der Programmiersprache Nim wurde veröffentlicht. Diese Version weist teilweise Inkompatibilität zur Version 1.0 auf, insbesondere aufgrund strengerer Typumwandlungen. Für diesen Fall gibt es jedoch einen Flag —useVersion:1.0.
Die wichtigste Neuerung ist ein neuer Garbage Collector, der mit der Option —gc:arc aktiviert wird. Der Autor der Sprache, Andreas Rumpf, plant, einen detaillierten Artikel über die Vorteile von ARC zu schreiben, und empfiehlt in der Zwischenzeit, sich seinen Vortrag auf der FOSDEM, in dem die Ergebnisse von Benchmarks gezeigt werden, anzusehen.
- Der Compiler unterstützt nun die Option —asm für eine bequemere Untersuchung des erzeugten Assemblercodes.
- Die align pragma kann für Variablen und Objektfelder verwendet werden; dies ähnelt dem alignas in C/C++.
- =sink Operator ist nun optional. Der Compiler kann nun eine Kombination aus =destroy und copyMem für den effizienten Transfer von Objekten verwenden.
- Umwandlungen in unsigned integers werden zur Laufzeit nicht geprüft. Einzelheiten finden Sie in https://github.com/nim-lang/RFCs/issues/175
- Der neue Syntax für lvalue: var b {.byaddr.} = expr, importiert über import std/decls.
- Der Compiler unterstützt einen neuen Schalter —panics:on, der 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 für den C(++)-Backend für C(++)-Dateien, die aus dem aktuellen Nim-Modul generiert werden, behandelt werden können.
- Nimpretty akzeptiert jetzt kein negatives Argument zur Steuerung der Einrückungen mehr, da dies die Dateien beschädigt hat.
- Neue Makros (collect, dup, capture) wurden hinzugefügt, die über import sugar eingebunden werden können.
Zusätzlich wurden zahlreiche Änderungen an der Standardbibliothek sowie viele Bugfixes vorgenommen.
Quelle: linux.org.ru
