glib-2.0: Make Bytes.slice() use the memory-efficient Bytes.from_bytes()
[vala-gnome.git] / README
blobf89f6b061ff7949bcdbefc4a5b38a1cfa7e9d2ad
1 Vala is a 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.
11 The syntax of Vala is similar to C#, modified to better fit the GObject
12 type system. Vala supports modern language features as the following:
14         * Interfaces
15         * Properties
16         * Signals
17         * Foreach
18         * Lambda expressions
19         * Type inference for local variables
20         * Generics
21         * Non-null types
22         * Assisted memory management
23         * Exception handling
25 Vala is designed to allow access to existing C libraries, especially
26 GObject-based libraries, without the need for runtime bindings. All that
27 is needed to use a library with Vala is an API file, containing the class
28 and method declarations in Vala syntax. Vala currently comes with
29 bindings for GLib and GTK+. It's planned to provide generated bindings for
30 the full GNOME Platform at a later stage.
32 Using classes and methods written in Vala from an application written in
33 C is not difficult. The Vala library only has to install the generated
34 header files and C applications may then access the GObject-based API of
35 the Vala library as usual. It should also be easily possible to write a
36 bindings generator for access to Vala libraries from applications
37 written in e.g. C# as the Vala parser is written as a library, so that
38 all compile-time information is available when generating a binding.
40 More information about Vala is available at
42         https://wiki.gnome.org/Projects/Vala/