Izdanje Crystal programskog jezika 1.2

Objavljeno je izdanje programskog jezika Crystal 1.2, čiji programeri pokušavaju kombinirati pogodnost razvoja na jeziku Ruby s visokim performansama aplikacija svojstvenim jeziku C. Sintaksa Crystal-a je bliska Ruby-u, ali nije potpuno kompatibilna s njim, uprkos činjenici da se neki ruby ​​programi pokreću bez prerade. Kod kompajlera je napisan u Crystal-u i distribuiran pod licencom Apache 2.0.

Jezik koristi statičku provjeru tipa, implementiranu bez potrebe za eksplicitnim specificiranjem tipova varijabli i argumenata metoda u kodu. Crystal programi se kompajliraju u izvršne datoteke, s makro evaluacijom i generiranjem koda u vrijeme kompajliranja. U Crystal programima je dozvoljeno povezivanje veza napisanih u C jeziku. Paralelizacija izvršavanja koda vrši se pomoću ključne riječi “spawn” koja vam omogućava da pokrenete pozadinski zadatak u asinhronom modu, bez blokiranja glavne niti, u obliku laganih niti zvanih vlakna (Fiber).

Standardna biblioteka pruža veliki skup generičkih funkcija, uključujući alate za rukovanje CSV, YAML i JSON, komponente za izgradnju HTTP servera i podršku za WebSocket. Tokom procesa razvoja, zgodno je koristiti naredbu „crystal play“, koja generiše web interfejs (localhost:8080 po defaultu) za interaktivno izvršavanje koda na jeziku Crystal.

Glavne promjene:

  • Dodata mogućnost dodjeljivanja podklase generičke klase elementu roditeljske klase. klasa Foo(T); krajnja klasa Bar(T) < Foo(T); kraj x = Foo x = Bar
  • Makroi sada mogu koristiti donju crtu da ignorišu vrijednost u for petlji. {% za _, v, i u {1 => 2, 3 => 4, 5 => 6} %} p {{v + i}} {% kraj %}
  • Dodata metoda „file_exists?“ makroima. da provjerite postojanje datoteke.
  • Standardna biblioteka sada podržava 128-bitne cijele brojeve.
  • Dodan modul Indexable::Mutable(T) sa implementacijom naprednih operacija za kolekcije 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]
  • Dodan metod 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 je premještena na drugi nivo (gotovi paketi se više ne generišu). U pripremi je prelazak na prvi nivo podrške za ARM64 arhitekturu.
  • Nastavlja se rad na osiguravanju pune podrške za Windows platformu. Dodata podrška za Windows utičnice.
  • Dodan je univerzalni paket za macOS koji radi i na uređajima sa x86 procesorima i na opremi sa Apple M1 čipom.

izvor: opennet.ru

Dodajte komentar