PVala ----- PVala is a fork of the Vala compiler which adds support for pluggable code generators, and specifically, a POSIX C code generator which does not introduce any runtime requirements to generated code except hopefully standard libc. The code is based on the patches submitted by Andrea Del Signore to the GNOME mailing list archives: https://mail.gnome.org/archives/vala-devel-list/2012-August/msg00008.html The build system has been replaced with a simple shell configure script that generates a Makefile (and other things). You should be able to install pvala to your system to /usr (or /usr/local) using the --prefix configure option. It won't conflict with any currently installed version of vala that you have on your system. Example: ./configure --prefix=/usr make -j16 sudo make install If you want to, you can also use: sudo make uninstall to remove pvala from your system. Just make sure you haven't overridden the --prefix using the configure script to something other than it was originally installed with. If you feel your build is dirty compared to git, you can clean things up: sudo make uninstall make distclean git pull And start over. What works? ----------- - Classes (not only [Compact] classes) - Single inheritance - Interfaces - Not sure what else yet :) What's broken? -------------- - The runtime is sorta leaky (ie. valgrind reports 'possibly lost' bytes) - Doesn't work right without --profile=posix option being used - Need to use the -C option and compile the C yourself as it still links to glib - Some of the codegen is broken if you split your code into multiple files. - I'm attempting to fix the issues above. Original Vala README -------------------- 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+. 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 http://live.gnome.org/Vala/