Release der Systemprogrammiersprache . Die Nim-Sprache verwendet statische Typisierung und ist inspiriert von Pascal, C++, Python und Lisp. Der Quellcode in Nim wird in C-, C++- oder JavaScript-Code kompiliert. Anschließend wird der resultierende C/C++-Code mit jedem verfügbaren Compiler (clang, gcc, icc, Visual C++) in eine ausführbare Datei kompiliert, was eine nahezu C-kompatible Performance ermöglicht, abgesehen von den Kosten des Garbage Collectors. Ähnlich wie in Python werden in Nim Einrückungen als Blocktrennzeichen verwendet. Es werden Metaprogrammierungstools unterstützt und Möglichkeiten zur Erstellung von domänenspezifischen Sprachen (DSL) bereitgestellt. Projektcode unter der MIT-Lizenz.
Zu den bemerkenswerten Neuerungen in dieser Version gehören:
- Ein neuer Garbage Collector wurde implementiert („—gc:arc“).
- Im Modul „“ wurden neue Makros wie collect, dup und capture hinzugefügt.
- Ein neues Makro „with“ wurde hinzugefügt.
- Eine Vielzahl neuer Aufrufe wurde in die Standardbibliothek aufgenommen, darunter strformat.fmt, strtabs.clear, browsers.osOpen, typetraits.tupleLen, typetraits.genericParams, os.normalizePathEnd, times.fromUnixFloat, os.isRelativeTo, times.isLeapDay, net.getPeerCertificates, jsconsole.trace, jsconsole.table, jsconsole.exception, sequtils.countIt und viele mehr.
- Neue Module std/stackframes und std/compilesettings wurden hinzugefügt.
- Im Compiler wurden die Optionen „—asm“ (zur Analyse des generierten Assemblercodes) und „—panics:on“ hinzugefügt, um bei Fehlern wie IndexError und OverflowError sofort abzubrechen, ohne die Möglichkeit, dies mit einem „try“-Handler abzufangen.
- Die Erkennung möglicher Pufferüberläufe wurde beschleunigt.
Quelle: opennet.ru
