summaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
authorAlistair Thomas <astavale@yahoo.co.uk>2018-11-19 22:36:09 +0000
committerRico Tzschichholz <ricotz@ubuntu.com>2018-11-20 08:22:38 +0100
commitd9a86967049de9d379487f4ab3ce91a713f21e7f (patch)
tree9fce6f07a4cb0f93a567fc5c7a8519d214fed7b3 /README.md
parent6aa412da8e16e6630814a357adbfd724d59de30d (diff)
downloadvala-d9a86967049de9d379487f4ab3ce91a713f21e7f.tar.gz
docs: Use Markdown for README and move to README.md
Diffstat (limited to 'README.md')
-rw-r--r--README.md40
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/)