Rilaxx tal-lingwa ta' programmar Crystal 1.5

Ġie ppubblikat ir-rilaxx tal-lingwa ta 'programmar Crystal 1.5, li l-iżviluppaturi tagħha qed jippruvaw jgħaqqdu l-konvenjenza tal-iżvilupp fil-lingwa Ruby mal-karatteristika ta' prestazzjoni għolja tal-applikazzjoni tal-lingwa C. Is-sintassi ta' Crystal hija qrib, iżda mhux kompatibbli b'mod sħiħ ma', Ruby, għalkemm xi programmi Ruby jaħdmu mingħajr modifika. Il-kodiċi tal-kompilatur huwa miktub fi Crystal u mqassam taħt il-liċenzja Apache 2.0.

Il-lingwa tuża verifika tat-tip statiku, implimentata mingħajr il-ħtieġa li tispeċifika b'mod espliċitu t-tipi ta 'varjabbli u argumenti tal-metodu fil-kodiċi. Il-programmi Crystal huma kkompilati f'fajls eżekutibbli, b'macros evalwati u kodiċi ġġenerat fil-ħin tal-kompilazzjoni. Fil-programmi Crystal, huwa possibbli li tikkonnettja rbit miktuba f'Ċ. Il-parallelizzazzjoni tal-eżekuzzjoni tal-kodiċi titwettaq bl-użu tal-kelma prinċipali "spawn", li tippermettilek tmexxi kompitu fl-isfond b'mod asinkroniku, mingħajr ma timblokka l-ħajt prinċipali, fil-forma ta 'ħjut ħfief imsejħa fibri.

Il-librerija standard tipprovdi sett kbir ta 'funzjonijiet komuni, inklużi għodod għall-ipproċessar ta' CSV, YAML, u JSON, komponenti għall-ħolqien ta 'servers HTTP, u appoġġ WebSocket. Matul il-proċess ta 'żvilupp, huwa konvenjenti li tuża l-kmand "plays tal-kristall", li jiġġenera interface tal-web (localhost:8080 b'mod awtomatiku) għall-eżekuzzjoni interattiva tal-kodiċi fil-lingwa Crystal.

Bidliet ewlenin:

  • Il-kompilatur żied verifika għall-korrispondenza tal-ismijiet tal-argumenti fl-implimentazzjoni ta 'metodu astratt u fid-definizzjoni tiegħu. Jekk ikun hemm nuqqas ta' qbil fl-isem, issa tinħareġ twissija: klassi astratta FooAbstract abstract def foo(numru : Int32) : Nil end class Foo < FooAbstract def foo(name : Int32) : Nil p name end end 6 | def foo(name : Int32) : Nil ^— Twissija: parametru pożizzjonali 'name' jikkorrispondi mal-parametru 'numru' tal-metodu overridden FooAbstract#foo(numru : Int32), li għandu isem differenti u jista' jaffettwa l-passaġġ tal-argument imsemmi
  • Meta tassenja argument għal metodu mhux ittajpjat għall-valur ta 'varjabbli, l-argument issa huwa ristrett għat-tip ta' dik il-varjabbli. klassi Foo @x : Int64 def initialize(x) @x = x # parametru x se jkun ittajpjat @x end end
  • Jippermettilek iżżid annotazzjonijiet ma' parametri ta' metodi jew makro. def foo(@[MaybeUnused] x); tmiem # OK
  • Appoġġ miżjud għall-użu ta 'kostanti bħala indiċi u ismijiet f'tuples. KEY = "s" foo = {s: "String", n: 0} tpoġġi foo[KEY].size
  • Ġew miżjuda metodi ġodda ta' File#delete fl-API tal-Fajl għat-tħassir ta' fajls u direttorji. u Dir#delete?, li jirritorna falza jekk il-fajl jew id-direttorju jkun nieqes.
  • Il-protezzjoni tal-metodu File.tempfile ġiet imsaħħa, li issa ma tippermettix karattri nulli fil-linji li jiffurmaw l-isem tal-fajl.
  • Miżjud varjabbli ambjentali NO_COLOR, li tiddiżattiva l-enfasi tal-kulur fl-output tal-kompilatur u tal-interpretu.
  • Ix-xogħol fil-modalità interpretu tjieb b'mod sinifikanti.

Sors: opennet.ru

Żid kumment