Ditulis oleh naruse tanggal 2023-09-14
Diterjemahkan oleh meisyal
Kami dengan senang hati mengumumkan rilis dari Ruby 3.3.0-preview2. 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.
- Exception handler juga dikompilasi.
- Instant variable tidak lagi keluar ke intepreter dengan Object Shapes yang sangat besar.
- Call type yang tidak didukung tidak lagi keluar ke interpreter.
Integer#!=
,String#!=
,Kernel#block_given?
,Kernel#is_a?
,Kernel#instance_of?
,Module#===
dioptimisasi.- Sekarang 3x lebih cepat dibanding interpreter pada optcarrot!
- 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
ratio_in_yjit
yang dihasilkan oleh--yjit-stats
sekarang tersedia pada rilis build, data khusus atau dev build tidak lagi diperlukan.- Opsi exit tracing sekarang mendukung sampling
--trace-exits-sample-rate=N
- Pengujian lebih saksama dan perbaikan beberapa bug
Fitur Penting Lainnya
Bahasa
Perbaikan performa
defined?(@ivar)
dioptimisasi dengan Object Shapes.
Perubahan penting lainnya sejak 3.2
IRB
IRB mendapatkan beberapa peningkatan berikut, namun tidak terbatas pada:
- Integrasi
irb:rdbg
yang menyediakan pengalaman deugging setara denganpry-byebug
(doc). - Dukungan pager untuk perintah, seperti
ls
danshow_cmds
. - Menyediakan informasi yang lebih akurat dan membantu dengan perintah
ls
danshow_source
.
Sebagai tambahan, IRB telah menjalani refactoring yang ekstensif dan menerima perbaikan bug untuk memfasilitasi peningkatan ke depan dengan lebih mudah.
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
RubyGems dan Bundler memperingatkan jika pengguna membutuhkan gem yang dijadwalkan akan menjadi bundled gem pada Ruby versi berikutnya.
Berikut adalah default gem yang telah diperbarui.
- RubyGems 3.5.0.dev
- bigdecimal 3.1.4
- bundler 2.5.0.dev
- csv 3.2.8
- erb 4.0.3
- fiddle 1.1.2
- fileutils 1.7.1
- irb 1.7.4
- nkf 0.1.3
- optparse 0.4.0.pre.1
- psych 5.1.0
- reline 0.3.8
- stringio 3.0.9
- strscan 3.0.7
- syntax_suggest 1.1.0
- time 0.2.2
- timeout 0.4.0
- uri 0.12.2
- yarp 0.9.0
Berikut adalah bundled gem yang telah diperbarui.
- minitest 5.19.0
- test-unit 3.6.1
- rexml 3.2.6
- rss 0.3.0
- net-imap 0.3.7
- rbs 3.2.1
- typeprof 0.21.8
- debug 1.8.0
Berikut adalah default gem yang sekarang menjadi bundled gem.
- racc 1.7.1
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, 4970 berkas berubah, 239635 sisipan(+), 165275 terhapus(-) sejak Ruby 3.2.0!
Unduh
-
https://cache.ruby-lang.org/pub/ruby/3.3/ruby-3.3.0-preview2.tar.gz
SIZE: 21074209 SHA1: cf7329019235dc36b8e3f382a8b8b744922b1163 SHA256: 30ce8b0fe11b37b5ac088f5a5765744b935eac45bb89a9e381731533144f5991 SHA512: 1c5a13e519e8487fd40d932b96d14fa729521925c288e7841ab5eada628e506ceca2605bae36eea1aa505d9253383d53cd933b7a4bff96e6de5b1130c7c558e6
-
https://cache.ruby-lang.org/pub/ruby/3.3/ruby-3.3.0-preview2.tar.xz
SIZE: 15600992 SHA1: 606d6423137a24eef4f6b07d167596b63c7aaa17 SHA256: 62b1c4f586c70bf1cb58f2d909d0d824506315782e835f9dd3fcc0b659a70fc1 SHA512: 5ff609a66b7359006df0d87477cf70e6e26c5f40ced81b8254f8154f4fc82c77fed297471b55706c1a4466f2a4257999e933b2ed085f695ace265757ab9500a2
-
https://cache.ruby-lang.org/pub/ruby/3.3/ruby-3.3.0-preview2.zip
SIZE: 26095651 SHA1: 4441cd0db23d133e6e2f7dea28f931a68dac6ca5 SHA256: c9771d24c9b1eab532c04ed076087285601693e4d1c63f131fd078c47c5c0cea SHA512: bfeed21d011f891fe22510fe7242992c98f7fd2ce863d8be5740f56a34b726134cb3f5304e8b2dcd468fbc939648f10aae482eee15c1bf6c64b705484ed9e197
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.