È stata rilasciata una nuova versione del traduttore del linguaggio di programmazione Vala 0.51.1. Il linguaggio Vala è un linguaggio di programmazione orientato agli oggetti che fornisce una sintassi simile a quella dei linguaggi C# o Java. Utilizza Gobject (Glib Object System) come modello ad oggetti. La gestione della memoria avviene tramite il conteggio dei riferimenti.
Il linguaggio supporta l'introspezione, le funzioni lambda, le interfacce, i delegati e le chiusure, segnali e slot, eccezioni, proprietà, tipi non nulli e l'inferenza dei tipi per le variabili locali (var). È stata sviluppata una libreria di programmazione generica, libgee, che consente la creazione di collezioni per tipi di dati personalizzati. È supportata l'iterazione degli elementi delle collezioni tramite l'operatore foreach. La programmazione delle applicazioni grafiche avviene attraverso la libreria grafica GTK+. Viene fornito un ampio numero di binding alle librerie scritte in linguaggio C.
I programmi in Vala vengono compilati in C e poi tradotti con il compilatore standard del C. È possibile eseguire programmi in modalità script. Il traduttore Vala supporta il linguaggio Genie, che offre funzionalità simili ma con una sintassi ispirata al linguaggio di programmazione Python.
Il linguaggio Vala è sviluppato sotto l'egida del progetto GNOME. Sono scritte in Vala applicazioni come il client di posta Geary, l'interfaccia grafica Budgie, il programma di gestione delle collezioni fotografiche e video Shotwell e altre. Vala è ampiamente utilizzato nello sviluppo di componenti della distribuzione Linux Elementary OS.
Nella nuova versione:
- È stata aggiunta la supporto per il 'type narrowing' nelle espressioni; if (x is Foo) { x.SomeFooField // non è necessario eseguire un cast esplicito di 'x' a 'Foo' }
- È stata aggiunta la supporto per le chiamate in catena dei costruttori per i template;
- È stata aggiunta la verifica della versione di libvala durante l'esecuzione;
- È stata aggiunta la supporto per classi compatte 'opache';
- È stata ampliata la supporto per i parametri array nei costruttori;
- In girparser è stata aggiunta la gestione di delegati anonimi non supportati da metodi virtuali o segnali;
- Sono stati corretti errori in valadoc, libvaladoc e girwriter;
- È stato aggiunto il binding a SDL 2.x, è stata interrotta la supporto per il binding SDL 1.x;
- È stato aggiunto il binding a Enchant 2.x;
- È stata risolta una perdita di memoria durante la copia esplicita di array, l'uso di Glib.Value, e il trasferimento di strutture allocate nella 'Heap' nello stack;
- Il binding a gdk-pixbuf-2.0 è stato aggiornato alla versione 2.42.3;
- È stato aggiunto il binding alla funzione getopt_long() e ad altre funzioni GNU;
- È stato aggiunto il binding a libunwind-generic;
- Sono stati corretti i binding per cairo, gobject-2.0, pango, goocanvas-2.0, curses, alsa, bzlib, sqlite3, libgvc, posix, gstreamer-1.0, gdk-3.0, gdk-x11-3.0, gtk+-3.0, gtk4, fuse, libxml-2.0;
- Il binding a gio-2.0 è stato aggiornato alla versione 2.67.3;
- Il binding a gobject-2.0 è stato aggiornato alla versione 2.68;
- Il binding a gstreamer è stato aggiornato alla versione 1.19.0+ git master;
- Il binding a gtk4 è stato aggiornato alla versione 4.1.0+2712f536;
- Sono stati aggiunti i binding per l'API delle espressioni regolari per POSIX, GNU e BSD;
- Il binding a webkit2gtk-4.0 è stato aggiornato alla versione 2.31.1;
- Sono stati corretti errori e problemi accumulati del compilatore.
Fonte: opennet.ru
