Vala programming lus compiler hloov tshiab 0.50.4

Ib tug tshiab version ntawm lub compiler rau Vala programming lus 0.50.4 tau raug tso tawm. Kev txhawb nqa mus ntev (LTS) ceg Vala 0.48.14 ( ntim rau Ubuntu 18.04) thiab cov ceg sim Vala 0.51.3 kuj tau hloov kho.

Cov lus Vala yog ib hom lus hais txog qhov programming uas muab cov syntax zoo ib yam li C# lossis Java. Gobject (Glib Object System) yog siv los ua tus qauv khoom. Kev tswj hwm kev nco yog ua los ntawm cov tswv cuab (tus tswv / tsis muaj kev sib txuas) lossis siv ARC (kev hloov pauv ntawm cov destructors thiab decrements ntawm cov khoom siv cov khoom siv ntawm cov khoom sib sau ua ke).

Cov lus muaj kev txhawb nqa rau introspection, lambda functions, interfaces, delegates thiab kaw, signals thiab slots, kev zam, khoom, non-null hom, hom inference rau lub zos variables. Cov khoom siv los nrog ntau qhov sib txuas rau cov tsev qiv ntawv hauv C (vala-girs, vala-extra-vapis). Vala cov kev pab cuam raug muab txhais ua C sawv cev thiab tom qab ntawd muab tso ua ke los ntawm tus qauv C compiler.

Daim ntawv thov:

  • Ntxiv kev txhawb nqa ntxiv rau cov lus tseem ceeb params rau cov tsev tsim qauv Foo{ pej xeem Foo(params string[] args){ foreach (var arg in args) print(arg); }}
  • codegen:
    • Txhim kho kev txhawb nqa rau SimpleType struct constructors (piv txwv li siv los khi typedef uint32_t people_inside; los ntawm C) [SimpleType] [CCode (cname = "people_inside")] pej xeem struct PeopleInside : uint32 {}
    • Txhim kho kev tuav ntawm "NoWrapper" cwj pwm.
    • CCode.type_cname thiab get_ccode_type_name() raug tso cai rau cov chav kawm.
    • G_TYPE_INSTANCE_GET_CLASS/INTERFACE yeej ib txwm siv rau cov cim sab nraud.
    • Siv g_boxed_free hauv free-wrapper los faib GLib.Value ntawm lub heap.
    • Kho lub cim xeeb xau thaum lub sij hawm implicit unboxing ntawm GLib.Value (ib lub thawv thoob ntiaj teb ntawm txhua hom nqi).
    • Txhim kho lub cim xeeb xau thaum txav cov qauv heap faib rau ib pawg.
    • Inheritance ntawm tus destructor ntawm niam txiv qauv yog guaranteed
    • Kho kom raug retrieval ntawm symbol_reference ntawm nested cast expressions tau raug txhim kho.
    • Tshem tawm txhua qhov tshwm sim zes ntawm CCodeCastExpression.
    • Nres tsis raug hu rau lub teeb liab teeb liab handler.
    • Txuas "string.h" rau strcmp() (POSIX profile, hom uas Vala tsim cov lej siv tsuas yog tus qauv C tsev qiv ntawv).
  • Vala:
    • Txhim kho kev tshawb pom ntawm duplicate pob qhov chaw cov ntaub ntawv.
    • GtkChild teb/cov khoom yuav tsum tau tshaj tawm tias tsis muaj tswv.
    • Reassigning the GtkChild field/property is txwv tsis pub.
    • Ib qho kev nruj dua tau siv rau lambda thaum delegating ib txoj haujlwm.
    • Nws yog txwv tsis pub siv ib leeg-siv SimpleType cov qauv.
    • GLib.Value unboxing xyuas kom meej tias tus nqi tsis tau rov qab los.
    • Casting GLib.Value rau ib tug nullable struct/simple hom yog txwv tsis pub.
    • Ntxiv hom kev sib cav xyuas hauv cov hom / chav kawm / interface ua ntej.
    • Kev ntes va_list parameters/variables raug txwv.
    • Generics uas muaj tus taw tes rau cov qauv yuav tsum raug muab pov rau hauv hom kom raug thaum nkag mus kom tsis txhob C UB.
    • Siv hom inference rau "hauv" hauv enum.
    • Txhim kho cov ntsiab lus txheeb xyuas cov haujlwm rau cov ntawv sau tau.
    • suav nrog "stdlib.h" rau Enum.to_string() (POSIX).
    • Qhov tseeb source_reference yog teem rau implicit variables "qhov no" thiab "tshem tawm"
    • Muab cov lus yuam kev rau qhov kev ua haujlwm tsis raug sab hauv ntawm cov lus hais tsis raug.
  • Tus kws sau ntawv: Tsis txhob ntxiv qhov trailing ";" tom qab lub cev WithStatement.
  • Girparser:
    • Kev ua haujlwm ntawm tus neeg sawv cev tsis qhia npe tsis txhawb nqa los ntawm txoj kev virtual lossis teeb liab yog muab.
    • Siv "delegate_target" metadata rau txoj hauv kev thiab tsis
    • Siv "destroy_notify_cname" metadata rau cov teb
    • Siv "type_get_function" metadata rau cov chav kawm thiab interfaces
    • Teem Ccode.type_cname rau cov chav kawm yog tias tsis yog lub neej ntawd.
  • girwriter: Xyuas kom meej cov ntsiab lus parameter raug sau.
  • girwriter: Ua raws li lub teeb liab handler tso zis.
  • libvaladoc/html: Tshem tawm sorting ntawm cov qauv teb kom tawm hauv lawv qhov kev txiav txim qub thaum tsim cov ntaub ntawv html valadoc.org
  • libvaladoc: Xyuas kom meej tias qhov tseem ceeb rau Api.Class.is_compact raug muab rov qab kom raug
  • libvaladoc: Ntxiv wrapper rau "agedge" graphviz tsev qiv ntawv
  • Kev khi:
    • Kev kho me me thaum tsim cov ntawv khi: 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, gtk+-3.0 txz | | |-- libxml-4
    • gdk-pixbuf-2.0: Kho Pixbuf.save_to_streamv_async()
    • gio-2.0: PollableOutputStream.write*_nonblocking() khi kho
    • gio-2.0,gtk+-3.0,gtk4: Qhia meej c-hom cwj pwm ntawm va_list tsis raug muab pov tseg
    • gio-2.0: Xaiv cov npe uas ploj lawm rau qee qhov AppInfo/File.*() txoj hauv kev
    • glib-2.0: Added GLib.[S]List.is_empty() yooj yim txoj kev rau non-null
    • glib-2.0: khi lub assert_cmp* muaj nuj nqi [#395]
    • glib-2.0: Txhim kho OptionEntry.flags teb hom
    • glib-2.0: PtrArray yog tam sim no subclass ntawm GenericArray
    • gstreamer-1.0: CCode.type_id ntawm MiniObject yog teem rau G_TYPE_BOXED [#1133]
    • gtk+-2.0,javascriptcoregtk-4.0: Kho siv CCode.type_cname attribute
    • gtk+-3.0,gtk4: Tsau ib co delegate rov qab qhov tseem ceeb thiab tsis
    • gtk4: Hloov kho rau version 4.0.2.

Tau qhov twg los: opennet.ru

Ntxiv ib saib