Compiler for the GObject type system
Clone or download
Failed to load latest commit information.
build-aux build: Use git-version-gen Mar 12, 2010
ccode ccode: Fix typo and actually check "end_decls" Oct 9, 2018
codegen codegen: Fix get_ccode_name() for properties Nov 14, 2018
compiler Bump version suffix Sep 17, 2018
contrib/parvala Ignore --thread commandline option and drop all gthread-2.0 references Oct 10, 2016
doc doc: Include dependencies for internal-api-docs to get reference linking Nov 14, 2018
gee Drop trailing spaces/tabs Mar 27, 2018
gobject-introspection g-i: Fix use after free in scanner Sep 20, 2018
libvaladoc libvaladoc: Add type_id to Api.Enum/Interface Nov 14, 2018
tests codegen: Transfer ownership of compact class to DestroysInstance method Nov 13, 2018
vala vala: Copy CCode instance_pos argument from virtual/abstract base met… Nov 8, 2018
valadoc valadoc/html: Skip package dependency if target directory already exists Nov 14, 2018
vapi gio-2.0: Add missing File.new_build_filename() Nov 13, 2018
vapigen vala: Drop "explicit" from ValaSourceFile and use "from_commandline" Nov 3, 2018
.dir-locals.el Add .dir-locals.el (emacs configuration file) Jul 12, 2014
.editorconfig Add .editorconfig file Aug 23, 2017
.gitignore gitignore: ignore macOS metadata files Feb 26, 2018
AUTHORS change my email from to fix pervious Feb 19, 2008
COPYING Move contents of vala-pkg to trunk May 2, 2007
ChangeLog.pre-0-4 Rotate ChangeLog Oct 22, 2008
ChangeLog.pre-0-5-7 Generate ChangeLog from git log Feb 27, 2009 build: Allow disabling the build of valadoc Oct 8, 2018
Makefile.common build: Avoid using ".." for referencing paths and reorganize valac-calls Aug 24, 2014
NEWS Sync NEWS from 0.42 Nov 8, 2018
README README: update link to wiki Jan 4, 2016
THANKS Add Simon Werbeck to THANKS Aug 11, 2014 build: Enable maintainer mode by default Sep 9, 2011 testrunner: Add -Werror=missing-prototypes Nov 5, 2018 vala: Add pkgdatadir and pkglibdir to pkg-config file Jan 8, 2018
vala.doap Update bugtracker links to May 28, 2018
vala.m4 vala.m4: don't escape modules argument to VALA_CHECK_MODULES Jun 27, 2014


Vala is a programming language that aims to bring modern programming
language features to GNOME developers without imposing any additional
runtime requirements and without using a different ABI compared to
applications and libraries written in C.

valac, the Vala compiler, is a self-hosting compiler that translates
Vala source code into C source and header files. It uses the GObject
type system to create classes and interfaces declared in the Vala source

The syntax of Vala is similar to C#, modified to better fit the GObject
type system. Vala supports modern language features as the following:

	* Interfaces
	* Properties
	* Signals
	* Foreach
	* Lambda expressions
	* Type inference for local variables
	* Generics
	* Non-null types
	* Assisted memory management
	* Exception handling

Vala is designed to allow access to existing C libraries, especially
GObject-based libraries, without the need for runtime bindings. All that
is needed to use a library with Vala is an API file, containing the class
and method declarations in Vala syntax. Vala currently comes with
bindings for GLib and GTK+. It's planned to provide generated bindings for
the full GNOME Platform at a later stage.

Using classes and methods written in Vala from an application written in
C is not difficult. The Vala library only has to install the generated
header files and C applications may then access the GObject-based API of
the Vala library as usual. It should also be easily possible to write a
bindings generator for access to Vala libraries from applications
written in e.g. C# as the Vala parser is written as a library, so that
all compile-time information is available when generating a binding.

More information about Vala is available at