Lansarea traducătorului limbajului de programare Vala 0.54.0

A fost lansată o nouă versiune a traducătorului limbajului de programare Vala 0.54.0. Limbajul Vala este un limbaj de programare orientat pe obiecte care oferă o sintaxă similară cu C# sau Java. Codul Vala este tradus într-un program C, care, la rândul său, este compilat de un compilator C standard într-un fișier binar și executat la viteza unei aplicații compilate în codul obiect al platformei țintă. Este posibil să rulați programe în modul script. Limbajul este dezvoltat sub auspiciile proiectului GNOME. Gobject (Glib Object System) este folosit ca model de obiect. Codul compilatorului este distribuit sub licența LGPLv2.1.

Limbajul are suport pentru introspecție, funcții lambda, interfețe, delegați și închideri, semnale și sloturi, excepții, proprietăți, tipuri non-null, inferență de tip pentru variabile locale (var). Gestionarea memoriei se realizează pe baza numărării referințelor. O bibliotecă de programare generalizată libgee a fost dezvoltată pentru limbaj, care oferă posibilitatea de a crea colecții pentru tipuri de date personalizate. Este acceptată enumerarea elementelor de colecție folosind instrucțiunea foreach. Programarea programelor de grafică se realizează folosind biblioteca de grafică GTK.

Kitul vine cu un număr mare de legături la biblioteci în limbajul C. Traducatorul Vala oferă suport pentru limbajul Genie, care oferă capabilități similare, dar cu o sintaxă inspirată din limbajul de programare Python. Asemenea programe precum clientul de e-mail Geary, shell-ul grafic Budgie, programul de organizare a fișierelor foto și video Shotwell și altele sunt scrise în limba Vala. Limbajul este utilizat în mod activ în dezvoltarea distribuției elementare OS.

Principalele inovații:

  • S-a adăugat suport pentru delegați cu un număr variabil de parametri;
  • S-a adăugat profilul LIBC, care este sinonim cu profilul POSIX;
  • Generare îmbunătățită în modul profil POSIX;
  • S-a adăugat capacitatea de a declara variabile care pot avea o valoare nulă cu inferență de tip (var?);
  • A fost adăugată capacitatea de a declara clase interzise pentru moștenire (sigilate);
  • S-a adăugat operator de acces sigur la câmpurile de clasă care pot fi nule (a.?b.?c);
  • Inițializarea permisă a conținutului structurii la null (const Foo[] BARS = { { "bar", 42 }, null };);
  • Operația resize() este interzisă pentru tablourile constante;
  • S-a adăugat ieșire de avertizare atunci când încercați să aruncați un apel de funcție la void ((void)not_void_func(););
  • S-a eliminat restricția privind tipurile de elemente GLib.Array;
  • S-a remediat moștenirea proprietății „unowned var” în instrucțiunea foreach();
  • Legarea la webkit2gtk-4.0 a fost actualizată la versiunea 2.33.3;
  • Legarea la gstreamer a fost actualizată la versiunea 1.19.0+ git master;
  • Legarea la gtk4 a fost actualizată la versiunea 4.5.0~e681fdd9;
  • Legarea pentru gtk+-3.0 a fost actualizată la versiunea 3.24.29+f9fe28ce
  • Legarea la gio-2.0,glib-2.0 a fost actualizată la versiunea 2.69.0;
  • Pentru Linux, au fost adăugate legături la SocketCAN;
  • Remedieri în legăturile pentru 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- extensia-4.0, x11, zlib, gnutls;
  • S-au eliminat legările gedit-2.20 și webkit-1.0;
  • Legături actualizate pe baza GIR;
  • Capacitatea de a verifica codul C generat a fost adăugată sistemului de testare;
  • Îmbunătățit girparser, girwriter, valadoc, libvaladoc/girimporter;
  • Erorile și deficiențele acumulate ale diferitelor componente ale compilatorului au fost remediate.

Sursa: opennet.ru

Adauga un comentariu