4 puan yazan GN⁺ 2024-12-26 | 2 yorum | WhatsApp'ta paylaş
  • Geçtiğimiz yıllarda olduğu gibi 12/25'te Ruby 3.4.0 yayımlandı

  • Temel güncellemeler arasında it blok parametre referansı eklenmesi, varsayılan ayrıştırıcı olarak Prism'e geçiş, soket kütüphanesine Happy Eyeballs Version 2 desteği eklenmesi, YJIT iyileştirmeleri ve modüler GC eklenmesi gibi değişiklikler vardır.

  • it blok parametre referansı

    • Değişken adı olmadan blok parametresine referans verilebilen it tanıtıldı. Bu özellik _1 ile benzer şekilde çalışır ve basit bloklarda kullanımı kolaylaştırır.
  • Varsayılan ayrıştırıcı olarak Prism'e geçiş

    • Varsayılan ayrıştırıcı parse.y yerine Prism olarak değiştirildi. Kullanıcılar açısından büyük bir fark beklenmiyor; uyumluluk sorunu olursa lütfen raporlayın.
  • Socket kütüphanesinde Happy Eyeballs Version 2

    • Socket kütüphanesine Happy Eyeballs Version 2 (RFC 8305) desteği eklendi. Bu, modern internet koşullarına uygun, verimli ve güvenilir ağ bağlantıları sağlar.
  • YJIT iyileştirmeleri

    • Çoğu ölçümde performans artışı, bellek kullanımında azalma, çeşitli hata düzeltmeleri ve yeni özellikler eklendi.
  • Modüler GC

    • Alternatif bir çöp toplama (GC) uygulamasını dinamik olarak yükleyebilen modüler bir GC özelliği eklendi. Rust araç zinciri gerektirir.
  • Dil değişiklikleri

    • frozen_string_literal yorumu olmadan dosyalarda string literal'ların değiştirilmesi durumunda uyarı üretilir. **nil anahtar sözcük yayılımı (splatting) desteği gibi çeşitli değişiklikler de var.
  • Çekirdek sınıf güncellemeleri

    • Exception#set_backtrace'un Thread::Backtrace::Location dizisini kabul etmesi dahil olmak üzere çeşitli çekirdek sınıf güncellemeleri içerir.
  • Standart kütüphane güncellemeleri

    • RubyGems, Bundler, JSON, Tempfile gibi çeşitli standart kütüphanelerde performans iyileştirmeleri ve yeni özellikler eklenmiştir.
  • Uyumluluk sorunları

    • Hata iletisi ve backtrace gösterimi biçimlerinin değişmesi, Hash#inspect işleme biçiminin değiştirilmesi gibi uyumlulukla ilgili değişiklikler bulunmaktadır.
  • C API güncellemeleri

    • rb_newobj ve rb_newobj_of işlevlerinin kaldırılması da dahil olmak üzere C API güncellemeleri içerir.
  • Diğer değişiklikler

    • Kullanılmayan bir bloğu metoda iletirken uyarı verilmesi gibi farklı değişiklikleri içerir.

2 yorum

 
GN⁺ 2024-12-26
Hacker News yorumu
  • Ruby ayrıştırıcı değişikliklerine dair beklenti çok yüksek. Daha önce yacc kullanmam gerektiğini öğrenmiştim, ancak Ruby şimdi elle yazılmış bir ayrıştırıcı kullanan diller listesine de katıldı.

    • 16k satırlık parse.y dosyasını 22k satırlık prism.c ile değiştirmek oldukça göze çarpan bir hamle.
  • Ruby 3.4.1 zaten eski kalmış.

  • Son birkaç yıldır Ruby'nin performansı özellikle artmış görünüyor. 3.3'ten bu yana tüm uygulamalarda --yjit seçeneğiyle çalıştırıyorum ve ciddi farklar görüyorum.

  • Shopify'ın stratejisi de YJIT hikâyesiyle aynı. Servisi yeniden düzenleyemiyorsak Ruby'yi yeniden düzenleyeceğiz yaklaşımı.

  • JIT ve GC seviyelerinde performans iyileştirmeleri hoş bir ek avantaj.

  • Ruby yayınını her yıl bir Noel geleneği gibi bekliyorum.

  • Her yılın sonunda Rails uygulamalarını güncelliyorum ve son dönemde hem daha stabil hem de daha yüksek performanslı olduğundan bunu çok daha kolay yapıyorum.

  • Ruby ekibine tebrik ve teşekkür ederim.

  • Rails 8 haberi sonrası Ruby'yi denemek istemiştim ama kurulum süreci çok zordu.

    • Ruby 3.3'ü hem Mac hem Windows'ta kurmak büyük bir mücadeleydi.
    • Docker'da da sürüm uyarlaması gerekiyordu; devContainers'ta da sorunlar vardı.
    • Kurulumdan sonra VSCode ve diğer düzenleyicilerde Rails'in html.erb dosyalarının sözdizimi vurgulaması tamamen bozulmuştu.
    • Çözüm için internette aradım ama bulamayınca vazgeçtim.
    • Mac, Windows ve Linux'u denedim ama hiçbiri çalışmadı; bunu çözebilecek birisi varsa, o harika bir Noel hediyesi olur.
 
eajrezz 2024-12-26

Rails 8 haberinden sonra Ruby’yi denemek istemiştim ama kurulum süreci o kadar zordu ki vazgeçtim.

macOS’ta Rails kurulumunu kolayca yapan bir betik var.
=>
https://rails.new/