Crystal 0.34.0 ist erschienen.

Die neue Version von Crystal, einer kompilierbaren Programmiersprache mit Ruby-Syntax, hat wichtige Eigenschaften: zur Laufzeit gibt es eine "eingebaute" Event-Loop, in der alle Eingabe- und Ausgabeoperationen asynchron sind, Unterstützung für Multithreading (derzeit wird dies bei der Kompilierung über ein Flag aktiviert) und eine äußerst einfache und benutzerfreundliche Arbeit mit C-Bibliotheken.

Ab Version 0.34.0 beginnt die Sprache offiziell, entschlossen auf die erste echte Version (d.h. Version 1.0) zuzugehen.

In der neuen Crystal-Version sind folgende Änderungen und Verbesserungen in der Reihenfolge ihrer Wichtigkeit zu vermerken:

  • Eine neue Protokollbibliothek wurde zur API hinzugefügt Log, die im Gegensatz zur alten in der Lage ist, Nachrichten an verschiedene Backends zu leiten und diese Nachrichten je nach "Quelle" unterschiedlich zu filtern.

  • Relikte aus der Welt der C-Entwicklung, Errno und WinError, die für grundlegende Eingabe- und Ausgabeoperationen verwendet wurden, gehören dank der Hierarchie der Ausnahmen der Vergangenheit an IO::Error (niemand verbietet es jedoch, Errno weiterhin zu verwenden).

  • Die automatische Einfügung von else nil aus der Anweisung case/when/elsewurde entfernt. Dies wurde getan, um das versehentliche Übersehen eines Branches durch den Entwickler auszuschließen when bei der Übereinstimmung mit deterministischen Fällen wie Enums und beim Durchlaufen von Typen aus Union. Einfacher ausgedrückt, wird solch ein Code nicht mehr funktionieren, ohne einen weiteren when (when Char) oder einen else-Branch anzugeben:

a = 1 || ‘x’ || "foo"
case a
when Int32
# …
when String
# …
end

  • Die Compiler-Option disable_overflow ist nicht mehr verfügbar. Für Überlaufoperationen verwenden Sie die Methoden &+, &-, &*.

  • Array#fill ist jetzt blitzschnell, dank des Austausches der unangenehmen Schleife durch einen einfachen memset;

  • Der Shard-Manager (Pakete), die, wie paradox es auch sein mag, shards, verwendet jetzt einen schnelleren und effizienteren Algorithmus zur Befriedigung von Abhängigkeiten, Molinillo, der aus CocoaPods (Swift) und Builder (Ruby) übernommen wurde.

  • Unterstützung hinzugefügt für LLVM 10, was uns theoretisch einen Anstieg der Leistung, Stabilität usw. bringen sollte.

… und viele andere, meiner subjektiven Meinung nach weniger wesentliche Verbesserungen.

Es ist zu beachten, 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" und dabei ein recht schnelles Binärfile zu erhalten. Im Vergleich zu Golang bietet es eine vollwertige OOP, Unterstützung für Generics und eine sehr einfache sowie verständliche Syntax. In seiner Funktion ist es dem Nim sehr ähnlich, ist jedoch ganz offensichtlich auf die praktische Anwendung "hier und jetzt" ausgerichtet, wodurch es eine Vielzahl gut dokumentierter, nützlicher und qualitativ hochwertiger Werkzeuge in seiner API-Bibliothek bietet, die von den Entwicklern der Sprache unterstützt werden und daher sehr stabil sind.

Quelle: linux.org.ru

60GB SSD 8Gb DDR4