Die neue Version von Crystal, der kompilierbaren Programmiersprache mit Ruby-Syntax, ist erschienen. Zu den Hauptmerkmalen gehören ein Laufzeitsystem mit einer integrierten Ereignisschleife, in der alle Ein- und Ausgabeoperationen asynchron sind, Unterstützung für Multithreading (derzeit durch einen Compiler-Flag aktiviert) und eine äußerst einfache und komfortable Arbeit mit C-Bibliotheken.
Mit der Version 0.34.0 beginnt die Sprache offiziell, mit einer festen Gangart auf das erste echte Release (d.h. Version 1.0) zuzusteuern.
In der neuen Version von Crystal sind die folgenden Änderungen und Verbesserungen in der Reihenfolge ihrer Wichtigkeit zu verzeichnen:
Eine neue Logging-Bibliothek wurde zur API hinzugefügt Log, die im Gegensatz zur alten in der Lage ist, Nachrichten an verschiedene Backends zu senden und diese je nach "Quelle" unterschiedlich zu filtern.
Rudimente aus der Welt der Entwicklung in C, Errno und WinError, die für primitive Ein- und Ausgabeoperationen genutzt wurden, verschwinden dank einer Hierarchie von Ausnahmen. IO::Error (dennoch ist niemand bisher daran gehindert, Errno zu verwenden).
Die automatische Einfügung von else nil aus dem Operator case/when/elsewurde entfernt, um das zufällige Auslassen einer der Verzweigungen durch den Entwickler zu vermeiden. when bei der Verarbeitung deterministischer Fälle wie Enums und der Durchlauf von Typen aus Union. Mit anderen Worten, dieser Code wird nicht mehr funktionieren, ohne die Angabe eines weiteren when (wenn Char) oder einer Zuweisung else-Zweige:
a = 1 || 'x' || "foo"
Fall a
wenn Int32
# …
wenn String
# …
end
Compiler-Option disable_overflow nicht mehr verfügbar. Verwenden Sie für Überlaufoperationen die Methoden &+ , &- , &*.
Array#fill fliegt jetzt schneller als eine Kugel, dank des Austauschs der langwierigen Schleife gegen einen einfachen memset;
Shard-Manager (Pakete), die, so paradox es auch klingen mag, shards, verwendet jetzt einen schnelleren und effizienteren Abhängigkeitsauflösungsalgorithmus Molinillo, entdeckt in CocoaPods (Swift) und Builder (Ruby).
Unterstützung für LLVM 10, was theoretisch eine Leistungssteigerung, Stabilität usw. bringen sollte.
… und viele andere, aus meiner subjektiven Sicht, weniger wesentliche Verbesserungen.
Es ist erwähnenswert, dass Crystal eine auf LLVM basierende Sprache ist, die es ermöglicht, Anwendungen manchmal schneller, einfacher und prägnanter zu schreiben als mit ihren interpretierten „Verwandten“, während gleichzeitig ein recht schnelles Binary erzeugt wird. Im Vergleich zu Golang hebt es sich als vollwertige OOP-Sprache mit Unterstützung für Generika und einer sehr einfachen und verständlichen Syntax ab. In seiner Funktionalität ähnelt es in vielerlei Hinsicht Nim, ist aber eindeutig auf die praktische Anwendung „hier und jetzt“ ausgerichtet, weshalb es in seiner API eine Vielzahl gut dokumentierter, nützlicher und qualitativ hochwertiger Werkzeuge bietet, die von den Entwicklern der Sprache unterstützt und daher recht stabil sind.
Quelle: linux.org.ru
