Theo truyền thống của Ruby, nhóm nòng cốt đã phát hành Ruby 3.4 vào ngày 25 tháng 12 năm 2024! Nếu bạn yêu thích Ruby như chúng tôi, có lẽ bạn đang thắc mắc có gì mới trong Ruby 3.4. Không có bất kỳ thay đổi lớn nào trong bản phát hành này nhưng bạn sẽ muốn biết một số điều thực sự thú vị.

Trước tiên hãy tìm hiểu một số thay đổi về ngôn ngữ.
Thay đổi ngôn ngữ
Thay đổi ngôn ngữ là những thay đổi có liên quan ngay lập tức nhất đối với hầu hết các nhà phát triển Ruby. Chúng ta hãy xem nhanh từng người trong số họ!
Chuỗi ký tự cố định
Nếu bạn đã viết Ruby dù chỉ một thời gian ngắn, bạn có thể đã thấy một tệp bắt đầu bằng:
# frozen_string_literal: true
Ví dụ trên là một nhận xét kỳ diệu và nó thực sự có ý nghĩa đối với trình thông dịch Ruby! Chú thích này yêu cầu trình thông dịch xử lý từng chuỗi trong tệp này như thể nó có freeze kêu gọi nó. Nếu bạn cố gắng sửa đổi một Chuỗi trong một tệp có nhận xét kỳ diệu này, bạn sẽ gặp lỗi khi chạy.
Trong Ruby 3.4, chuỗi sẽ hoạt động như thể chúng bị đóng băng theo mặc định. Nỗ lực thay đổi chúng sẽ dẫn đến cảnh báo không dùng nữa thay vì lỗi. Phiên bản tương lai của Ruby sẽ thực thi các chuỗi ký tự cố định mặc định bằng cách đưa ra một ngoại lệ nếu bạn cố gắng thay đổi chúng. Giai đoạn chuyển tiếp này sẽ giúp các nhà phát triển Ruby có thời gian di chuyển ứng dụng của họ.
Tham số khối mặc định
Ruby 3.4 giới thiệu một tham số khối mặc định để làm cho các khối mã ngắn gọn gàng hơn.
Trước Ruby 2.7, in từng phần tử của mảng bằng each phương thức trông giống như:
[1, 2, 3].each { |item| puts item }
Ruby 2.7 đã giới thiệu các tham số được đánh số để loại bỏ nhu cầu đặt tên cho chúng. Sau Ruby 2.7, bạn có thể viết mã tương tự như:
[1, 2, 3].each { puts _1 }
Sự cải tiến của Ruby 2.7 đơn giản hơn nhưng không thực sự rõ ràng. Nếu bạn không quen với cú pháp Ruby này, bạn có thể gặp khó khăn để hiểu điều gì đang xảy ra ở đây. Ruby 3.4 đang giới thiệu một cách thậm chí còn tốt hơn để thực hiện điều tương tự:
[1, 2, 3].each { puts it }
Phân tán từ khóa nil
Trong các phiên bản Ruby trước 3.4, sử dụng toán tử splat kép (** ) với nil đã quyên góp được TypeError . Điều này có lý vì nil không thể được chuyển đổi hoàn toàn thành hàm băm.
Ruby 3.4 cung cấp một thay đổi đơn giản cho việc này - nó ngầm chuyển đổi nil thành một hàm băm. Đang gọi ** trên nil sẽ giống như gọi ** trên một trống hàm băm.
Cập nhật các lớp cốt lõi
Các bản cập nhật lớp cốt lõi không liên quan ngay đến các nhà phát triển Ruby khi ngôn ngữ thay đổi, nhưng chúng chắc chắn đáng để tìm hiểu!
Ngoại lệ#set_backtrace
Một yêu cầu tính năng trên trình theo dõi vấn đề của Ruby đã mô tả việc đặt dấu vết ngược bằng một chuỗi các chuỗi trước khi thay đổi này trong Ruby 3.4 là "mất dữ liệu". Ngoại lệ trước đó đã trả về con số 0 trên #backtrace_locations .
Trong Ruby 3.4, Exception#set_backtrace sẽ chấp nhận Thread::Backtrace::Location mảng để bạn có thể xây dựng lại một Backtrace phiên bản và có Ngoại lệ hoạt động đầy đủ.
Phạm vi#kích thước
Range#size cũng có hành vi mới trong Ruby 3.4. Nếu trong phạm vi size đang được gọi không thể lặp lại được, Ruby bây giờ sẽ gửi TypeError . Đây là một thay đổi nhỏ về hành vi mà bạn sẽ chỉ nhận thấy nếu bạn đang gọi size trên một tập hợp con nhỏ của phạm vi.
Những thay đổi mới khác trong Ruby 3.4
Một thay đổi nhỏ khác trong Ruby 3.4 là các phương thức được truyền tới một khối mà chúng không sử dụng. Khi chạy ở chế độ dài dòng, Ruby sẽ đưa ra cảnh báo nếu bạn chuyển một khối cho một phương thức không sử dụng khối đó.
Bạn cũng có thể vui mừng khi biết rằng Ruby 3.4 cải thiện hiệu suất của Array.each do việc thực hiện viết lại!
Cuối cùng, một bản cập nhật khác là cách hiển thị các thông báo lỗi và dấu vết quay lại. Bây giờ Ruby sẽ sử dụng dấu ngoặc đơn thay vì dấu backticks khi có liên quan và hiển thị tên lớp trước tên phương thức.
Nâng cấp lên Ruby 3.4
Nâng cấp lên Ruby 3.4 không phải là một bước tiến lớn đối với hầu hết mọi người. Phần tốn nhiều công sức nhất sẽ là loại bỏ tất cả những nhận xét ma thuật chuỗi bị đóng băng không cần thiết! Dành thời gian nâng cấp để tận dụng tất cả những tính năng mới trong Ruby 3.4 sẽ mang lại lợi ích, vì vậy đừng trì hoãn!
Và đừng quên—để nhận thêm tin tức về Ruby và thậm chí cả những hướng dẫn như thế này trong hộp thư đến của bạn, hãy đăng ký nhận bản tin Honeybadger!