Ruby 4.0, Ruby Box İzolasyonu ve Yeni ZJIT Derleyicisi ile Yayınlandı


Ruby 4.0 artık mevcut, deneysel Ruby Box izolasyon özelliğini, yeni ZJIT derleyicisini ve performans ile eşzamanlılık iyileştirmelerini tanıtıyor.

Yüksek seviyeli, genel amaçlı bir programlama dili olan Ruby 4.0, yayımlandı; kapsamlı performans, eşzamanlılık ve standart kütüphane güncellemelerinin yanı sıra yeni izolasyon ve derleme teknolojilerini de tanıtıyor.

Başlık eklemesi Ruby Box'tır, çalışan bir Ruby süreci içinde tanımlamaları izole etmek için tasarlanmış yeni bir deneysel mekanizma. RUBY_BOX=1 ortam değişkeni ile etkinleştirildiğinde, Ruby Box sınıfların, modüllerin, küresel değişkenlerin, monkey patch'lerin ve hatta yüklü kütüphanelerin belirli bir kutuya sınırlandırılmasına olanak tanır.

Bu, maymun yamaları kullanıldığında test paketlerini güvenli bir şekilde çalıştırmak, mavi-yeşil dağıtımlar için web uygulamasının birden fazla sürümünü yan yana çalıştırmak veya çalışma zamanı davranışlarını karşılaştırarak bağımlılık güncellemelerini paralel olarak değerlendirmek gibi kullanım senaryolarına olanak tanır.

Bir diğer önemli değişiklik, YJIT'in yerini alan yeni deneysel just-in-time derleyici ZJIT'in tanıtılmasıdır. ZJIT, daha büyük derleme birimleri ve SSA tabanlı bir ara temsil ile oluşturulmuş yöntem tabanlı bir JIT'tir; Ruby'nin uzun vadeli performans sınırını yükseltmeyi ve derleyiciyi dış katkıda bulunanlar için daha erişilebilir hale getirmeyi amaçlamaktadır.

ZJIT, derleme için Rust 1.85 veya daha yenisini gerektirir ve –zjit seçeneğiyle veya çalışma zamanında etkinleştirilebilir. Ruby 4.0'ta ZJIT, yorumlayıcıdan çok daha iyi performans gösteriyor, ancak yine de YJIT'in gerisinde kalıyor. Ruby çekirdek ekibi, üretim ortamında kullanılmasını önermiyor ve deneysel kullanım tavsiye ediyor; açıklanan hedef, ZJIT'i üretim için hazır hâle getirmek ve Ruby 4.1'de YJIT'ten daha hızlı yapmak.

Ayrıca, Ruby 4.0, Ractor'lar arasında daha net ve sağlam bir iletişim mekanizması sağlamak için yeni Ractor::Port sınıfını tanıtmaktadır; bu sınıf, artık kaldırılan Ractor.yield ve Ractor#take gibi önceki API’lerin yerini almaktadır. Ractor’lar ayrıca azalan global kilit çatışması, daha az paylaşılan iç durum ve geliştirilmiş CPU önbellek davranışından faydalanmakta olup, tüm bunlar daha iyi paralel performansa katkıda bulunmaktadır.

Dil seviyesinde, Ruby 4.0 birkaç önemli değişiklik içeriyor. Bir satırın başındaki mantıksal operatörler artık önceki satırı devam ettiriyor, çok satırlı koşullarda okunabilirliği artırıyor. *nil işleyişi diğer splat davranışlarıyla uyumlu hale getirilmiş ve argüman sayısı uyuşmazlıkları için hata raporlaması, daha net izleme hataları ve bağlamsal kod parçacıklarıyla geliştirilmiştir.

Çekirdek sınıflar ve modüller çok çeşitli iyileştirmeler görüyor. Diziler daha verimli arama yöntemleri kazanıyor, Enumerator daha iyi bir boyut farkındalığı kazanıyor, File::Stat Linux'ta çekirdek ve dosya sistemi tarafından desteklendiğinde dosya yaratılma zamanını gösteriyor ve Set, standart kütüphaneden çekirdek sınıfa yükseltilmiş ve basitleştirilmiş bir inspect çıktısına sahip oluyor.

Pathname artık bir çekirdek sınıfı haline geldi ve Unicode desteği, Emoji 17.0 dahil olmak üzere 17.0 sürümüne güncellendi. IO, Fiber, Thread, Socket ve Kernel genelindeki birçok API, uzun süredir kullanılmayan davranışlar kaldırılarak iyileştirildi, genişletildi veya temizlendi.

Standart kütüphane de yeniden düzenlendi. Birkaç varsayılan olarak gelen gem yükseltilmiş, diğerleri daha yeni büyük sürümlere güncellenmiş ve bazı bileşenler kaldırılmış veya ayrılmıştır; örneğin CGI kütüphanesi artık varsayılan olarak tam olarak sağlanmamaktadır.

Uygulama tarafında, Ruby 4.0 geniş kapsamlı performans iyileştirmeleri sunuyor. Nesne oluşturma daha hızlı, özellikle anahtar kelime argümanları söz konusu olduğunda. Çöp toplama birçok açıdan daha verimli, örnek değişken erişimi dahili olarak optimize edildi ve birçok kritik yol üzerinde kilitleme azaltıldı.

Son olarak, Ruby 4.0 geliştiricilerin farkında olması gereken uyumluluk değişikliklerini de tanıtıyor. Eski bazı API'ler kaldırıldı, buna eski işlem oluşturma davranışları ve eski Ractor yöntemleri de dahil, ve bazı C API'leri güvenliği ve doğruluğu artırmak amacıyla kullanımdan kaldırıldı veya değiştirildi. Windows desteği artık Visual Studio 2015 veya daha yenisini gerektiriyor.

Daha fazla bilgi için duyuruya bakın.