Kotlin 1.4 ve Yenilikler

Güncelleme tarihi: 30 Ara 2020

KotlinConf 2019 etkinliğinde, Kotlin 1.4 versiyonunun 2020 yılı 1.çeyreğinde yayınlanacağı duyurulmuştu. Bu incelemeyle Kotlin 1.4'de gelecek yeni özellikleri biraz daha detaylı inceleyeceğiz.



Kalite Odaklılık


Kotlin 1.4 ile en çok performans konuları üzerine odaklanıldı. Yeni versiyon ile temel değişiklikler/özellikler/fonksiyonlar yerine yazılımcının kodlama deneyimini arttıracak çalışmalar yapıldı.


Ayrıca Kotlin'i destekleyen IDE'lerin performansında da ilerleme katedildi. Kod tamamlama hızı önceki sürümlere göre önemli ölçüde arttı:


Gradle komut dosyaları daha hızlı hale getirildi. Kotlin 1.3.60'daki Gradle Import, Kotlin 1.3.10'dakinden yaklaşık 2.5 kat daha hızlı hale getirildi ve yaklaşık %75 daha az bellek harcıyor.



Ayrıca build.gradle.kts yüklemesinde sıfır CPU kullanımı gerekiyor. Kotlin/Native'i dev modunda derlemek, code caching özelliği ile normalden 2 kat daha hızlı çalışıyor.


Yazılımcılar için en büyük sorun olan build time'ı iyileştirmek amacıyla toolchain'de de bazı değişikler yapılmış durumda. Derleme süresini daha hızlı hale getirmek için yapılan artırımlı iyileştirmeler yazılımcıların daha fazla kod yazmasına neden olur. Bu nedenle build time'da yazılımcıyı olumlu etkileyecek iyileştirmeler elde edilemez. Gerçekten hızlanmak için compiler'ı tekrar elden geçirmek ve implement etmek gerekir.


Yeni Compiler


Yeni compiler'ın geliştirilmesinin amacı hızı arttırmak, Kotlin'in desteklediği tüm platformları birleştirmek ve derleyici extension'ları için ortak bir API sağlamaktır. Bu amaçla compiler geçişi uzun soluklu gerçekleştirilecek ve her yeni versiyonda compiler çalışmalarının bir kısmı yayınlanacaktır. Bu kapsamda 1.4 versiyonu ile compiler çalışmasının bir kısmı yayınlanıyor olacak. Bu arada type inference'in yeni algoritması da yeni compiler'in bir parçasıdır.


Yeni Front-End ile Hızlanma


Yeni derleyiciden beklenen hızlanmanın büyük bir kısmı yeni front-end implementation ile gerçekleşecektir. Derleme, kaynak dosyalarını alıp, arka planda adım adım executable koda dönüştüren bir pipeline'dır. Bu pipeline'daki ilk büyük adım, derleyicinin front-end'inde gerçekleşir. Bu kısım kodu ayrıştırır, adları çözer, type checking yapar. Derleyicinin bu bölümü hatalar vurguladığında, tanımlara gidildiğinde veya projedeki sembol kullanımları aradığında IDE içinde de çalışır. Mevcutta kotlinc'nin en çok zaman harcadığı bölüm bu bölümdür. Yapılan karşılaştırmalarda yeni front-end'in mevcut yapıya göre 4.5 kat daha hızlı çalışacağını gösteriyor.