Vala programmeerimiskeele kompilaatori uuendus 0.50.4

Vala programmeerimiskeele 0.50.4 kompilaatori uus versioon on välja antud. Uuendatud on ka pikaajalise toega (LTS) haru Vala 0.48.14 (pakitud Ubuntu 18.04 jaoks) ja eksperimentaalharu Vala 0.51.3.

Vala keel on objektorienteeritud programmeerimiskeel, mis pakub C#-le või Java-le sarnast süntaksit. Objektimudelina kasutatakse Gobjecti (Glib Object System). Mälu haldamine toimub omandiõiguse alusel (omatud/tundmatud lingid) või ARC-i abil (destruktorite asendamine ja objektide viiteloendurite vähendamine kompileerimisetapis).

Keel toetab enesevaatlust, lambda-funktsioone, liideseid, delegaate ja sulgemisi, signaale ja pesasid, erandeid, atribuute, mitte-nulltüüpe, kohalike muutujate tüübi järeldusi. Komplektiga on kaasas suur hulk C-keelsete raamatukogude köiteid (vala-girs, vala-extra-vapis). Vala programmid tõlgitakse C-esitusse ja seejärel kompileeritakse standardse kompilaatoriga C. Programme on võimalik käivitada skriptirežiimis.

Muudatuste loend:

  • Lisatud lisatugi params märksõnale konstruktoritele class Foo{ public Foo(params string[] args){ foreach (var arg in args) print(arg); } }
  • koodgen:
    • SimpleType'i struktuurikonstruktorite täiustatud tugi (näiteks kasutatakse typedef uint32_t people_inside sidumiseks; alates C) [SimpleType] [CCode (cname = "people_inside")] avalik struktuur PeopleInside : uint32 {}
    • Atribuudi “NoWrapper” täiustatud käsitlemine.
    • CCode.type_cname ja get_ccode_type_name() on klasside jaoks lubatud.
    • Väliste sümbolite jaoks kasutatakse alati G_TYPE_INSTANCE_GET_CLASS/INTERFACE.
    • Kasutati vabas ümbrises g_boxed_free, et eraldada kuhja GLib.Value.
    • Parandatud mäluleke GLib.Value (mis tahes väärtuse tüüpi universaalne konteiner) kaudse lahtivõtmise ajal.
    • Parandatud mäluleke kuhjaga eraldatud struktuuri teisaldamisel virna.
    • Tagatud on lähtestruktuuri hävitaja pärimine
    • Pesastatud cast-avaldiste symbol_reference õiget otsimist on täiustatud.
    • Eemaldati kõik CCodeCastExpressioni pesastatud esinemised.
    • Peatatud signaali vaikekäsitleja valesti helistamine.
    • Ühendatud "string.h" jaoks strcmp() (POSIX profiil, režiim, milles Vala genereerib koodi, kasutades ainult standardset C teeki).
  • Vala:
    • Täiustatud dubleerivate pakettide lähtefailide tuvastamine.
    • GtkChildi väljad/atribuudid tuleb tunnistada mitteomandiks.
    • Välja/atribuudi GtkChild ümbermääramine on keelatud.
    • Ülesande delegeerimisel on lambda suhtes kohaldatud rangemat tingimust.
    • Ühekordsete SimpleType struktuuride kasutamine on keelatud.
    • GLib.Value lahtipakkimine tagab mitteomava väärtuse tagastamise.
    • GLib.Value'i ülekandmine nullitavale struktuurile/lihttüübile on keelatud.
    • Lisatud tüübiargumentide kontroll baastüüpide/klassi/liidese eeltingimustes.
    • Parameetrite/muutujate va_list hõivamine on keelatud.
    • Struktuurile viitavad geneerilised elemendid tuleb C UB-i vältimiseks kasutada õiget tüüpi.
    • Rakendatud tüübijäreldus "in" jaoks enumi sees.
    • Täiustatud kontekstikontroll kirjutatavale väljale määramiseks.
    • Sisaldab "stdlib.h" jaoks Enum.to_string() (POSIX).
    • Õige allika_viide on seatud kaudsete muutujate "this" ja "result" jaoks
    • Esitas veateate unaaravaldiste kehtetu sisemise operandi kohta.
  • Сcodewriter: lõpetas lõpu ";" lisamise pärast keha WithStatement.
  • Girparser:
    • Anonüümse delegaadi töötlemine, mida ei toeta virtuaalne meetod või signaal.
    • Rakendatud meetodite ja parameetrite metaandmed "delegate_target".
    • Rakendage väljadele metaandmed "destroy_notify_cname".
    • Rakendage klasside ja liideste jaoks metaandmeid "type_get_function".
    • Määrake klasside jaoks CCod.type_cname, kui see pole vaikeväärtus.
  • girwriter: tagab eksemplari parameetrite elementide kirjutamise.
  • girwriter: rakendatud signaalikäitleja vaikeväljund.
  • libvaladoc/html: eemaldati struktuuriväljade sortimine, et jätta nende algne järjekord html-dokumentatsiooni loomisel valadoc.org
  • libvaladoc: veenduge, et faili Api.Class.is_compact väärtused hangitakse õigesti
  • libvaladoc: lisatud ümbris graphviz teegile "agege".
  • Köited:
    • Väiksemad parandused sidumiste loomisel: 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-x4-2.0, gtk+t-k. kaitse, libxml-XNUMX
    • gdk-pixbuf-2.0: parandage Pixbuf.save_to_streamv_async()
    • gio-2.0: PollableOutputStream.write*_nonblocking() sidumisparandus
    • gio-2.0,gtk+-3.0,gtk4: va_list parameetrite selgesõnalised c-tüüpi atribuudid jäetakse kõrvale
    • gio-2.0: mõne AppInfo/File.*() meetodi jaoks on valitud puuduv kutsuja
    • glib-2.0: lisatud GLib.[S]List.is_empty() mugavusmeetodid mitte-null jaoks
    • glib-2.0: funktsiooni assert_cmp* sidumine [#395]
    • glib-2.0: täiustatud väljatüüp OptionEntry.flags
    • glib-2.0: PtrArray on nüüd GenericArray alamklass
    • gstreamer-1.0: MiniObjecti CCode.type_id väärtuseks on määratud G_TYPE_BOXED [#1133]
    • gtk+-2.0,javascriptcoregtk-4.0: atribuudi CCode.type_cname parandatud kasutamine
    • gtk+-3.0,gtk4: parandati mõned delegaadi tagastusväärtused ja parameetrid
    • gtk4: värskendatud versioonile 4.0.2.

Allikas: opennet.ru

Lisa kommentaar