Veröffentlichung der Programmiersprache Crystal 1.6

Die Version 1.6 der Programmiersprache Crystal wurde veröffentlicht. Die Entwickler bemühen sich, die Benutzerfreundlichkeit von Ruby mit der hohen Anwendungsleistung von C zu kombinieren. Die Syntax von Crystal ist Ruby ähnlich, jedoch nicht vollständig kompatibel, auch wenn einige Ruby-Programme ohne Anpassungen ausgeführt werden können. Der Compiler ist in Crystal geschrieben und wird unter der Apache 2.0-Lizenz verbreitet.

Die Sprache verwendet eine statische Typprüfung, die ohne die Notwendigkeit der expliziten Angabe von Variablen- und Methodenargumenttypen im Code implementiert ist. Programme in Crystal werden in ausführbare Dateien kompiliert, wobei Makros berechnet und Code zur Kompilierungszeit generiert werden. In Crystal-Programmen können Bindungen, die in C geschrieben sind, eingebunden werden. Die Parallelisierung des Codes erfolgt mithilfe des Schlüsselworts „spawn“, das es ermöglicht, einen Hintergrundtask asynchron zu starten, ohne den Hauptthread zu blockieren, in Form von leichten Threads, die als Fibers bezeichnet werden.

Die Standardbibliothek bietet eine umfangreiche Sammlung typischer Funktionen, darunter Werkzeuge zur Verarbeitung von CSV, YAML und JSON, sowie Komponenten zur Erstellung von HTTP-Servern und zur Unterstützung von WebSocket. Bei der Entwicklung ist das Verwenden des Befehls „crystal play“ praktisch, welcher eine Web-Oberfläche (standardmäßig localhost:8080) für die interaktive Ausführung von Code in der Sprache Crystal bereitstellt.

Wesentliche Änderungen:

  • Die Logik der Überladung wurde geändert – bei der Überladung werden jetzt Typenvereinigungen vor Einzeltypen betrachtet. Beispielsweise gibt der folgende Code nun den Wert true zurück und nicht 'a', wie in früheren Versionen. module Foo(T) end class Bar1 include Foo(Int32) end class Bar2 include Foo(Int32) end def foo(x : Foo(Int32)) 'a' end def foo(x : Bar1 | Bar2) true end foo(Bar1.new)
  • Für alle Plattformen wurden die Methoden #system_echo und #system_raw implementiert, wodurch die Makros FileDescriptor „cooked_from_tc_mode!“, „noecho_from_tc_mode!“ und „raw_from_tc_mode!“ als veraltet gelten. Die Methoden #noecho! und #raw! geben nun nil zurück, anstatt den Wert von LibC.tcsetattr.
  • Die File-API wurde verbessert und gibt jetzt ein internes Objekt zurück (File::Info anstelle von Crystal::System::FileInfo).
  • Die Leistung im Interpretiermodus wurde verbessert. Zur Aktivierung der Unterstützung für den Interpretiermodus kann der Befehl „make interpreter = 1“ verwendet werden.
  • Der Compiler und die Standardbibliothek wurden um neue Leistungsoptimierungen erweitert.
  • Die Unterstützung für die Windows-Plattform im Compiler wurde verbessert, einschließlich der Möglichkeit, den Interpretiermodus zu bauen und Mutex zu unterstützen.
  • Unterstützung für Unicode 15.0 wurde hinzugefügt und ein API zur Normalisierung von Unicode-Sequenzen implementiert.

Quelle: opennet.ru

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster