Keele Vala kompilaatori versioon 0.50.4 uuendus

Vala programmeerimiskeele uus versioon 0.50.4 on välja tulnud. Samuti on värskendatud pikaajalise toe (LTS) haru versiooni Vala 0.48.14 (pakitakse Ubuntu 18.04-le) ja eksperimentaalset haru Vala 0.51.3.

Vala keel on objektorienteeritud programmeerimiskeel, millel on süntaks, mis sarnaneb C# või Java keelele. Objektimudeli põhjal on kasutusel Gobject (Glib objektisüsteem). Mäluhaldus toimub kas omamise (owned/unowned viidatud) kaudu või ARC abil (destruktorite ja viidatud arvude vähenemiste asendamine kompileerimise ajal).

Keele toed sisaldavad introspektsiooni, lambda-funktsioone, liideseid, delegaatide ja sulgude, signaalide ja pesade, erandeid, omadusi, mitte-null tüüpe, tüüpide järeldust lokaalsed muutujate jaoks. Paketis on suur hulk C keele teekide sidemeid (vala-girs, vala-extra-vapis). Vala keeles kirjutatud programmid tõlgitakse C keele esitusviisi ja seejärel kompileeritakse C keele standardkompilaatori abil. Samuti on võimalik käitada programme skriptirežiimis.

Muudatuste nimekiri:

  • Sisse on toodud täiendav toetus märksõna params jaoks konstruktorites class Foo{ public Foo(params string[] args){ foreach (var arg in args) print(arg); } }
  • koodigeneratsioon:
    • Täitmistugevust on parendatud SimpleType struktuuride konstruktorite osas (nt kasutatakse typedef uint32_t people_inside; C-st) [SimpleType] [CCode (cname = "people_inside")] public struct PeopleInside : uint32 {}
    • Atribuudi „NoWrapper” töötlemist on parendatud.
    • Klassidele on lubatud CCode.type_cname ja get_ccode_type_name().
    • Väliste sümbolite puhul on alati kasutatud G_TYPE_INSTANCE_GET_CLASS/INTERFACE.
    • GLib.Value paigutamiseks kuhja on free-wrapperis kasutatud g_boxed_free.
    • Mälu leke on parandatud GLib.Value (igat tüüpi väärtuste universaalne konteiner) mitteformaalse unbundlingu ajal.
    • Mälu leke on parandatud kuhjas eraldatud struktuuri virna liigutamise ajal.
    • Vanema struktuuri destruktorit on õigesti päringud.
    • Sümboli viidete sisemise cast-konstruktsioonide õige saamine on tagatud.
    • Kõik CCodeCastExpressioni sisemised esinemised on eemaldatud.
    • Vale vaikimisi signaalide töötleja kutse on lõpetatud.
    • strcmp() jaoks on ühendatud „string.h” (POSIX profiil, režiim, kus Vala genereerib koodi, kasutades ainult standardset C teeki).
  • Vala:
    • Parandatud algfailide pakettide dubleeritud tuvastamine.
    • GtkChild väljad/omadused peavad olema deklareeritud kui unowned.
    • GtkChild väljade/omaduste määramine on keelatud.
    • Määramise delegeerimise korral on lisatud rangem tingimus lambda jaoks.
    • Ühekordsete SimpleType struktuuride kasutamine on keelatud.
    • GLib.Value ümbersuunamisel tagatakse unowned-väärtuse tagastamine.
    • GLib.Value tüübimuutus nullable struktuuri/tehte tüübiks on keelatud.
    • Lisatud tüübikontrolli argumentide jaoks põhiliikides/klasside/liideste etteantud tingimustes.
    • va_list parameetrite/muutujate haaramine on keelatud.
    • Dženerikud, mis sisaldavad struktuuri näidikuid, peavad olema juurdepääsu jaoks õigele tüübile muudetud, et vältida UB-d.
    • Realiseeritud tüüpide väljund "in" sees enum.
    • Parandatud konteksti kontroll määramiste ajal kirjutatavas väljas.
    • Enum.to_string() (POSIX) jaoks on ühendatud "stdlib.h".
    • Seatud õige source_reference vaikimata muutujatele "this" ja "result".
    • Tagatud veateate väljund aluseks olevate operandide kohta kehtetu ühemõtteliste väljendite korral.
  • Codewriter: lõpetatud lõppsümboli ";" lisamine WithStatement kehade järel.
  • Girparser:
    • Tagatud anonüümse delegeedi töötlemine, mis ei ole toetatud virtuaalse meetodi või signaali poolt.
    • Kasutatud metadatasid «delegate_target» meetodite ja parameetrite jaoks
    • Kasutatud metadatasid «destroy_notify_cname» väljade jaoks
    • Kasutatud metadatasid «type_get_function» klasside ja liideste jaoks
    • Seatud CCode.type_cname klassidele, kui see ei vasta vaikeväärtusele.
  • girwriter: Tagatud kohaloleku parameetrite elementide kirjutamine.
  • girwriter: Rakendatud vaike signaalide käsitleja väljund.
  • libvaladoc/html: Eemaldatud struktuuriväljade sortimine, et säilitada nende originaalne järjekord valadoc.org HTML-dokumentatsioonis.
  • libvaladoc: Tagatud õige väärtuste saamine Api.Class.is_compact jaoks
  • libvaladoc: Lisatud «agedge» teegile wrapper
  • Sidumised:
    • Väikesed parandused sidumiste genereerimisel: 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: Parandatud Pixbuf.save_to_streamv_async()
    • gio-2.0: Parandatud sidumine PollableOutputStream.write*_nonblocking()
    • gio-2.0, gtk+-3.0, gtk4: Loobutud c-tüüpi parameetrite va_list eksplicitsetest atribuutidest
    • gio-2.0: Valitud mõnedel AppInfo/File.*() meetoditel puuduv invoker
    • glib-2.0: Lisatud GLib.[S]List.is_empty() mugavusmeetodid mitte-nullide jaoks
    • glib-2.0: Sidumine funktsiooni assert_cmp* [#395]
    • glib-2.0: Parandatud välja tüüp OptionEntry.flags
    • glib-2.0: PtrArray on nüüd GenericArray alamklass
    • gstreamer-1.0: CCode.type_id miniobjekti (MiniObject) määratakse G_TYPE_BOXED-iks [#1133]
    • gtk+-2.0, javascriptcoregtk-4.0: CCode.type_cname atribuudi kasutust on korrigeeritud
    • gtk+-3.0, gtk4: Delegaatide tagastatud väärtused ja argumendid on mõnes osas parandatud
    • gtk4: Uuendatud versioonini 4.0.2.

Allikas: opennet.ru

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster