Vala é unha nova linguaxe de programación que pretende achegar características de programación modernas para desenvolvedores de GNOME sen impoñer requisitos adicionais en tempo de execución (máquina virtual) e sen empregar unha ABI diferente en comparación cos aplicativos e bibliotecas escritas en C. A síntaxe de Vala é similar a C# e é compatíbel coas seguintes características:
-
Interfaces
-
Propiedades
-
Sinais
-
Foreach
-
Expresións Lambda
-
Tipo de inferencia para as variábeis locais
-
Xenéricos
-
Tipos non nulos
-
Xestión de memoria asistida
-
Xestión de excepcións
-
Complementos
Vala permite o acceso ás bibliotecas de C, sen necesidade de engadidos en tempo de execución, coma gtk# en C#, gtkmm en C++. So precisa un arquivo API(.vapi) para empregar unha biblioteca. Este arquivo contén a clase e o método das declaracións, e só é necesario no momento da compilación.
Vala está pensado para desenvolvedores de GNOME que desexan escribir aplicativos en linguaxes de alto nivel, pero que non poden ou non queren empregar C# ou Java, polo que están atascados coa sintaxe de C, sen un apoio para o sistema coma o GObject. O compilador de Vala permítelles aos desenvolvedores escribir código orientado a obxectos con rapidez ao tempo que mantén un estándar API de C e ABI e cuns requisitos de memoria baixa.
As bibliotecas de C# e Java non se poden empregar do mesmo xeito que as bibliotecas GObject nativas dende C e outras linguaxes e non poden aceptarse como parte da plataforma GNOME. As bibliotecas feitas en Vala si, xa que si se programa en Vala, estase programando en C. É dicir, a maior vantaxe de Vala é que permite programar con toda a flexibilidade dunha linguaxe orientada a obxectos e logo o compilador converte as clases e as librerías a código C estándar. Así, unha librería escrita en Vala pódese empregar facilmente en Python, Java, C#.
O rendemento dos aplicativos e das bibliotecas feitas con Vala é algo menor que as feitas con C puro, pero semellante ás feitas con C/GObject. Comparando Vala con outras linguaxes, coma C# ou Python, o rendemento de Vala e maior, xa que Vala non precisa maquina virtual.
