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

Ngôn ngữ lập trình đa năng Rust 1.65, đượ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:

  • Đã thêm hỗ trợ cho các loại liên kết chung (GAT, Các loại liên kết chung), giúp tạo các bí danh loại được liên kết với một loại khác và cho phép bạn liên kết các hàm tạo kiểu với các đặc điểm. đặc điểm Foo { type Bar<'x>; }
  • Biểu thức “let ... else” đã được triển khai, cho phép bạn kiểm tra điều kiện khớp mẫu trực tiếp bên trong biểu thức “let” và thực thi mã tùy ý nếu mẫu không khớp. let Ok(count) = u64::from_str(count_str) else { hoảng loạn!("Không thể phân tích số nguyên: '{count_str}'"); };
  • Cho phép sử dụng câu lệnh break để thoát sớm các khối được đặt tên, sử dụng tên khối (nhãn) để xác định khối sẽ bị chấm dứt. hãy để result = 'chặn: { do_thing(); if condition_not_met() { break 'khối 1; } do_next_thing(); if condition_not_met() { break 'khối 2; } do_last_thing(); 3 };
  • Đối với Linux, khả năng lưu thông tin gỡ lỗi riêng biệt (split-debuginfo), trước đây chỉ có sẵn cho nền tảng macOS, đã được thêm vào. Khi chỉ định tùy chọn "-Csplit-debuginfo=unpacked", dữ liệu debuginfo ở định dạng DWARF sẽ được lưu vào một số tệp đối tượng riêng biệt có phần mở rộng ".dwo". Việc chỉ định "-Csplit-debuginfo=packed" sẽ tạo một gói duy nhất ở định dạng ".dwp" bao gồm tất cả dữ liệu debuginfo cho dự án. Để tích hợp debuginfo trực tiếp vào phần .debug_* của đối tượng ELF, bạn có thể sử dụng tùy chọn "-Csplit-debuginfo=off".
  • 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::backtrace::Backtrace
    • Giới hạn::as_ref
    • std::io::read_to_string
    • <*const T>::cast_mut
    • <*mut T>::cast_const
  • 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 <*const T&>::offset_from và <*mut T>::offset_from
  • Là một phần của giai đoạn cuối cùng trong quá trình chuyển việc triển khai giao thức LSP (Giao thức máy chủ ngôn ngữ) sang máy phân tích rỉ sét, việc triển khai Rust Language Server (RLS) lỗi thời đã được thay thế bằng một máy chủ sơ khai đưa ra cảnh báo kèm theo đề xuất chuyển sang sử dụng máy phân tích rỉ sét.
  • Trong quá trình biên dịch, hỗ trợ triển khai nội tuyến mã trung gian MIR được bật, giúp tăng tốc độ biên dịch các gói thùng thông thường lên 3-10%.
  • Để tăng tốc độ xây dựng theo lịch trình, trình quản lý gói Hàng hóa cung cấp khả năng sắp xếp các công việc đang chờ thực thi trong hàng đợi.

Ngoài ra, bạn có thể lưu ý cuộc phỏng vấn về việc sử dụng ngôn ngữ Rust tại Volvo để phát triển các thành phần của hệ thống thông tin ô tô. Không có kế hoạch viết lại mã hiện có và đã được thử nghiệm trong Rust, nhưng đối với mã mới, Rust là một trong những lựa chọn ưu tiên để cải thiện chất lượng với chi phí thấp hơn. Các nhóm làm việc liên quan đến việc sử dụng ngôn ngữ Rust cũng đã được thành lập trong hiệp hội ô tô AUTOSAR (Kiến trúc hệ thống mở ô tô) và SAE (Hiệp hội kỹ sư ô tô).

Ngoài ra, David Kleidermacher, phó chủ tịch kỹ thuật của Google, đã nói về việc dịch mã được sử dụng trong nền tảng Android để quản lý các khóa mã hóa sang Rust, cũng như việc sử dụng Rust trong việc triển khai giao thức DNS qua HTTPS trong ngăn xếp dành cho chip UWB (Ultra-Wideband) và trong khung ảo hóa (Khung ảo hóa Android) được liên kết với chip Tensor G2. Các ngăn xếp mới cho Bluetooth và Wi-Fi, được viết lại bằng Rust, cũng đang được phát triển cho Android. Chiến lược chung là tăng cường dần dần tính bảo mật, trước tiên bằng cách chuyển đổi các thành phần phần mềm quan trọng và dễ bị tổn thương nhất sang Rust, sau đó mở rộng sang các hệ thống con liên quan khác. Năm ngoái, ngôn ngữ Rust đã được đưa vào danh sách các ngôn ngữ được phép phát triển nền tảng Android.

Nguồn: opennet.ru

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