„Crystal“ programavimo kalbos išleidimas 1.2

Paskelbtas Crystal 1.2 programavimo kalbos leidimas, kurio kūrėjai stengiasi suderinti patogumą kurti Ruby kalba su aukštu C kalbai būdingu programų našumu. „Crystal“ sintaksė yra artima „Ruby“, bet ne visiškai su ja suderinama, nepaisant to, kad kai kurios „ruby“ programos veikia be pertvarkymo. Kompiliatoriaus kodas parašytas Crystal ir platinamas pagal Apache 2.0 licenciją.

Kalba naudoja statinį tipo tikrinimą, įdiegtą be būtinybės kode aiškiai nurodyti kintamųjų tipų ir metodo argumentų. „Crystal“ programos yra kompiliuojamos į vykdomuosius failus, su makrokomandų įvertinimu ir kodo generavimu kompiliavimo metu. Crystal programose leidžiama jungti įrišimus, parašytus C kalba. Kodo vykdymo lygiagretinimas atliekamas naudojant raktinį žodį „spawn“, kuris leidžia paleisti foninę užduotį asinchroniniu režimu, neužblokuojant pagrindinės gijos, lengvų gijų, vadinamų pluoštais (Fiber), pavidalu.

Standartinėje bibliotekoje pateikiamas didelis bendrųjų funkcijų rinkinys, įskaitant CSV, YAML ir JSON tvarkymo įrankius, HTTP serverių kūrimo komponentus ir WebSocket palaikymą. Kūrimo procese patogu naudoti komandą „crystal play“, kuri generuoja žiniatinklio sąsają (pagal nutylėjimą localhost:8080) interaktyviam kodo vykdymui Crystal kalba.

Pagrindiniai pakeitimai:

  • Pridėta galimybė priskirti bendrosios klasės poklasį pagrindinės klasės elementui. klasė Foo(T); pabaigos klasė Baras(T) < Foo(T); pabaiga x = Foo x = Baras
  • Dabar makrokomandos gali naudoti apatinį brūkšnį, kad nepaisytų reikšmės cikle. {% _, v, i {1 => 2, 3 => 4, 5 => 6} %} p {{v + i}} {% pabaigos %}
  • Prie makrokomandų pridėtas metodas „file_exists?“. patikrinti, ar yra failas.
  • Standartinė biblioteka dabar palaiko 128 bitų sveikuosius skaičius.
  • Pridėtas Indexable::Mutable(T) modulis su pažangiomis kolekcijų operacijomis, tokiomis kaip BitArray ir Deque. ba = BitArray.new(10) # ba = BitArray[0000000000] ba[0] = true # ba = BitArray[1000000000] ba.rotate!(-1) # ba = BitArray[0100000000]
  • Pridėtas XML::Node#namespace_definition metodas, skirtas konkrečiai vardų erdvei ištraukti iš XML.
  • Metodai IO#write_utf8 ir URI.encode buvo nebenaudojami ir turėtų būti pakeisti IO#write_string ir URI.encode_path.
  • 32 bitų x86 architektūros palaikymas perkeltas į antrą lygį (parengti paketai nebegeneruojami). Ruošiamas ARM64 architektūros perkėlimas į pirmąjį paramos lygį.
  • Toliau dirbama siekiant užtikrinti visišką „Windows“ platformos palaikymą. Pridėtas „Windows“ lizdų palaikymas.
  • Pridėtas universalus paketas, skirtas macOS, veikiantis tiek įrenginiuose su x86 procesoriais, tiek įrangoje su Apple M1 lustu.

Šaltinis: opennet.ru

Добавить комментарий