Vala programming mutauro compiler update 0.50.4

Shanduro itsva yemuumbi weVala programming mutauro 0.50.4 yakaburitswa. Kutsigirwa kwenguva refu (LTS) bazi Vala 0.48.14 (yakarongedzerwa Ubuntu 18.04) uye bazi rekuedza Vala 0.51.3 zvakare yakagadziridzwa.

Mutauro weVala mutauro wekuronga wakanangana nechinhu unopa syntax yakafanana neC# kana Java. Gobject (Glib Object System) inoshandiswa semuenzaniso wechinhu. Memory management inoitwa nemuridzi (varidzi/zvisingazivikanwe zvinongedzo) kana kushandisa ARC (kutsiviwa kwevanoparadza uye kuderedzwa kwechinhu chinongedzo counters padanho rekubatanidza).

Mutauro une tsigiro yekufungidzira, mabasa e lambda, mainterfaces, vamiriri uye kuvharwa, masaini uye slots, kunze, zvivakwa, asiri-null marudzi, mhando inference yezvakasiyana zvemunharaunda. Iyo kiti inouya nehuwandu hukuru hwekusungirirwa kumaraibhurari muC (vala-girs, vala-extra-vapis). Zvirongwa zveVala zvinoshandurirwa muchimiririro cheC uye zvobva zvaunganidzwa neyakajairwa compiler C. Zvinogoneka kuita zvirongwa mu script mode.

Rondedzero yekuchinja:

  • Yakawedzera imwe tsigiro yeparams keyword yevanovaka kirasi Foo{voruzhinji Foo(params tambo[] args){ foreach (var arg mu args) dhinda(arg); }}
  • codegen:
    • Rutsigiro rwakavandudzwa rweSimpleType struct vavaki (semuenzaniso unoshandiswa kusunga typedef uint32_t people_inside; kubva kuC) [SimpleType] [CCode (cname = "people_inside")] public struct PeopleInside : uint32 {}
    • Yakavandudzwa kubata kweiyo "NoWrapper" hunhu.
    • CCode.type_cname uye get_ccode_type_name() zvinotenderwa kumakirasi.
    • G_TYPE_INSTANCE_GET_CLASS/INTERFACE inogara ichishandiswa kureva zviratidzo zvekunze.
    • Yakashandisa g_boxed_free mune yemahara-wrapper kugovera GLib.Kukosha pamurwi.
    • Gadzirisa ndangariro kuvuza panguva isina kujeka unboxing yeGLib.Value (chigaba chepasi rose chemhando ipi zvayo yakakosha).
    • Gadzirisa ndangariro kuvuza paunenge uchifambisa murwi-wakagoverwa chimiro kune stack.
    • Nhaka yemuparadzi wechimiro chemubereki inovimbiswa
    • Kudzosa chaiko kwechiratidzo_referenzi yezvimiro zvakakandwa zvakagadziridzwa.
    • Yakabvisa zvese nested zvinoitika zveCCodeCastExpression.
    • Yamira zvisizvo kudaidza iyo default signal mubato.
    • Yakabatanidzwa "string.h" ye strcmp() (POSIX mbiri, modhi iyo Vala inogadzira kodhi ichishandisa yakajairwa C raibhurari).
  • Vala:
    • Kuonekwa kwakakwenenzverwa kweduplicate package source mafaira.
    • GtkChild minda/zvivakwa zvinofanirwa kuziviswa kuti hazvina muridzi.
    • Kupazve iyo GtkChild munda/mudzi kunorambidzwa.
    • Mamiriro akaomarara akaiswa kune lambda pakugovera basa.
    • Izvo zvinorambidzwa kushandisa single-shandisa SimpleType zvimiro.
    • GLib.Value unboxing inova nechokwadi chekuti kukosha kwausina kupihwa kwadzoserwa.
    • Kukanda GLib.Kukosha kune isingashanduke struct/nyore mhando haibvumidzwe.
    • Yakawedzera mhando nharo yekutarisa mumhando dzepasi / kirasi / interface preconditions.
    • Kubata va_list parameters/variables kunorambidzwa.
    • MaGenerics ane chinongedzo kune chimiro anofanirwa kukandwa kune iyo chaiyo mhando kana yawanikwa kudzivirira C UB.
    • Yakaitwa inference yemhando ye "in" mukati enum.
    • Yakavandudzwa mamiriro ekutarisa mabasa kune inonyorwa ndima.
    • Inosanganisirwa "stdlib.h" yeEnum.to_string() (POSIX).
    • Iyo chaiyo sosi_referensi yakaseterwa yezvakasiyana zvakasiyana "izvi" uye "mhedzisiro"
    • Tapa meseji yemhosho yebasa remukati risiri iro remataurirwo asina kujairika.
  • Π‘odewriter: Yakamira kuwedzera iyo trailing ";" mushure memuviri NeStatement.
  • Girparser:
    • Kugadziriswa kwemumiriri asingazivikanwe asina kutsigirwa nemaitiro chaiwo kana chiratidzo kunopihwa.
    • Yakaiswa "delegate_target" metadata yemaitiro uye paramita
    • Isa "destroy_notify_cname" metadata kuminda
    • Isa "type_get_function" metadata yemakirasi uye mainterface
    • Seta CCode.type_cname yemakirasi kana isiri iyo yekutanga.
  • girwriter: Inove nechokwadi chemuenzaniso parameter zvinhu zvakanyorwa.
  • girwriter: Yakashandiswa default chiratidzo chekubata chinobuda.
  • libvaladoc/html: Yakabviswa kurongeka kweminda yezvimiro kuti isiye iyo yekutanga odha paunenge uchigadzira html zvinyorwa valadoc.org
  • libvaladoc: Ita shuwa kuti kukosha kweApi.Class.is_compact kwadzoserwa nemazvo
  • libvaladoc: Yakawedzerwa wrapper ye "agedge" graphviz raibhurari
  • Bindings:
    • Zvigadziriso zvidiki pakugadzira zvinosunga: cairo, gobject-2.0, pango, goocanvas-2.0, kutukwa, alsa, bzlib, sqlite3, libgvc, posix, gstreamer-1.0, gdk-3.0, gdk-x11-3.0, gtk+-k3.0, gtk+-4, 2.0. fuse, libxml-XNUMX
    • gdk-pixbuf-2.0: Gadzirisa Pixbuf.save_to_streamv_async()
    • gio-2.0: PollableOutputStream.write*_nonblocking() kusunga gadzirisa
    • gio-2.0,gtk+-3.0,gtk4: Zviripachena c-mhando yemhando yeva_list parameter inoraswa
    • gio-2.0: Yakasarudzwa isipo invoker yeimwe AppInfo/Faira.*() nzira
    • glib-2.0: Yakawedzerwa GLib.[S]List.is_empty() nzira dzakareruka dzezvisiri-null
    • glib-2.0: Kusunga iyo assert_cmp* basa [#395]
    • glib-2.0: Yakavandudzwa OptionEntry.flags munda mhando
    • glib-2.0: PtrArray ikozvino iri subclass yeGenericArray
    • gstreamer-1.0: CCode.type_id yeMiniObject yakaiswa kuG_TYPE_BOXED [#1133]
    • gtk+-2.0,javascriptcoregtk-4.0: Kushandiswa kwakagadziriswa kweCCode.type_cname hunhu
    • gtk+-3.0,gtk4: Yakagadzirisa imwe nhumwa yekudzoka kukosha uye paramita
    • gtk4: Yakagadziridzwa kune vhezheni 4.0.2.

Source: opennet.ru

Voeg