Veröffentlichung der Programmiersprache Crystal 1.2

Die Veröffentlichung der Programmiersprache Crystal 1.2 wurde veröffentlicht, deren Entwickler versuchen, den Komfort der Entwicklung in der Ruby-Sprache mit der hohen Anwendungsleistung der C-Sprache zu kombinieren. Die Syntax von Crystal ähnelt Ruby, ist jedoch nicht vollständig mit diesem kompatibel, obwohl einige Ruby-Programme ohne Änderungen ausgeführt werden können. Der Compilercode ist in Crystal geschrieben und wird unter der Apache 2.0-Lizenz vertrieben.

Die Sprache verwendet eine statische Typprüfung, die implementiert wird, ohne dass die Typen von Variablen und Methodenargumenten im Code explizit angegeben werden müssen. Crystal-Programme werden in ausführbare Dateien kompiliert, wobei zur Kompilierungszeit Makros ausgewertet und Code generiert werden. In Crystal-Programmen ist es möglich, in C geschriebene Bindungen zu verbinden. Die Parallelisierung der Codeausführung erfolgt mithilfe des Schlüsselworts „spawn“, mit dem Sie eine Hintergrundaufgabe asynchron ausführen können, ohne den Hauptthread zu blockieren, und zwar in Form von leichtgewichtigen Threads, sogenannten Fibers.

Die Standardbibliothek bietet einen großen Satz allgemeiner Funktionen, darunter Tools zur Verarbeitung von CSV, YAML und JSON, Komponenten zum Erstellen von HTTP-Servern und WebSocket-Unterstützung. Während des Entwicklungsprozesses ist es praktisch, den Befehl „crystal play“ zu verwenden, der eine Webschnittstelle (standardmäßig localhost:8080) für die interaktive Ausführung von Code in der Crystal-Sprache generiert.

Wichtigste Änderungen:

  • Es wurde die Möglichkeit hinzugefügt, eine Unterklasse einer generischen Klasse einem Element einer übergeordneten Klasse zuzuweisen. Klasse Foo(T); Endklasse Bar(T) < Foo(T); Ende x = Foo x = Bar
  • Makros können jetzt einen Unterstrich verwenden, um einen Wert in einer for-Schleife zu ignorieren. {% für _, v, i in {1 => 2, 3 => 4, 5 => 6} %} p {{v + i}} {% end %}
  • Methode „file_exists?“ zu Makros hinzugefügt. um die Existenz einer Datei zu überprüfen.
  • Die Standardbibliothek unterstützt jetzt 128-Bit-Ganzzahlen.
  • Indexable::Mutable(T)-Modul mit Implementierung erweiterter Operationen für Sammlungen wie BitArray und Deque hinzugefügt. ba = BitArray.new(10) # ba = BitArray[0000000000] ba[0] = true # ba = BitArray[1000000000] ba.rotate!(-1) # ba = BitArray[0100000000]
  • Methode XML::Node#namespace_definition hinzugefügt, um einen bestimmten Namespace aus XML zu extrahieren.
  • Die Methoden IO#write_utf8 und URI.encode sind veraltet und sollten durch IO#write_string und URI.encode_path ersetzt werden.
  • Die Unterstützung für die 32-Bit-x86-Architektur wurde auf die zweite Ebene verschoben (vorgefertigte Pakete werden nicht mehr generiert). Eine Überführung in die erste Stufe der Unterstützung der ARM64-Architektur ist in Vorbereitung.
  • Es wird weiterhin daran gearbeitet, die vollständige Unterstützung der Windows-Plattform sicherzustellen. Unterstützung für Windows-Sockets hinzugefügt.
  • Für macOS wurde ein universelles Paket hinzugefügt, das sowohl auf Geräten mit x86-Prozessoren als auch auf Geräten mit dem Apple M1-Chip funktioniert.

Source: opennet.ru

Kommentar hinzufügen