Wydanie tłumacza języka programowania Vala 0.54.0

Została wydana nowa wersja tłumacza języka programowania Vala 0.54.0. Język Vala to obiektowy język programowania, który zapewnia składnię podobną do C# lub Java. Kod Vala jest tłumaczony na program w języku C, który z kolei jest kompilowany przez standardowy kompilator C do pliku binarnego i wykonywany z szybkością aplikacji skompilowanej do kodu obiektowego platformy docelowej. Możliwe jest uruchamianie programów w trybie skryptowym. Język jest rozwijany pod auspicjami projektu GNOME. Jako model obiektowy używany jest Gobject (Glib Object System). Kod kompilatora jest rozpowszechniany na licencji LGPLv2.1.

Język obsługuje introspekcję, funkcje lambda, interfejsy, delegaty i domknięcia, sygnały i sloty, wyjątki, właściwości, typy inne niż null, wnioskowanie o typie zmiennych lokalnych (var). Zarządzanie pamięcią odbywa się w oparciu o zliczanie referencji. Dla tego języka opracowano uogólnioną bibliotekę programistyczną libgee, która zapewnia możliwość tworzenia kolekcji dla niestandardowych typów danych. Obsługiwane jest wyliczanie elementów kolekcji przy użyciu instrukcji foreach. Programowanie programów graficznych odbywa się przy wykorzystaniu biblioteki graficznej GTK.

W zestawie znajduje się duża liczba powiązań z bibliotekami w języku C. Translator Vala zapewnia obsługę języka Genie, który zapewnia podobne możliwości, ale ze składnią inspirowaną językiem programowania Python. Takie programy jak klient poczty e-mail Geary, powłoka graficzna Budgie, program do organizacji zdjęć i plików wideo Shotwell i inne są napisane w języku Vala. Język jest aktywnie wykorzystywany przy rozwoju dystrybucji Elementary OS.

Główne innowacje:

  • Dodano obsługę delegatów ze zmienną liczbą parametrów;
  • Dodano profil LIBC, który jest synonimem profilu POSIX;
  • Ulepszone generowanie w trybie profilu POSIX;
  • Dodano możliwość deklarowania zmiennych, które mogą mieć wartość null z wnioskowaniem o typie (var?);
  • Dodano możliwość zadeklarowania klas zabronionych do dziedziczenia (zapieczętowane);
  • Dodano operator bezpiecznego dostępu do pól klas, które mogą mieć wartość null (a.?b.?c);
  • Dozwolona inicjalizacja zawartości struktury na null (const Foo[] BARS = { { "bar", 42 }, null };);
  • Operacja resize() jest zabroniona w przypadku tablic stałych;
  • Dodano ostrzeżenie podczas próby rzutowania wywołania funkcji na void ((void)not_void_func(););
  • Usunięto ograniczenie typów elementów GLib.Array;
  • Naprawiono dziedziczenie własności „nieposiadanego var” w instrukcji foreach();
  • Powiązanie z webkit2gtk-4.0 zostało zaktualizowane do wersji 2.33.3;
  • Powiązanie z gstreamerem zostało zaktualizowane do wersji 1.19.0+ git master;
  • Powiązanie z gtk4 zostało zaktualizowane do wersji 4.5.0~e681fdd9;
  • Powiązanie dla gtk+-3.0 zostało zaktualizowane do wersji 3.24.29+f9fe28ce
  • Powiązanie z gio-2.0, glib-2.0 zostało zaktualizowane do wersji 2.69.0;
  • W przypadku Linuksa dodano powiązania z SocketCAN;
  • Poprawki w powiązaniach dla 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- rozszerzenie-4.0, x11, zlib, gnutls;
  • Usunięto powiązania gedit-2.20 i webkit-1.0;
  • Zaktualizowane powiązania oparte na GIR;
  • Do systemu testowego dodano możliwość sprawdzenia wygenerowanego kodu C;
  • Ulepszony girparser, girwriter, valadoc, libvaladoc/girimporter;
  • Naprawiono nagromadzone błędy i niedociągnięcia różnych komponentów kompilatora.

Źródło: opennet.ru

Dodaj komentarz