Phát hành Ruby 3.4.0 preview1

Đăng bởi naruse vào 16 May 2024

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

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 hoạt động như thể chúng bị đóng băng. Nếu chúng bị thay đổi, một cảnh báo deprecation sẽ được phát ra. 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>'
    

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 đó, 3283 tập tin thay đổi, 107449 thêm vào(+), 115380 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-preview1.tar.gz

    SIZE: 22507726
    SHA1: 1619cbe06b5a8c774711b3351d18bb0f84f1d017
    SHA256: 1a3c322e90cb22e5fba0b5d257bb2be9988affa3867eba7642ed981fdde895bb
    SHA512: 29c0e32179f7b823b6708f5328e495cd333fe8dd88f7df7d9051deab47add67b14d899bba565bba1a77e1b04c9693d9708541445c112925777bb6891cb7b2b62
    
  • https://cache.ruby-lang.org/pub/ruby/3.4/ruby-3.4.0-preview1.tar.xz

    SIZE: 16709536
    SHA1: 6041ad2651527d01c36106de3d3cdab680ed3132
    SHA256: 4ee4ec44366050d4b2ee1d88034cc63e0b9174a1a6650285777f3d3447213a97
    SHA512: 4ce306b9beb1e2d88c76d7f809724b66bed17e354c07a2b54aa050fc2035652e4d83deadc8dbf7a375bbdb1c816f2996334bb8e7ff5e6c24b71a858bf6b0cb7c
    
  • https://cache.ruby-lang.org/pub/ruby/3.4/ruby-3.4.0-preview1.zip

    SIZE: 27731060
    SHA1: 5d79834050369ea9241d86467bf93e9e89e2ab7a
    SHA256: bd2a6c0e8396698e6f6768c00b0f155510859bb6fb92420f7b7abec610e71dbb
    SHA512: 36ea6897e6ad769141516f4c1bb18989fbde27a76f0f3abcce947f8b6b79639846ba93907e085181f7d305ab06ad73f1bbb37928049c8c951d33176ee444abbf
    

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