Eldono de la Crystal programlingvo 1.2

La eldono de la programlingvo Crystal 1.2 estis publikigita, kies programistoj provas kombini la oportunon disvolvi en la Ruby-lingvo kun la alta aplikaĵa rendimento eneca en la C-lingvo. La sintakso de Crystal estas proksima, sed ne tute kongrua kun Ruby, malgraŭ la fakto, ke iuj rubenaj programoj funkcias sen reverkado. La kompilkodo estas skribita en Crystal kaj distribuita sub la licenco Apache 2.0.

La lingvo uzas statikan tipkontroladon, efektivigitan sen la bezono eksplicite specifi la specojn de variabloj kaj metodoargumentojn en la kodo. Kristalaj programoj estas kompilitaj en ruleblajn dosierojn, kun makro-taksado kaj kodgenerado ĉe kompiltempo. En Crystal-programoj, estas permesite konekti ligojn skribitajn en C-lingvo. Paraleligo de koda ekzekuto estas efektivigita per la ŝlosilvorto "spawn", kiu ebligas al vi plenumi fonan taskon en nesinkrona reĝimo, sen bloki la ĉefan fadenon, en formo de malpezaj fadenoj nomataj fibroj (Fibro).

La norma biblioteko disponigas grandan aron da senmarkaj funkcioj, inkluzive de iloj por pritrakti CSV, YAML, kaj JSON, komponantojn por konstrui HTTP-servilojn kaj WebSocket-subtenon. Dum la disvolva procezo, estas oportune uzi la komandon "kristalludado", kiu generas retan interfacon (localhost:8080 defaŭlte) por interaga koda ekzekuto en la Crystal-lingvo.

Ĉefaj ŝanĝoj:

  • Aldonita la kapablo asigni subklason de senmarka klaso al elemento de gepatra klaso. klaso Foo(T); finklaso Bar(T) < Foo(T); fino x = Foo x = Trinkejo
  • Makrooj nun povas uzi substrekon por ignori valoron en for-buklo. {% por _, v, i en {1 => 2, 3 => 4, 5 => 6} %} p {{v + i}} {% fino %}
  • Aldonita metodo "file_exists?" al makrooj. por kontroli la ekziston de dosiero.
  • La norma biblioteko nun subtenas 128-bitajn entjerojn.
  • Aldonita Indexable::Mutable(T) modulo kun efektivigo de altnivelaj operacioj por kolektoj kiel BitArray kaj Deque. ba = BitArray.new(10) # ba = BitArray[0000000000] ba[0] = vera # ba = BitArray[1000000000] ba.rotate!(-1) # ba = BitArray[0100000000]
  • Aldonita XML::Node#namespace_definition-metodo por ĉerpi specifan nomspacon el XML.
  • La IO#write_utf8 kaj URI.encode-metodoj estis malrekomenditaj kaj devus esti anstataŭigitaj per IO#write_string kaj URI.encode_path.
  • Subteno por 32-bita x86-arkitekturo estis movita al la dua nivelo (pretaj pakaĵoj ne plu estas generitaj). Transdono al la unua nivelo de subteno por la ARM64-arkitekturo estas preparita.
  • Laboro daŭre certigas plenan subtenon por la Vindoza platformo. Aldonita subteno por Vindozaj ingoj.
  • Universala pakaĵo estis aldonita por macOS, funkcianta kaj sur aparatoj kun x86-procesoroj kaj sur ekipaĵo kun la Apple M1-blato.

fonto: opennet.ru

Aldoni komenton