Uma nova versão do tradutor de linguagem de programação Vala 0.54.0 foi lançada. A linguagem Vala é uma linguagem de programação orientada a objetos que fornece uma sintaxe semelhante a C# ou Java. O código Vala é traduzido em um programa C, que, por sua vez, é compilado por um compilador C padrão em um arquivo binário e executado na velocidade de um aplicativo compilado no código-objeto da plataforma de destino. É possível executar programas em modo script. A linguagem está sendo desenvolvida sob os auspícios do projeto GNOME. Gobject (Glib Object System) é usado como modelo de objeto. O código do compilador é distribuído sob a licença LGPLv2.1.
A linguagem possui suporte para introspecção, funções lambda, interfaces, delegados e fechamentos, sinais e slots, exceções, propriedades, tipos não nulos, inferência de tipos para variáveis locais (var). O gerenciamento da memória é realizado com base na contagem de referências. Uma biblioteca de programação generalizada libgee foi desenvolvida para a linguagem, que fornece a capacidade de criar coleções para tipos de dados personalizados. A enumeração de elementos de coleção usando a instrução foreach é suportada. A programação dos programas gráficos é realizada através da biblioteca gráfica GTK.
O kit vem com um grande número de ligações para bibliotecas na linguagem C. O tradutor Vala fornece suporte para a linguagem Genie, que oferece capacidades semelhantes, mas com uma sintaxe inspirada na linguagem de programação Python. Programas como o cliente de e-mail Geary, o shell gráfico Budgie, o programa de organização de arquivos de fotos e vídeos Shotwell e outros são escritos na linguagem Vala. A linguagem é usada ativamente no desenvolvimento da distribuição Elementary OS.
Principais inovações:
- Adicionado suporte para delegados com número variável de parâmetros;
- Adicionado perfil LIBC, que é sinônimo de perfil POSIX;
- Geração aprimorada no modo de perfil POSIX;
- Adicionada a capacidade de declarar variáveis que podem ter um valor nulo com inferência de tipo (var?);
- Adicionada a capacidade de declarar classes proibidas para herança (seladas);
- Adicionado operador de acesso seguro aos campos de classe que podem ser nulos (a.?b.?c);
- Inicialização permitida do conteúdo da estrutura como nulo (const Foo[] BARS = { { "bar", 42 }, null };);
- A operação resize() é proibida para matrizes constantes;
- Adicionada saída de aviso ao tentar lançar uma chamada de função para void ((void)not_void_func(););
- Removida a restrição nos tipos de elementos GLib.Array;
- Corrigida a herança de propriedade "unowned var" na instrução foreach();
- A ligação ao webkit2gtk-4.0 foi atualizada para a versão 2.33.3;
- A vinculação ao gstreamer foi atualizada para a versão 1.19.0+ git master;
- A ligação ao gtk4 foi atualizada para a versão 4.5.0~e681fdd9;
- A ligação para gtk+-3.0 foi atualizada para a versão 3.24.29+f9fe28ce
- A ligação ao gio-2.0,glib-2.0 foi atualizada para a versão 2.69.0;
- Para Linux, foram adicionadas ligações ao SocketCAN;
- Correções nas ligações para 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- extensão-4.0, x11, zlib, gnutls;
- Removidas ligações gedit-2.20 e webkit-1.0;
- Ligações atualizadas baseadas em GIR;
- A capacidade de verificar o código C gerado foi adicionada ao sistema de teste;
- Girparser, girwriter, valadoc, libvaladoc/girimporter aprimorados;
- Os erros e deficiências acumulados de vários componentes do compilador foram corrigidos.
Fonte: opennet.ru