Vala programlama dili derleyici güncellemesi 0.50.4

Vala programlama dili 0.50.4 için derleyicinin yeni bir sürümü yayınlandı. Uzun vadeli destek (LTS) dalı Vala 0.48.14 (Ubuntu 18.04 için paketlenmiştir) ve deneysel dal Vala 0.51.3 de güncellendi.

Vala dili, C# veya Java'ya benzer bir sözdizimi sağlayan nesne yönelimli bir programlama dilidir. Nesne modeli olarak Gobject (Glib Object System) kullanılmaktadır. Bellek yönetimi, sahiplik (sahip olunan/sahip olunmayan bağlantılar) veya ARC (yıkıcıların değiştirilmesi ve derleme aşamasında nesne referans sayaçlarının azaltılması) kullanılarak gerçekleştirilir.

Dilin iç gözlem, lambda işlevleri, arayüzler, delegeler ve kapanışlar, sinyaller ve yuvalar, istisnalar, özellikler, boş olmayan türler, yerel değişkenler için tür çıkarımı desteği vardır. Kit, C'deki kütüphanelere (vala-girs, vala-extra-vapis) çok sayıda bağlamayla birlikte gelir. Vala programları C gösterimine çevrilir ve daha sonra standart bir C derleyicisi tarafından derlenir.Programları komut dosyası modunda çalıştırmak mümkündür.

Değişikliklerin listesi:

  • Yapıcılar için params anahtar sözcüğüne ek destek eklendi class Foo{ public Foo(params string[] args){ foreach (var arg in args) print(arg); } }
  • kodgen:
    • SimpleType yapı oluşturucuları için geliştirilmiş destek (örneğin C'den typedef uint32_t People_inside;'ı bağlamak için kullanılır) [SimpleType] [CCode (cname = "people_inside")] public struct PeopleInside : uint32 {}
    • “NoWrapper” özelliğinin iyileştirilmiş kullanımı.
    • Sınıflar için CCode.type_cname ve get_ccode_type_name()'ye izin verilir.
    • G_TYPE_INSTANCE_GET_CLASS/INTERFACE her zaman harici semboller için kullanılır.
    • Yığın üzerinde GLib.Value'yu tahsis etmek için serbest sarmalayıcıda g_boxed_free kullanıldı.
    • GLib.Value'nun (herhangi bir değer türünde evrensel bir kapsayıcı) örtülü olarak kutusundan çıkarılması sırasında oluşan bellek sızıntısı düzeltildi.
    • Yığınla ayrılmış bir yapıyı yığına taşırken meydana gelen bellek sızıntısı düzeltildi.
    • Ana yapının yıkıcısının kalıtımı sağlanır
    • İç içe dönüşüm ifadelerinin sembol_referansının doğru şekilde alınması iyileştirildi.
    • CCodeCastExpression'ın tüm iç içe geçmiş oluşumları kaldırıldı.
    • Yanlışlıkla varsayılan sinyal işleyicinin çağrılması durduruldu.
    • strcmp() (POSIX profili, Vala'nın yalnızca standart C kitaplığını kullanarak kod ürettiği mod) için "string.h" bağlandı.
  • - Vala:
    • Yinelenen paket kaynak dosyalarının iyileştirilmiş tespiti.
    • GtkChild alanlarının/özelliklerinin sahipsiz olduğu bildirilmelidir.
    • GtkChild alanının/özelliğinin yeniden atanması yasaktır.
    • Bir atamayı devrederken lambdaya daha katı bir koşul uygulandı.
    • Tek kullanımlık SimpleType yapılarının kullanılması yasaktır.
    • GLib.Value'nun kutudan çıkarılması, sahip olunmayan değerin döndürülmesini sağlar.
    • GLib.Value'un null yapılabilir bir yapı/basit türe dönüştürülmesi yasaktır.
    • Temel türler/sınıf/arayüz önkoşullarına tür bağımsız değişkeni denetimi eklendi.
    • va_list parametrelerinin/değişkenlerinin yakalanması yasaktır.
    • Bir yapıya işaretçi içeren jenerikler, C UB'dan kaçınmak için erişildiğinde doğru türe dönüştürülmelidir.
    • Enum içindeki "in" için tür çıkarımı uygulandı.
    • Yazılabilir alana yapılan atamalar için iyileştirilmiş bağlam kontrolü.
    • Enum.to_string() (POSIX) için "stdlib.h" eklendi.
    • "This" ve "result" örtülü değişkenleri için doğru kaynak_referans ayarlandı
    • Tekli ifadelerin geçersiz bir dahili işleneni için bir hata mesajı sağlandı.
  • Kod Yazarı: Sondaki ";" karakterinin eklenmesi durduruldu gövdeden sonra WithStatement.
  • Girparser:
    • Sanal bir yöntem veya sinyalle desteklenmeyen anonim bir delegenin işlenmesi sağlanır.
    • Yöntemler ve parametreler için "delegate_target" meta verileri uygulandı
    • Alanlara "destroy_notify_cname" meta verilerini uygulama
    • Sınıflar ve arayüzler için "type_get_function" meta verilerini uygulayın
    • Varsayılan değilse, sınıflar için CCode.type_cname değerini ayarlayın.
  • girwriter: Örnek parametre öğelerinin yazılmasını sağlar.
  • girwriter: Varsayılan sinyal işleyici çıktısı uygulandı.
  • libvaladoc/html: Html belgeleri oluşturulurken yapı alanlarının orijinal sırasını koruyacak şekilde sıralanması kaldırıldı valadoc.org
  • libvaladoc: Api.Class.is_compact değerlerinin doğru şekilde alındığından emin olun
  • libvaladoc: "yaşlı" graphviz kitaplığı için sarmalayıcı eklendi
  • Bağlamalar:
    • Bağlamalar oluşturulurken yapılan küçük düzeltmeler: cairo, gobject-2.0, pango, goocanvas-2.0, küfürler, alsa, bzlib, sqlite3, libgvc, posix, gstreamer-1.0, gdk-3.0, gdk-x11-3.0, gtk+-3.0, gtk4, sigorta, libxml-2.0
    • gdk-pixbuf-2.0: Pixbuf.save_to_streamv_async()'i düzeltin
    • gio-2.0: PollableOutputStream.write*_nonblocking() bağlama düzeltmesi
    • gio-2.0,gtk+-3.0,gtk4: va_list parametrelerinin açık c tipi nitelikleri atılır
    • gio-2.0: Bazı AppInfo/File.*() yöntemleri için eksik çağırıcı seçildi
    • glib-2.0: Null olmayanlar için GLib.[S]List.is_empty() kolaylık yöntemleri eklendi
    • glib-2.0: Assert_cmp* işlevini bağlama [#395]
    • glib-2.0: Geliştirilmiş OptionEntry.flags alan türü
    • glib-2.0: PtrArray artık GenericArray'in bir alt sınıfıdır
    • gstreamer-1.0: MiniObject'in CCode.type_id'si G_TYPE_BOXED [#1133] olarak ayarlandı
    • gtk+-2.0,javascriptcoregtk-4.0: CCode.type_cname özelliğinin kullanımı düzeltildi
    • gtk+-3.0,gtk4: Bazı delege dönüş değerleri ve parametreleri düzeltildi
    • gtk4: 4.0.2 sürümüne güncellendi.

Kaynak: opennet.ru

Yorum ekle