Akbura beta-6: derleyici 2,5 kat hızlandı, C# ifadeleri için reaktif binding geldi
Avalonia için deneysel bildirimsel işaretleme dili Akbura'nın 12.0.4-beta.6 sürümü, kaynak kodu üretimini FeatureGallery projesinde 15,31 saniyeden 6,06 saniyeye indiriyor ve ayırmaları yaklaşık %69 azaltıyor. Sürümün en dikkat çekici yeniliği, işaretleme içinde doğrudan yazılan C# ifadelerinin iç içe property değişikliklerini otomatik izleyen tek yönlü reaktif binding'lere dönüşmesi.
Kilit noktalar
- FeatureGallery'de soğuk kod üretimi 15,31 saniyeden 6,06 saniyeye, PurityUI'de 2,38'den 1,78 saniyeye indi.
- Ayırmalar her iki projede de yaklaşık %68-69 azaldı; FeatureGallery'de 3327 MiB'den 1040 MiB'e.
- Yeni ${x.bind ...} sözdizimi C# ifadelerini işaretleme içinde çalıştırıyor ve zincirleme property değişikliklerini izliyor.
- Expression binding'ler tek yönlü; Avalonia'nın ${Binding ...} mekanizmasının yerini almıyor, onu tamamlıyor.
- Hot Reload'da bileşen durumunun korunması, komut closure'larının güncellenmesi ve stilize edilen kontrol isimleri düzeltildi.
- Derleyici ve Workspaces Roslyn 5.9.0'a taşındı; paket .NET SDK 10.0.400, extension VS 2026 18.9 istiyor.
Avalonia için deneysel bildirimsel işaretleme dili Akbura'nın altıncı betası, derleyicide ciddi optimizasyonlarla geliyor. Geçici koleksiyon ve buffer'ların yeniden kullanımı, LINQ kaynaklı ara nesnelerin kaldırılması, Roslyn sembol string'lerinin ve AKCSS meta verilerinin cache'lenmesi, tip isimlerinin ara string üretmeden yazılması gibi değişiklikler yapıldı. .NET 10 Release modunda RunGenerators ile alınan ölçümlere göre FeatureGallery'de soğuk kod üretimi 15,31 saniyeden 6,06 saniyeye indi, ayırmalar 3327 MiB'den 1040 MiB'e geriledi.
Yeni ${x.bind ...} sözdizimi ise Roslyn ile doğrulanan C# ifadelerini doğrudan işaretleme içinde kullanmayı sağlıyor. Aritmetik, string interpolasyon, koşullu ifadeler ve koleksiyon indekslemesi destekleniyor; ara nesne değiştiğinde abonelikler yeniden kuruluyor ve bileşenin tekrar render edilmesi gerekmiyor. Mekanizma tek yönlü ve ${Binding ...} yapısının yerine geçmiyor. Paket .NET SDK 10.0.400, VS extension'ı VS 2026 18.9 istiyor.
Gerçek dünyada kullanımı
- MVVM tabanlı bir Avalonia masaüstü uygulamasında ViewModel'deki iç içe nesnelerden (örneğin seçili müşteri ve adresi) türetilen metinleri işaretlemede hesaplamak.
- Tema veya görünüm koşullarını AKCSS yardımcı stillerinde ViewModel property'lerine bağlayarak element görünümünü tamamen state üzerinden yönetmek.
- Büyük Avalonia çözümlerinde incremental source generator süresini ve build sırasındaki bellek baskısını azaltmak.
- Visual Studio içinde Hot Reload ile çalışırken bileşen state'ini kaybetmeden işaretleme ve stil değişikliklerini denemek.
Neden önemli
Kaynak generator süreleri ve ayırma maliyeti, büyük Avalonia projelerinde build ve editör deneyimini doğrudan belirler; reaktif ifade binding'leri ise basit türetilmiş değerler için ViewModel'e ek property yazma ihtiyacını azaltır.