Elixir v1.17 yayınlandı: küme kuramsal tipler, takvim süreleri, Erlang/OTP 27 desteği
Kademeli küme kuramsal tip uyarıları
- Elixir v1.17, örüntülerden tip çıkarımı yapan ve bunu programı tip denetiminden geçirmek için kullanan küme kuramsal tipleri sunuyor.
- Bu tip sistemi, mevcut yazılımı değiştirmeden kod tabanındaki hata ve bug'ları bulmayı mümkün kılıyor.
- Şu anda geliştiriciler bu tip sistemiyle yalnızca uyarılar üzerinden etkileşime geçebiliyor.
- Başlıca uyarılar:
- Var olmayan anahtarlar için örüntü eşleme
- Var olmayan anahtarlara erişim
- Modül olmayan bir yerde fonksiyon çağrısı
- Anonim fonksiyon çağrısında fonksiyon olmayan bir şeyi çağırma
- Struct'lar arasında karşılaştırma
- Kesişmeyen tipler arasında karşılaştırma
- Hatalı binary örüntü eşleme
- Tanımlanmamış bir istisna struct'ını rescue etmeye çalışma
- Rescue edilen istisnada tanımlanmamış alanlara erişim
Erlang/OTP desteği
- Elixir v1.17, Erlang/OTP 27'yi destekliyor ve Erlang/OTP 24 desteğini sonlandırıyor.
- Elixir geliştiricileri, Erlang/OTP 26 veya üstüne geçiş yapılmasını öneriyor.
- Erlang/OTP 27'nin başlıca özellikleri:
json modülünün eklenmesi
- Süreç etiketlerinin (
proc_lib:set_label/1) eklenmesi
Yeni Duration veri tipi ve tarih kaydırma fonksiyonları
Diğer önemli değişiklikler
- Yeni
Keyword.intersect/2,3 fonksiyonları eklendi.
- Yeni Mix profiler
mix profile.tprof eklendi.
Kernel.is_non_struct_map/1 guard'ı eklendi.
- Elixir'nin Logger'ı
gen_statem raporlarını biçimlendiriyor ve Erlang/OTP 27 süreç etiketlerini içeriyor.
GN⁺ görüşü
- Küme kuramsal tipler: Bu tip sistemi, kodun kararlılığını ve güvenilirliğini artırmada büyük fayda sağlayabilir. Özellikle büyük ölçekli projelerde yararlı.
- Erlang/OTP 27 desteği: En güncel Erlang/OTP sürümünü destekleyerek performans ve özellikler açısından önemli avantajlar sunuyor.
- Duration veri tipi: Zaman dilimi ve takvimi dikkate alan tarih kaydırma işlevi, takvim ve planlama gibi uygulamalarda çok kullanışlı.
- Tip sisteminin sınırları: Şu anda fonksiyon sınırlarının ötesinde tip analizi yapılamadığı için bu alanın gelecekteki güncellemelerde geliştirilmesi gerekiyor.
- Rakip ürünler: TypeScript gibi statik tip sistemleri sunan dillerle karşılaştırıldığında, Elixir'nin yaklaşımı dinamik dillerin esnekliğini korurken tip güvenliği de sağlıyor.
1 yorum
Hacker News görüşleri
Elixir ve Erlang ekipleri son birkaç yıldır harika işler çıkarıyor. Kütüphane ve kitap yazarlarının katkıları da büyük. Elixir ve OTP commit’lerini takip etmek heyecan verici. Emeği geçen herkese teşekkürler.
Elixir’i backend olarak kullandığım bir yan projede verimli ve keyifli bir deneyim yaşadım. LiveView’un üretkenliğini çok takdir ediyorum, ancak ağ bağlantısının kararsız olduğu durumlar için uygun değil. Elixir, LiveView’dan ayrı olarak da fazlasıyla keyifli kullanılabiliyor.
Startup’ımı Elixir ile full-stack geliştiriyorum ve şimdiye kadar kullandığım en harika teknoloji bu. Arkadaşlarıma Elixir’in avantajlarını anlatıp duruyorum. Keşke RabbitMQ ve istemcisi OTP 27’de çalışsa.
Elixir ve Erlang geliştiricilerinin harika çalışmalarına teşekkürler. Elixir’in geniş çapta benimsenmesi için artık "tip yok" bahanesinin ortadan kalkmasını umuyorum. Böyle güzel işler çıkarmaya devam etmelerini diliyorum.
10 yıldır Elixir hakkında okuyorum ve dili seviyorum. Ama ana akım dillere kıyasla daha düşük maaşlar yüzünden Elixir ile ilgili işlerden vazgeçtim. Teknoloji yığınından çok maaş ve havalı ürünler daha önemli. Yine de Elixir’i uzaktan izlemek hâlâ keyifli.
Bu sürümdeki harika özelliklerden biri
get_in/1eklemesi. Örneğinget_in(struct.foo.bar)içindefoonildöndürürse,bara erişmeye çalışırken hata oluşmuyor.Bu sürüm benim istediğim son parçaydı. Bundan sonraki adımlar için heyecanlıyım. Bence dil artık %100 özellik açısından tamamlandı.
Tip sistemi konusunda çok heyecanlıyım. José’nin bunu "kademeli tip sistemi" olarak açıkladığını hatırlıyorum. Bunun aşamalı olarak ekleneceğini söylemişti. Bir sonraki adımda yeni tip sistemiyle ilgili hangi özelliklerin geleceğini merak ediyorum. Özellikle yeni derleyici optimizasyonlarını bekliyorum.
Bu sürüm beni çok heyecanlandırdı. Umarım Elixir IntelliJ eklentisine daha fazla kaynak ayrılır. VSCode kullanmak keyif vermiyor.
"Küme kuramsal tipler"in ne anlama geldiğini bilen var mı merak ediyorum. Programlama dilleriyle çok ilgileniyorum ama bu terimi ilk kez duyuyorum.