Eine neue Version der Programmiersprache Nim wurde veröffentlicht, die diesen September ein Jahr seit dem Erscheinen der ersten stabilen Version feiert. stabilen Version.In der Syntax Ă€hnelt die Sprache Python, wĂ€hrend sie in der Leistung fast so gut ist wie C++. Laut FAQ ĂŒbernimmt die Sprache viel von (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. Sie unterstĂŒtzt 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. Aktivierbar mit der Option âgc:orc. Ăber die Unterschiede zwischen ARC/ORC gibt es einen groĂartigen Artikel..
Es wurde ein Modus strenger Funktionsdefinitionen hinzugefĂŒgt, bei dem eine zusĂ€tzliche PrĂŒfung auf MutabilitĂ€t von Objekten erfolgt. Aktivierbar durch Pragma {.experimental: "strictFuncs".} oder durch den SchlĂŒssel âexperimental:strictFuncs.
Das SchlĂŒsselwort from kann jetzt als Operator verwendet werden.
Eine neue Pragma .noalias wurde hinzugefĂŒgt. Sie entspricht dem SchlĂŒsselwort C restrict, um die Effizienz zu erhöhen, die dieses Wort bieten kann.
Bestimmte Warnungen können jetzt durch âwarningAsError[X]:on|off in Fehler umgewandelt werden.
Ein neuer Befehl: nim r main.nim [args...], der main.nim kompiliert und ausfĂŒhrt und âusenimcache beinhaltet, sodass das Ergebnis in $nimcache/main$exeExt gespeichert wird, indem die gleiche Logik wie bei nim c -r angewendet wird, um eine erneute Kompilierung zu vermeiden, wenn sich die Quelltexte nicht geĂ€ndert haben. Beispiel:
nim r compiler/nim.nim âhelp # beim ersten Mal kompiliert
echo âimport os; echo getCurrentCompilerExe()â | nim r â # das funktioniert auch
nim r compiler/nim.nim âfullhelp # ohne erneute Kompilierung
nim r ânimcache:/tmp main # BinĂ€rdatei in /tmp/main gespeichert
Ein neuer Hinweis âhint:msgOrigin wurde hinzugefĂŒgt, der zeigt, wo der Compiler Nachrichten ĂŒber Fehler/Warnungen erzeugt hat. Dies hilft, wenn es nicht offensichtlich ist, woher die Nachricht kam.
Ein Flag âbackend:js|c|cpp|objc (oder -b:js usw.) wurde hinzugefĂŒgt, um den Backend zu wechseln.
Ein Flag âusenimcache wurde hinzugefĂŒgt, um BinĂ€rdateien in nimcache auszugeben.
Die SchlĂŒssel âoldNewlines, âlaxStrings, âoldast, âoldgensym wurden entfernt.
Das Tool nimsuggest zeigt jetzt nicht nur die vorlÀufige Deklaration, sondern auch den Ort der Implementierung auf Anfrage def.
DarĂŒber hinaus wurden zahlreiche Ănderungen an der Standardbibliothek und viele Fehlerbehebungen vorgenommen.
Quelle: linux.org.ru
