Atualização 0.50.4 do compilador da linguagem de programação Vala

Uma nova versão do compilador para a linguagem de programação Vala 0.50.4 foi lançada. O branch Vala 0.48.14 de suporte de longo prazo (LTS) (empacotado para Ubuntu 18.04) e o branch experimental Vala 0.51.3 também foram atualizados.

A linguagem Vala é uma linguagem de programação orientada a objetos que fornece uma sintaxe semelhante a C# ou Java. Gobject (Glib Object System) é usado como modelo de objeto. O gerenciamento de memória é realizado por propriedade (links próprios/sem propriedade) ou usando ARC (substituição de destruidores e decrementos de contadores de referência de objetos na fase de compilação).

A linguagem tem 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. O kit vem com um grande número de ligações para bibliotecas em C (vala-girs, vala-extra-vapis). Os programas Vala são traduzidos para representação C e então compilados por um compilador C padrão. É possível executar programas em modo script.

Lista de alterações:

  • Adicionado suporte adicional para a palavra-chave params para construtores class Foo{ public Foo(params string[] args){ foreach (var arg in args) print(arg); } }
  • codegen:
    • Suporte aprimorado para construtores de estrutura SimpleType (por exemplo, usado para vincular typedef uint32_t people_inside; de ​​C) [SimpleType] [CCode (cname = "people_inside")] public struct PeopleInside: uint32 {}
    • Tratamento aprimorado do atributo “NoWrapper”.
    • CCode.type_cname e get_ccode_type_name() são permitidos para classes.
    • G_TYPE_INSTANCE_GET_CLASS/INTERFACE é sempre usado para símbolos externos.
    • Usado g_boxed_free no free-wrapper para alocar GLib.Value no heap.
    • Corrigido um vazamento de memória durante o unboxing implícito de GLib.Value (um contêiner universal de qualquer tipo de valor).
    • Corrigido um vazamento de memória ao mover uma estrutura alocada em heap para uma pilha.
    • A herança do destruidor da estrutura pai é garantida
    • A recuperação correta de symbol_reference de expressões convertidas aninhadas foi melhorada.
    • Todas as ocorrências aninhadas de CCodeCastExpression foram removidas.
    • Parou de chamar incorretamente o manipulador de sinal padrão.
    • Conectado "string.h" para strcmp() (perfil POSIX, modo em que Vala gera código usando apenas a biblioteca C padrão).
  • Vala:
    • Detecção aprimorada de arquivos de origem de pacotes duplicados.
    • Os campos/propriedades GtkChild devem ser declarados sem propriedade.
    • A reatribuição do campo/propriedade GtkChild é proibida.
    • Uma condição mais rigorosa foi aplicada ao lambda ao delegar uma atribuição.
    • É proibido usar estruturas SimpleType de uso único.
    • O unboxing de GLib.Value garante que o valor sem propriedade seja retornado.
    • É proibido converter GLib.Value para um tipo struct/simple anulável.
    • Adicionada verificação de argumento de tipo em pré-condições de tipos/classes/interface base.
    • A captura de parâmetros/variáveis ​​va_list é proibida.
    • Os genéricos que contêm um ponteiro para uma estrutura devem ser convertidos para o tipo correto quando acessados ​​para evitar C UB.
    • Inferência de tipo implementada para "in" dentro de enum.
    • Verificação de contexto aprimorada para atribuições ao campo gravável.
    • Incluído "stdlib.h" para Enum.to_string() (POSIX).
    • A source_reference correta está definida para as variáveis ​​implícitas "this" e "result"
    • Foi fornecida uma mensagem de erro para um operando interno inválido de expressões unárias.
  • Сodewriter: Parou de adicionar o ";" final após o corpo WithStatement.
  • Gerparser:
    • É fornecido o processamento de um delegado anônimo não apoiado por um método ou sinal virtual.
    • Metadados "delegate_target" aplicados para métodos e parâmetros
    • Aplicar metadados "destroy_notify_cname" aos campos
    • Aplicar metadados "type_get_function" para classes e interfaces
    • Defina CCode.type_cname para classes, se não for o padrão.
  • girwriter: garante que os elementos dos parâmetros da instância sejam gravados.
  • girwriter: Implementada saída do manipulador de sinal padrão.
  • libvaladoc/html: Removida a classificação dos campos da estrutura para deixar sua ordem original ao gerar a documentação html valadoc.org
  • libvaladoc: Certifique-se de que os valores para Api.Class.is_compact sejam recuperados corretamente
  • libvaladoc: Adicionado wrapper para a biblioteca graphviz "agedge"
  • Ligações:
    • Pequenas correções ao gerar ligações: cairo, gobject-2.0, pango, goocanvas-2.0, maldições, alsa, bzlib, sqlite3, libgvc, posix, gstreamer-1.0, gdk-3.0, gdk-x11-3.0, gtk+-3.0, gtk4, fusível, libxml-2.0
    • gdk-pixbuf-2.0: Corrigir Pixbuf.save_to_streamv_async()
    • gio-2.0: Correção de ligação PollableOutputStream.write*_nonblocking()
    • gio-2.0,gtk+-3.0,gtk4: Atributos explícitos do tipo c dos parâmetros va_list são descartados
    • gio-2.0: Invocador ausente selecionado para alguns métodos AppInfo/File.*()
    • glib-2.0: Adicionados métodos de conveniência GLib.[S]List.is_empty() para não-nulos
    • glib-2.0: Vinculando a função assert_cmp* [#395]
    • glib-2.0: Tipo de campo OptionEntry.flags aprimorado
    • glib-2.0: PtrArray agora é uma subclasse de GenericArray
    • gstreamer-1.0: CCode.type_id do MiniObject está definido como G_TYPE_BOXED [#1133]
    • gtk+-2.0,javascriptcoregtk-4.0: Corrigido o uso do atributo CCode.type_cname
    • gtk+-3.0,gtk4: Corrigidos alguns valores e parâmetros de retorno de delegado
    • gtk4: Atualizado para a versão 4.0.2.

Fonte: opennet.ru

Adicionar um comentário