Phát hành Ruby 3.4.0 preview2

Đăng bởi naruse vào 7 Oct 2024

Chúng tôi vui mừng thông báo phát hành Ruby 3.4.0-preview2.

Prism

Chuyển trình phân tích mặc định từ parse.y sang Prism. [Feature #20564]

Thay đổi ngôn ngữ

  • Các chuỗi ký tự trong các tập tin không có comment frozen_string_literal giờ đây phát ra cảnh báo deprecation khi chúng bị thay đổi. Các cảnh báo này có thể được bật với -W:deprecated hoặc bằng cách đặt Warning[:deprecated] = true. Để tắt thay đổi này, bạn có thể chạy Ruby với tham số dòng lệnh --disable-frozen-string-literal. [Feature #20205]

  • it được thêm để tham chiếu đến tham số block. [Feature #18980]

  • Giờ đây hỗ trợ keyword splatting nil khi gọi phương thức. **nil được xử lý tương tự như **{}, không truyền keyword nào, và không gọi bất kỳ phương thức chuyển đổi nào. [Bug #20064]

  • Không còn cho phép truyền block trong index. [Bug #19918]

  • Không còn cho phép keyword arguments trong index. [Bug #20218]

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 lớp nổi bật.

  • Exception

    • Exception#set_backtrace giờ đây chấp nhận mảng Thread::Backtrace::Location. Kernel#raise, Thread#raiseFiber#raise cũng chấp nhận định dạng mới này. [Feature #13557]
  • Range

    • Range#size giờ đây ném TypeError nếu range không thể lặp. [Misc #18984]

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.

  • Thông báo lỗi và hiển thị backtrace đã được thay đổi.
    • Sử dụng dấu nháy đơn thay vì dấu backtick làm dấu mở ngoặc. [Feature #16495]
    • Hiển thị tên lớp trước tên phương thức (chỉ khi lớp có tên cố định). [Feature #19117]
    • Kernel#caller, các phương thức của Thread::Backtrace::Location, v.v. cũng được thay đổi tương ứng.
    Old:
    test.rb:1:in `foo': undefined method `time' for an instance of Integer
            from test.rb:2:in `<main>'
    
    New:
    test.rb:1:in 'Object#foo': undefined method 'time' for an instance of Integer
            from test.rb:2:in '<main>'
    
  • Hiển thị Hash#inspect đã được thay đổi. [Bug #20433]
    • Các khóa Symbol được hiển thị bằng cú pháp khóa symbol hiện đại: "{user: 1}"
    • Các khóa khác giờ đây có khoảng trắng xung quanh =>: '{"user" => 1}', trong khi trước đó không có: '{"user"=>1}'

Cập nhật C API

  • rb_newobjrb_newobj_of (và các macro tương ứng RB_NEWOBJ, RB_NEWOBJ_OF, NEWOBJ, NEWOBJ_OF) đã được loại bỏ. [Feature #20265]
  • Loại bỏ hàm deprecated rb_gc_force_recycle. [Feature #18290]

Cải thiện triển khai

  • Array#each được viết lại bằng Ruby để có hiệu suất tốt hơn [Feature #20182].

Thay đổi khác

  • Truyền block cho một phương thức không sử dụng block đã truyền sẽ hiển thị cảnh báo ở chế độ verbose (-w). [Feature #15554]

  • Định nghĩa lại một số phương thức lõi được tối ưu hóa đặc biệt bởi trình thông dịch và JIT như String.freeze hoặc Integer#+ giờ đây sẽ phát ra cảnh báo hiệu suất (-W:performance hoặc Warning[:performance] = true). [Feature #20429]

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 gem mặc định hoặc gem đi kèm.

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

Với những thay đổi đó, 4422 tập tin thay đổi, 163889 thêm vào(+), 243380 xóa đi(-) kể từ Ruby 3.3.0!

Tải về

  • https://cache.ruby-lang.org/pub/ruby/3.4/ruby-3.4.0-preview2.tar.gz

    SIZE: 22722332
    SHA1: c23265acf6c07b4c1df1e41eebf8b4cf2f25b97b
    SHA256: 443cd7ec54ade4786bc974ce9f5d49f172a60f8edc84b597b7fe2bd2a94b8371
    SHA512: 0946d256587597bdf13437a50f7a3298c151133edea161a1c4806a04dcbd8c2e8a7fd617f3eda16c5c05f6e6346317562cc30ba67698f1fdd92237c03bdbd23e
    
  • https://cache.ruby-lang.org/pub/ruby/3.4/ruby-3.4.0-preview2.tar.xz

    SIZE: 16878876
    SHA1: dbff404b969012702dc500cac72f4d6b3822068e
    SHA256: 626bf4fe952323c15ec9a8999f470ec136ef91c0fc34c484646aaaa9a0b62ca7
    SHA512: f23257896a35d3a581cbf5e8c94fe28e45725e39608a7669f47f31085338b1b4929a4db40d826d8fee628afb97b0c25b2f9e7bda4cd42e80c1208c46caf54265
    
  • https://cache.ruby-lang.org/pub/ruby/3.4/ruby-3.4.0-preview2.zip

    SIZE: 28101194
    SHA1: 479bd223bca3225fb3a15984e3eae4efb9a40189
    SHA256: e00a6fbf6f9e25a725711a8aac7e38be6bed61de4db9862a405172b96bf38b5b
    SHA512: 0d9ee1c41920e4d594b0f2c40d02339b4e9a2cd5232f5ee914cab5a685cb4a2279fbbfd8fbad40ef0a53866db4e1de96068c62580ede6d8fab02550393bcbe81
    

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