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

được phát hành phát hành 1.46 của ngôn ngữ lập trình hệ thống Rustđược thành lập bởi dự án Mozilla. Ngôn ngữ này 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 các phương tiện để đạt được tính song song công việc cao đồng thời tránh sử dụng trình thu gom rác và thời gian chạy.

Tính năng quản lý bộ nhớ tự động của Rust giúp nhà phát triển tránh khỏi lỗi khi thao tác với con trỏ và bảo vệ khỏi các vấn đề phát sinh do thao tác bộ nhớ ở mức độ thấp, chẳng hạn như truy cập vào vùng bộ nhớ sau khi nó được giải phóng, hủy bỏ con trỏ null, lỗi tràn bộ đệm, v.v. Để phân phối các thư viện, đảm bảo lắp ráp và quản lý các phần phụ thuộc, dự án phát triển một trình quản lý gói Cargo, cho phép bạn lấy các thư viện bạn cần cho chương trình chỉ bằng một cú nhấp chuột. Một kho lưu trữ được hỗ trợ cho các thư viện lưu trữ thùng.io.

Chính đổi mới:

  • Khả năng của các hàm được xác định bằng biểu thức “const fn” đã được mở rộng, có thể được gọi không chỉ như các hàm thông thường mà còn được sử dụng trong bất kỳ ngữ cảnh nào thay vì hằng số. Các hàm này được tính toán tại thời điểm biên dịch chứ không phải trong thời gian chạy, do đó chúng phải tuân theo một số hạn chế nhất định, chẳng hạn như khả năng chỉ đọc từ các hằng số.

    Bản phát hành mới loại bỏ lệnh cấm sử dụng các toán tử Boolean (“&&” và “||”) trong các hàm như vậy và cho phép sử dụng các cấu trúc “if”, “if let”, “match”,
    "while", "while let" và "loop", đồng thời cung cấp khả năng chuyển đổi thành các lát (lát, mảng động) bằng cách sử dụng biểu thức "&[T]". Việc sử dụng các tính năng này trong các hàm “const fn” cho phép bạn chuyển một số thao tác sử dụng nhiều tài nguyên sang giai đoạn biên dịch. Ví dụ: việc triển khai "const-sha1" giúp tính toán hàm băm SHA-1 tại thời điểm biên dịch, giúp tăng tốc các liên kết WinRT cho Rust lên gần 40 lần.

  • Để làm cho thông báo lỗi có nhiều thông tin hơn, tính năng hỗ trợ cho thuộc tính “#[track_caller]” đã được ổn định, rất hữu ích cho các chức năng như unwrap, có thể gây hoảng loạn nếu sử dụng loại không chính xác. Thuộc tính được chỉ định sẽ được trình xử lý hoảng loạn sử dụng để in vị trí của người gọi trong thông báo lỗi.
  • 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 std::mem::forget.
  • Một phần mới của API đã được chuyển sang danh mục ổn định, bao gồm Tùy chọn ổn định::zip và vec::Drain::as_slice.
  • Trong trình quản lý gói hàng thêm hỗ trợ cho các biến môi trường mới được đặt khi biên dịch gói: CARGO_BIN_NAME (tên của tệp thực thi kết quả), CARGO_CRATE_NAME (tên gói), CARGO_PKG_LICENSE (giấy phép được chỉ định trong tệp kê khai), CARGO_PKG_LICENSE_FILE (đường dẫn đến tệp giấy phép).

Nguồn: opennet.ru

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