Vala dasturlash tili kompilyatorining yangilanishi 0.50.4

Vala dasturlash tili 0.50.4 uchun kompilyatorning yangi versiyasi chiqdi. Uzoq muddatli qo‘llab-quvvatlash (LTS) filiali Vala 0.48.14 (Ubuntu 18.04 uchun qadoqlangan) va Vala 0.51.3 tajriba filiali ham yangilandi.

Vala tili ob'ektga yo'naltirilgan dasturlash tili bo'lib, u C# yoki Java ga o'xshash sintaksisni ta'minlaydi. Ob'ekt modeli sifatida Gobject (Glib Object System) ishlatiladi. Xotirani boshqarish egalik (egalik/egaliksiz havolalar) yoki ARC (kompilyatsiya bosqichida destruktorlarni almashtirish va ob'ektga havola hisoblagichlarini kamaytirish) yordamida amalga oshiriladi.

Bu tilda introspektsiya, lambda funktsiyalari, interfeyslar, delegatlar va yopilishlar, signallar va uyalar, istisnolar, xususiyatlar, null bo'lmagan turlar, mahalliy o'zgaruvchilar uchun turdagi xulosalar mavjud. To'plam C (vala-girs, vala-extra-vapis) kutubxonalariga juda ko'p sonli bog'lanishlar bilan birga keladi. Vala dasturlari C ko'rinishiga tarjima qilinadi va keyin standart C kompilyatori tomonidan kompilyatsiya qilinadi.Dasturlarni skript rejimida ishga tushirish mumkin.

O'zgarishlar ro'yxati:

  • Foo klassi konstruktorlari uchun params kalit soʻzi uchun qoʻshimcha yordam qoʻshildi{ public Foo(params string[] args){ foreach (var arg in args) print(arg); } }
  • kodegen:
    • SimpleType struktura konstruktorlari uchun yaxshilangan yordam (masalan, typedef uint32_t people_inside-ni ulash uchun ishlatiladi; C dan) [SimpleType] [CCode (cname = "people_inside")] public struct PeopleInside : uint32 {}
    • “NoWrapper” atributidan foydalanish yaxshilandi.
    • Sinflar uchun CCode.type_cname va get_ccode_type_name() ruxsat etiladi.
    • G_TYPE_INSTANCE_GET_CLASS/INTERFACE har doim tashqi belgilar uchun ishlatiladi.
    • GLib.Value ni yig'ishda ajratish uchun bepul o'ramda g_boxed_free ishlatiladi.
    • GLib.Value (har qanday qiymat turidagi universal konteyner) ning yashirin qutidan chiqarilishi paytida xotira oqishini tuzatdi.
    • Uyumdan ajratilgan tuzilmani stekga ko'chirishda xotira oqishini tuzatdi.
    • Ota-ona tuzilmasi destruktorining merosi ta'minlanadi
    • Ichki oʻrnatilgan cast ifodalarining symbol_reference ni toʻgʻri qidirish yaxshilandi.
    • CCodeCastExpressionning barcha ichki oʻrnatilgan hodisalari olib tashlandi.
    • Standart signal ishlovchisiga noto'g'ri qo'ng'iroq qilishni to'xtatdi.
    • strcmp() uchun ulangan "string.h" (POSIX profili, Vala faqat standart C kutubxonasidan foydalangan holda kod ishlab chiqaradigan rejim).
  • Vala:
    • Ikki nusxadagi paket manba fayllarini aniqlash yaxshilandi.
    • GtkChild maydonlari/xususiyatlari egasiz deb e'lon qilinishi kerak.
    • GtkChild maydonini/xususiyatini qayta tayinlash taqiqlanadi.
    • Topshiriqni topshirishda lambda uchun qattiqroq shart qo'llaniladi.
    • Bir martalik SimpleType tuzilmalaridan foydalanish taqiqlanadi.
    • GLib.Value qutisini ochish egasiz qiymat qaytarilishini ta'minlaydi.
    • GLib.Value ni null bo'ladigan struktura/oddiy turga o'tkazish taqiqlanadi.
    • Asosiy turdagi/sinf/interfeys old shartlarida turdagi argumentlarni tekshirish qo'shildi.
    • va_list parametrlarini/oʻzgaruvchilarini yozib olish taqiqlanadi.
    • Strukturaga koʻrsatgichni oʻz ichiga olgan generiklar C UB dan qochish uchun kirishda toʻgʻri turga oʻtkazilishi kerak.
    • Enum ichidagi "in" uchun turdagi xulosalar amalga oshirildi.
    • Yoziladigan maydonga topshiriqlar uchun kontekstni tekshirish yaxshilandi.
    • Enum.to_string() (POSIX) uchun "stdlib.h" kiritilgan.
    • "Bu" va "natija" yashirin o'zgaruvchilari uchun to'g'ri source_reference o'rnatilgan
    • Unar ifodalarning yaroqsiz ichki operandlari uchun xato xabari taqdim etildi.
  • Koderayter: “;” orqasiga qoʻshish toʻxtatildi. tanadan keyin WithStatement.
  • Kirparator:
    • Virtual usul yoki signal bilan qo'llab-quvvatlanmagan anonim delegatni qayta ishlash ta'minlanadi.
    • Usullar va parametrlar uchun "delegate_target" metama'lumotlari qo'llanildi
    • Maydonlarga "destroy_notify_cname" metama'lumotlarini qo'llang
    • Sinflar va interfeyslar uchun "type_get_function" metama'lumotlarini qo'llang
    • Agar standart bo'lmasa, sinflar uchun CCode.type_cname o'rnating.
  • girwriter: Misol parametr elementlari yozilishini ta'minlaydi.
  • girwriter: Amalga oshirilgan standart signal ishlov beruvchisi chiqishi.
  • libvaladoc/html: valadoc.org html hujjatlarini yaratishda asl tartibini qoldirish uchun struktura maydonlarini saralash olib tashlandi.
  • libvaladoc: Api.Class.is_compact uchun qiymatlar to'g'ri olinganligiga ishonch hosil qiling
  • libvaladoc: "agedge" graphviz kutubxonasi uchun o'ram qo'shildi
  • Bog'lashlar:
    • Bog'lanishlarni yaratishda kichik tuzatishlar: cairo, gobject-2.0, pango, goocanvas-2.0, la'natlar, alsa, bzlib, sqlite3, libgvc, posix, gstreamer-1.0, gdk-3.0, gdk-x11-3.0, gtk+3.0, gtk+- sug'urta, libxml-4
    • gdk-pixbuf-2.0: Pixbuf.save_to_streamv_async() tuzatish
    • gio-2.0: PollableOutputStream.write*_nonblocking() ulanishini tuzatish
    • gio-2.0,gtk+-3.0,gtk4: va_list parametrlarining aniq c tipidagi atributlari oʻchiriladi
    • gio-2.0: Ba'zi AppInfo/File.*() usullari uchun etishmayotgan invoker tanlangan
    • glib-2.0: qo'shilgan GLib.[S]List.is_empty() null bo'lmaganlar uchun qulaylik usullari
    • glib-2.0: assert_cmp* funksiyasini ulash [#395]
    • glib-2.0: OptionEntry.flags maydon turi yaxshilandi
    • glib-2.0: PtrArray endi GenericArrayning quyi sinfidir
    • gstreamer-1.0: MiniObject uchun CCode.type_id G_TYPE_BOXED ga o‘rnatildi [#1133]
    • gtk+-2.0,javascriptcoregtk-4.0: CCode.type_cname atributidan tuzatilgan foydalanish
    • gtk+-3.0,gtk4: Ba'zi delegatning qaytish qiymatlari va parametrlari tuzatildi
    • gtk4: 4.0.2 versiyasiga yangilangan.

Manba: opennet.ru

a Izoh qo'shish