Një version i ri i kompajlerit për gjuhën e programimit Vala, versioni 0.50.4, është publikuar. Dega e mbështetjes afatgjatë (LTS) e Vala 0.48.14 është përditësuar gjithashtu (e paketuar për Ubuntu 18.04) dhe dega eksperimentale Vala 0.51.3.
Vala është një gjuhë programimi e orientuar drejt objekteve me një sintaksë të ngjashme me C# ose Java. Ajo përdor Gobject (Glib Object System) si model objekti. Menaxhimi i memories kryhet nga pronësia (referenca në pronësi/pa pronësi) ose nga ARC (destruktori në kohën e kompilimit dhe zvogëlimi i numrit të referencave).
Gjuha mbështet vetëanalizën, funksionet lambda, ndërfaqet, delegimet dhe mbylljet, sinjalet dhe slotet, përjashtimet, vetitë, llojet jo-nulluese dhe nxjerrjen e tipit për variablat lokale. Përfshihet një numër i madh lidhjesh me libraritë C (vala-girs, vala-extra-vapis). Programet Vala përkthehen në përfaqësim C dhe më pas kompilohen nga kompiluesi i integruar C. Programet mund të ekzekutohen në modalitetin skript.
Lista e ndryshimeve:
- U shtua mbështetje shtesë për fjalën kyçe params për klasën e konstruktorëve Foo{ public Foo(params string[] args){ foreach (var arg in args) print(arg); } }
- kodgjenerues:
- Mbështetje e përmirësuar për konstruktorët e strukturave SimpleType (p.sh. përdoret për të lidhur typedef uint32_t people_inside; nga C) [SimpleType] [CCode (cname = "people_inside")] public struct PeopleInside : uint32 {}
- Përmirësim i trajtimit të atributit "NoWrapper".
- Për klasat, lejohen CCode.type_cname dhe get_ccode_type_name().
- Përdorni gjithmonë G_TYPE_INSTANCE_GET_CLASS/INTERFACE për simbolet e jashtme.
- Përdoret g_boxed_free në free-wrapper për të ndarë GLib.Value në heap.
- U rregullua një rrjedhje e memories gjatë hapjes implicite të GLib.Value (një kontejner universal i çdo lloji vlere).
- U rregullua një rrjedhje e memories gjatë zhvendosjes së një strukture të alokuar në heap në stack.
- Ofron trashëgiminë e destruktorit të strukturës mëmë
- Marrja e saktë e symbol_reference të shprehjeve të ndërthurura të cast është rregulluar.
- Të gjitha dukuritë e ndërthurura të CCodeCastExpression janë hequr.
- U rregullua thirrja e gabuar e trajtuesit të sinjalit të parazgjedhur.
- "string.h" i lidhur për strcmp() (profil POSIX, modaliteti në të cilin Vala gjeneron kod duke përdorur vetëm bibliotekën standarde C).
- Vala:
- Zbulim i përmirësuar i skedarëve burimorë të paketave të dyfishta.
- Fushat/vetitë GtkChild duhet të deklarohen si të pazotëruara.
- Ricaktimi i fushës/pronës GtkChild është i ndaluar.
- Një kusht më i rreptë është aplikuar te lambda gjatë delegimit të caktimit.
- Përdorimi i strukturave SimpleType me përdorim të vetëm është i ndaluar.
- Në hapjen e kutisë së GLib.Value, kthehet një vlerë e pazotë.
- Transferimi i GLib.Value në një lloj struct/simple të pavlefshëm është i ndaluar.
- Shtohet kontrolli i argumenteve të tipit në parakushtet bazë të tipeve/klasës/ndërfaqes.
- Kapja e parametrave/variablave va_list është e ndaluar.
- Dokumentet gjenerike që përmbajnë një tregues drejt një strukture duhet të shndërrohen në llojin e saktë kur aksesohen për të shmangur C UB.
- Përfundimi i tipit të implementuar për "in" brenda enum-it.
- Kontroll i përmirësuar i kontekstit gjatë caktimit të një fushe të shkrueshme.
- "stdlib.h" i lidhur për Enum.to_string() (POSIX).
- Vendos referencën_e_saj_saj të saktë për variablat implicite "kjo" dhe "rezultati"
- U dha mesazh gabimi për operand të brendshëm të pavlefshëm të shprehjeve unare.
- Shkruesi i kodit: U ndalua shtimi i një ";" në fund pas trupit të WithStatement.
- Girparser:
- Ofrohet trajtimi i një delegati anonim që nuk mbështetet nga një metodë ose sinjal virtual.
- Meta të dhënat "delegate_target" janë aplikuar në metoda dhe parametra.
- Metadatat "destroy_notify_cname" u aplikuan në fusha
- Meta të dhënat "type_get_function" janë aplikuar në klasa dhe ndërfaqe.
- Cakto CCode.type_cname për klasat nëse nuk përputhet me vlerën e parazgjedhur.
- girwriter: Ofron shkrimin e elementëve të parametrave të instancës.
- girwriter: Dalja e implementuar e trajtuesit të sinjalit të parazgjedhur.
- libvaladoc/html: U hoq renditja e fushave të strukturës për të ruajtur rendin e tyre origjinal gjatë gjenerimit të dokumentacionit HTML për valadoc.org.
- libvaladoc: U sigurua që vlerat për Api.Class.is_compact të merren saktë.
- libvaladoc: U shtua mbështjellësi për bibliotekën graphviz "agedge".
- Lidhjet:
- Rregullime të vogla për gjenerimin e lidhjes: cairo, gobject-2.0, pango, goocanvas-2.0, mallkimet, alsa, bzlib, sqlite3, libgvc, posix, gstreamer-1.0, gdk-3.0, gdk-x11-3.0, gtk+t-3.0,ml, gtk+-4x2.0.
- gdk-pixbuf-2.0: Rregullo Pixbuf.save_to_streamv_async()
- gio-2.0: Rregulloni lidhjen PollableOutputStream.write*_nonblocking()
- gio-2.0, gtk+-3.0, gtk4: Atributet e tipit c të parametrave va_list u hoqën.
- gio-2.0: Thirrësi mungon i përzgjedhur për disa metoda AppInfo/File.*()
- glib-2.0: U shtuan metodat e përshtatshme GLib.[S]List.is_empty() për jo-null
- glib-2.0: Lidhja e funksionit assert_cmp* [#395]
- glib-2.0: Lloji i fushës OptionEntry.flags i përmirësuar
- glib-2.0: PtrArray tani është një nënklasë e GenericArray
- gstreamer-1.0: CCode.type_id i MiniObject është vendosur në G_TYPE_BOXED [#1133]
- gtk+-2.0,javascriptcoregtk-4.0: U korrigjua përdorimi i atributit CCode.type_cname
- gtk+-3.0, gtk4: U rregulluan disa vlera dhe parametra të kthimit të delegatëve
- gtk4: Përditësuar në versionin 4.0.2.
Burimi: opennet.ru
