Die Programmiersprache Nim 1.4.0 ist erschienen

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

60GB SSD 8Gb DDR4