Eine neue Version der Programmiersprache Nim ist erschienen, die im September ihr einjĂ€hriges Bestehen seit der Veröffentlichung der ersten stabilen Version. In Bezug auf die Syntax Ă€hnelt die Sprache Python, wĂ€hrend die Leistung nahezu die von C++ erreicht. Laut FAQ entlehnt die Sprache in hohem MaĂe aus (in absteigender Reihenfolge des Einflusses): Modula 3, Delphi, Ada, C++, Python, Lisp, Oberon.
Sie funktioniert ĂŒberall dank der Möglichkeit, in C/C++/Objective-C/JS zu kompilieren. UnterstĂŒtzt werden Makros, OOP, Generika, Ausnahmen, Hot Code Replacement und vieles mehr. Lizenz â MIT.
Die bedeutendsten Ănderungen:
-
Ein neuer Garbage Collector ORC wurde eingefĂŒhrt, der einen Algorithmus aus ARC verwendet, jedoch zyklische Referenzen speziell behandelt. Er wird mit der Option âgc:orc aktiviert. Zu den Unterschieden zwischen ARC/ORC gibt es einen hervorragenden Artikel.
Ein Modus fĂŒr strikte Funktionsdefinitionen wurde hinzugefĂŒgt, bei dem eine zusĂ€tzliche ĂberprĂŒfung der MutabilitĂ€t von Objekten aktiviert wird. Dies geschieht ĂŒber die Pragma {.experimental: "strictFuncs".} oder den SchlĂŒssel âexperimental:strictFuncs.
Das SchlĂŒsselwort from kann nun auch als Operator verwendet werden.
Die .noalias-Pragma wurde hinzugefĂŒgt. Diese wird mit dem SchlĂŒsselwort C restrict verknĂŒpft, um die Effizienz zu steigern, die dieses Wort bieten kann.
Konkrete Warnungen können jetzt in Fehler umgewandelt werden durch âwarningAsError[X]:on|off.
Neue Anweisung: nim r main.nim [argsâŠ], die main.nim kompiliert und ausfĂŒhrt und âusenimcache einschlieĂt, sodass das Ergebnis in $nimcache/main$exeExt gespeichert wird, unter Verwendung derselben Logik wie nim c -r, um eine Neukompilierung zu vermeiden, wenn sich die Quellcodes nicht geĂ€ndert haben. Beispiel:
nim r compiler/nim.nim âhelp # beim ersten Mal kompiliert
echo âimport os; echo getCurrentCompilerExe()â | nim r â # dies funktioniert auch
nim r compiler/nim.nim âfullhelp # ohne Neukompilierung
nim r ânimcache:/tmp main # BinĂ€rdatei wurde in /tmp/main gespeichert
Eine neue Option âhint:msgOrigin wurde hinzugefĂŒgt, die anzeigt, wo der Compiler Fehler-/Warnmeldungen erzeugt hat. Dies hilft, wenn unklar ist, woher die Meldung stammt.
Ein neuer Schalter âbackend:js|c|cpp|objc (oder -b:js usw.) wurde hinzugefĂŒgt, um den Backend zu wechseln.
Der Schalter âusenimcache wurde hinzugefĂŒgt, um BinĂ€rdateien in nimcache auszugeben.
Die SchlĂŒssel âoldNewlines, âlaxStrings, âoldast, âoldgensym wurden entfernt.
Das nimsuggest-Tool zeigt jetzt nicht nur die Vorabdeklaration, sondern auch den Standort der Implementierung auf Anfrage def.
ZusĂ€tzlich wurden zahlreiche Ănderungen an der Standardbibliothek sowie viele Bugfixes vorgenommen.
Quelle: linux.org.ru
