Liberasyon langaj pwogram Crystal 1.5

Yo te pibliye liberasyon Crystal 1.5 langaj pwogramasyon an, devlopè yo ap eseye konbine konvenyans devlopman nan lang Ruby ak karakteristik pèfòmans segondè aplikasyon lang C a. Sentaks Crystal la tou pre, men li pa konplètman konpatib ak Ruby, byenke kèk pwogram Ruby kouri san modifikasyon. Kòd du a ekri nan Crystal epi distribye anba lisans Apache 2.0.

Lang lan sèvi ak chèk kalite estatik, aplike san yo pa bezwen presize klèman kalite varyab ak agiman metòd nan kòd la. Pwogram Crystal yo konpile nan dosye ègzèkutabl, ak makro evalye ak kòd ki te pwodwi nan tan konpile. Nan pwogram Crystal, li posib pou konekte koneksyon ki ekri nan C. Se paralèlizasyon nan ekzekisyon kòd te pote soti lè l sèvi avèk mo kle "spawn", ki pèmèt ou kouri yon travay background asynchrone, san yo pa bloke fil prensipal la, nan fòm lan nan fil ki lejè yo rele fib.

Bibliyotèk estanda a bay yon seri gwo fonksyon komen, ki gen ladan zouti pou trete CSV, YAML, ak JSON, konpozan pou kreye sèvè HTTP, ak sipò WebSocket. Pandan pwosesis devlopman, li se pratik yo sèvi ak "crystal play" kòmandman an, ki jenere yon koòdone entènèt (localhost: 8080 pa default) pou ekzekisyon entèaktif nan kòd nan lang nan Crystal.

Chanjman prensipal yo:

  • Konpilatè a te ajoute yon chèk pou korespondans non agiman nan aplikasyon an nan yon metòd abstrè ak nan definisyon li yo. Si gen yon non-korespondans, kounye a gen yon avètisman: klas abstrè FooAbstract abstrè def foo(nimewo : Int32) : Nil fen klas Foo < FooAbstract def foo(non : Int32) : Nil p non fen fen 6 | def foo(non : Int32) : Nil ^— Avètisman: paramèt pozisyon 'non' koresponn ak paramèt 'nimewo' nan metòd ranplasman FooAbstract#foo(nimewo: Int32), ki gen yon non diferan epi ki ka afekte pase agiman nonmen.
  • Lè yo bay yon agiman nan yon metòd ki pa tape ak valè yon varyab, kounye a agiman an limite a ki kalite varyab sa a. klas Foo @x : Int64 def initialize(x) @x = x # paramèt x pral tape @x fen fen
  • Pèmèt ou ajoute anotasyon nan paramèt metòd oswa makro. def foo(@[MaybeUnused] x); fini # OK
  • Te ajoute sipò pou itilize konstan kòm endis ak non nan tuples. KLE = "s" foo = {s: "String", n: 0} mete foo[KEY].size
  • Nouvo metòd File#delete? yo te ajoute nan API File pou efase fichye ak repèrtwar. ak Dir#delete?, ki retounen fo si fichye a oswa anyè a manke.
  • Pwoteksyon File.tempfile metòd la te ranfòse, ki kounye a pa pèmèt karaktè nil nan liy ki fòme non fichye a.
  • Te ajoute anviwònman varyab NO_COLOR, ki enfim koulè en nan pwodiksyon konpilatè ak entèprèt.
  • Travay nan mòd entèprèt te amelyore anpil.

Sous: opennet.ru

Add nouvo kòmantè