
Chúng tôi vui mừng thông báo phát hành Ruby 4.0.0-preview2. Ruby 4.0 cập nhật phiên bản Unicode lên 17.0.0, và nhiều cải tiến khác.

## Thay đổi ngôn ngữ

* `*nil` không còn gọi `nil.to_a`, tương tự như cách `**nil` không
  gọi `nil.to_hash`.  [[Feature #21047]]

## Cập nhật các lớp lõi

Lưu ý: Chúng tôi chỉ liệt kê các cập nhật đáng chú ý của các lớp lõi.

* Binding

    * `Binding#local_variables` không còn bao gồm các tham số được đánh số.
      Ngoài ra, `Binding#local_variable_get` và `Binding#local_variable_set` từ chối xử lý các tham số được đánh số.
      [[Bug #21049]]

* IO

    * `IO.select` chấp nhận +Float::INFINITY+ làm đối số timeout.
      [[Feature #20610]]

* String

    * Cập nhật Unicode lên Phiên bản 17.0.0 và Emoji Phiên bản 17.0. [[Feature #19908]][[Feature #20724]][[Feature #21275]]
        (cũng áp dụng cho Regexp)


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

Lưu ý: Chúng tôi chỉ liệt kê các cập nhật đáng chú ý của thư viện chuẩn.

* ostruct 0.6.1
* pstore 0.2.0
* benchmark 0.4.0
* logger 1.7.0
* rdoc 6.13.1
* win32ole 1.9.2
* irb 1.15.2
* reline 0.6.1
* readline 0.0.4
* fiddle 1.1.6

## 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.



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


## Cập nhật C API


## JIT

* YJIT
    * Thống kê YJIT
        * `ratio_in_yjit` không còn hoạt động trong bản build mặc định.
          Sử dụng `--enable-yjit=stats` khi `configure` để kích hoạt nó với `--yjit-stats`.
        * Thêm `invalidate_everything` vào thống kê mặc định, được
          tăng lên khi mọi mã bị vô hiệu hóa bởi TracePoint.
    * Thêm các tùy chọn `mem_size:` và `call_threshold:` cho `RubyVM::YJIT.enable`.
* ZJIT
    * Thêm trình biên dịch JIT dựa trên phương thức thử nghiệm.
      Sử dụng `--enable-zjit` khi `configure` để kích hoạt hỗ trợ `--zjit`.
    * Tính đến Ruby 4.0.0-preview2, ZJIT chưa sẵn sàng để tăng tốc hầu hết các benchmark.
      Vui lòng chưa đánh giá ZJIT vội. Hãy chờ bản phát hành Ruby 4.0.
* RJIT
    * `--rjit` đã bị loại bỏ. Chúng tôi sẽ chuyển triển khai API JIT bên thứ ba
      sang kho lưu trữ [ruby/rjit](https://github.com/ruby/rjit).

## Thay đổi khác



Xem [NEWS](https://github.com/ruby/ruby/blob/v4.0.0-preview2/NEWS.md)
hoặc [nhật ký commit](https://github.com/ruby/ruby/compare/v3_4_0...v4.0.0-preview2)
để biết thêm chi tiết.

Với những thay đổi này, [3607 tệp thay đổi, 197451 thêm(+), 285607 xóa(-)](https://github.com/ruby/ruby/compare/v3_4_0...v4.0.0-preview2#file_bucket)
kể từ Ruby 3.4.0!

## Tải về

* <https://cache.ruby-lang.org/pub/ruby/4.0/ruby-4.0.0-preview2.tar.gz>

      SIZE: 23444451
      SHA1: 132e450bbee3f61ed0b463ed1e2bd3a3a324339c
      SHA256: 0a3330dae710302e11f7f0323e83219ab3c6517984691a312c662f329c5120e1
      SHA512: b5e681cc84be59148485b9a2212dcf54d61cfee27431ceddb49bedc8baa913ec8b36da43242cb4f1791b25e4bfc1dcf72b5527288a0656f2933da898d0e0b40f

* <https://cache.ruby-lang.org/pub/ruby/4.0/ruby-4.0.0-preview2.tar.xz>

      SIZE: 17554228
      SHA1: f8e8b98ea85ac82610ab601a21dc9a90c5c56a97
      SHA256: 0b92b15466d77a9d7e59e4a75f050d42cd50fe96c951d2b3b9f8029394cd9a43
      SHA512: 7afaa8d8e832ef0ded28f1caf874da69f16105e1b3aad5947c6911364159b4c6ebd3d7ea5d7d86708e9f2f06a047921b8302ca6e75ec429a3da846845f896976

* <https://cache.ruby-lang.org/pub/ruby/4.0/ruby-4.0.0-preview2.zip>

      SIZE: 28933540
      SHA1: 48a235cfbfd4252dce81da870c792e32309e62b9
      SHA256: f5c68ee44dfcb76b61c07c437fa945814dfc516570b1c921506ac886960160ca
      SHA512: 508c685e46a641c74e2968daf650559503ce2bcaac3403654713adb2345c3ede2bace929294a1367afecac5edd6b2c42fa833f5313456f78c79151d310c860cf

## 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.

[Feature #21047]: https://bugs.ruby-lang.org/issues/21047
[Bug #21049]: https://bugs.ruby-lang.org/issues/21049
[Feature #20610]: https://bugs.ruby-lang.org/issues/20610
[Feature #19908]: https://bugs.ruby-lang.org/issues/19908
[Feature #20724]: https://bugs.ruby-lang.org/issues/20724
[Feature #21275]: https://bugs.ruby-lang.org/issues/21275
