Verëffentlechung vun der Crystal Programméiersprooch 1.5

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

Setzt e Commentaire