Crystal programazio-lengoaia 1.5

Crystal 1.5 programazio-lengoaiaren oharra argitaratu da, eta horien garatzaileak Ruby lengoaiaren garapenaren erosotasuna eta C lengoaiaren aplikazio-errendimendu handiko ezaugarria uztartzen saiatzen ari dira. Crystal-ren sintaxia Ruby-tik hurbil dago, baina ez da guztiz bateragarria, Ruby-ren programa batzuk aldatu gabe exekutatzen diren arren. Konpiladorearen kodea Crystal-en idatzita dago eta Apache 2.0 lizentziapean banatzen da.

Hizkuntzak motaren egiaztapen estatikoa erabiltzen du, kodean aldagai motak eta metodo argumentuak esplizituki zehaztu beharrik gabe inplementatuta. Crystal programak fitxategi exekutagarrietan konpilatzen dira, makroekin ebaluatu eta kodea konpilazio garaian sortzen da. Crystal programetan, C-n idatzitako loturak konekta daitezke. Kodearen exekuzioaren paralelizazioa "spawn" gako-hitza erabiliz egiten da, atzeko planoko zeregin bat modu asinkronoan exekutatzeko aukera ematen duena, hari nagusia blokeatu gabe, zuntz izeneko hari arinetan.

Liburutegi estandarrak funtzio komun ugari eskaintzen ditu, besteak beste, CSV, YAML eta JSON prozesatzeko tresnak, HTTP zerbitzariak sortzeko osagaiak eta WebSocket euskarria. Garapen-prozesuan zehar, komenigarria da "crystal play" komandoa erabiltzea, web interfaze bat sortzen duena (localhost:8080 lehenespenez) kodearen exekuzio interaktiborako Crystal hizkuntzan.

Aldaketa nagusiak:

  • Konpilatzaileak argumentu-izenen korrespondentziaren egiaztapena gehitu du metodo abstraktu baten ezarpenean eta bere definizioan. Izen bat ez datorrela, abisua ematen da orain: abstraktua klase FooAbstract abstraktua def foo(zenbakia : Int32) : Nil end klase Foo < FooAbstract def foo (izena : Int32) : Nil p name end end 6 | def foo(izena: Int32): Nil ^β€” Abisua: 'izena' posizio-parametroa gainidatzitako metodoaren 'zenbakia' parametroari dagokio FooAbstract#foo(zenbakia: Int32), zeinak beste izen bat dauka eta argumentu izendunen pasatzean eragina izan dezake.
  • Idatzi gabeko metodo bati argumentu bat aldagai baten balioari esleitzean, orain argumentua aldagai horren motara mugatzen da. klase Foo @x : Int64 def initialize(x) @x = x # parametroa x idatziko da @x end end
  • Metodoen edo makroen parametroei oharrak gehitzeko aukera ematen du. def foo(@[MaybeUnsed] x); amaiera # Ados
  • Konstanteak tuplatan indize eta izen gisa erabiltzeko laguntza gehitu da. KEY = "s" foo = {s: "String", n: 0} foo[KEY].size jartzen du
  • Fitxategi#ezabatu? metodo berriak gehitu dira Fitxategien APIra fitxategiak eta direktorioak ezabatzeko. eta Dir#ezabatu?, zeinak false itzultzen dute fitxategia edo direktorioa falta bada.
  • File.tempfile metodoaren babesa indartu egin da, eta orain ez ditu karaktere nulurik onartzen fitxategiaren izena osatzen duten lerroetan.
  • NO_COLOR ingurune-aldagaia gehitu da, eta horrek kolore nabarmentzea desgaitzen du konpiladore eta interpretearen irteeran.
  • Interprete moduan lana nabarmen hobetu da.

Iturria: opennet.ru

Gehitu iruzkin berria