Actualización 0.50.4 del compilador del lenguaje de programación Vala

Se ha lanzado una nueva versión del compilador para el lenguaje de programación Vala 0.50.4. También se han actualizado la rama de soporte a largo plazo (LTS) Vala 0.48.14 (empaquetada para Ubuntu 18.04) y la rama experimental Vala 0.51.3.

El lenguaje Vala es un lenguaje de programación orientado a objetos que proporciona una sintaxis similar a C# o Java. Gobject (Glib Object System) se utiliza como modelo de objetos. La gestión de la memoria se lleva a cabo por propiedad (enlaces propios/sin propietario) o mediante ARC (sustitución de destructores y disminución de contadores de referencias de objetos en la etapa de compilación).

El lenguaje tiene soporte para introspección, funciones lambda, interfaces, delegados y cierres, señales y ranuras, excepciones, propiedades, tipos no nulos, inferencia de tipos para variables locales. El kit viene con una gran cantidad de enlaces a bibliotecas en C (vala-girs, vala-extra-vapis). Los programas Vala se traducen a representación C y luego se compilan mediante un compilador estándar de C. Es posible ejecutar programas en modo script.

Lista de cambios:

  • Se agregó soporte adicional para la palabra clave params para constructores class Foo{ public Foo(params string[] args){ foreach (var arg in args) print(arg); } }
  • codegen:
    • Soporte mejorado para constructores de estructuras SimpleType (por ejemplo, se usa para vincular typedef uint32_t people_inside; de ​​C) [SimpleType] [CCode (cname = "people_inside")] public struct PeopleInside : uint32 {}
    • Manejo mejorado del atributo "NoWrapper".
    • CCode.type_cname y get_ccode_type_name() están permitidos para las clases.
    • G_TYPE_INSTANCE_GET_CLASS/INTERFACE siempre se utiliza para símbolos externos.
    • Se usó g_boxed_free en free-wrapper para asignar GLib.Value en el montón.
    • Se corrigió una pérdida de memoria durante el unboxing implícito de GLib.Value (un contenedor universal de cualquier tipo de valor).
    • Se corrigió una pérdida de memoria al mover una estructura asignada por montón a una pila.
    • Se garantiza la herencia del destructor de la estructura principal.
    • Se ha mejorado la recuperación correcta de symbol_reference de expresiones de conversión anidadas.
    • Se eliminaron todas las apariciones anidadas de CCodeCastExpression.
    • Se dejó de llamar incorrectamente al controlador de señales predeterminado.
    • Conectado "string.h" para strcmp() (perfil POSIX, modo en el que Vala genera código usando solo la biblioteca C estándar).
  • Vale:
    • Detección mejorada de archivos fuente de paquetes duplicados.
    • Los campos/propiedades de GtkChild deben declararse sin propietario.
    • Está prohibido reasignar el campo/propiedad GtkChild.
    • Se ha aplicado una condición más estricta a lambda al delegar una tarea.
    • Está prohibido utilizar estructuras SimpleType de un solo uso.
    • El unboxing de GLib.Value garantiza que se devuelva el valor sin propietario.
    • Está prohibido convertir GLib.Value a una estructura que acepta valores NULL/tipo simple.
    • Se agregó verificación de argumentos de tipo en condiciones previas de tipos base/clase/interfaz.
    • Está prohibido capturar parámetros/variables de va_list.
    • Los genéricos que contienen un puntero a una estructura deben convertirse al tipo correcto cuando se accede a ellos para evitar C UB.
    • Se implementó la inferencia de tipos para "en" dentro de la enumeración.
    • Comprobación de contexto mejorada para asignaciones al campo grabable.
    • Se incluye "stdlib.h" para Enum.to_string() (POSIX).
    • Se establece la referencia_fuente correcta para las variables implícitas "esto" y "resultado".
    • Se proporcionó un mensaje de error para un operando interno no válido de expresiones unarias.
  • Сodewriter: Dejé de agregar el ";" final después del cuerpo WithStatement.
  • Girparser:
    • Se proporciona el procesamiento de un delegado anónimo que no está respaldado por un método o señal virtual.
    • Metadatos "delegate_target" aplicados para métodos y parámetros
    • Aplicar metadatos "destroy_notify_cname" a los campos
    • Aplicar metadatos "type_get_function" para clases e interfaces
    • Establezca CCode.type_cname para las clases si no es el valor predeterminado.
  • girwriter: Garantiza que se escriban los elementos de los parámetros de la instancia.
  • girwriter: Salida de controlador de señal predeterminada implementada.
  • libvaladoc/html: Se eliminó la clasificación de los campos de estructura para dejar su orden original al generar documentación html valadoc.org
  • libvaladoc: Asegúrese de que los valores para Api.Class.is_compact se recuperen correctamente
  • libvaladoc: Se agregó un contenedor para la biblioteca Graphviz "agingge"
  • Fijaciones:
    • Correcciones menores al generar enlaces: 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, fusible, libxml-2.0
    • gdk-pixbuf-2.0: Reparar Pixbuf.save_to_streamv_async()
    • gio-2.0: Corrección de enlace PollableOutputStream.write*_nonblocking()
    • gio-2.0,gtk+-3.0,gtk4: Se descartan los atributos explícitos de tipo c de los parámetros va_list
    • gio-2.0: Falta el invocador seleccionado para algunos métodos AppInfo/File.*()
    • glib-2.0: Se agregaron métodos convenientes GLib.[S]List.is_empty() para no nulos
    • glib-2.0: Vinculación de la función afirmar_cmp* [#395]
    • glib-2.0: Tipo de campo OptionEntry.flags mejorado
    • glib-2.0: PtrArray ahora es una subclase de GenericArray
    • gstreamer-1.0: CCode.type_id del MiniObject está configurado en G_TYPE_BOXED [#1133]
    • gtk+-2.0,javascriptcoregtk-4.0: Uso corregido del atributo CCode.type_cname
    • gtk+-3.0,gtk4: Se corrigieron algunos valores y parámetros de retorno delegado
    • gtk4: Actualizado a la versión 4.0.2.

Fuente: opennet.ru

Añadir un comentario