Vala — современный инструмент разработки на основе стека GNOME (Владимир Васьков, OSSDEVCONF-2024)

Материал из 0x1.tv

(перенаправлено с «20241005M»)
Докладчик
Владимир Васьков

Доклад посвящён языку программирования Vala.

В докладе будут рассмотрены его возможности, стандартная библиотека и принцип работы «под капотом».

Будет презентовано в каких проектах Vala используется.

Видео

Презентация

Vala — современный инструмент разработки на основе стека GNOME (Владимир Васьков, OSSDEVCONF-2024).pdf Vala — современный инструмент разработки на основе стека GNOME (Владимир Васьков, OSSDEVCONF-2024).pdf Vala — современный инструмент разработки на основе стека GNOME (Владимир Васьков, OSSDEVCONF-2024).pdf Vala — современный инструмент разработки на основе стека GNOME (Владимир Васьков, OSSDEVCONF-2024).pdf Vala — современный инструмент разработки на основе стека GNOME (Владимир Васьков, OSSDEVCONF-2024).pdf Vala — современный инструмент разработки на основе стека GNOME (Владимир Васьков, OSSDEVCONF-2024).pdf Vala — современный инструмент разработки на основе стека GNOME (Владимир Васьков, OSSDEVCONF-2024).pdf Vala — современный инструмент разработки на основе стека GNOME (Владимир Васьков, OSSDEVCONF-2024).pdf Vala — современный инструмент разработки на основе стека GNOME (Владимир Васьков, OSSDEVCONF-2024).pdf Vala — современный инструмент разработки на основе стека GNOME (Владимир Васьков, OSSDEVCONF-2024).pdf Vala — современный инструмент разработки на основе стека GNOME (Владимир Васьков, OSSDEVCONF-2024).pdf

Thesis

Что такое Vala?

Vala — компилируемый объектно-ориентированный язык программирования с синтаксисом Java/C\#. Однако в это же время Vala не совсем язык в стандартном понимании. Это компилятор в более низкоуровневый код на C, который можно скомпилировать в машинный код желаемым С-компилятором. В качестве стандартной библиотеки язык использует обширную библиотеку GLib, в частности GObject для реализации ООП и механизма управления ссылками, дополняя их:

  • асинхронными функциями в виде корутин, что позволяет не блокировать основной поток;
  • лямбда-функциями;
  • строками в виде отдельного класса в C-строки — массив символов.


Какие библиотеки есть у Vala?

Vala может использовать любые C-библиотеки, для которых написаны VAPI файлы. VAPI — инструкция трансляции C-кода в Vala. В файле необходимо описать C-код в Vala стиле, дополняя в аттрибутах различную информацию: название функции или структуры в C, описание аргументов функции, добавляя ключевые слова out или ref или добавляя значение по умолчанию. Есть возможность автоматической генерации VAPI, используя GObject Introspection файл. Vala имеет VAPI для всех библиотек стека GNOME. Также остальные библиотеки, которые используют GObject, включая те, что написаны на других языках с использованием языковых привязок, можно использовать после генерации VAPI (интероперабельность).

Для каких целей Vala был создан?

Написание программы на C с использованием GObject налагает дополнительные трудности в виде написания большого количества шаблонного кода для реализации ООП. Языковые привязки к GObject могут иметь проблемы со своей системой управления памятью или более низкой производительностью относительно C. Компилятор Vala оставляет управление памятью за собой на этапе компиляции, предоставляя читаемый и лёгкий синтаксис, из-за чего время разработки сокращается.

Где Vala используется?

На Vala можно писать консольные утилиты:

  • valac — компилятор Vala;
  • vala-language-server — языковой сервер Vala;
  • vala-lint — утилита для форматирования Vala-кода.


Графические приложения:

  • GNOME Clocks — приложение часов, входящее в GNOME Core;
  • Tuba — клиент matrix;
  • Planify — приложения для задач;
  • Foldy — приложение для управления папками приложений;
  • Baobab — приложение для анализа занятого места на компьютере;
  • Black Box — приложение виртуального терминала;
  • Cassette — неофициальный клиент Яндекс Музыки.


Библиотеки:

  • libgranite — графическая библиотека, разработанная командой Elementary OS;
  • libgee — библиотека с высокоуровневыми коллекциями;
  • libgxml — GObject надстройка над libxml2.

Это не все проекты на Vala и их количество постоянно растёт.


Vala — современный инструмент разработки на основе стека GNOME (Владимир Васьков, OSSDEVCONF-2024)!.jpg

Примечания и ссылки