Doli një version i ri i kompajlerit për gjuhën e programimit Vala 0.50.4. Po ashtu, është përmirësuar dega me mbështetje afatgjate (LTS) Vala 0.48.14 (e paketuar për Ubuntu 18.04) dhe dega eksperimentale Vala 0.51.3.
Gjuha Vala është një gjuhë programimi objektivisht orientuar, që ofron një sintaksë të ngjashme me gjuhët C# ose Java. Si model objekti përdoret Gobject (Sistemi i Objekteve Glib). Menaxhimi i memories bëhet përmes pronësisë (referenca të pronësuara/dhe të papronësuara) ose me ndihmën e ARC (zëvendësimi i destruktoreve dhe zvogëlimi i numrit të referencave të objekteve në fazën e kompajlimit).
Gjuha ka mbështetje për introspeksionin, funksionet lambda, ndërfaqet, delegatët dhe kapjet, sinjalet dhe vendet, përjashtimet, atributet, tipet jo-zero, dhe përjashtimin e tipit për variablat lokalë. Vjen me një numër të madh lidhjesh për bibliotekat në gjuhën C (vala-girs, vala-extra-vapis). Programet në gjuhën Vala përkthehen në një përfaqësim në gjuhën C dhe pastaj kompajlohen me kompajlerin standard për gjuhën C. Ka mundësinë e ekzekutimit të programeve në modalitetin e skenarit.
Lista e ndryshimeve:
- Shtesa e mbështetjes për fjalët kyçe params për konstruktorrat class Foo{ public Foo(params string[] args){ foreach (var arg in args) print(arg); } }
- kodifiko:
- Përmirësimi i mbështetjes për konstruktorrat SimpleType struct (për shembull përdoret për të lidhur typedef uint32_t people_inside; nga C) [SimpleType] [CCode (cname = «people_inside»)] public struct PeopleInside : uint32 {}
- Përmirësimi i trajtimit të atributit «NoWrapper».
- Për klasat, është lejuar CCode.type_cname dhe get_ccode_type_name().
- Gjithmonë përdoret G_TYPE_INSTANCE_GET_CLASS/INTERFACE për simbolet e jashtme.
- Përdorur g_boxed_free në free-wrapper për të vendosur GLib.Value në heap.
- Përmirësuar rrjedhjen e memories gjatë unboxing-it implicit të GLib.Value (kontejner dëshmues i çdo tipi vlera).
- Korrigjuar rrjedhjen e memories gjatë zhvendosjes së strukturës së alokuar në heap në stack.
- Siguruar trashëgiminë e destruktori të strukturës prind.
- Korrigjuar marrjen e saktë të simbol_reference të shprehjeve të brendshme cast.
- Hequr të gjitha shprehjet e brendshme CCodeCastExpression.
- Ndalur thirrjen e pasaktë të trajtuesit të sinjaleve me default.
- Përfshirë «string.h» për strcmp() (profili POSIX, modaliteti në të cilin Vala gjeneron kod duke përdorur vetëm bibliotekën standarde C).
- Vala:
- Përmirësuar zbulimi i kopjeve të skedarëve burimorë të paketave.
- Fushat/atributet GtkChild duhet të shpallen si unowned.
- Riinvestimi i fushës/atributit GtkChild është i ndaluar.
- Kushti për lambda në dërgimin e caktimit është aplikuar më rigorozisht.
- Aplikimi i strukturave SimpleType të njëhershme është i ndaluar.
- Në GLib.Value unboxing garantohet kthimi i vlerës unowned.
- Rrethimi i GLib.Value në llojin nullable struct/simple është i ndaluar.
- Kontrolli i argumenteve të tipit është shtuar në llojet bazë/parakushtet e klasave/interfejseve.
- Kapja e parametrave/variablave va_list është e ndaluar.
- Gjenerikët që përmbajnë tregues në strukturë duhet të konvertohen në llojin e duhur gjatë qasjes për të shmangur UB.
- ĂshtĂ« realizuar dalja e llojeve pĂ«r 'in' brenda enum.
- Përmirësimi i kontrollit të kontekstit gjatë caktimeve në fushën writeable.
- Janë lidhur 'stdlib.h' për Enum.to_string() (POSIX).
- Referenca e saktë source_reference për variablat e pavolitura 'this' dhe 'result'.
- Sigurohet dalja e mesazhit të gabimit për operandët e papranueshëm të shprehjeve unare.
- Codedwriter: Ndalohet shtimi i ' ; ' përfundimtar pas trupit të WithStatement.
- Girparser:
- Sigurohet trajtimi i delegatëve anonimë, të pa mbështetur nga metoda virtuale ose sinjale.
- Metadatave «delegate_target» të aplikuara për metodat dhe parametrat
- Metadatave «destroy_notify_cname» të aplikuara për fushat
- Metadatave «type_get_function» të aplikuara për klasat dhe ndërfaqet
- CCode.type_cname është vendosur për klasat, nëse nuk i përgjigjet vlerës standarde.
- girwriter: Ka siguruar regjistrimin e elementeve parametrike të instancës.
- girwriter: Ka implementuar daljen e menaxhuesit të sinjaleve të paracaktuar.
- libvaladoc/html: U hoq renditja e fushave të strukturave për të ruajtur rendin e tyre origjinal gjatë gjenerimit të dokumentacionit html në valadoc.org
- libvaladoc: ĂshtĂ« siguruar marrja e saktĂ« e vlerave pĂ«r Api.Class.is_compact
- libvaladoc: ĂshtĂ« shtuar njĂ« wrapper pĂ«r bibliotekĂ«n «agedge» tĂ« graphviz
- Bindimet:
- Korrektime të vogla gjatë gjenerimit të lidhjeve: 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
- gdk-pixbuf-2.0: Korrigjim për Pixbuf.save_to_streamv_async()
- gio-2.0: Korrigjim për lidhjen PollableOutputStream.write*_nonblocking()
- gio-2.0, gtk+-3.0, gtk4: U hodhën atributet e dukshme të tipit c për parametrat va_list
- gio-2.0: Invoker mungues u zgjodh për disa metoda AppInfo/File.*()
- glib-2.0: Shtuar GLib.[S]List.is_empty() metoda praktike për jo-null
- glib-2.0: Binding për funksionin assert_cmp* [#395]
- glib-2.0: Përmirësuar tipi i fushës OptionEntry.flags
- glib-2.0: PtrArray tani nënklasë GenericArray
- gstreamer-1.0: CCode.type_id mini-objekti (MiniObject) vendoset si G_TYPE_BOXED [#1133]
- gtk+-2.0,javascriptcoregtk-4.0: Rregulluar përdorimi i atributit CCode.type_cname
- gtk+-3.0,gtk4: Korrigjuar disa vlera dhe parametra të kthyera nga delegati
- gtk4: Përditësuar në versionin 4.0.2.
Burimi: opennet.ru
