Pembaruan kompiler basa pamrograman Vala 0.50.4

Versi anyar kompiler pikeun basa pamrograman Vala 0.50.4 parantos dileupaskeun. Pangrojong jangka panjang (LTS) Cabang Vala 0.48.14 (dipakétkeun pikeun Ubuntu 18.04) sareng cabang ékspérimén Vala 0.51.3 ogé parantos diropéa.

Basa Vala mangrupikeun basa pamrograman berorientasi obyék anu nyayogikeun sintaksis anu sami sareng C # atanapi Java. Gobject (Glib Object System) dipaké salaku modél obyék. manajemén memori dilumangsungkeun ku kapamilikan (milik / Tumbu unowned) atawa ngagunakeun ARC (substitusi destructors na decrements of counters rujukan obyék dina tahap kompilasi).

basa ngabogaan rojongan pikeun introspeksi, fungsi lambda, interfaces, delegasi jeung closures, sinyal jeung slot, iwal, sipat, tipe non-null, tipe inferensi pikeun variabel lokal. Kit hadir kalawan sajumlah badag bindings ka perpustakaan di C (vala-girs, vala-extra-vapis). program Vala ditarjamahkeun kana representasi C lajeng disusun ku compiler standar C. Kasebut nyaéta dimungkinkeun pikeun ngajalankeun program dina mode Aksara.

Daptar parobahan:

  • Ditambahkeun dukungan tambahan pikeun kecap konci params pikeun kelas konstruktor Foo {public Foo (params string [] args) {foreach (var arg in args) print (arg); }}
  • codegen:
    • Ningkatkeun dukungan pikeun konstruktor struct SimpleType (contona dipaké pikeun ngabeungkeut typedef uint32_t people_inside; ti C) [SimpleType] [CCode (cname = "people_inside")] public struct PeopleInside : uint32 {}
    • Ningkatkeun penanganan atribut "NoWrapper".
    • CCode.type_cname na get_ccode_type_name () diwenangkeun pikeun kelas.
    • G_TYPE_INSTANCE_GET_CLASS/INTERFACE sok dianggo pikeun simbol éksternal.
    • Dipaké g_boxed_free dina free-wrapper pikeun allocate GLib.Value on numpuk.
    • Ngalereskeun bocor mémori nalika unboxing implisit GLib.Value (wadah universal tina sagala jinis nilai).
    • Ngalereskeun bocor mémori nalika mindahkeun struktur anu dialokasikeun tumpukan kana tumpukan.
    • Warisan tina destructor struktur indungna geus ensured
    • Dimeunangkeun bener tina symbol_reference ekspresi matak nested geus ningkat.
    • Dipiceun sagala kajadian nested of CCodeCastExpression.
    • Dieureunkeun salah nelepon panangan sinyal standar.
    • Disambungkeun "string.h" pikeun strcmp () (profil POSIX, mode nu Vala dibangkitkeun kode ngagunakeun ukur perpustakaan C baku).
  • Vala:
    • Ningkatkeun deteksi file sumber pakét duplikat.
    • Widang / pasipatan GtkChild kedah dinyatakeun teu gaduh milik.
    • Reassigning widang GtkChild / sipat dilarang.
    • Kaayaan anu langkung ketat parantos diterapkeun ka lambda nalika masihan tugas.
    • Dilarang ngagunakeun struktur SimpleType pamakean tunggal.
    • GLib.Value unboxing ensures yén nilai unowned geus balik.
    • Casting GLib.Value ka struct nullable / tipe basajan dilarang.
    • Ditambahkeun tipe argumen mariksa dina tipe dasar / kelas / preconditions panganteur.
    • Nangkep parameter va_list / variabel dilarang.
    • Generik anu ngandung pointer kana struktur kedah dilebetkeun kana jinis anu leres nalika diakses pikeun ngahindarkeun C UB.
    • Inferensi tipe dilaksanakeun pikeun "di" jero enum.
    • Ningkatkeun mariksa kontéks pikeun ngerjakeun kana widang anu tiasa ditulis.
    • Kaasup "stdlib.h" pikeun Enum.to_string () (POSIX).
    • Source_reference anu leres diatur pikeun variabel implisit "ieu" sareng "hasil"
    • Disadiakeun pesen kasalahan pikeun operan internal anu teu valid tina ekspresi unary.
  • Сodewriter: Dieureunkeun nambahkeun labuh ";" sanggeus awak WithStatement.
  • Girparser:
    • Ngolah hiji utusan anonim teu didukung ku métode virtual atawa sinyal disadiakeun.
    • Metadata "delegate_target" diterapkeun pikeun metode sareng parameter
    • Larapkeun metadata "destroy_notify_cname" kana widang
    • Larapkeun metadata "type_get_function" pikeun kelas sareng antarmuka
    • Atur CCode.type_cname pikeun kelas lamun teu standar.
  • girwriter: Ensures elemen parameter conto ditulis.
  • girwriter: Dilaksanakeun kaluaran handler sinyal standar.
  • libvaladoc/html: Dipiceun asihan widang struktur ninggalkeun urutan aslina nalika ngahasilkeun dokuméntasi html valadoc.org
  • libvaladoc: Pastikeun yén nilai Api.Class.is_compact dicandak leres
  • libvaladoc: Ditambahkeun wrapper pikeun perpustakaan graphviz "agedge".
  • Binding:
    • Perbaikan minor nalika ngahasilkeun bindings: 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 sekering, libxml-2.0
    • gdk-pixbuf-2.0: Fix Pixbuf.save_to_streamv_async()
    • gio-2.0: PollableOutputStream.write * _nonblocking () ngalereskeun ngalereskeun
    • gio-2.0,gtk+-3.0,gtk4: Atribut tipe c eksplisit tina parameter va_list dipiceun
    • gio-2.0: Dipilih leungit invoker pikeun sababaraha AppInfo / File. * () métode
    • glib-2.0: Ditambahkeun GLib. [S] List.is_empty () métode genah pikeun non-null
    • glib-2.0: Ngabeungkeut fungsi assert_cmp * [#395]
    • glib-2.0: Ningkatkeun OptionEntry.flags tipe widang
    • glib-2.0: PtrArray ayeuna subclass of GenericArray
    • gstreamer-1.0: CCode.type_id tina MiniObject disetel ka G_TYPE_BOXED [#1133]
    • gtk+-2.0,javascriptcoregtk-4.0: Dilereskeun pamakéan atribut CCode.type_cname
    • gtk + -3.0, gtk4: Ngalereskeun sababaraha nilai sareng parameter utusan
    • gtk4: Diropéa kana versi 4.0.2.

sumber: opennet.ru

Tambahkeun komentar