Phát hành ngôn ngữ lập trình Ruby 3.1

Ruby 3.1.0 đã được phát hành, một ngôn ngữ lập trình hướng đối tượng năng động, hiệu quả cao trong phát triển chương trình và kết hợp các tính năng tốt nhất của Perl, Java, Python, Smalltalk, Eiffel, Ada và Lisp. Mã dự án được phân phối theo giấy phép BSD ("BSDL 2 điều khoản") và "Ruby", đề cập đến phiên bản mới nhất của giấy phép GPL và hoàn toàn tương thích với GPLv3.

Cải tiến chính:

  • Một trình biên dịch JIT thử nghiệm trong quá trình mới, YJIT, đã được thêm vào, do các nhà phát triển nền tảng thương mại điện tử Shopify tạo ra như một phần của sáng kiến ​​nhằm cải thiện hiệu suất của các chương trình Ruby sử dụng khung Rails và gọi nhiều phương thức. Điểm khác biệt chính so với trình biên dịch MJIT JIT được sử dụng trước đây, dựa trên việc xử lý toàn bộ phương thức và sử dụng trình biên dịch bên ngoài bằng ngôn ngữ C, là YJIT sử dụng Phiên bản khối cơ bản lười biếng (LBBV) và chứa trình biên dịch JIT tích hợp. Với LBBV, trước tiên JIT chỉ biên dịch phần đầu của phương thức và biên dịch phần còn lại sau đó một thời gian, sau khi các loại biến và đối số được sử dụng được xác định trong quá trình thực thi. Khi sử dụng YJIT, hiệu suất tăng 22% đã được ghi nhận khi chạy thử nghiệm Railsbench và tăng 39% trong thử nghiệm kết xuất chất lỏng. YJIT hiện bị giới hạn hỗ trợ các hệ điều hành giống unix trên các hệ thống có kiến ​​trúc x86-64 và bị tắt theo mặc định (để kích hoạt, hãy chỉ định cờ “--yjit” trong dòng lệnh).
  • Cải thiện hiệu suất của trình biên dịch MJIT JIT cũ. Đối với các dự án sử dụng Rails, kích thước bộ nhớ đệm tối đa mặc định (--jit-max-cache) đã tăng từ 100 lên 10000 lệnh. Đã ngừng sử dụng JIT cho các phương thức có hơn 1000 hướng dẫn. Để hỗ trợ Zeitwerk of Rails, mã JIT không còn bị loại bỏ khi bật TracePoint cho các sự kiện của lớp.
  • Nó bao gồm trình gỡ lỗi debug.gem được viết lại hoàn toàn, hỗ trợ gỡ lỗi từ xa, không làm chậm ứng dụng đã gỡ lỗi, hỗ trợ tích hợp với các giao diện gỡ lỗi nâng cao (VSCode và Chrome), có thể được sử dụng để gỡ lỗi các ứng dụng đa luồng và đa quy trình, cung cấp giao diện thực thi mã REPL, cung cấp khả năng theo dõi nâng cao, có thể ghi và phát lại các đoạn mã. Trình gỡ lỗi lib/debug.rb được cung cấp trước đó đã bị xóa khỏi bản phân phối cơ sở.
    Phát hành ngôn ngữ lập trình Ruby 3.1
  • Đã triển khai đánh dấu trực quan các lỗi trong báo cáo theo dõi cuộc gọi lại. Việc gắn cờ lỗi được cung cấp bằng cách sử dụng gói đá quý được bật sẵn và mặc định error_highlight. Để tắt tính năng gắn cờ lỗi, bạn có thể sử dụng cài đặt “--disable-error_highlight”. $ ruby ​​​​test.rb test.rb:1:in " ": "thời gian" phương thức không xác định cho 1:Integer (NoMethodError) 1.time {} ^^^^ Ý bạn là gì? lần
  • Vỏ tính toán tương tác IRB (REPL, Read-Eval-Print-Loop) triển khai tự động hoàn thành mã đã nhập (khi bạn nhập, một gợi ý sẽ được hiển thị với các tùy chọn để tiếp tục nhập, giữa đó bạn có thể di chuyển bằng Tab hoặc Shift+ Phím Tab). Sau khi chọn tùy chọn tiếp tục, một hộp thoại hiển thị gần đó hiển thị tài liệu liên quan đến mục đã chọn. Có thể sử dụng phím tắt Alt+d để truy cập tài liệu đầy đủ.
    Phát hành ngôn ngữ lập trình Ruby 3.1
  • Cú pháp ngôn ngữ hiện cho phép bỏ qua các giá trị trong hàm băm và đối số từ khóa khi gọi hàm. Ví dụ: thay vì biểu thức “{x: x, y: y}”, giờ đây bạn có thể chỉ định “{x:, y:}”, và thay vì “foo(x: x, y: y)” - foo( x:, y: )".
  • Hỗ trợ ổn định cho các kết quả khớp mẫu một dòng (ary => [x, y, z]), không còn được gắn cờ là thử nghiệm.
  • Toán tử "^" trong các kết quả khớp mẫu giờ đây có thể chứa các biểu thức tùy ý, ví dụ: Prime.each_cons(2).lazy.find_all{_1 trong [n, ^(n + 2)]}.take(3).to_a #= > ? [[3, 5], [5, 7], [11, 13]]
  • Trong các kết quả khớp mẫu một dòng, bạn có thể bỏ qua dấu ngoặc đơn: [0, 1] => _, x {y: 2} => y: x #=> 1 y #=> 2
  • Ngôn ngữ chú thích loại RBS, cho phép bạn xác định cấu trúc của chương trình và các loại được sử dụng, đã thêm hỗ trợ để chỉ định giới hạn trên của các tham số loại bằng cách sử dụng ký hiệu “<”, thêm hỗ trợ cho bí danh của các loại chung, hỗ trợ được triển khai cho các bộ sưu tập để quản lý đá quý, cải thiện hiệu suất và triển khai nhiều chữ ký mới cho các thư viện tiêu chuẩn và tích hợp.
  • Hỗ trợ thử nghiệm cho môi trường phát triển tích hợp đã được thêm vào bộ phân tích kiểu tĩnh TypePro, tạo ra các chú thích RBS dựa trên phân tích mã mà không có thông tin loại rõ ràng (ví dụ: một tiện ích bổ sung đã được chuẩn bị để tích hợp TypePro với trình soạn thảo VSCode).
  • Thứ tự xử lý nhiều bài tập đã được thay đổi. Ví dụ: trước đây các thành phần của biểu thức “foo[0], bar[0] = baz, qux” được xử lý theo thứ tự baz, qux, foo, bar, nhưng bây giờ foo, bar, baz, qux.
  • Đã thêm hỗ trợ thử nghiệm cho việc phân bổ bộ nhớ cho chuỗi bằng cơ chế VWA (Phân bổ độ rộng có thể thay đổi).
  • Phiên bản cập nhật của mô-đun đá quý tích hợp và những mô-đun có trong thư viện chuẩn. Các gói net-ftp, net-imap, net-pop, net-smtp, ma trận, prime và debug đều được tích hợp sẵn.

Nguồn: opennet.ru

Thêm một lời nhận xét