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

Ngôn ngữ lập trình đa năng Rust 1.62, đượ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 phát hành. Ngôn ngữ tập trung vào sự an toàn của bộ nhớ và cung cấp phương tiện để đạt được tính song song công việc cao trong khi tránh 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 để khởi tạo và bảo trì cơ bản của thư viện chuẩn).

Các phương pháp xử lý bộ nhớ của Rust cứu nhà phát triển 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 xử lý 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.

An toàn bộ nhớ được cung cấp trong Rust tại thời điểm biên dịch thông qua kiểm tra tham chiếu, theo dõi quyền sở hữu đối tượng, theo dõi thời gian tồn tại của đối tượng (phạm vi) và đánh giá tính chính xác của quyền truy cập bộ nhớ trong quá trình thực thi mã. Rust cũng cung cấp khả năng bảo vệ chống tràn số nguyên, yêu cầu khởi tạo bắt buộc các giá trị biến trước khi sử dụng, xử lý lỗi tốt hơn trong thư viện chuẩn, áp dụng khái niệm tham chiếu và biến bất biến theo mặc định, cung cấp kiểu gõ tĩnh mạnh để giảm thiểu lỗi logic.

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

  • Trình quản lý gói “hàng hóa” cung cấp lệnh “thêm”, cho phép bạn thêm các phần phụ thuộc mới vào tệp kê khai Cargo.toml hoặc thay đổi các phần phụ thuộc hiện có từ dòng lệnh. Lệnh này cũng cho phép bạn chỉ định các tính năng và phiên bản riêng lẻ, ví dụ: Cargo add serde —features dẫn xuất Cargo add nom@5
  • Đã thêm khả năng sử dụng “#[dẫn xuất (Mặc định)]” với các enum trong đó tùy chọn mặc định được xác định bằng thuộc tính “#[default]”. #[dẫn xuất (Mặc định)] enum Có thể { #[mặc định] Không có gì, Có gì đó(T), }
  • Trên nền tảng Linux, cơ chế đồng bộ hóa Mutex được triển khai nhỏ gọn hơn và nhanh hơn, dựa trên việc sử dụng futexes do nhân Linux cung cấp. Không giống như cách triển khai được sử dụng trước đây dựa trên thư viện pthreads, phiên bản mới chỉ sử dụng 5 byte thay vì 40 để lưu trữ trạng thái Mutex. Tương tự, cơ chế khóa Condvar và RwLock đã được chuyển sang futex.
  • Mức hỗ trợ thứ hai cho nền tảng đích x86_64-không xác định đã được triển khai, được thiết kế để tạo các tệp thực thi có thể hoạt động mà không cần hệ điều hành. Ví dụ: nền tảng đích đã chỉ định có thể được sử dụng khi viết các thành phần kernel. Mức hỗ trợ thứ hai liên quan đến việc đảm bảo lắp ráp.
  • Mức hỗ trợ thứ ba đã được triển khai cho nền tảng aarch64-pc-windows-gnullvm và x86_64-pc-windows-gnullvm. 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.
  • 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:
    • bool::then_some
    • f32::total_cmp
    • f64::total_cmp
    • Stdin::dòng
    • windows::CommandExt::raw_arg
    • ngụ ý giá trị mặc định cho AssertUnwindSafe
    • Từ > cho Rc
    • Từ > cho Arc<[u8]>
    • FusedIterator cho EncodeWide

    Nguồn: opennet.ru

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