Ruby programlama dili 3.1'ın piyasaya sürülmesi

Program geliştirmede son derece verimli olan ve Perl, Java, Python, Smalltalk, Eiffel, Ada ve Lisp'in en iyi özelliklerini içeren dinamik bir nesne yönelimli programlama dili olan Ruby 3.1.0 piyasaya sürüldü. Proje kodu, GPL lisansının en son sürümünü ifade eden ve GPLv2 ile tamamen uyumlu olan BSD (“3 maddeli BSDL”) ve “Ruby” lisansları altında dağıtılmaktadır.

Ana iyileştirmeler:

  • Shopify e-ticaret platformunun geliştiricileri tarafından, Rails çerçevesini kullanan ve birçok yöntemi çağıran Ruby programlarının performansını artırmaya yönelik bir girişimin parçası olarak oluşturulan yeni bir deneysel süreç içi JIT derleyicisi YJIT eklendi. Daha önce kullanılan, tüm yöntemlerin işlenmesine dayanan ve C dilinde harici bir derleyici kullanan MJIT JIT derleyicisinden temel farkı, YJIT'in Lazy Basic Block Versioning (LBBV) kullanması ve entegre bir JIT derleyicisi içermesidir. LBBV ile, JIT önce yöntemin yalnızca başlangıcını derler ve geri kalanını bir süre sonra, kullanılan değişken türleri ve bağımsız değişkenler yürütme sırasında belirlendikten sonra derler. YJIT kullanıldığında, Railsbench testi çalıştırıldığında performansta %22'lik bir artış ve sıvı oluşturma testinde %39'luk bir artış kaydedildi. YJIT şu anda x86-64 mimarisine sahip sistemlerde unix benzeri işletim sistemlerini desteklemekle sınırlıdır ve varsayılan olarak devre dışıdır (etkinleştirmek için komut satırında "--yjit" işaretini belirtin).
  • Eski MJIT JIT derleyicisinin performansı iyileştirildi. Rails kullanan projeler için varsayılan maksimum önbellek boyutu (--jit-max-cache) 100'den 10000 talimata çıkarıldı. 1000'den fazla talimat içeren yöntemler için JIT kullanımı durduruldu. Zeitwerk of Rails'i desteklemek amacıyla, sınıf etkinlikleri için TracePoint etkinleştirildiğinde JIT kodu artık atılmıyor.
  • Uzaktan hata ayıklamayı destekleyen, hata ayıklanan uygulamayı yavaşlatmayan, gelişmiş hata ayıklama arayüzleriyle (VSCode ve Chrome) entegrasyonu destekleyen, tamamen yeniden yazılmış bir debug.gem hata ayıklayıcı içerir, çok iş parçacıklı ve çok işlemli uygulamalarda hata ayıklamak için kullanılabilir, sağlar REPL kod yürütme arayüzü, gelişmiş izleme yetenekleri sunar, kod parçacıklarını kaydedebilir ve yeniden oynatabilir. Daha önce sunulan hata ayıklayıcı lib/debug.rb temel dağıtımdan kaldırıldı.
    Ruby programlama dili 3.1'ın piyasaya sürülmesi
  • Geri arama izleme raporlarında hataların görsel olarak vurgulanması uygulandı. Hata işaretleme, yerleşik ve varsayılan olarak etkinleştirilmiş hata paketi error_highlight kullanılarak sağlanır. Hata işaretlemeyi devre dışı bırakmak için “--disable-error_highlight” ayarını kullanabilirsiniz. $ yakut testi.rb testi.rb:1:in " ": tanımsız yöntem "zaman" for 1:Integer (NoMethodError) 1.time {} ^^^^^ Bunu mu demek istediniz? zamanlar
  • Etkileşimli hesaplamaların kabuğu IRB (REPL, Okuma-Eval-Yazdırma-Döngü), girilen kodun otomatik olarak tamamlanmasını uygular (siz yazarken, Tab veya Shift+ tuşlarıyla geçiş yapabileceğiniz devam eden giriş seçenekleriyle birlikte bir ipucu görüntülenir) Tab tuşu). Devam seçeneğini seçtikten sonra, yakınlarda seçilen öğeyle ilişkili belgeleri görüntüleyen bir iletişim kutusu görüntülenir. Tüm belgelere erişmek için Alt+d klavye kısayolu kullanılabilir.
    Ruby programlama dili 3.1'ın piyasaya sürülmesi
  • Dil sözdizimi artık işlevler çağrılırken karma değişmezlerindeki ve anahtar kelime bağımsız değişkenlerindeki değerlerin atlanmasına izin veriyor. Örneğin, "{x: x, y: y}" ifadesi yerine artık "{x:, y:}" ve "foo(x: x, y: y)" - foo( yerine belirtebilirsiniz. x:, y: )".
  • Artık deneysel olarak işaretlenmeyen tek satırlı desen eşleşmeleri (ary => [x, y, z]) için kararlı destek.
  • Desen eşleşmelerindeki "^" operatörü artık rastgele ifadeler içerebilir, örneğin: Prime.each_cons(2).lazy.find_all{_1 in [n, ^(n + 2)]}.take(3).to_a #= > ? [[3, 5], [5, 7], [11, 13]]
  • Tek satırlı desen eşleşmelerinde parantezleri çıkartabilirsiniz: [0, 1] => _, x {y: 2} => y: x #=> 1 y #=> 2
  • Programın yapısını ve kullanılan türleri belirlemenize olanak tanıyan RBS türü açıklama dili, “<” sembolünü kullanarak tür parametrelerinin üst sınırını belirleme desteği ekledi, genel türlerin takma adları için destek ekledi, değerli taşları yönetmeye yönelik koleksiyonlar, geliştirilmiş performans ve yerleşik ve standart kitaplıklar için birçok yeni imza uygulandı.
  • Açık tip bilgisi olmadan kod analizine dayalı RBS açıklamaları üreten TypePro statik tip analizörüne entegre geliştirme ortamları için deneysel destek eklenmiştir (örneğin TypePro'nun VSCode editörüyle entegrasyonu için eklenti hazırlanmıştır).
  • Birden fazla atamanın işlenme sırası değiştirildi. Örneğin daha önce “foo[0], bar[0] = baz, qux” ifadesinin bileşenleri baz, qux, foo, bar sırasıyla işlenirken artık foo, bar, baz, qux şeklinde işleniyordu.
  • VWA (Değişken Genişlik Ayırma) mekanizmasını kullanarak dizeler için bellek ayırmaya yönelik deneysel destek eklendi.
  • Yerleşik gem modüllerinin ve standart kitaplıkta bulunanların güncellenmiş sürümleri. net-ftp, net-imap, net-pop, net-smtp, matris, prime ve hata ayıklama paketleri yerleşiktir.

Kaynak: opennet.ru

Yorum ekle