Izid prevajalnika programskega jezika Vala 0.54.0

Izšla je nova različica prevajalnika programskih jezikov Vala 0.54.0. Jezik Vala je objektno usmerjen programski jezik, ki zagotavlja sintakso, podobno C# ali Javi. Koda Vala je prevedena v program C, ki ga nato standardni prevajalnik C prevede v binarno datoteko in izvede s hitrostjo aplikacije, prevedene v objektno kodo ciljne platforme. Programe je mogoče izvajati v skriptnem načinu. Jezik se razvija pod okriljem projekta GNOME. Kot objektni model se uporablja Gobject (Glib Object System). Koda prevajalnika se distribuira pod licenco LGPLv2.1.

Jezik ima podporo za introspekcijo, lambda funkcije, vmesnike, delegate in zaprtja, signale in reže, izjeme, lastnosti, neničelne tipe, sklepanje o tipih za lokalne spremenljivke (var). Upravljanje pomnilnika se izvaja na podlagi štetja referenc. Za jezik je bila razvita posplošena programska knjižnica libgee, ki omogoča ustvarjanje zbirk za tipe podatkov po meri. Podprto je oštevilčenje elementov zbirke z uporabo stavka foreach. Programiranje grafičnih programov poteka z uporabo grafične knjižnice GTK.

Komplet ima veliko število povezav s knjižnicami v jeziku C. Prevajalnik Vala nudi podporo za jezik Genie, ki ponuja podobne zmogljivosti, vendar s sintakso, ki se zgleduje po programskem jeziku Python. Programi, kot so e-poštni odjemalec Geary, grafična lupina Budgie, program za organizacijo fotografij in video datotek Shotwell in drugi, so napisani v jeziku Vala. Jezik se aktivno uporablja pri razvoju osnovne distribucije OS.

Glavne novosti:

  • Dodana podpora za delegate s spremenljivim številom parametrov;
  • Dodan profil LIBC, ki je sinonim za profil POSIX;
  • Izboljšano generiranje v načinu profila POSIX;
  • Dodana možnost deklariranja spremenljivk, ki imajo lahko ničelno vrednost s sklepanjem o vrsti (var?);
  • Dodana možnost razglasitve razredov, ki so prepovedani za dedovanje (zapečateno);
  • Dodan operator varnega dostopa v polja razreda, ki so lahko ničelna (a.?b.?c);
  • Dovoljena inicializacija vsebine strukture na nič (const Foo[] BARS = { { "bar", 42 }, null };);
  • Operacija resize() je prepovedana za konstantna polja;
  • Dodan izhod opozorila pri poskusu pretvorbe funkcijskega klica v void ((void)not_void_func(););
  • Odstranjena omejitev za vrste elementov GLib.Array;
  • Popravljeno dedovanje lastništva "unlasted var" v stavku foreach();
  • Vezava na webkit2gtk-4.0 je bila posodobljena na različico 2.33.3;
  • Vezava na gstreamer je bila posodobljena na različico 1.19.0+ git master;
  • Vezava na gtk4 je bila posodobljena na različico 4.5.0~e681fdd9;
  • Vezava za gtk+-3.0 je bila posodobljena na različico 3.24.29+f9fe28ce
  • Vezava na gio-2.0, glib-2.0 je bila posodobljena na različico 2.69.0;
  • Za linux so bile dodane vezave na SocketCAN;
  • Popravki v vezavah za glib-2.0, gio-2.0, gstreamer-rtp-1.0, javascriptcoregtk-4.0, gobject-2.0, pango, linux, gsl, rest-0.7, libusb, libusb-1.0, pixman-1, webkit2gtk-web- razširitev-4.0, x11, zlib, gnutls;
  • Odstranjene vezave gedit-2.20 in webkit-1.0;
  • Posodobljene vezave na podlagi GIR;
  • V sistem testiranja je bila dodana možnost preverjanja generirane kode C;
  • Izboljšan girparser, girwriter, valadoc, libvaladoc/girimporter;
  • Nakopičene napake in pomanjkljivosti različnih komponent prevajalnika so bile odpravljene.

Vir: opennet.ru

Dodaj komentar