Vala (programming language)

Vala
ParadigmMulti-paradigm: imperative, structured, object-oriented
DeveloperJürg Billeter, Raffaele Sandrini, Rico Tzschichholz
First appeared2006; 18 years ago (2006)
Stable release
0.57.0 Edit this on Wikidata / 11 April 2023; 19 months ago (11 April 2023)
Typing disciplineStatic, strong, inferred, structural
OSCross-platform all supported by GLib, but distributed as source code only.
LicenseLGPLv2.1+
Filename extensions.vala, .vapi
Websitevala.dev
Influenced by
C, C++, C#, D, Java, Boo

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.[1] 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.[2]

Using functionality from native code libraries requires writing vapi files, defining the library interfaces. Writing these interface definitions is well-documented for C libraries. Bindings are already available for a large number of libraries, including libraries that are not based on GObject such as the multimedia library SDL and OpenGL.

  1. ^ "Vala: high-level programming with less fat". Ars Technica. 2 September 2007. Retrieved 13 December 2011.
  2. ^ "A look at two new languages: Vala and Clojure".