diff options
author | Alistair Thomas <astavale@yahoo.co.uk> | 2018-11-19 22:36:09 +0000 |
---|---|---|
committer | Rico Tzschichholz <ricotz@ubuntu.com> | 2018-11-20 08:22:38 +0100 |
commit | d9a86967049de9d379487f4ab3ce91a713f21e7f (patch) | |
tree | 9fce6f07a4cb0f93a567fc5c7a8519d214fed7b3 /README.md | |
parent | 6aa412da8e16e6630814a357adbfd724d59de30d (diff) | |
download | vala-d9a86967049de9d379487f4ab3ce91a713f21e7f.tar.gz |
docs: Use Markdown for README and move to README.md
Diffstat (limited to 'README.md')
-rw-r--r-- | README.md | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/README.md b/README.md new file mode 100644 index 000000000..bab55640f --- /dev/null +++ b/README.md @@ -0,0 +1,40 @@ +## What is Vala? +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 +code. + +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+. + +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 [https://wiki.gnome.org/Projects/Vala/](https://wiki.gnome.org/Projects/Vala/) |