Vala programming language compiler update 0.50.4

A new version of the compiler for the programming language has been released Vala 0.50.4 .
The Long Term Support (LTS) branch has also been updated Vala 0.48.14 (packaged for Ubuntu 18.04) and the experimental branch Vala 0.51.3 .

The Vala language is an object-oriented programming language, provides syntax similar to C # or Java. Gobject (Glib Object System) is used as the object model. Memory management is carried out by ownership (owned / unowned references) or using ARC (substitution of destructors and decrements of object reference counters at compile time).

The language has support for introspection, lambda functions, interfaces, delegates and closures, signals and slots, exceptions, properties, non-null types, type inference for local variables. The kit comes with a large number of bindings for C libraries ( vala-girs , vala-extra-vapis ).
Vala programs are translated into a C representation and then compiled by a standard C compiler. You can run programs in script mode.

Changelog:

  • Added additional support for the params keyword for constructors class Foo {public Foo (params string [] args) {foreach (var arg in args) print (arg); }
    }
  • codegen:
    • Improved support for SimpleType struct constructors (eg used to bind typedef uint32_t people_inside; from C) [SimpleType] [CCode (cname = “people_inside”)] public struct PeopleInside: uint32 {}
    • Improved handling of the “NoWrapper” attribute.
    • CCode.type_cname and get_ccode_type_name () are allowed for classes.
    • Always used G_TYPE_INSTANCE_GET_CLASS / INTERFACE for external symbols.
    • Used g_boxed_free in free-wrapper to put GLib.Value on the heap.
    • Fixed memory leak during implicit unboxing of GLib.Value (generic container of any value type).
    • Fixed memory leak when moving heap-allocated structures to the stack.
    • The destructor of the parent structure is inherited
    • Correct receiving of symbol_reference of nested cast-expressions has been fixed.
    • All nested occurrences of CCodeCastExpression have been removed.
    • An invalid call to the default signal handler has been terminated.
    • “string.h” is included for strcmp () (POSIX profile, the mode in which Vala generates code using only the standard C library).
  • Vala:
    • Improved detection of duplicate package source files.
    • GtkChild fields / properties must be declared unowned.
    • GtkChild field / property cannot be reassigned.
    • Stricter condition applied for lambda when delegating assignment.
    • Forbidden to use non-one-off SimpleType structures.
    • GLib.Value unboxing has returned an unowned value.
    • It is forbidden to cast GLib.Value to the type nullable struct / simple.
/Media reports.