Vala — язык программирования, который нацелен на предоставление фич современного языка программирования разработчикам GNOME без каких-либо дополнительных требований к рантайму и без использования ABI, отличного от уже используемого в приложениях и библиотеках, написанных на языке C.
Компилятор Vala (valac) является самодостаточным компилятором (может сам себя собрать), который транслирует исходный код на Vala в код на языке C. Он использует систему типов GObject для создания классов и интерфейсов, что привносит широкие возможности ООП в Vala.
Вышла новая версия Vala - компилятора, развиваемого в рамках проекта GNOME. В новой версии:
Поддержка констант в enum
Синтаксис +=/-= для подключения/отключение сигналов объявлен устаревшим
Добавлена эксперементальная поддержка профиля Dova (лекговесная замена glib)
Обновлён парсер Genie
Добавлены новые биндинги: clutter-gst-1.0, gdu, gdu-gtk, libesmtp, mx-1.0, orc-0.4, rest-extras-0.6
Множество исправленных ошибок
Vala это инструмент, задача которого предоставить возможности современных языков программирования для разработчиков GNOME без наложения дополнительных требований к среде выполнения и без использования различных ABI по отношению к приложениям и библиотекам, написанным на C. Язык ориентирован в первую очередь на использование совместно с GObject, хотя может быть использован и без него.
Vala включает в себя 2 языка программирования, развиваемых параллельно - Vala, схожий по синтаксису с C#, и Genie, схожий по синтаксису с Python. Исходный код на этих языках Vala транслирует в исходный код на C, который не зависит от каких-либо дополнительных runtime библиотек.
Вышла новая версия Vala, компилятора для системы GObject. Изменения по сравнению с версией 0.7.10:
Указание аргументов типизации при вызове методов типизируемого (generic) класса
Поддержка оператора «in» для массивов.
Добавлена экспериментальная поддержка литералов регулярных выражений (описание)
Добавлена экспериментальная поддержка сцепления выражений сравнения. Например, теперь можно писать if (1 < a < 2) {...} вместо if (1 < a && a < 2) {...}
Vala - это новый язык программирования, задача которого предоставить возможности современных языков программирования для разработчиков GNOME без наложения дополнительных требований к среде выполнения и без использования различных ABI по отношению к приложениям и библиотекам, написанным на C.
Синтаксис Vala схож с C#, но изменён для лучшей интеграции с GObject. Компилятор valac транслирует код на Vala в код и заголовки на C, который использует GObject для создания классов и интерфейсов.
Vala - это новый язык программирования, который стремится предоставить GNOME-разработчикам возможности современного языка программирования, не налагая никаких дополнительных требований времени выполнения и не используя различных ABI по сравнению с приложениями и библиотеками, написанными в C. В основе Vala лежит GLib Object System (GObject).
Изменения с версии 0.3.5
Большая гибкость конструкторов.
Частичная поддержка чтения и записи .gir файлов. (GObject Introspection Repository)
Улучшенная работа компилятора.
Копирование массивов там, где это необходимо.
Базовая поддержка статических свойств.
Частичная поддержка структур, содержащих объектные ссылки.
Добавлены биндинги к индексатору Tracker.
Обновлены биндинги к GLib, GTK+, и GStreamer.
Куча багфиксов.
Также недавно разработчики обновили планы по выпуску версии 1.0. Ранее предполагалось, что она выйдет еще в сентябре это года, теперь же финальный релиз Vala 1.0 перенесли на 16 марта 2009 года. (http://live.gnome.org/Vala/RoadMap)
GNOME Project представляет поддержку интроспекции для системы GObject.
Интроспекция (англ. Introspection) - возможность определения типов и получения описаний (метаданных) типов и интерфейсов во время выполнения программы. Задачей проекта GObject Introspection, по словам авторов, является попытка собрать метаданные по всему стеку библиотек GTK+/GNOME (и не только), оформить их в универсальном, машинно-читаемом формате, и предоставить соответствующее API.
Возможные варианты использования GObject Introspection:
привязки к языкам (language bindings). На данный момент, как правило, для различных языков используются свои методы описания API, что зачастую приводит к дублированию информации. Проект GObject Introspection должен представить унифицированный интерфейс для получения информации об API;
верификация API. Нередко случаются критические изменения публичного API (в результате, например, непредусмотрительности разработчика-новичка), которые могут "сломать" некоторые программы. GObject Introspection позволит автоматизировать сравнение двух версий API и выявить изменения с предельной точностью;
инструменты документирования. В рамках самого проекта GObject Introspection уже используется инструмент для автоматического документирования публичных API, которым в дальнейшем планируется заменить gtk-doc в рамках всего проекта GNOME;
автогенерация пользовательского интерфейса (наподобие того, как сделано в системе аудиосинтеза Beast);
дизайнер пользовательского интерфейса;
сериализация, RPC (в том числе средствами DBus), компонентная система.
На данный момент GObject Introspection представляет собой:
схему (формат) XML для представления метаданных, называемую GIR (GObject Introspection Repository);
модуль на языке Python для манипуляции форматом GIR;
генератор GIR из файлов исходных текстов на С (.c + .h);
систему typelib, схожую с XPCOM/MSOLE, для сохранения метаданных в бинарном формате;
конвертер между GIR (XML) и typelib (бинарный формат);
C-библиотеку для чтения typelib.
Исходные тексты GObject Introspection доступны в Subversion-репозитории проекта GNOME в соответствующем модуле (см. "Подробности").
Проект GObject Introspection активнейшим образом используется в языке Vala.