Version 1.4.0 der Programmiersprache Nim

Eine neue Version der Systemprogrammiersprache Nim wurde veröffentlicht, die im September dieses Jahres ihr einjähriges Jubiläum feierte. erste stabile Version. Die Sprache ähnelt in der Syntax Python und ähnelt in der Leistung fast C++. Entsprechend FAQ Die Sprache lehnt sich stark an (in der Reihenfolge ihres Beitrags): Modula 3, Delphi, Ada, C++, Python, Lisp, Oberon.


Funktioniert überall dank der Kompilierungsfähigkeit in C/C++/Objective-C/JS. Es unterstützt Makros, OOP, Generika, und Abzüge, Hot-Code-Austausch und vieles mehr. Lizenz: MIT.

Die wichtigsten Änderungen:

  • Es gibt einen neuen ORC-Garbage Collector, der den Algorithmus von ARC nutzt, aber gleichzeitig Zirkelverweise auf besondere Weise behandelt. Aktiviert durch die Option -gc:orc. Über die ARC/ORC-Unterschiede es gibt einen tollen Artikel.

  • Es wurde ein Modus für strikte Funktionsdefinitionen hinzugefügt, der eine zusätzliche Prüfung auf Objektveränderlichkeit ermöglicht. Aktiviert über das Pragma {.experimental: "strictFuncs".} oder über den Schlüssel --experimental:strictFuncs.

  • Das Schlüsselwort from kann jetzt als Operator verwendet werden.

  • .noalias-Pragma hinzugefügt. Es wird dem C-Schlüsselwort „restrict“ zugeordnet, um die Effizienz zu erhöhen, die das Schlüsselwort bieten kann.

  • Spezifische Warnungen können nun über --warningAsError[X]:on|off in Fehler umgewandelt werden.

  • Neuer Befehl: nim r main.nim [args...], der main.nim kompiliert und ausführt und --usenimcache einschließt, sodass das Ergebnis in $nimcache/main$exeExt gespeichert wird, wobei dieselbe Logik wie bei nim c verwendet wird - r aus der Neukompilierung entfernen, wenn sich die Quellen nicht geändert haben. Beispiel:

nim r Compiler/nim.nim --help # zum ersten Mal kompiliert
echo 'import os; echo getCurrentCompilerExe()' | nim r - # das funktioniert auch
nim r Compiler/nim.nim --fullhelp # ohne Neukompilierung
nim r – nimcache:/tmp main # Binärdatei gespeichert in /tmp/main

  • Es wurde ein neuer Hinweis -hint:msgOrigin hinzugefügt, der anzeigt, wo der Compiler Fehler-/Warnmeldungen generiert hat. Dies ist hilfreich, wenn nicht offensichtlich ist, woher die Nachricht stammt.

  • Flag —backend:js|c|cpp|objc (oder -b:js usw.) hinzugefügt, um das Backend zu ändern.

  • Flag --usenimcache hinzugefügt, um Binärdateien in Nimcache auszugeben.

  • Entfernte Schlüssel: --oldNewlines, --laxStrings, --oldast, --oldgensym

  • Das Dienstprogramm nimsuggest zeigt jetzt nicht nur die Vordeklaration, sondern auch den Implementierungsort für eine Def-Anfrage an.

Darüber hinaus wurden viele Änderungen an der Standardbibliothek hinzugefügt und viele Fehler behoben.

Source: linux.org.ru