Выпуск транслятара мовы праграмавання 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

Дадаць каментар