Vala proqramlaşdırma dili tərtibçisi yeniləməsi 0.50.4

Vala proqramlaşdırma dili 0.50.4 üçün kompilyatorun yeni versiyası buraxılmışdır. Uzunmüddətli dəstək (LTS) filialı Vala 0.48.14 (Ubuntu 18.04 üçün qablaşdırılıb) və eksperimental Vala 0.51.3 filialı da yenilənib.

Vala dili C# və ya Java ilə oxşar sintaksisi təmin edən obyekt yönümlü proqramlaşdırma dilidir. Obyekt modeli kimi Gobject (Glib Object System) istifadə olunur. Yaddaşın idarə edilməsi sahiblik (sahibi/sahibi olmayan linklər) və ya ARC (tərtib etmə mərhələsində destruktorların dəyişdirilməsi və obyekt istinad sayğaclarının azaldılması) istifadə edərək həyata keçirilir.

Bu dil introspeksiya, lambda funksiyaları, interfeyslər, nümayəndələr və bağlanmalar, siqnallar və yuvalar, istisnalar, xassələr, qeyri-null tiplər, yerli dəyişənlər üçün tip nəticəsinə malikdir. Kit C dilində kitabxanalara çoxlu sayda bağlama ilə gəlir (vala-girs, vala-extra-vapis). Vala proqramları C təqdimatına çevrilir və sonra standart C kompilyatoru tərəfindən tərtib edilir.Proqramları skript rejimində işlətmək mümkündür.

Dəyişikliklərin siyahısı:

  • Konstruktorlar sinfi üçün params açar sözü üçün əlavə dəstək əlavə edildi Foo{ public Foo(params string[] args){ foreach (var arg in args) print(arg); } }
  • kodogen:
    • SimpleType struktur konstruktorları üçün təkmilləşdirilmiş dəstək (məsələn typedef uint32_t people_inside bağlamaq üçün istifadə olunur; C-dən) [SimpleType] [CCode (cname = "insanların_inside")] ictimai struktur PeopleInside : uint32 {}
    • “NoWrapper” atributunun təkmilləşdirilmiş idarə edilməsi.
    • CCode.type_cname və get_ccode_type_name() siniflər üçün icazə verilir.
    • G_TYPE_INSTANCE_GET_CLASS/INTERFACE həmişə xarici simvollar üçün istifadə olunur.
    • GLib.Value-ni yığında ayırmaq üçün pulsuz paketdə g_boxed_free istifadə olunur.
    • GLib.Value (istənilən dəyər tipli universal konteyner) qutusunun gizli açılması zamanı yaddaş sızması düzəldildi.
    • Yığınla ayrılmış strukturu yığına köçürərkən yaddaş sızması düzəldildi.
    • Ana strukturun dağıdıcısının varisliyi təmin edilir
    • İç içə salınmış ifadələrin simvol_istinadının düzgün axtarışı təkmilləşdirildi.
    • CCodeCastExpression-un bütün yuvalanmış hadisələri silindi.
    • Defolt siqnal idarəçisinə səhv zəng etməyi dayandırdı.
    • strcmp() üçün qoşulmuş "string.h" (POSIX profili, rejimdə Vala yalnız standart C kitabxanasından istifadə edərək kod yaradır).
  • Vala:
    • Təkmilləşdirilmiş dublikat paket mənbə fayllarının aşkarlanması.
    • GtkChild sahələri/xassəsi sahibsiz elan edilməlidir.
    • GtkChild sahəsini/mülkiyyətini yenidən təyin etmək qadağandır.
    • Tapşırığı həvalə edərkən lambdaya daha sərt şərt tətbiq edilmişdir.
    • Birdəfəlik SimpleType strukturlarından istifadə etmək qadağandır.
    • GLib.Value qutusunun açılması sahibsiz dəyərin qaytarılmasını təmin edir.
    • GLib.Value-ni null edilə bilən struktura/sadə tipə köçürmək qadağandır.
    • Əsas növlər/sinif/interfeys ilkin şərtlərində növ arqumentinin yoxlanılması əlavə edilib.
    • va_list parametrlərinin/dəyişənlərinin tutulması qadağandır.
    • C UB-dan qaçmaq üçün daxil olduqda struktura göstərici olan generiklər düzgün tipə ötürülməlidir.
    • Enum daxilində "in" üçün növ nəticə çıxardı.
    • Yazıla bilən sahəyə tapşırıqlar üçün təkmilləşdirilmiş kontekst yoxlaması.
    • Enum.to_string() (POSIX) üçün "stdlib.h" daxil edilib.
    • "bu" və "nəticə" gizli dəyişənləri üçün düzgün source_reference təyin edilib
    • Unar ifadələrin etibarsız daxili operandı üçün xəta mesajı təqdim edildi.
  • Codewriter: ";" arxasına əlavə etməyi dayandırdı. bədəndən sonra WithStatement.
  • Qırparıcı:
    • Virtual üsul və ya siqnalla dəstəklənməyən anonim nümayəndənin işlənməsi təmin edilir.
    • Metodlar və parametrlər üçün "nümayəndə_hədəf" metadatası tətbiq edildi
    • Sahələrə "destroy_notify_cname" metadatasını tətbiq edin
    • Siniflər və interfeyslər üçün "type_get_function" metadatasını tətbiq edin
    • Standart deyilsə, siniflər üçün CCode.type_cname təyin edin.
  • girwriter: Nümunə parametr elementlərinin yazılmasını təmin edir.
  • girwriter: Tətbiq edilmiş standart siqnal işləyici çıxışı.
  • libvaladoc/html: valadoc.org html sənədlərini yaradan zaman orijinal sırasını tərk etmək üçün struktur sahələrinin çeşidlənməsi silindi.
  • libvaladoc: Api.Class.is_compact üçün dəyərlərin düzgün alındığından əmin olun
  • libvaladoc: "agedge" graphviz kitabxanası üçün sarğı əlavə edildi
  • Bağlamalar:
    • Bağlamalar yaradan zaman kiçik düzəlişlər: cairo, gobject-2.0, pango, goocanvas-2.0, lənətlər, alsa, bzlib, sqlite3, libgvc, posix, gstreamer-1.0, gdk-3.0, gdk-x11-3.0, gtk, gtk+3.0. qoruyucu, libxml-4
    • gdk-pixbuf-2.0: Pixbuf.save_to_streamv_async() düzəldin
    • gio-2.0: PollableOutputStream.write*_nonblocking() bağlama düzəlişi
    • gio-2.0,gtk+-3.0,gtk4: va_list parametrlərinin açıq c tipli atributları silinir
    • gio-2.0: Bəzi AppInfo/File.*() metodları üçün itkin invoker seçilmişdir
    • glib-2.0: Qeyri-null üçün əlavə GLib.[S]List.is_empty() rahatlıq metodları
    • glib-2.0: assert_cmp* funksiyasının bağlanması [#395]
    • glib-2.0: Təkmilləşdirilmiş OptionEntry.flags sahə növü
    • glib-2.0: PtrArray indi GenericArray-ın alt sinfidir
    • gstreamer-1.0: MiniObject-in CCode.type_id-i G_TYPE_BOXED olaraq təyin edilib [#1133]
    • gtk+-2.0,javascriptcoregtk-4.0: CCode.type_cname atributunun düzəldilmiş istifadəsi
    • gtk+-3.0,gtk4: Bəzi nümayəndə qaytarma dəyərləri və parametrləri düzəldildi
    • gtk4: 4.0.2 versiyasına yeniləndi.

Mənbə: opennet.ru

Добавить комментарий