Випуск транслятора мови програмування Vala 0.54.0

Вийшла нова версія транслятора мови програмування Vala 0.54.0. Мова Vala є об'єктно-орієнтованою мовою програмування, надає синтаксис, подібний до мов C# або Java. Код Vala транслюється в програму мовою C, яка, у свою чергу, компілюється штатним Сі-компілятором в бінарний файл і виконується зі швидкістю програми, відкомпілюваної в об'єктний код цільової платформи. Є можливість запуску програм у режимі сценарію. Мова розвивається під егідою проекту GNOME. Як об'єктна модель використовується Gobject (Glib Object System). Код компілятора розповсюджується під ліцензією LGPLv2.1.

У мові є підтримка інтроспекції, лямбда-функцій, інтерфейсів, делегатів та замикань, сигналів та слотів, винятків, властивостей, ненульових типів, виведення типів для локальних змінних (var). Управління пам'яттю здійснюється на підставі підрахунку посилань. Для мови розроблена бібліотека узагальненого програмування libgee, що надає можливість створення колекцій для типів даних користувача. Підтримується перерахування елементів колекцій за допомогою оператора foreach. Програмування графічних програм здійснюється за допомогою графічної бібліотеки GTK.

У комплекті поставляється велика кількість біндінгів до бібліотек мовою C. Транслятором Vala здійснюється підтримка мови Genie, яка надає аналогічні можливості, але з синтаксисом, натхненним мовою програмування Python. На мові Vala написані такі програми як поштовий клієнт Geary, графічна оболонка Budgie, програма організації фото та відео файлів Shotwell та інші. Мова активно використовується для розробки дистрибутива Elementary OS.

Основні нововведення:

  • Додано підтримку делегатів зі змінним числом параметрів;
  • Додано профіль LIBC, який є синонімом до профілю POSIX;
  • Доопрацьовано генерацію в режимі профілю POSIX;
  • Додано можливість оголошення змінних, які можуть мати нульове значення з виведенням типів (var?);
  • Додано можливість оголошення класів заборонених для успадкування (sealed);
  • Додано оператора безпечного доступу до полів класу, які можуть бути рівними null (a.?b.?c);
  • Дозволено ініціалізацію значенням null вмісту структур (const Foo[] BARS = { { «bar», 42 }, null };);
  • Для константних масивів заборонено операцію resize();
  • Додано висновок попередження при спробі приведення виклику функції до void((void)not_void_func(););
  • Усунуто обмеження на типи елементів GLib.Array;
  • Виправлено успадкування прав володіння "unowned var" у виразі foreach();
  • Біндінг до webkit2gtk-4.0 оновлено до версії 2.33.3;
  • Біндінг до gstreamer оновлено до версії 1.19.0+ git master;
  • Біндінг до gtk4 оновлено до версії 4.5.0~e681fdd9;
  • Біндінг до gtk+-3.0 оновлено до версії 3.24.29+f9fe28ce
  • Біндінг до gio-2.0, glib-2.0 оновлено до версії 2.69.0;
  • Для linux додані біндинги до SocketCAN;
  • Виправлення в біндингах до glib-2.0, gio-2.0, gstreamer-rtp-1.0, javascriptcoregtk-4.0, gobject-2.0, pango, linux, gsl, rest-0.7, libusb, libusb-1.0, pixman-1, webkit2gtk-web- extension-4.0, x11, zlib, gnutls;
  • Видалені біндинги gedit-2.20 та webkit-1.0;
  • Оновлені біндинги на основі GIR;
  • У систему тестування додано можливість перевірки C-коду, що генерується;
  • Доопрацьовані girparser, girwriter, valadoc, libvaladoc/girimporter;
  • Виправлені помилки, що накопичилися, і недоробки різних компонентів компілятора.

Джерело: opennet.ru

Додати коментар або відгук