The release of the translator of the programming language Vala 0.54.0

A new version of the Vala programming language translator 0.54.0 has been released. The Vala language is an object-oriented programming language that provides a syntax similar to C# or Java. The Vala code is translated into a C program, which, in turn, is compiled by a regular C compiler into a binary file and executed at the speed of an application compiled into the object code of the target platform. It is possible to run programs in script mode. The language is developed under the auspices of the GNOME project. Gobject (Glib Object System) is used as an object model. The compiler code is distributed under the LGPLv2.1 license.

The language has support for introspection, lambda functions, interfaces, delegates and closures, signals and slots, exceptions, properties, non-zero types, type inference for local variables (var). Memory management is based on reference counting. The libgee generic programming library has been developed for the language, which provides the ability to create collections for custom data types. It is supported to enumerate collection elements using the foreach statement. Graphic programs are programmed using the GTK graphics library.

The kit comes with a large number of bindings to libraries in the C language. The Vala translator supports the Genie language, which provides similar features, but with a syntax inspired by the Python programming language. Programs such as the Geary mail client, the Budgie graphical shell, the Shotwell photo and video file organizer, and others are written in the Vala language. The language is actively used in the development of the Elementary OS distribution.

Main innovations:

  • Added support for delegates with a variable number of parameters;
  • Added LIBC profile, which is synonymous with POSIX profile;
  • Improved generation in POSIX profile mode;
  • Added the ability to declare variables that can have a null value with type inference (var?);
  • Added the ability to declare classes forbidden for inheritance (sealed);
  • Added safe access operator to class fields that can be null (a.?b.?c);
  • It is allowed to initialize the contents of structures to null (const Foo[] BARS = { { "bar", 42 }, null };);
  • For constant arrays, the resize() operation is prohibited;
  • Added a warning when trying to cast a function call to void ((void)not_void_func(););
  • Removed restriction on GLib.Array element types;
  • Fixed "unowned var" ownership inheritance in foreach() statement;
  • Binding to webkit2gtk-4.0 updated to version 2.33.3;
  • Binding to gstreamer updated to version 1.19.0+ git master;
  • Binding for gtk4 updated to version 4.5.0~e681fdd9;
  • Binding to gtk+-3.0 updated to version 3.24.29+f9fe28ce
  • Binding to gio-2.0,glib-2.0 updated to version 2.69.0;
  • Added bindings to SocketCAN for linux;
  • Fixes in bindings to 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- extension-4.0, x11, zlib, gnutls;
  • Removed gedit-2.20 and webkit-1.0 bindings;
  • Updated bindings based on GIR;
  • The ability to check the generated C-code has been added to the testing system;
  • Improved girparser, girwriter, valadoc, libvaladoc/girimporter;
  • Fixed accumulated errors and shortcomings of various components of the compiler.

Source: opennet.ru

Add a comment