Izdaja programskega jezika Crystal 1.2

Objavljena je bila izdaja programskega jezika Crystal 1.2, katerega razvijalci poskušajo združiti udobje razvoja v jeziku Ruby z visoko zmogljivostjo aplikacij, ki je značilna za jezik C. Sintaksa Crystal je blizu, vendar ni popolnoma združljiva z Rubyjem, kljub dejstvu, da nekateri rubyjevi programi delujejo brez predelave. Koda prevajalnika je napisana v Crystalu in se distribuira pod licenco Apache 2.0.

Jezik uporablja statično preverjanje tipa, implementirano brez potrebe po izrecnem podajanju vrst spremenljivk in argumentov metode v kodi. Programi Crystal so prevedeni v izvršljive datoteke z oceno makra in generiranjem kode med prevajanjem. V programih Crystal je dovoljeno povezovanje vezav, napisanih v jeziku C. Paralelizacija izvajanja kode se izvaja s ključno besedo “spawn”, ki omogoča zagon opravila v ozadju v asinhronem načinu, brez blokiranja glavne niti, v obliki lahkih niti, imenovanih vlakna (Fiber).

Standardna knjižnica ponuja velik nabor generičnih funkcij, vključno z orodji za obdelavo CSV, YAML in JSON, komponentami za gradnjo strežnikov HTTP in podporo za WebSocket. Med razvojnim procesom je priročno uporabiti ukaz “crystal play”, ki generira spletni vmesnik (localhost:8080 privzeto) za interaktivno izvajanje kode v jeziku Crystal.

Večje spremembe:

  • Dodana možnost dodelitve podrazreda generičnega razreda elementu nadrejenega razreda. razred Foo(T); končni razred Bar(T) < Foo(T); konec x = Foo x = Bar
  • Makri lahko zdaj uporabljajo podčrtaj, da prezrejo vrednost v zanki for. {% za _, v, i v {1 => 2, 3 => 4, 5 => 6} %} p {{v + i}} {% konec %}
  • Dodana metoda »file_exists?« v makre. za preverjanje obstoja datoteke.
  • Standardna knjižnica zdaj podpira 128-bitna cela števila.
  • Dodan modul Indexable::Mutable(T) z implementacijo naprednih operacij za zbirke, kot sta BitArray in 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 ekstrahiranje določenega imenskega prostora iz XML.
  • Metodi IO#write_utf8 in URI.encode sta bili opuščeni in ju je treba nadomestiti z IO#write_string in URI.encode_path.
  • Podpora za 32-bitno arhitekturo x86 je bila premaknjena na drugo raven (pripravljeni paketi se ne generirajo več). V pripravi je prehod na prvi nivo podpore za arhitekturo ARM64.
  • Delo se nadaljuje, da se zagotovi popolna podpora za platformo Windows. Dodana podpora za vtičnice Windows.
  • Za macOS je bil dodan univerzalni paket, ki deluje tako na napravah s procesorji x86 kot na opremi s čipom Apple M1.

Vir: opennet.ru

Dodaj komentar