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

Ngôn ngữ lập trình đa năng Rust 1.68, đượ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 và kho lưu trữ Crates.io đã hỗ trợ ổn định cho giao thức Sparse, xác định cách làm việc mới với chỉ mục phản ánh các phiên bản có sẵn của tất cả các gói hiện có trong kho lưu trữ. Giao thức mới cho phép bạn tăng đáng kể tốc độ làm việc với Crates.io và giải quyết các vấn đề về mở rộng quy mô bằng cách tăng thêm số lượng gói trong kho lưu trữ.

    Để giảm sự chậm trễ do tải xuống chỉ mục đầy đủ, Sparse thay vì truy cập chỉ mục bằng Git chỉ tải xuống trực tiếp qua HTTPS dữ liệu chỉ mục cần thiết, bao gồm các phần phụ thuộc của một dự án cụ thể. Một dịch vụ mới, index.crates.io, được sử dụng để cung cấp dữ liệu chỉ mục. Theo mặc định, giao thức mới được lên kế hoạch sử dụng trong nhánh Rust 1.70 và trước đó, để kích hoạt nó, bạn có thể đặt biến môi trường "CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse" hoặc thêm tham số 'protocol =' vào tệp "[registries. thùng-io]" của tệp .cargo/config.toml 'thưa thớt'.

  • Đã thêm macro “pin!”, cho phép bạn tạo cấu trúc Ghim<&mut T> từ biểu thức “T” bằng cách ghim cục bộ trạng thái của nó (không giống như Box::pin, nó không phân bổ bộ nhớ trên heap mà liên kết ở cấp độ ngăn xếp).
  • Trình xử lý lỗi cấp phát bộ nhớ mặc định đã được đề xuất, được sử dụng khi sử dụng gói cấp phát tiêu chuẩn. Các ứng dụng chỉ kích hoạt cấp phát (không có tiêu chuẩn) giờ đây sẽ gọi trình xử lý “panic!” khi cấp phát bộ nhớ không thành công, tùy chọn này có thể bị chặn bằng cách sử dụng “#[panic_handler]”. Các chương trình sử dụng thư viện std sẽ tiếp tục in thông tin lỗi ra stderr và bị lỗi.
  • 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:
    • {core,std}::pin::pin!
    • ngụ ý từ cho {f32,f64}
    • std::path::MAIN_SEPARATOR_STR
    • impl DerefMut cho PathBuf
  • 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 hàm VecDeque::new.
  • Để hoạt động trên nền tảng Android, hiện cần có ít nhất NDK r25 (API 19), tức là. Phiên bản Android được hỗ trợ tối thiểu đã được nâng lên 4.4 (KitKat).
  • Cấp độ hỗ trợ thứ ba đã được triển khai cho nền tảng Sony PlayStation Vita (armv7-sony-vita-newlibeabihf). 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