Bản phát hành ngôn ngữ lập trình Rust 1.55

Việc phát hành ngôn ngữ lập trình hệ thống Rust 1.55, do dự án Mozilla sáng lập, nhưng hiện được phát triển dưới sự bảo trợ của tổ chức phi lợi nhuận độc lập Rust Foundation, đã được xuất bản. Ngôn ngữ tập trung vào an toàn bộ nhớ, cung cấp khả năng quản lý bộ nhớ tự động và cung cấp phương tiện để đạt được tính song song cao mà không cần sử dụng trình thu gom rác hoặc thời gian chạy (thời gian chạy được giảm xuống mức khởi tạo và bảo trì cơ bản của thư viện tiêu chuẩn).

Quản lý bộ nhớ tự động của Rust giúp nhà phát triển tránh khỏi các lỗi khi thao tác với con trỏ và bảo vệ chống lại các sự cố phát sinh do thao tác bộ nhớ ở mức độ thấp, chẳng hạn như truy cập vùng bộ nhớ sau khi nó được giải phóng, hủy bỏ tham chiếu con trỏ null, tràn bộ đệm, v.v. Để phân phối các thư viện, cung cấp các bản dựng và quản lý các phụ thuộc, dự án phát triển trình quản lý gói Hàng hóa. Kho lưu trữ crates.io được hỗ trợ để lưu trữ thư viện.

Những đổi mới chính:

  • Trình quản lý gói Hàng hóa có khả năng hợp nhất các lỗi và cảnh báo trùng lặp xảy ra trong quá trình xây dựng. Khi thực thi các lệnh như "kiểm tra hàng hóa" và "kiểm tra hàng hóa --all-target" dẫn đến nhiều bản dựng của một gói có các tham số khác nhau, giờ đây người dùng sẽ được hiển thị bản tóm tắt về việc xảy ra sự cố lặp lại, thay vì được hiển thị nhiều cảnh báo giống nhau khi xây dựng cùng một thứ nhiều lần. $ hàng hóa +1.55.0 kiểm tra —tất cả các mục tiêu Đang kiểm tra cảnh báo foo v0.1.0: chức năng không bao giờ được sử dụng: 'foo' —> src/lib.rs:9:4 | 9 | fn foo() {} | ^^^ | = note: '#[warn(dead_code)]' bật theo cảnh báo mặc định: 'foo' (lib) đã tạo 1 cảnh báo: 'foo' (lib test) đã tạo 1 cảnh báo (1 trùng lặp) Đã hoàn thành mục tiêu dev [không được tối ưu hóa + debuginfo] (giây) trong 0.84 giây
  • Mã phân tích dấu phẩy động trong thư viện chuẩn đã được chuyển sang sử dụng thuật toán Eisel-Lemire nhanh hơn và chính xác hơn, thuật toán này đã giải quyết được một số vấn đề đã quan sát trước đây về làm tròn và phân tích số có số lượng chữ số rất lớn.
  • Khả năng chỉ định các phạm vi không được đóng trong các mẫu đã được ổn định (“X..” được hiểu là một phạm vi bắt đầu bằng giá trị X và kết thúc bằng giá trị tối đa của loại số nguyên): match x as u32 { 0 => println! (“số không!”), 1.. => println!("số dương!"), }
  • Các biến thể lỗi mở rộng được bao gồm bởi std::io::ErrorKind (phân loại lỗi thành các danh mục như NotFound và WillBlock). Trước đây, các lỗi không phù hợp với các danh mục hiện có sẽ được xếp vào danh mục ErrorKind::Other, danh mục này cũng được sử dụng cho các lỗi trong mã của bên thứ ba. Hiện tại có một danh mục nội bộ riêng biệt ErrorKind::Uncategorized dành cho các lỗi không phù hợp với các danh mục hiện có và danh mục ErrorKind::Other được giới hạn ở các lỗi không xảy ra trong thư viện chuẩn (các hàm thư viện chuẩn trả về io::Error không còn sử dụng ErrorKind:: danh mục Khác).
  • Một phần mới của API đã được chuyển sang danh mục ổn định, bao gồm các phương pháp và cách triển khai các đặc điểm đã được ổn định:
    • Bị ràng buộc::nhân bản
    • Xả::as_str
    • IntoInnerError::into_error
    • IntoInnerError::into_parts
    • Có lẽUninit::assume_init_mut
    • Có lẽUninit::assume_init_ref
    • Có lẽUninit::write
    • mảng::bản đồ
    • hoạt động::ControlFlow
    • x86::_bittest
    • x86::_bittestandcomplement
    • x86::_bittestandreset
    • x86::_bittestandset
    • x86_64::_bittest64
    • x86_64::_bittestandcomplement64
    • x86_64::_bittestandreset64
    • x86_64::_bittestandset64
  • Thuộc tính “const”, xác định khả năng sử dụng nó trong bất kỳ ngữ cảnh nào thay vì hằng số, được sử dụng trong phương thức str::from_utf8_unchecked.
  • Cấp độ hỗ trợ thứ ba đã được triển khai cho nền tảng powerpc64le-unknown-freebsd. Cấp độ thứ ba bao gồm hỗ trợ cơ bản nhưng không có thử nghiệm tự động, xuất bản các bản dựng chính thức hoặc kiểm tra xem mã có thể được xây dựng hay không.

Nguồn: opennet.ru

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