Ruby 3.3.0-preview1 Dirilis

Kami dengan senang hati mengumumkan rilis dari Ruby 3.3.0-preview1. Ruby 3.3. menambahkan sebuah pure-Ruby JIT compiler baru yang bernama RJIT, menggunakan Lrama sebagai parser generator, dan memperbaiki performa khususnya YJIT.

RJIT

  • Memperkenalkan sebuah pure-Ruby JIT compiler dan menggantikan MJIT.
    • RJIT hanya mendukung arsitektur x86_64 pada platform Unix.
    • Berbeda dengan MJIT, RJIT tidak membutuhkan sebuah C compiler saat runtime.
  • RJIT ada untuk tujuan eksperimen.
    • Anda harus tetap menggunakan YJIT pada production.
  • Jika Anda tertarik untuk mengembangkan JIT pada Ruby, mohon cek k0kubun’s presentation on Day 3 of RubyKaigi.

Menggunakan Lrama ketimbang Bison

YJIT

  • Peningkatan performa yang signifikan dibanding Ruby 3.2
    • Dukungan splat dan rest argument telah ditingkatkan.
    • Register dialokasikan untuk operasi stack dari virtual machine.
    • Pemanggilan dengan optional argument dikompilasi.
    • Integer#!=, String#!=, Kernel#block_given?, Kernel#is_a?, Kernel#instance_of?, Module#=== dioptimisasi.
    • Instant variable tidak lagi keluar ke intepreter dengan Object Shapes yang sangat besar.
  • Metadata dari kode yang dikompilasi menggunakan memory lebih sedikit.
  • Peningkatan code generation pada ARM64
  • Opsi untuk menjalankan YJIT pada paused mode dan mengaktifkan kembali secara manual
    • --yjit-pause dan RubyVM::YJIT.resume
    • Ini dapat digunakan untuk mengaktifkan YJIT ketika aplikasi Anda selesai booting
  • Opsi exit tracing sekarang mendukung sampling
    • --trace-exits-sample-rate=N
  • Perbaikan beberapa bug

Fitur Penting Lainnya

Bahasa

Perbaikan performa

  • defined?(@ivar) dioptimisasi dengan Object Shapes.

Perubahan penting lainnya sejak 3.2

Isu kompatibilitas

Catatan: Tidak termasuk perbaikan bug dari fitur.

Constant terhapus

Berikut ini adalah constant yang telah dihapus.

Method terhapus

Berikut ini adalah method yang telah dihapus.

Isu kompatibilitas Stdlib

ext/readline dipensiunkan

  • Kami memiliki reline yang merupakan implementasi Ruby murni dan kompatibel dengan ext/readline API. Kami bergantung pada reline di masa depan. Jika Anda perlu untuk menggunakan ext/readline, Anda dapat memasang ext/readline melalui rubygems.org dengan gem install readline-ext.
  • Kami tidak lagi memasang pustaka, seperti libreadline atau libedit.

Pembaruan C API

C API diperbarui

Berikut adalah API yang telah diperbarui.

C API terhapus

Berikut adalah API yang telah dihapus.

Pembaruan pustaka standar

Berikut adalah default gem yang telah diperbarui.

  • RubyGems 3.5.0.dev
  • bigdecimal 3.1.4
  • bundler 2.5.0.dev
  • csv 3.2.7
  • fiddle 1.1.2
  • fileutils 1.7.1
  • irb 1.6.4
  • optparse 0.4.0.pre.1
  • psych 5.1.0
  • reline 0.3.3
  • stringio 3.0.7
  • strscan 3.0.7
  • syntax_suggest 1.0.4
  • time 0.2.2
  • timeout 0.3.2
  • uri 0.12.1

Berikut adalah bundled gem yang telah diperbarui.

  • minitest 5.18.0
  • rbs 3.1.0
  • typeprof 0.21.7
  • debug 1.8.0

Lihat rilis GitHub, seperti Logger atau changelog untuk detail dari default gem atau bundled gem.

Lihat NEWS atau commit logs untuk lebih detail.

Dengan perubahan tersebut, 1922 berkas berubah, 75283 sisipan(+), 44896 terhapus(-) sejak Ruby 3.2.0!

Unduh

  • https://cache.ruby-lang.org/pub/ruby/3.3/ruby-3.3.0-preview1.tar.gz

    SIZE: 20428213
    SHA1: 5445eec1cd9ddb44e03e74568cac94209c91b42d
    SHA256: c3454a911779b8d747ab0ea87041030d002d533edacb2485fe558b7084da25ed
    SHA512: 0f891f140ddc6372aa7c4459f8784126e0c341db7b80e72c51e441c5153c43c2d7b965f7807c076862ac84b9b8b0c6a66bbf66fc341746016151397bb21c782a
    
  • https://cache.ruby-lang.org/pub/ruby/3.3/ruby-3.3.0-preview1.tar.xz

    SIZE: 15074600
    SHA1: 4c22ebca287c87811e1050bf4d59b7d32255b212
    SHA256: ae300b49e06c13087dd163b97eddd38db895dc8e0c9904284119795d75303fbb
    SHA512: 46c1134dba5810847f7f6b4298900a91f5225679d7873548b271f4ef2ad1dc168722562a2e468a2ccf136314176ee613d8c7792fd4411a3f7a44c80b93b417ee
    
  • https://cache.ruby-lang.org/pub/ruby/3.3/ruby-3.3.0-preview1.zip

    SIZE: 24846962
    SHA1: 31774fa653c54107b6afc30adda3a0350d8f41d2
    SHA256: 6ecafecf83f2cacf446b2326012f2b6ee1a0614d8dd29bb1fb3f105c27e2c553
    SHA512: 794bef847fefbbdbbdced85975a00c9289ef6464810408af3f0f2055052d6b5ef5576dbd41e0d87bb73f1ad276d8e27c36018610f8e2b9936828c0e692f611f0
    

Apa itu Ruby

Ruby pertama kali dikembangkan oleh Matz (Yukihiro Matsumoto) pada 1993 dan sekarang dikembangkan sebagai Open Source. Ruby berjalan pada berbagai platform dan digunakan di seluruh dunia, khususnya pengembangan web.