Release fan de programmeartaal Crystal 1.5

De frijlitting fan 'e programmeartaal Crystal 1.5 is publisearre, wêrfan de ûntwikkelders besykje it gemak fan ûntwikkeling yn' e Ruby-taal te kombinearjen mei de hege applikaasjeprestaasjes karakteristyk fan 'e C-taal. De syntaksis fan Crystal is tichtby, mar net folslein kompatibel mei Ruby, hoewol guon Ruby-programma's sûnder wiziging rinne. De kompilerkoade is skreaun yn Crystal en ferspraat ûnder de Apache 2.0-lisinsje.

De taal brûkt statyske typekontrôle, ymplementearre sûnder de needsaak om de soarten fariabelen en metoadearguminten yn 'e koade eksplisyt oan te jaan. Crystal-programma's wurde kompilearre yn útfierbere bestannen, mei makro's evaluearre en koade generearre op kompilaasjetiid. Yn Crystal-programma's is it mooglik om bindingen te ferbinen skreaun yn C. Parallelisaasje fan koade-útfiering wurdt útfierd mei it kaaiwurd "spawn", wêrtroch jo in eftergrûntaak asynchronysk kinne útfiere, sûnder de haadtried te blokkearjen, yn 'e foarm fan lichtgewicht triedden neamd fezels.

De standertbibleteek biedt in grutte set fan mienskiplike funksjes, ynklusyf ark foar it ferwurkjen fan CSV, YAML, en JSON, komponinten foar it meitsjen fan HTTP-tsjinners, en WebSocket-stipe. Tidens it ûntwikkelingsproses is it handich om it kommando "crystal play" te brûken, dat in webynterface genereart (standert localhost: 8080) foar ynteraktive útfiering fan koade yn 'e Crystal-taal.

Grutte feroaringen:

  • De gearstaller hat in kontrôle tafoege foar de korrespondinsje fan argumintnammen by de ymplemintaasje fan in abstrakte metoade en yn syn definysje. As der in nammemismatch is, wurdt no in warskôging útjûn: abstract class FooAbstract abstract def foo(number : Int32) : Nil end class Foo < FooAbstract def foo(name : Int32) : Nil p name end end 6 | def foo(namme: Int32): Nil ^— Warskôging: posysjeparameter 'namme' komt oerien mei parameter 'nûmer' fan 'e oerskreaune metoade FooAbstract#foo(nûmer: Int32), dy't in oare namme hat en kin ynfloed hawwe op it trochjaan fan neamde arguminten
  • By it tawizen fan in argumint oan in net typearre metoade oan de wearde fan in fariabele, wurdt it argumint no beheind ta it type fan dy fariabele. class Foo @x : Int64 def initialize(x) @x = x # parameter x sil typearre wurde @x ein ein
  • Hjirmei kinne jo annotaasjes tafoegje oan parameters fan metoaden of makro's. def foo(@[MiskienUnused] x); ein # OK
  • Stipe tafoege foar it brûken fan konstanten as yndeksen en nammen yn tuples. KEY = "s" foo = {s: "String", n: 0} set foo[KEY].size
  • Nije triem#delete?-metoaden binne tafoege oan de File API foar it wiskjen fan bestannen en mappen. en Dir#delete?, dy't falsk weromjaan as de triem of map ûntbrekt.
  • De beskerming fan de metoade File.tempfile is fersterke, dy't no gjin nul-tekens yn 'e rigels tastean dy't de triemnamme foarmje.
  • Tafoege omjouwingsfariabele NO_COLOR, dy't útskeakelje kleur markearring yn gearstaller en tolk útfier.
  • Wurk yn tolkmodus is signifikant ferbettere.

Boarne: opennet.ru

Add a comment