AGP 9.2.0 ile R8, Atomic*FieldUpdater'ı Unsafe varyantına çevirerek coroutines başlatma ve iptal işlemlerini 2 kata kadar hızlandırıyor.
Ne oldu?
Android Gradle Plugin (AGP) 9.2.0 sürümüyle birlikte R8 derleyicisi, Kotlin Coroutines üzerinde önemli bir optimizasyon gerçekleştiriyor. R8, `Atomic*FieldUpdater` çağrılarını doğrudan `Unsafe` varyantlarına dönüştürerek, `kotlinx.atomicfu` kütüphanesinin kullandığı atomik işlemleri hızlandırıyor. Bu sayede coroutines başlatma ve iptal işlemleri 2 kata kadar daha hızlı çalışıyor. Google'ın resmi blog yazısında belirtildiğine göre bu iyileştirme, özellikle yoğun coroutine kullanan uygulamalarda belirgin bir performans artışı sağlıyor.
Neden önemli?
Coroutines, Android'de asenkron programlamanın temel taşı haline geldi. Başlatma ve iptal işlemlerindeki gecikme, özellikle kullanıcı etkileşimi gerektiren uygulamalarda (örneğin liste kaydırma, animasyonlar) akıcılık sorunlarına yol açabiliyor. R8'in bu optimizasyonu, uygulama boyutunu artırmadan veya geliştirici müdahalesi gerektirmeden, mevcut kod tabanlarında doğrudan performans kazancı sağlıyor. Bu, özellikle düşük donanımlı cihazlarda veya pil ömrü hassasiyeti olan senaryolarda kritik bir iyileştirme olarak öne çıkıyor.
Kim veya ne etkileniyor?
Bu geliştirme, öncelikle Android uygulamalarında Kotlin Coroutines kullanan tüm geliştiricileri etkiliyor. `kotlinx.coroutines` kütüphanesinin yanı sıra, `kotlinx.atomicfu` üzerine inşa edilmiş diğer kütüphaneler de dolaylı olarak faydalanıyor. AGP 9.2.0 veya sonrasını kullanan projeler, R8 tam modda (full mode) çalıştırıldığında bu optimizasyondan otomatik olarak yararlanıyor. Ancak R8'i kapatmış veya eski AGP sürümlerinde kalan projeler bu avantajdan şu an için yararlanamıyor.
Ne yapılmalı?
Geliştiricilerin yapması gereken, AGP sürümlerini 9.2.0 veya üzerine güncellemek ve R8'i tam modda kullanmaya devam etmek. Ayrıca, projelerinde `kotlinx.coroutines` sürümünün güncel olduğundan emin olmaları önerilir. Performans iyileştirmesinin tam olarak hangi senaryolarda 2 kata ulaştığı konusunda kesin bir bilgi verilmedi; ancak testlerde başlatma ve iptal operasyonlarının yoğun olduğu durumlarda belirgin fark gözlemlenmiş. Bu nedenle, uygulamalarında coroutine kullananların güncelleme sonrası kendi performans testlerini yapmaları faydalı olacaktır.