Ditulis oleh naruse tanggal 2023-05-12
Diterjemahkan oleh meisyal
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
- Mengganti Bison dengan Lrama LALR parser generator Feature #19637
- Jika Anda tertarik, silakan lihat The future vision of Ruby Parser
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
danRubyVM::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 denganext/readline
API. Kami bergantung padareline
di masa depan. Jika Anda perlu untuk menggunakanext/readline
, Anda dapat memasangext/readline
melalui rubygems.org dengangem install readline-ext
. - Kami tidak lagi memasang pustaka, seperti
libreadline
ataulibedit
.
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.