Vala



Website: vala.dev


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 notable features such as anonymous functions, signals, properties, generics, assisted memory management, exception handling, type inference, and foreach statements.

Its developers, Jürg Billeter and Raffaele Sandrini, wanted 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 or Clang.Using functionality from native code libraries requires writing vapi files, defining the library interfaces.

Writing these interface definitions is well-documented for C libraries, especially when based on GObject.

Bindings are already available for a large number of libraries, including for C libraries that are not based on GObject, such as the multimedia library SDL, OpenGL, etc.