Phát hành ngôn ngữ lập trình Rust 2021 (1.56)

Việc phát hành ngôn ngữ lập trình hệ thống Rust 1.56, được thành lập bởi dự án Mozilla, 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. Ngoài số phiên bản thông thường, bản phát hành còn được gắn nhãn là Rust 2021 và đánh dấu sự ổn định của những thay đổi được đề xuất trong ba năm qua. Rust 2021 cũng sẽ đóng vai trò là cơ sở cho các bản dựng tính năng trong ba năm tới, tương tự như cách bản phát hành Rust 2018 là cơ sở để phát triển ngôn ngữ trong ba năm qua.

Để duy trì khả năng tương thích, các nhà phát triển có thể sử dụng các thẻ "2015", "2018" và "2021" trong chương trình của họ để liên kết chương trình với các lát cắt trạng thái ngôn ngữ tương ứng với các phiên bản Rust đã chọn. Các bản sửa đổi đã được giới thiệu để phân tách các thay đổi không tương thích và được định cấu hình trong siêu dữ liệu của các gói hàng hóa thông qua trường "phiên bản" trong phần "[gói]". Ví dụ: phiên bản "2018" bao gồm chức năng ổn định vào cuối năm 2018 và cũng bao gồm tất cả các thay đổi tiếp theo không vi phạm tính tương thích. Phiên bản 2021 còn bao gồm các tính năng phá vỡ khả năng tương thích được đề xuất trong bản phát hành 1.56 hiện tại và được phê duyệt để triển khai trong tương lai. Ngoài bản thân ngôn ngữ, các biên tập viên cũng tính đến trạng thái của các công cụ và tài liệu.

Những điểm không tương thích chính đã được khắc phục trong Rust 2021 là:

  • Chụp tách biệt trong các lần đóng - Giờ đây, các lần đóng có thể chụp các tên trường riêng lẻ thay vì toàn bộ ID. Ví dụ: "|| ax + 1" sẽ chỉ chụp "ax" thay vì "a".
  • Đặc điểm IntoIterator cho mảng: array.into_iter() cho phép bạn lặp lại các phần tử của một mảng theo giá trị thay vì theo tham chiếu.
  • Việc xử lý các biểu thức "|" đã được thay đổi trong macro_rules (thao tác OR logic) trong các mẫu - Trình xác định ":pat" trong các kết quả khớp hiện tôn trọng các mẫu "A | b”.
  • Theo mặc định, trình quản lý gói hàng bao gồm phiên bản thứ hai của trình giải quyết tính năng, hỗ trợ cho phiên bản này đã được giới thiệu trong Rust 1.51.
  • Các đặc điểm TryFrom, TryInto và FromIterator đã được thêm vào mô-đun thư viện chuẩn mở đầu.
  • Các macro panic!(..) và assert!(expr, ..) giờ đây luôn sử dụng format_args!(..) để định dạng chuỗi, tương tự như println!().
  • Các biểu thức ident#, ident"…" và ident'…' được dành riêng trong cú pháp của ngôn ngữ.
  • Các cảnh báo bare_trait_objects và ellipsis_inclusive_range_patterns đã được chuyển sang danh mục lỗi.

Mới trong Rust 1.56:

  • Trong Cargo.toml, trong phần "[gói]", trường phiên bản gỉ sét đã được thêm vào, qua đó bạn có thể xác định phiên bản Rust tối thiểu được hỗ trợ cho gói thùng. Nếu phiên bản hiện tại không khớp với tham số đã chỉ định, Cargo sẽ hủy bỏ với một lỗi.
  • Khi khớp mẫu bằng biểu thức "mẫu @ liên kết", hỗ trợ được cung cấp để chỉ định các liên kết bổ sung (ví dụ: "let matrix @ Matrix { row_len, .. } = get_matrix();").
  • 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:
    • std::os::unix::fs::chroot
    • Ô không an toàn::raw_get
    • BufWriter::into_parts
    • core::panic::{UnwindSafe, RefUnwindSafe, AssertUnwindSafe}
    • Vec::shrink_to
    • Chuỗi::shrink_to
    • OsString::shrink_to
    • PathBuf::shrink_to
    • Heap nhị phân::shrink_to
    • VecDeque::shrink_to
    • HashMap::shrink_to
    • HashSet::shrink_to
  • 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 các hàm
    • std::mem::transmute
    • [T]::đầu tiên
    • [T]::split_first
    • [T]::cuối cùng
    • [T]::split_last
  • Trình biên dịch đã được chuyển sang sử dụng LLVM phiên bản 13.
  • Đã triển khai hỗ trợ cấp 64 cho nền tảng aarch32-apple-ios-sim và hỗ trợ cấp XNUMX cho các nền tảng powerpc-unknown-freebsd và riscvXNUMXimc-esp-espidf. Cấp độ thứ ba ngụ ý hỗ trợ cơ bản, nhưng không có kiểm tra tự động, xuất bản các bản dựng chính thức và kiểm tra khả năng xây dựng mã.

Hãy nhớ lại rằng ngôn ngữ Rust tập trung vào quản lý bộ nhớ an toàn, 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 trong thực thi công việc, trong khi thực hiện mà không cần sử dụng trình thu gom rác và 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 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.

Nguồn: opennet.ru

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