Release der Programmiersprache Nim 1.4.0

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

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster