D'Verëffentlechung vun der Crystal 1.5 Programmiersprache gouf publizéiert, d'Entwéckler vun deenen versichen d'Bequemlechkeet vun der Entwécklung an der Ruby Sprooch mat der héijer Applikatioun Performance charakteristesch vun der C Sprooch ze kombinéieren. Dem Crystal seng Syntax ass no, awer net voll kompatibel mat Ruby, obwuel e puer Ruby Programmer ouni Ännerung lafen. De Compiler Code ass a Crystal geschriwwen a verdeelt ënner der Apache 2.0 Lizenz.
D'Sprooch benotzt statesch Typprüfung, implementéiert ouni d'Notzung explizit d'Zorte vu Variabelen a Methodargumenter am Code ze spezifizéieren. Crystal Programmer ginn an ausführbar Dateie kompiléiert, mat Makroen evaluéiert a Code generéiert zur Kompiléierungszäit. A Crystal Programmer ass et méiglech Bindungen ze verbannen, déi an C geschriwwe sinn. Paralleliséierung vun der Code Ausféierung gëtt mat dem Schlësselwuert "Spawn" ausgeführt, wat Iech erlaabt eng Hannergrondtask am asynchrone Modus auszeféieren ouni den Haaptfuedem ze blockéieren, a Form vu liichtgewiichtege Fuedem genannt Faseren.
D'Standardbibliothéik bitt eng grouss Rei vu gemeinsame Funktiounen, dorënner Tools fir d'Veraarbechtung vu CSV, YAML a JSON, Komponenten fir HTTP-Server ze kreéieren, a WebSocket Support. Wärend dem Entwécklungsprozess ass et bequem de Kommando "Crystal Play" ze benotzen, deen e Webinterface generéiert (localhost: 8080 par défaut) fir interaktiv Ausféierung vum Code an der Crystal Sprooch.
Main Ännerungen:
- De Compiler huet e Scheck bäigefüügt fir d'Korrespondenz vun Argumentnimm bei der Ëmsetzung vun enger abstrakter Method an a senger Definitioun. Wann et en Numm Mëssverständnis gëtt, gëtt elo eng Warnung erausginn: abstrakt Klass FooAbstract abstrakt def foo(Nummer: Int32): Null Enn Klass Foo < FooAbstract def foo(Numm: Int32): Null p Numm Enn Enn 6 | def foo(Numm: Int32): Null ^— Opgepasst: Positiounsparameter 'Numm' entsprécht dem Parameter 'Nummer' vun der iwwerdriwwener Method FooAbstract#foo(Nummer: Int32), deen en aneren Numm huet a kann den Numm Argument duerchgoen
- Wann Dir en Argument un eng ontypéiert Method un de Wäert vun enger Variabel zouginn, ass d'Argument elo op d'Aart vun där Variabel limitéiert. class Foo @x : Int64 def initialize(x) @x = x # Parameter x getippt @x end end
- Erlaabt Iech Annotatiounen un Parameteren vu Methoden oder Makroen ze addéieren. def foo(@[MaybeUnused] x); Enn # OK
- Zousätzlech Ënnerstëtzung fir Konstanten als Indizes an Nimm an Tuples ze benotzen. KEY = "s" foo = {s: "String", n: 0} setzt foo[KEY].size
- Nei File#delete? Methoden goufen der Datei API bäigefüügt fir Dateien an Verzeichnisser ze läschen. an Dir#delete?, déi falsch zréckginn wann de Fichier oder den Dossier fehlt.
- De Schutz vun der File.tempfile Method gouf verstäerkt, wat elo keng Null Zeechen an de Linnen erlaabt, déi den Dateinumm bilden.
- Zousätzlech Ëmfeldvariabel NO_COLOR, déi Faarfbeliichtung am Compiler an Dolmetscheroutput deaktivéiert.
- D'Aarbecht am Dolmetschermodus ass wesentlech verbessert ginn.
Source: opennet.ru