Vala programozási nyelv fordító frissítése 0.50.4

Megjelent a Vala 0.50.4 programozási nyelv fordítójának új verziója. A Vala 0.48.14 (Ubuntu 18.04-hez csomagolva) hosszú távú támogatási (LTS) ág és a Vala 0.51.3 kísérleti ág is frissült.

A Vala nyelv egy objektum-orientált programozási nyelv, amely a C#-hoz vagy a Java-hoz hasonló szintaxist biztosít. A Gobject (Glib Object System) objektummodellként használatos. A memóriakezelést a tulajdonjog (tulajdonban lévő/nem birtokolt hivatkozások) vagy az ARC használatával (destruktorok helyettesítése és az objektumhivatkozás-számlálók csökkentése a fordítási szakaszban) hajtják végre.

A nyelv támogatja az introspekciót, a lambda-függvényeket, az interfészek, a delegáltak és a lezárások, a jelek és helyek, a kivételek, a tulajdonságok, a nem null típusok, a helyi változók típuskövetkeztetését. A készlet nagyszámú kötést tartalmaz C nyelvű könyvtárakhoz (vala-girs, vala-extra-vapis). A Vala programokat C reprezentációra fordítjuk, majd egy szabványos C fordító fordítja le.Lehetőség van a programok futtatására script módban.

Változások listája:

  • További támogatás hozzáadva a params kulcsszóhoz a konstruktorokhoz class Foo{ public Foo(params string[] args){ foreach (var arg in args) print(arg); } }
  • kód:
    • Továbbfejlesztett támogatás a SimpleType struktúra konstruktorokhoz (például typedef uint32_t people_inside kötésére; C-ből) [SimpleType] [CCode (cname = "people_inside")] nyilvános struktúra PeopleInside : uint32 {}
    • A „NoWrapper” attribútum továbbfejlesztett kezelése.
    • A CCode.type_cname és a get_ccode_type_name() engedélyezett az osztályokhoz.
    • A G_TYPE_INSTANCE_GET_CLASS/INTERFACE mindig a külső szimbólumokhoz használatos.
    • A g_boxed_free a free-wrapperben használt GLib.Value kiosztásához a kupacban.
    • Memóriaszivárgás javítása a GLib.Value (bármilyen típusú univerzális tároló) implicit kicsomagolása során.
    • Memóriaszivárgás kijavítása egy halom-lefoglalt struktúra verembe való áthelyezésekor.
    • A szülőstruktúra destruktorának öröklése biztosított
    • A beágyazott öntött kifejezések symbol_reference helyes lekérése javítva lett.
    • Eltávolította a CCodeCastExpression összes beágyazott előfordulását.
    • Az alapértelmezett jelkezelő helytelen hívása leállt.
    • Csatlakoztatva a "string.h"-hoz az strcmp()-hez (POSIX profil, mód, amelyben Vala kódot generál csak a szabványos C könyvtár használatával).
  • Vala:
    • A duplikált csomagforrásfájlok jobb észlelése.
    • A GtkChild mezőket/tulajdonságokat nem kell nyilvánítani.
    • A GtkChild mező/tulajdon újbóli hozzárendelése tilos.
    • Szigorúbb feltételt alkalmaztak a lambdára a megbízás átadásakor.
    • Egyszer használatos SimpleType szerkezetek használata tilos.
    • A GLib.Value kicsomagolása biztosítja, hogy a nem birtokolt érték visszakerüljön.
    • A GLib.Value nullázható struktúrába/egyszerű típusba öntése tilos.
    • Típusargumentumok ellenőrzése hozzáadva az alaptípusok/osztályok/interfész előfeltételeihez.
    • A va_list paraméterek/változók rögzítése tilos.
    • A struktúrára mutató mutatót tartalmazó általánosakat a megfelelő típusba kell önteni, amikor hozzáférünk, hogy elkerüljük a C UB-t.
    • Megvalósított típuskövetkeztetés az "in"-hez az enum-ban.
    • Továbbfejlesztett kontextus-ellenőrzés az írható mezőhöz való hozzárendelésekhez.
    • Tartalmazza az "stdlib.h" elemet az Enum.to_string() (POSIX) számára.
    • A helyes forráshivatkozás a "this" és a "result" implicit változókhoz van beállítva
    • Hibaüzenetet adott az unáris kifejezések érvénytelen belső operandusához.
  • Сodewriter: A záró ";" hozzáadása leállt a törzs után WithStatement.
  • Girparser:
    • A virtuális módszerrel vagy jellel nem támogatott névtelen delegált feldolgozása biztosított.
    • Alkalmazott "delegate_target" metaadatok a metódusokhoz és paraméterekhez
    • Alkalmazza a „destroy_notify_cname” metaadatokat a mezőkre
    • Alkalmazza a "type_get_function" metaadatokat az osztályokhoz és interfészekhez
    • Állítsa be a CCode.type_cname értéket az osztályokhoz, ha nem az alapértelmezett.
  • girwriter: Gondoskodik a példányparaméter-elemek írásáról.
  • girwriter: Implementált alapértelmezett jelkezelő kimenet.
  • libvaladoc/html: Eltávolítottuk a szerkezeti mezők rendezését, hogy az eredeti sorrendjüket hagyjuk meg a valadoc.org html dokumentáció generálásakor
  • libvaladoc: Győződjön meg arról, hogy az Api.Class.is_compact értékei megfelelően lettek lekérve
  • libvaladoc: Hozzáadott burkoló az "agedge" graphviz könyvtárhoz
  • Kötések:
    • Kisebb javítások a kötések generálásakor: 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, gtk+t-4. biztosíték, libxml-2.0
    • gdk-pixbuf-2.0: Javítsa ki a Pixbuf.save_to_streamv_async()
    • gio-2.0: PollableOutputStream.write*_nonblocking() kötési javítás
    • gio-2.0,gtk+-3.0,gtk4: A va_list paraméterek explicit c-típusú attribútumait elveti
    • gio-2.0: Hiányzó meghívó van kiválasztva egyes AppInfo/File.*() metódusokhoz
    • glib-2.0: hozzáadva a GLib.[S]List.is_empty() kényelmi metódusokat nem nullához
    • glib-2.0: Az assert_cmp* függvény összerendelése [#395]
    • glib-2.0: Továbbfejlesztett OptionEntry.flags mezőtípus
    • glib-2.0: A PtrArray mostantól a GenericArray alosztálya
    • gstreamer-1.0: A MiniObject CCode.type_id értéke G_TYPE_BOXED [#1133]
    • gtk+-2.0,javascriptcoregtk-4.0: A CCode.type_cname attribútum helyes használata
    • gtk+-3.0,gtk4: Javítva néhány delegált visszatérési érték és paraméter
    • gtk4: Frissítve a 4.0.2-es verzióra.

Forrás: opennet.ru

Hozzászólás