Programmiersprache: Nim 1.2.0 mit Versionsemulator
Die statisch typisierte, kompilierte Programmiersprache bringt in Version 1.2 Änderungen an der Bibliothek und eine Umschaltoption auf frühere Versionen.
![Programmiersprache: Nim 1.2.0 empfiehlt Upgrade von v1.0.0](https://heise.cloudimg.io/width/610/q85.png-lossy-85.webp-lossy-85.foil1/_www-heise-de_/imgs/18/2/8/7/4/4/3/2/Code2-d0ea12e1842395ca.jpeg)
- Silke Hahn
Die noch recht junge Programmiersprache Nim ist in Version 1.2.0 erschienen und bringt mehrere neue Funktionen und Bibliothekserweiterungen im Vergleich zum bisherigen Stand. Nim ist eine statisch typisierte, kompilierte Systemprogrammiersprache, die Konzepte aus ausgereiften Sprachen wie Python, Ada und Modula kombiniert und ohne virtuelle Maschine auf unterschiedlichen Plattformen läuft. Sie lässt sich in den meisten Backends und Frontends einsetzen, da sich ihr Code in Richtung der Sprachen C, C++ und JavaScript kompilieren lässt.
Das Release ist offenbar die direkte Nachfolgeversion von Nim 1.0.x, die Nim-Entwickler dürften somit keine streng semantische Versionierung verfolgen. Das neue Release bringt, anders als zum stabilen Release 1.0.0 angekündigt, einige Veränderungen. So wurden 600 neue Commits eingebaut, die derzeit noch nicht auf die Versionen 1.0.x rückportierbar sind. Laut den Entwicklern sollen Änderungen weiterhin auf ein Minimum beschränkt bleiben, zur Fehlerbehebung seien Eingriffe jedoch notwendig gewesen. Das Team hinter Nim empfiehlt Nutzern daher ein Upgrade auf Version 1.2.0.
Multiple Versionen auf Knopfdruck
Eine einfache Umschaltfunktion soll den Wechsel erleichtern: Durch Aufruf von --useVersion
können Entwickler aus Version 1.2.0 heraus ältere Versionen und deren Verhalten simulieren. Eine wesentliche Änderung ist, dass die neue Version bei den Proc-Typen strengere Typkonvertierungen vorgibt. Würde dadurch ein Konflikt mit älterem Code entstehen, soll Nim 1.2.x mit dem Befehl --useVersion:1.0
automatisch das Verhalten von Version 1.0 emulieren, damit es zu keinem Bruch kommt.
Diese und weitere Funktionen dürften besonders für Autoren von Librarys wichtig sein, die ihre Bibliotheken für beide Major Releases von Nim greifbar halten wollen. Zusätzlich ist hier der Befehl when declared
von Belang. Ein praktisches Beispiel zum Importieren von sequtils[/coe] und Entpacken per [code]unzip
-Proc hat das Nim-Team angegeben:
import sequtils
when not declared(unzip):
proc unzip*[S, T](s: openArray[(S, T)]): (seq[S], seq[T]) =
result[0] = newSeq[S](s.len)
result[1] = newSeq[T](s.len)
for i in 0..<s.len:
result[0][i] = s[i][0]
result[1][i] = s[i][1]
let a = @[('a', 1), ('b', 2), ('c', 3)]
let b = unzip(a) # version 1.0 will use the proc declared above
# version 1.2 will use sequtils' proc
assert b == (@['a', 'b', 'c'], @[1, 2, 3])
Performanter Code durch einfache Syntax
Die Nim-Entwickler wollen sich auch weiterhin darauf konzentrieren, die Syntax der Programmiersprache so einfach und leicht verständlich wie möglich zu halten, damit der resultierende Code sich auf allen Plattformen effizient bearbeiten lässt. Dafür erzeugt Nim kleine ausführbare Dateien, die eine einfache Umverteilung ermöglichen, Anleihen anderer Programmiersprachen wie mehrere Konstrukte aus Python, Sichtbarkeitsmarkierungen aus Oberon oder auch die von Pascal bekannten Typabschnitte, die schlankere Definitionen zulassen, sind in Nim eingeflossen. Ein Grundprinzip ist die Unabhängigkeit: Mit Nim erzeugte ausführbare Dateien sollen ohne virtuelle Maschine auf allen gängigen Plattformen laufen.
Ausgehend von einem kompakten Sprachkern eröffnet Nim Entwicklern über Metaprogrammierfunktionen auch Programmierparadigmen, die auf Generics, Templates und Makros aufbauen. Darüber hinaus stellt die Standard-Library async
und await
bereit. Über ein integriertes Backend können Entwickler ihren Code nach JavaScript kompilieren – client- wie auch serverseitig. Ebenso sind Bindings zu C-, C++- und Objective-C-Librarys möglich, sodass Nim-Code von dem umfassenden Ökosystem dieser Sprachfamilie profitieren kann.
Nim 1.2.0 steht samt Anleitung auf der Projektseite zum Download für Windows, Linux und macOS bereit. Alle Änderungen dieser Version stehen in den Release Notes. Mehr Informationen zu der Programmiersprache lassen sich der Projektwebsite entnehmen. Interessierte erwarten dort eine umfangreiche Dokumentation sowie Lernhilfen. (sih)