Отношения между Валой и Джинном
Из того, что я прочитал, разработка ядра Gnome началась с C, который был расширен Vala (2006) и Genie (2008). Кажется, что синтаксис Vala был нацелен на синтаксис / разработчика Java/C#, тогда как Genie, похоже, нацелен на Python (и несколько других).
Есть также некоторые разработчики, которые, похоже, пытаются помешать этим двум замечательным инструментам разработки - из-за отсутствия лучшего термина перейти к не родным технологиям, таким как Javascript и Rust, - требуя дополнительных виртуальных машин или исполняемых двоичных файлов.
Тем не менее, в Vala наблюдается возрождение, в основном за счет разработчиков приложений. Это ясно из роста активности на компиляторе Vala и предложенных действиях программы аутрич-программы 2018 года, где Vala является основной функцией.
Так что это подводит нас к техническим отношениям с Genie. Из моего прочтения, Genie зависит только от GLib, тогда как Vala зависит от среды рабочего стола Gnome. Это правильные отношения? Во-вторых, встроен ли Genie в компилятор Vala? valac
или это отдельно? С точки зрения компиляции - это интегрированные технологии?
1 ответ
Genie - это альтернативный синтаксис для компилятора Vala. Он реализован как альтернативный лексер и парсер и встроен в libvala
, valac
интерфейс командной строки для libvala
, Так что да, это интегрированные технологии. Если вы хотите узнать больше о том, как реализован Genie, прочитайте статью " Разработка Genie". На этой странице есть ссылки на исходные файлы Genie.
Genie имеет те же зависимости, что и Vala, а Vala зависит только от GLib. Также были некоторые попытки даже удалить зависимость от GLib. Например посиксвала и авр -вала.
Vala имеет очень хорошие привязки к GTK+, которые синхронизируются с разработкой GTK+. Возможно, именно поэтому вы думали, что Vala зависит от полного стека GNOME. Vala предоставляет процедуры генерации кода более высокого уровня, такие как приведение к GVariant; [GtkTemplate]
, [GtkChild]
а также [GtkCallback]
атрибуты для работы с шаблонами пользовательского интерфейса GtkBuilder; использование [DBus]
атрибут для создания интерфейсов D-Bus и использования async
а также yield
ключевые слова для работы с асинхронными обратными вызовами и обратными вызовами GIO в целом. Под "Vala" я имею в виду компилятор Vala, а не синтаксис. Таким образом, эти функции доступны как для синтаксиса Vala, так и для Genie. Джинн немного менее развит в некоторых частях, но это могут исправить участники. Это проект с открытым исходным кодом / свободного программного обеспечения.