What is Vala (programming language)? an object-oriented programming language that generates C code

Elementary OS, a Linux distribution with a desktop environment programmed mostly in Vala

Vala (programming language) – Wikipedia

Vala is an object-oriented programming language with a self-hosting compiler that generates C code and uses the GObject system.

Vala is syntactically similar to C# and includes several features such as: anonymous functions, signals, properties, generics, assisted memory management, exception handling, type inference, and foreach statements.[3] Its developers Jürg Billeter and Raffaele Sandrini aim to bring these features to the plain C runtime with little overhead and no special runtime support by targeting the GObject object system. Rather than compiling directly to machine code or assembly language, it compiles to a lower level intermediate language. It source-to-source compiles to C, which is then compiled with a C compiler for a given platform, such as GCC.[4]

For memory management, the GObject system provides reference counting. In C, a programmer must manually manage adding and removing references, but in Vala, managing such reference counts is automated if a programmer uses the language’s built-in reference types rather than plain pointers.

Using functionality from native code libraries requires writing vapi files, defining the library interfacing. Writing these interface definitions is well-documented for C libraries, especially when based on GObject. However, C++ libraries are not supported. Vapi files are provided for a large portion of the GNOME platform, including GTK+.

Vala was conceived by Jürg Billeter and was implemented by him and Raffaele Sandrini, finishing a self-hosting compiler in May 2006.[5]

Code example

A simple "[Hello, World!](https://en.wikipedia.org/wiki/Hello_world_program "Hello world program")" Vala program:

void main () {
    print ("Hello World\\n");
}

A more complex version, showing some of Vala’s object-oriented features:

class Sample : Object {
    void greeting () {
        stdout.printf ("Hello World\\n");
    }
    
    static void main (string\[\] args) {
        var sample = new Sample ();
        sample.greeting ();
    }
}

An example using GTK+ to create a GUI “Hello, World!” program (see also GTK+ hello world):

using Gtk;

int main (string\[\] args) {
    Gtk.init (ref args);
    
    var window = new Window ();
    window.title = "Hello, World!";
    window.border_width = 10;
    window.window_position = WindowPosition.CENTER;
    window.set\_default\_size (350, 70);
    window.destroy.connect (Gtk.main_quit);
    
    var label = new Label ("Hello, World!");
    
    window.add (label);
    window.show_all ();
    
    Gtk.main ();
    return 0;
}

The last example needs an extra parameter to compile on GNOME 3 platforms:

valac --pkg gtk+-3.0 hellogtk.vala

Text editor / IDE support

Vala (programming language) – Wikipedia

There are various projects in various states of stability in order to provide syntax highlighting and other text editor/IDE support for Vala:

Leave a Reply