Phát hành Ruby 2.6.0-preview1
Đăng bởi naruse vào 24 Feb 2018
Chúng tôi vui mừng thông báo phát hành Ruby 2.6.0-preview1.
Ruby 2.6.0-preview1 là bản xem trước đầu tiên hướng tới Ruby 2.6.0. Bản preview1 này được phát hành sớm hơn bình thường vì nó bao gồm một tính năng mới quan trọng, JIT.
JIT
Ruby 2.6 giới thiệu bản triển khai ban đầu của trình biên dịch JIT (Just-in-time).
Trình biên dịch JIT nhằm cải thiện hiệu suất thực thi của bất kỳ chương trình Ruby nào. Không giống như các trình biên dịch JIT thông thường cho các ngôn ngữ khác, trình biên dịch JIT của Ruby thực hiện biên dịch JIT theo cách độc đáo, in mã C ra đĩa và tạo tiến trình trình biên dịch C thông thường để sinh mã gốc (native code). Xem thêm: Tổ chức MJIT bởi Vladimir Makarov.
Cách sử dụng: Chỉ cần thêm --jit vào dòng lệnh hoặc biến môi trường $RUBYOPT. Thêm --jit-verbose=1 cho phép in thông tin cơ bản về quá trình biên dịch JIT đang diễn ra. Xem ruby --help để biết các tùy chọn khác.
Mục đích chính của bản phát hành JIT này là cung cấp cơ hội để kiểm tra xem nó có hoạt động trên nền tảng của bạn không và phát hiện các rủi ro bảo mật trước bản phát hành 2.6. Hiện tại, trình biên dịch JIT chỉ được hỗ trợ khi Ruby được xây dựng bởi gcc hoặc clang và trình biên dịch có sẵn tại thời điểm chạy. Nếu không, bạn chưa thể sử dụng nó.
Tính đến phiên bản 2.6.0-preview1, chúng tôi mới chỉ chuẩn bị cơ sở hạ tầng cho JIT và rất ít tối ưu hóa được triển khai. Bạn có thể đo lường một số cải thiện tiềm năng trong các benchmark nhỏ với bản phát hành này, nhưng nó CHƯA sẵn sàng để benchmark hiệu suất cuối cùng của trình biên dịch JIT của Ruby, đặc biệt là cho các chương trình lớn như ứng dụng Rails.
Chúng tôi sẽ triển khai method inlining trong trình biên dịch JIT, điều này được kỳ vọng sẽ tăng hiệu suất Ruby đáng kể.
Ngoài ra, chúng tôi đang lên kế hoạch tăng số nền tảng được hỗ trợ, và kế hoạch tiếp theo là hỗ trợ Visual Studio.
Hãy đón chờ kỷ nguyên mới về hiệu suất của Ruby.
Tính năng mới
- Thêm
Random.bytes. [Feature #4938] -
Thêm
Binding#source_location. [Feature #14230]Phương thức này trả về vị trí nguồn của binding, một mảng 2 phần tử gồm
__FILE__và__LINE__. Theo truyền thống, cùng thông tin này có thể được lấy bằngeval("[__FILE__, __LINE__]", binding), nhưng chúng tôi đang lên kế hoạch thay đổi hành vi này đểKernel#evalbỏ qua vị trí nguồn của binding [Bug #4352]. Vì vậy, người dùng nên sử dụng phương thức mới này thay vìKernel#eval. - Thêm tùy chọn
:exceptionđểKernel.#systemđưa ra lỗi thay vì trả vềfalse. [Feature #14386]
Cải thiện hiệu suất
-
Tăng tốc
Proc#callvì chúng ta không cần quan tâm đến$SAFEnữa. [Feature #14318]Với benchmark
lc_fizzbuzzsử dụngProc#callrất nhiều lần, chúng tôi đo được cải thiện x1.4 [Bug #10212]. -
Tăng tốc
block.callkhiblocklà tham số block được truyền vào. [Feature #14330]Ruby 2.5 cải thiện hiệu suất truyền block. [Feature #14045] Thêm vào đó, Ruby 2.6 cải thiện hiệu suất gọi block được truyền vào. Với micro-benchmark, chúng tôi quan sát được cải thiện 2.6x.
Các thay đổi đáng chú ý khác kể từ 2.5
-
$SAFElà trạng thái toàn cục của tiến trình và chúng ta có thể đặt lại về0. [Feature #14250] -
Truyền
safe_levelchoERB.newđã bị deprecated. Các đối sốtrim_modevàeoutvarđược chuyển thành keyword argument. [Feature #14256] -
Tích hợp RubyGems 2.7.6
Xem NEWS hoặc nhật ký commit để biết chi tiết.
Với những thay đổi đó, 1115 tệp thay đổi, 23023 thêm(+), 14748 xóa(-) kể từ Ruby 2.5.0!
Hôm nay, ngày 24 tháng 2, là sinh nhật lần thứ 25 của Ruby. Chúc mừng sinh nhật Ruby, và hãy tận hưởng lập trình với Ruby 2.6.0-preview1!
Tải về
-
https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-preview1.tar.gz
SIZE: 16082501 bytes SHA1: 94b4a2f5f992dc9855364284e9c64316bf129c90 SHA256: 2023c42676d9237481e1a97157d5e2ecc10db5e320d5b9cf872ec1d293265d61 SHA512: 004696c4f087333ba7cb2285418dcce70f399966ae8fed817aab9759fd2d75beb088c4aeb294fcd4260112e8422f490cd4dbdfce402d73f96bb679b8bb3e1607 -
https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-preview1.zip
SIZE: 19807007 bytes SHA1: 24d76f67bf913348eca783a2ecf6f3faf37299ae SHA256: 6c883927e80430cf07f2d90728d6c2c71164223f378a48ebf964d3b66319f623 SHA512: 1e7f318cec1b7875fd9891df671078de7585b556695a2a85708483ddcacfd6e0b63b70ec2535e92ff981b4f72063721ed552df49688e066666fcd7ae520ae667 -
https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-preview1.tar.bz2
SIZE: 14104578 bytes SHA1: 9f0fb79643a4673a839b0c8496eccc6e1dbd022d SHA256: 8bd6c373df6ee009441270a8b4f86413d101b8f88e8051c55ef62abffadce462 SHA512: d9cb270529a97670d54f43a0236fab072714e715c39277dab70b7a1843ec818e6700e47e1384c7256f9e0ae41ab2c0b768a0de38a5ecf4f4fff5da6ef5ad4944 -
https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0-preview1.tar.xz
SIZE: 11423984 bytes SHA1: bbbc89d760cdaadbca3cbff587295864edeff0af SHA256: 1d99139116e4e245ce543edb137b2a8873c26e9f0bde88d8cee6789617cc8d0e SHA512: d12ff29778d8d940344619881b4d8247c2fb6b44ac2b2dbddb7078828e893cfac9a5a95b5588f0afdbed52bdb6dea95cff1b9ce3ad47dfa62209e97dab8810b6
Tin mới nhất
Phát hành Ruby 3.2.10
Ruby 3.2.10 đã được phát hành.
Đăng bởi hsbt vào 14 Jan 2026
Phát hành Ruby 4.0.1
Ruby 4.0.1 đã được phát hành.
Đăng bởi k0kubun vào 13 Jan 2026
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