Vala programmeertaal compiler update 0.50.4

Er is een nieuwe versie van de compiler voor de programmeertaal Vala 0.50.4 uitgebracht. De lange termijn ondersteuning (LTS) tak Vala 0.48.14 (verpakt voor Ubuntu 18.04) en de experimentele tak Vala 0.51.3 zijn ook bijgewerkt.

De Vala-taal is een objectgeoriënteerde programmeertaal die een syntaxis biedt die lijkt op C# of Java. Gobject (Glib Object System) wordt gebruikt als objectmodel. Geheugenbeheer wordt uitgevoerd door eigendom (eigen / niet-eigen links) of met behulp van ARC (vervanging van destructors en verlagingen van objectreferentietellers in de compilatiefase).

De taal biedt ondersteuning voor introspectie, lambda-functies, interfaces, afgevaardigden en sluitingen, signalen en slots, uitzonderingen, eigenschappen, niet-null-typen, type-inferentie voor lokale variabelen. De kit wordt geleverd met een groot aantal bindingen naar bibliotheken in C (vala-girs, vala-extra-vapis). Vala-programma's worden vertaald naar C-weergave en vervolgens gecompileerd door een standaard compiler van C. Het is mogelijk om programma's in scriptmodus uit te voeren.

Lijst met wijzigingen:

  • Extra ondersteuning toegevoegd voor het params trefwoord voor constructorsklasse Foo{ public Foo(params string[] args){ foreach (var arg in args) print(arg); } }
  • codegen:
    • Verbeterde ondersteuning voor SimpleType struct-constructors (bijvoorbeeld gebruikt om typedef uint32_t people_inside te binden; van C) [SimpleType] [CCode (cname = "people_inside")] public struct PeopleInside: uint32 {}
    • Verbeterde verwerking van het kenmerk “NoWrapper”.
    • CCode.type_cname en get_ccode_type_name() zijn toegestaan ​​voor klassen.
    • G_TYPE_INSTANCE_GET_CLASS/INTERFACE wordt altijd gebruikt voor externe symbolen.
    • Gebruikt g_boxed_free in free-wrapper om GLib.Value op de heap toe te wijzen.
    • Een geheugenlek opgelost tijdens het impliciet uitpakken van GLib.Value (een universele container van elk waardetype).
    • Een geheugenlek opgelost bij het verplaatsen van een aan een heap toegewezen structuur naar een stapel.
    • Erfelijkheid van de destructor van de ouderstructuur is verzekerd
    • Het correct ophalen van symbol_reference van geneste cast-expressies is verbeterd.
    • Alle geneste exemplaren van CCodeCastExpression verwijderd.
    • Het onjuist aanroepen van de standaardsignaalhandler is gestopt.
    • Verbonden "string.h" voor strcmp() (POSIX-profiel, modus waarin Vala code genereert met alleen de standaard C-bibliotheek).
  • Waar:
    • Verbeterde detectie van dubbele pakketbronbestanden.
    • GtkChild-velden/-eigenschappen moeten als niet-eigendom worden aangemerkt.
    • Het opnieuw toewijzen van het GtkChild-veld/de eigenschap is niet toegestaan.
    • Er is een strengere voorwaarde gesteld aan de lambda bij het delegeren van een opdracht.
    • Het is verboden SimpleType-structuren voor eenmalig gebruik te gebruiken.
    • GLib.Value unboxing zorgt ervoor dat de niet-eigendomswaarde wordt geretourneerd.
    • Het casten van GLib.Value naar een nullable struct/simple type is verboden.
    • Controle van typeargumenten toegevoegd in basistypen/klasse/interfacevoorwaarden.
    • Het vastleggen van va_list-parameters/variabelen is verboden.
    • Generieken die een verwijzing naar een structuur bevatten, moeten bij toegang naar het juiste type worden omgezet om C UB te vermijden.
    • Geïmplementeerde type-inferentie voor "in" binnen enum.
    • Verbeterde contextcontrole voor toewijzingen aan het beschrijfbare veld.
    • Inclusief "stdlib.h" voor Enum.to_string() (POSIX).
    • De juiste source_reference is ingesteld voor de impliciete variabelen "this" en "result"
    • Er is een foutmelding gegeven voor een ongeldige interne operand van unaire expressies.
  • Сodewriter: Gestopt met het toevoegen van de afsluitende ";" na de hoofdtekst WithStatement.
  • Girparser:
    • Er wordt voorzien in verwerking van een anonieme afgevaardigde die niet wordt ondersteund door een virtuele methode of signaal.
    • Toegepaste 'delegate_target'-metagegevens voor methoden en parameters
    • Pas 'destroy_notify_cname'-metagegevens toe op velden
    • Pas 'type_get_function'-metagegevens toe voor klassen en interfaces
    • Stel CCode.type_cname in voor klassen als dit niet de standaard is.
  • girwriter: Zorgt ervoor dat instantieparameterelementen worden geschreven.
  • girwriter: Standaard signaalbehandelaaruitvoer geïmplementeerd.
  • libvaladoc/html: Sortering van structuurvelden verwijderd om hun oorspronkelijke volgorde te behouden bij het genereren van html-documentatie valadoc.org
  • libvaladoc: Zorg ervoor dat waarden voor Api.Class.is_compact correct worden opgehaald
  • libvaladoc: Wrapper toegevoegd voor "agedge" graphviz-bibliotheek
  • Bindingen:
    • Kleine verbeteringen bij het genereren van bindingen: 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, zekering, libxml-2.0
    • gdk-pixbuf-2.0: Pixbuf.save_to_streamv_async() repareren
    • gio-2.0: PollableOutputStream.write*_nonblocking() bindingsfix
    • gio-2.0,gtk+-3.0,gtk4: Expliciete c-type attributen van va_list-parameters worden genegeerd
    • gio-2.0: Geselecteerde ontbrekende aanroeper voor sommige AppInfo/File.*() methoden
    • glib-2.0: GLib.[S]List.is_empty() gemaksmethoden toegevoegd voor niet-null
    • glib-2.0: Binden van de assert_cmp*-functie [#395]
    • glib-2.0: Verbeterd veldtype OptionEntry.flags
    • glib-2.0: PtrArray is nu een subklasse van GenericArray
    • gstreamer-1.0: CCode.type_id van het MiniObject is ingesteld op G_TYPE_BOXED [#1133]
    • gtk+-2.0,javascriptcoregtk-4.0: Gecorrigeerd gebruik van het CCode.type_cname attribuut
    • gtk+-3.0,gtk4: Enkele geretourneerde waarden en parameters voor gedelegeerden opgelost
    • gtk4: bijgewerkt naar versie 4.0.2.

Bron: opennet.ru

Voeg een reactie