Izdanje programskog jezika Crystal 1.2

Objavljeno je izdanje programskog jezika Crystal 1.2, čiji programeri pokušavaju kombinirati pogodnost razvoja u jeziku Ruby s visokom izvedbom aplikacije svojstvenom jeziku C. Sintaksa Crystala je bliska, ali nije potpuno kompatibilna s Rubyjem, unatoč činjenici da se neki ruby ​​programi pokreću bez prerade. Kod prevoditelja napisan je u Crystalu i distribuiran pod licencom Apache 2.0.

Jezik koristi statičku provjeru tipa, implementiranu bez potrebe za eksplicitnim određivanjem vrsta varijabli i argumenata metode u kodu. Crystal programi se kompajliraju u izvršne datoteke, s makro procjenom i generiranjem koda tijekom kompilacije. U programima Crystal dopušteno je spajanje veza napisanih u C jeziku. Paralelizacija izvršavanja koda provodi se pomoću ključne riječi "spawn", koja vam omogućuje pokretanje pozadinskog zadatka u asinkronom načinu rada, bez blokiranja glavne niti, u obliku laganih niti koje se nazivaju vlakna (Fiber).

Standardna biblioteka pruža veliki skup generičkih funkcija, uključujući alate za rukovanje CSV-om, YAML-om i JSON-om, komponente za izgradnju HTTP poslužitelja i podršku za WebSocket. Tijekom procesa razvoja zgodno je koristiti naredbu “crystal play” koja generira web sučelje (localhost:8080 prema zadanim postavkama) za interaktivno izvršavanje koda u jeziku Crystal.

Velike promjene:

  • Dodana je mogućnost dodjele podklase generičke klase elementu nadređene klase. klasa Foo(T); završna klasa Bar(T) < Foo(T); kraj x = Foo x = Bar
  • Makronaredbe sada mogu koristiti podvlaku za ignoriranje vrijednosti u for petlji. {% za _, v, i u {1 => 2, 3 => 4, 5 => 6} %} p {{v + i}} {% kraj %}
  • Dodana metoda “file_exists?” makronaredbama. za provjeru postojanja datoteke.
  • Standardna biblioteka sada podržava 128-bitne cijele brojeve.
  • Dodan Indexable::Mutable(T) modul s implementacijom naprednih operacija za zbirke kao što su BitArray i Deque. ba = BitArray.new(10) # ba = BitArray[0000000000] ba[0] = true # ba = BitArray[1000000000] ba.rotate!(-1) # ba = BitArray[0100000000]
  • Dodana metoda XML::Node#namespace_definition za izdvajanje određenog prostora imena iz XML-a.
  • Metode IO#write_utf8 i URI.encode su zastarjele i treba ih zamijeniti IO#write_string i URI.encode_path.
  • Podrška za 32-bitnu x86 arhitekturu premještena je na drugu razinu (više se ne generiraju gotovi paketi). U pripremi je prijenos na prvu razinu podrške za ARM64 arhitekturu.
  • Rad se nastavlja kako bi se osigurala puna podrška za Windows platformu. Dodana podrška za Windows utičnice.
  • Za macOS je dodan univerzalni paket koji radi i na uređajima s x86 procesorima i na opremi s Apple M1 čipom.

Izvor: opennet.ru

Dodajte komentar