update for 0.4.0 release
[vala-lang.git] / README
blob107d7b57ccf0e16662f453aa9897436b85eda794
1 Vala is a new programming language that aims to bring modern programming
2 language features to GNOME developers without imposing any additional
3 runtime requirements and without using a different ABI compared to
4 applications and libraries written in C.
6 valac, the Vala compiler, is a self-hosting compiler that translates
7 Vala source code into C source and header files. It uses the GObject
8 type system to create classes and interfaces declared in the Vala source
9 code. It's also planned to generate GIDL files when gobject-
10 introspection is ready.
12 The syntax of Vala is similar to C#, modified to better fit the GObject
13 type system. Vala supports modern language features as the following:
15         * Interfaces
16         * Properties
17         * Signals
18         * Foreach
19         * Lambda expressions
20         * Type inference for local variables
21         * Generics
22         * Non-null types
23         * Assisted memory management
24         * Exception handling
26 Vala is designed to allow access to existing C libraries, especially
27 GObject-based libraries, without the need for runtime bindings. Each to
28 be used library requires a Vala API file at compile-time, containing the
29 class and method declarations in Vala syntax. Vala currently comes with
30 bindings for GLib and GTK+. It's planned to provide generated bindings for
31 the full GNOME Platform at a later stage.
33 Using classes and methods written in Vala from an application written in
34 C is not difficult. The Vala library only has to install the generated
35 header files and C applications may then access the GObject-based API of
36 the Vala library as usual. It should also be easily possible to write a
37 bindings generator for access to Vala libraries from applications
38 written in e.g. C# as the Vala parser is written as a library, so that
39 all compile-time information is available when generating a binding.
41 More information about Vala is available at
43         http://live.gnome.org/Vala/