Ĝisdatigo de la kompililo de Vala programlingvo 0.50.4

Nova versio de la kompililo por la programlingvo Vala 0.50.4 estis publikigita. La longtempa subteno (LTS) branĉo Vala 0.48.14 (pakita por Ubuntu 18.04) kaj la eksperimenta branĉo Vala 0.51.3 ankaŭ estis ĝisdatigitaj.

La Vala lingvo estas objekt-orientita programlingvo kiu disponigas sintakson similan al C# aŭ Java. Gobject (Glib Object System) estas utiligita kiel objektomodelo. Memoradministrado estas aranĝita per proprieto (posedataj/neposedataj ligiloj) aŭ uzante ARC (anstataŭigo de detruantoj kaj dekrementoj de objektaj referencaj nombriloj en la kompila stadio).

La lingvo havas subtenon por introspekto, lambda funkcioj, interfacoj, delegitoj kaj fermoj, signaloj kaj fendoj, esceptoj, trajtoj, ne-nulaj tipoj, tipinferenco por lokaj variabloj. La ilaro venas kun granda nombro da ligadoj al bibliotekoj en C (vala-girs, vala-extra-vapis). Vala-programoj estas tradukitaj al C-reprezento kaj poste kompilitaj per norma kompililo C. Eblas ruli programojn en skriptoreĝimo.

Listo de ŝanĝoj:

  • Aldonita plia subteno por la ŝlosilvorto params por konstruantoj klaso Foo{ public Foo(params string[] args){ foreach (var arg en args) print(arg); }}
  • codegen:
    • Plibonigita subteno por SimpleType struct-konstrukciiloj (ekzemple uzata por ligi typedef uint32_t people_inside; de ​​C) [SimpleType] [CCode (cname = "people_inside")] publika struct PeopleInside : uint32 {}
    • Plibonigita uzado de la atributo "NoWrapper".
    • CCode.type_cname kaj get_ccode_type_name() estas permesitaj por klasoj.
    • G_TYPE_INSTANCE_GET_CLASS/INTERFACE estas ĉiam uzata por eksteraj simboloj.
    • Uzita g_boxed_free en free-wrapper por asigni GLib.Value sur la amaso.
    • Korektis memorfukon dum implica malboksado de GLib.Value (universala ujo de iu ajn valorspeco).
    • Korektis memorfukon dum movo de amas-asignita strukturo al stako.
    • Heredo de la detruanto de la gepatra strukturo estas certigita
    • Ĝusta rehavigo de symbol_reference de nestitaj rolantaj esprimoj estis plibonigita.
    • Forigis ĉiujn nestitajn aperon de CCodeCastExpression.
    • Ĉesis malĝuste voki la defaŭltan signaltraktilon.
    • Konektita "string.h" por strcmp() (POSIX-profilo, reĝimo en kiu Vala generas kodon uzante nur la norman C-bibliotekon).
  • Vala:
    • Plibonigita detekto de duplikataj pakaj fontdosieroj.
    • GtkChild kampoj/propraĵoj devas esti deklaritaj neposedataj.
    • Reasigni la kampon/posedaĵon GtkChild estas malpermesita.
    • Pli strikta kondiĉo estis aplikita al la lambda dum delegado de tasko.
    • Estas malpermesite uzi unuuzajn SimpleType-strukturojn.
    • GLib.Value unboxing certigas ke la neposedata valoro estas resendita.
    • Ĵeti GLib.Value al nulebla strukturo/simpla tipo estas malpermesita.
    • Aldonita tipo-argumento kontrolado en baztipoj/klaso/interfaco antaŭkondiĉoj.
    • Kaptado de va_list parametroj/variabloj estas malpermesita.
    • Generics enhavantaj montrilon al strukturo devas esti gisitaj al la ĝusta tipo kiam aliritaj por eviti C UB.
    • Efektivigita tipinferenco por "en" ene enum.
    • Plibonigita kunteksta kontrolo por taskoj al la skribebla kampo.
    • Inkluzivita "stdlib.h" por Enum.to_string() (POSIX).
    • La ĝusta fonto_referenco estas agordita por la implicaj variabloj "ĉi" kaj "rezulto"
    • Provizis erarmesaĝon por nevalida interna operando de unaraj esprimoj.
  • Сodewriter: Ĉesis aldoni la sekvan ";" post la korpo WithStatement.
  • Girparser:
    • Pretigo de anonima delegito ne subtenata de virtuala metodo aŭ signalo estas disponigita.
    • Aplikitaj "delegate_target" metadatenoj por metodoj kaj parametroj
    • Apliki "destroy_notify_cname" metadatenojn al kampoj
    • Apliki "type_get_function" metadatenojn por klasoj kaj interfacoj
    • Agordu CCode.type_cname por klasoj se ne la defaŭlta.
  • girwriter: Certigas ekzemplejn parametro-elementojn estas skribitaj.
  • girwriter: Efektivigita defaŭlta signala pritraktilo eligo.
  • libvaladoc/html: Forigita ordigo de strukturkampoj por forlasi sian originan ordon dum generado de html-dokumentado valadoc.org
  • libvaladoc: Certigu, ke valoroj por Api.Class.is_compact estas ĝuste prenitaj
  • libvaladoc: Aldonita envolvaĵo por "agedge" graphviz-biblioteko
  • Ligiloj:
    • Malgrandaj korektoj dum generado de ligadoj: cairo, gobject-2.0, pango, goocanvas-2.0, malbenoj, alsa, bzlib, sqlite3, libgvc, posix, gstreamer-1.0, gdk-3.0, gdk-x11-3.0, gtk+-3.0, gtk4. fuzeo, libxml-2.0
    • gdk-pixbuf-2.0: Ripari Pixbuf.save_to_streamv_async ()
    • gio-2.0: PollableOutputStream.write*_nonblocking() liganta riparo
    • gio-2.0,gtk+-3.0,gtk4: Eksplicitaj c-tipaj atributoj de va_list-parametroj estas forĵetitaj
    • gio-2.0: Elektita mankanta alvokilo por iuj AppInfo/Dosiero.*() metodoj
    • glib-2.0: Aldonitaj GLib.[S]List.is_empty() oportunaj metodoj por ne-nulaj
    • glib-2.0: Ligi la funkcion assert_cmp* [#395]
    • glib-2.0: Plibonigita OptionEntry.flags kampotipo
    • glib-2.0: PtrArray nun estas subklaso de GenericArray
    • gstreamer-1.0: CCode.type_id de la MiniObject estas agordita al G_TYPE_BOXED [#1133]
    • gtk+-2.0,javascriptcoregtk-4.0: Korektita uzo de la atributo CCode.type_cname
    • gtk+-3.0,gtk4: Korektis iujn revenajn valorojn kaj parametrojn de delegitoj
    • gtk4: Ĝisdatigita al versio 4.0.2.

fonto: opennet.ru

Aldoni komenton