Ruby 3.3.0-preview1 đã được phát hành

Đăng bởi naruse vào 12 May 2023

Chúng tôi vui mừng thông báo phiên bản Ruby 3.3.0-preview1 đã được phát hành. Ruby 3.3 bổ sung một trình biên dịch JIT thuần Ruby mới có tên RJIT, sử dụng Lrama làm trình tạo parser, và nhiều cải thiện hiệu suất đặc biệt là YJIT.

RJIT

  • Giới thiệu trình biên dịch JIT thuần Ruby RJIT và thay thế MJIT.
    • RJIT chỉ hỗ trợ kiến trúc x86_64 trên các nền tảng Unix.
    • Không giống như MJIT, nó không yêu cầu trình biên dịch C tại thời điểm chạy.
  • RJIT chỉ tồn tại cho mục đích thử nghiệm.
    • Bạn nên tiếp tục sử dụng YJIT trong môi trường sản xuất.
  • Nếu bạn quan tâm đến việc phát triển JIT cho Ruby, vui lòng xem bài thuyết trình của k0kubun vào Ngày 3 của RubyKaigi.

Sử dụng Lrama thay thế Bison

YJIT

  • Cải thiện hiệu suất đáng kể so với 3.2
    • Hỗ trợ cho splat và rest arguments đã được cải thiện.
    • Các thanh ghi được phân bổ cho các thao tác ngăn xếp của máy ảo.
    • Nhiều lời gọi với tham số tùy chọn được biên dịch hơn.
    • Integer#!=, String#!=, Kernel#block_given?, Kernel#is_a?, Kernel#instance_of?, Module#=== được tối ưu hóa đặc biệt.
    • Các biến instance không còn thoát ra trình thông dịch với Object Shapes đa hình.
  • Metadata cho mã đã biên dịch sử dụng ít bộ nhớ hơn nhiều.
  • Cải thiện việc sinh mã trên ARM64
  • Tùy chọn khởi động YJIT ở chế độ tạm dừng và sau đó bật thủ công
    • --yjit-pauseRubyVM::YJIT.resume
    • Điều này có thể được sử dụng để chỉ bật YJIT sau khi ứng dụng của bạn đã khởi động xong
  • Tùy chọn theo dõi exit hiện hỗ trợ lấy mẫu
    • --trace-exits-sample-rate=N
  • Nhiều bản sửa lỗi

Các tính năng mới đáng chú ý khác

Ngôn ngữ

Cải thiện hiệu suất

  • defined?(@ivar) được tối ưu hóa với Object Shapes.

Các thay đổi đáng chú ý khác kể từ 3.2

Vấn đề tương thích

Lưu ý: Không bao gồm các bản sửa lỗi tính năng.

Các hằng số đã bị loại bỏ

Các hằng số không còn được dùng sau đây đã bị loại bỏ.

Các phương thức đã bị loại bỏ

Các phương thức không còn được dùng sau đây đã bị loại bỏ.

Vấn đề tương thích thư viện chuẩn

ext/readline đã ngừng hoạt động

  • Chúng tôi có reline là bản triển khai thuần Ruby tương thích với API ext/readline. Chúng tôi sẽ dựa vào reline trong tương lai. Nếu bạn cần sử dụng ext/readline, bạn có thể cài đặt ext/readline thông qua rubygems.org với gem install readline-ext.
  • Chúng tôi không còn cần cài đặt các thư viện như libreadline hay libedit.

Cập nhật C API

Các C API đã được cập nhật

Các API sau đây đã được cập nhật.

Các C API đã bị loại bỏ

Các API không còn được dùng sau đây đã bị loại bỏ.

Cập nhật thư viện chuẩn

Các default gem sau đây đã được cập nhật.

  • 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

Các bundled gem sau đây đã được cập nhật.

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

Xem các bản phát hành trên GitHub như Logger hoặc changelog để biết chi tiết về các default gem hoặc bundled gem.

Xem NEWS hoặc nhật ký commit để biết thêm chi tiết.

Với những thay đổi đó, 1922 tệp đã thay đổi, 75283 thêm vào(+), 44896 xóa đi(-) kể từ Ruby 3.2.0!

Tải về

  • 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
    

Ruby là gì

Ruby được phát triển lần đầu bởi Matz (Yukihiro Matsumoto) vào năm 1993, và hiện được phát triển dưới dạng Mã nguồn Mở. Nó chạy trên nhiều nền tảng và được sử dụng trên toàn thế giới, đặc biệt cho phát triển web.

Tin mới nhất

Phát hành Ruby 4.0.0

Chúng tôi vui mừng thông báo phát hành Ruby 4.0.0. Ruby 4.0 giới thiệu “Ruby Box” và “ZJIT”, cùng nhiều cải tiến khác.

Đăng bởi naruse vào 25 Dec 2025

Diện mạo mới cho tài liệu Ruby

Tiếp theo việc thiết kế lại ruby-lang.org, chúng tôi có thêm tin vui để kỷ niệm 30 năm Ruby: docs.ruby-lang.org có diện mạo hoàn toàn...

Đăng bởi Stan Lo vào 23 Dec 2025

Thêm Tin...