29.11.2021

Выпуск экспериментальной версии транслятора языка программирования Vala 0.51.1

Вышла новая версия транслятора языка программирования Vala 0.51.1. Язык Vala является объектно-ориентированным языком программирования, предоставляет синтаксис, подобный языкам C# или Java. В качестве объектной модели используется Gobject (Glib Object System). Управление памятью осуществляется на основании подсчёта ссылок.

В языке имеется поддержка интроспекции, лямбда-функций, интерфейсов, делегатов и замыканий, сигналов и слотов, исключений, свойств, ненулевых типов, выведения типов для локальных переменных (var). Для языка разработана библиотека обобщённого программирования libgee, предоставляющая возможность создания коллекций для пользовательских типов данных. Поддерживается перечисление элементов коллекций при помощи оператора foreach. Программирование графических программ осуществляется при помощи графической библиотеки GTK+. В комплекте поставляется большое количество биндингов к библиотекам на языке C.

Программы на языке Vala транслируются в представление на языке C, а затем компилируются штатным компилятором для языка C. Имеется возможность запуска программ в режиме сценария. Транслятором Vala осуществляется поддержка языка Genie, который предоставляет аналогичные возможности, но с синтаксисом, вдохновлённым языком программирования Python.

Язык Vala развивается под эгидой проекта GNOME. На Vala написаны такие программы как почтовый клиент Geary, графическая оболочка Budgie, программа управления коллекцией фото и видео Shotwell и другие. Vala активно используется при разработки компонентов Linux-дистрибутива Elementary OS.

В новой версии:

  • Добавлена поддержка автоматического приведения типов (type narrowing) в выражениях;
  • Добавлена поддержка вызова цепочек конструкторов для шаблонов;
  • Добавлено проверка версии libvala в процессе выполнения;
  • Добавлена поддержка «непрозрачных» (opaque) компактных классов;
  • Расширена поддержка параметров-массивов в конструкторах;
  • В girparser добавлена обработка анонимных делегатов не поддерживаемых виртуальными методами или сигналами;
  • Исправлены недоработки в valadoc, libvaladoc и girwriter;
  • Добавлен биндинг к SDL 2.x, прекращена поддержка биндинга SDL 1.x;
  • Добавлен биндинг к Enchant 2.x;
  • Устранена утечка памяти при явном копировании массивов, использовании Glib.Value, переносе выделенной в «Куче» структуры на стек;
  • Биндинг к gdk-pixbuf-2.0 обновлён до версии 2.42.3;
  • Добавлен биндинг функции getopt_long() и ещё нескольких функций GNU;
  • Добавлен биндинг к libunwind-generic;
  • Исправлены биндинги к cairo, gobject-2.0, pango, goocanvas-2.0, curses, alsa, bzlib, sqlite3, libgvc, posix, gstreamer-1.0, gdk-3.0, gdk-x11-3.0, gtk+-3.0, gtk4, fuse, libxml-2.0;
  • Биндинг к gio-2.0 обновлён до версии 2.67.3;
  • Биндинг к gobject-2.0 обновлён до версии 2.68;
  • Биндинг к gstreamer обновлён до версии 1.19.0+ git master;
  • Биндинг к gtk4 обновлён до версии 4.1.0+2712f536;
  • Добавлены биндинги к API регулярных выражений для POSIX, GNU и BSD;
  • Биндинг к webkit2gtk-4.0 обновлён до версии 2.31.1;
  • Исправлены накопившиеся ошибки и недоработки компилятора.

Источник.