Scala ekibi, ekosistemi modernize eden ve Scala 3.9 LTS'e zemin hazırlayan önemli bir sürüm olan Scala 3.8'i duyurdu. Bu sürümle birlikte, Scala standart kütüphanesi artık Scala 3 ile derleniyor ve Better Fors (SIP-62) ile runtimeChecked (SIP-57) gibi uzun zamandır beklenen özellikler stabilize edildi. Ayrıca, esnek varargs ve katı eşitlik desen eşleştirme gibi deneysel özellikler de tanıtıldı. Ancak, Scala 3.8.0 yayınlandıktan sonra bir runtime regresyonu tespit edildiği için kullanıcıların Scala 3.8.1 sürümünü kullanmaları önemle tavsiye ediliyor. Bu sorun, Scala 2.13 kütüphanelerini kullanan veya Scala standart kütüphanesindeki belirli uzmanlaşmış üyeleri kullanan Scala 3 kullanıcılarını etkileyebilecek JVM bağlantı hatalarına yol açabiliyordu.
Bu sürümdeki en kritik değişikliklerden biri, derleme ve yürütme için artık JDK 17 veya sonraki bir sürümün zorunlu hale gelmesidir. Bu gereksinim, gelecekteki JDK 26+ sürümlerini desteklemek ve mevcut lazy-vals implementasyonumuz tarafından kullanılan sun.misc.Unsafe işlevselliğine erişim kısıtlamalarını aşmak için yapıldı. Projeleri hala eski bir JDK üzerinde çalışan kullanıcıların Scala 3.8'e geçmeden önce JDK 17'ye yükseltme yapmaları gerekiyor. Scala 3.3 LTS sürümü JDK 8 ile uyumlu bytecode üretmeye devam edecek olsa da, 3.9 LTS dahil olmak üzere tüm gelecek Scala sürümleri JDK 17 veya daha yüksek bir sürüm gerektirecek. Kütüphane yazarları için eski JVM sürümleriyle uyumluluğu sürdürmek isteyenlere, önümüzdeki aylarda çıkacak olan Scala 3.3.8 LTS sürümünü kullanmaları öneriliyor. Bu sürüm, yeni lazy vals implementasyonunu etkinleştiren bir bayrak sunacak ancak bu da en az JDK 9'a yükseltmeyi gerektirecek.
Standart kütüphanedeki bir diğer önemli değişiklik ise, scala.reflect.ClassTag gibi standart kütüphane sınıflarındaki context bound'ların artık implicit yerine given olarak desugar edilmesi. Bu değişiklik, açık parametreler sağlanırken using değiştiricilerinin kullanılmasını gerektiriyor ve kaynak uyumsuzluğuna neden olabilir.
Scala 3.8'in yayınlanmasıyla birlikte JDK 17 zorunluluğu, geliştiricilerin projelerini güncel tutmalarını gerektirerek Scala ekosisteminde önemli bir adaptasyon sürecini başlatıyor.