
Elixir v1.20: dil artık kademeli olarak tipli
Elixir v1.20, küme teorisine dayalı tip sisteminin ilk aşamasını tamamladı: her program tür çıkarımıyla ve kademeli olarak denetleniyor, üstelik hiçbir tip açıklaması yazmadan.
Elixir v1.20, 3 Haziran 2026'da yayımlandı ve dilin küme teorisine dayalı tip sisteminin ilk geliştirme aşamasını tamamladığını gösteriyor. 2022'de duyurulan, Haziran 2023'te tasarımına ilişkin ödüllü bir makaleyle sürdürülen çalışma artık araştırmadan derleyiciye taşındı: her Elixir programı tip çıkarımından geçiyor ve geliştiricilerin tek bir açıklama yazmasına gerek kalmadan kademeli olarak denetleniyor.
Doğrulanmış hatalar ve ölü kod
Amaç, ölü kodu ve "doğrulanmış hataları" — çalıştırıldığında kesinlikle başarısız olacak tip ihlallerini — geliştiricilere ek yük getirmeden bildirmek. Sürüm notuna göre Elixir'in uygulaması "If T: Benchmark for Type Narrowing" kıyaslamasının 13 kategorisinden 12'sini geçiyor. Tip sistemi CNRS ile Remote arasındaki ortaklıkla mümkün oldu; geliştirme Fresha ve Tidewave tarafından destekleniyor.
dynamic() tipi: uyumluluk ve daraltma
Birçok kademeli sistemin "her şey serbest" anlamında any() kullandığı yerde Elixir, iki özelliğe sahip dynamic() tipini getiriyor. Uyumluluk, ihlalin yalnızca sağlanan ve kabul edilen tipler ayrık olduğunda bildirilmesi demek: tipi dynamic(integer() or binary()) olarak çıkarılan bir değişken yine de yalnızca sayı bekleyen bir operatöre verilebilir. Daraltma ise tipi bir aralık gibi davrandırır: data.a ve data.b kullanımı değeri %{..., a: number(), b: number()} tipine indirger, dolayısıyla ardından data.a + data yazmak ihlal sayılır. Koruma ifadeleri de tiplenir: is_list/is_integer birleşimler üretir, is_map_key(x, :foo) ve olumsuzu anahtarın varlığını ya da yokluğunu verir, tuple_size(x) < 3 ise elem(x, 3) erişimini ihlale dönüştürür. case ifadelerinde ilk dalda nil ile eşleşme sonraki dalları binary() tipine daraltır; bu da gereksiz dalları ve ölü kodu ortaya çıkarır.
Daha hızlı derleme ve sıradaki adımlar
Sürüm derleme sürelerini de iyileştiriyor, özellikle çok çekirdekli makinelerde; ekibin sentetik kıyaslamalarında Elixir'in derleme aracı artık yaygın "derle + başlat + test et" döngüsünde en hızlısı. Yeni :module_definition seçeneği :compiled (varsayılan) veya :interpreted olabilir ve mix.exs içindeki elixirc_options ile ayarlanır; yalnızca defmodule içeriğinin nasıl yürütüldüğünü değiştirir, diske yazılan .beam dosyalarını etkilemez. Tip imzaları hâlâ ileride: ekip bunları ancak tip sisteminin performansından memnun kaldığında ve özyinelemeli tipleri, parametrik tipleri ve map'lerin anahtar-değer çiftlerini enumerable olarak verimli biçimde gezmeyi uygulayabildiğinde sunacak.
SiTech — AI destekli web geliştirme
Hızlı ve modern web siteleri kuruyor, AI'yı gerçek iş akışlarına taşıyoruz. Projeniz veya sorunuz mu var? Yardımcı olmaktan mutluluk duyarız.