Rust 1.100.0 ra mắt: ổn định kiểu never, allocator tùy biến
Rust 1.100.0 chính thức phát hành ngày 12/11, đánh dấu cột mốc phiên bản thứ 100 của ngôn ngữ lập trình này. Bản cập nhật ổn định kiểu never, allocator tùy biến, bổ sung hệ thống lint cho Cargo và thay đổi cục bộ thư mục build.

Rust 1.100.0 đã chính thức được phát hành, đánh dấu phiên bản thứ 100 của ngôn ngữ lập trình do Mozilla khởi xướng và hiện do cộng đồng Rust Foundation duy trì. Bản phát hành gồm 5.325 commit kể từ phiên bản trước, tập trung vào việc ổn định các tính năng ngôn ngữ và mở rộng khả năng của hệ sinh thái công cụ.
Ngôn ngữ: kiểu never và ABI tùy biến
Điểm nhấn của bản này là việc ổn định kiểu never — ký hiệu ! trong Rust, đại diện cho kiểu không có giá trị nào, thường dùng cho các hàm không bao giờ trả về như panic! hay vòng lặp vô hạn. Đi kèm là extern "custom", cho phép khai báo ABI tùy biến.
Trình biên dịch cũng bổ sung lint cảnh báo khi thuộc tính #[repr(..)] bị lặp lại, đồng thời mở rộng các lint dropping_references, dropping_copy_types và undropped_manually_drops sang drop_in_place. Lỗi liên quan đến trường repr(align) trong kiểu repr(packed) nay được chuyển thành lint mặc định từ chối (aligned_fields_in_packed).
Hỗ trợ nền tảng và thư viện chuẩn
Về nền tảng, i686-pc-windows-gnu chuyển lên Tier 2 không kèm host tools, wasm32-wasip3 được thăng hạng lên Tier 2, và có thêm target Tier 3 mới powerpc64-sony-ps3.
Thư viện chuẩn ghi nhận nhiều thay đổi quan trọng:
- Ổn định allocator tùy biến với các kiểu
std::alloc::Allocator,Global,Systemcùng các hàm nhưBox::new_in,Vec::new_in,Vec::with_capacity_in. - Bổ sung hàng loạt API mới như
bool::toggle,Box::take,Box::map,Rc::map,Arc::map,Vec::from_fn,str::trim_prefix,str::trim_suffix,core::mem::DropGuard,UnsafeCell::replace. - Thư viện chuẩn nay dùng Unicode 18.0.0.
Cargo có hệ thống lint riêng
Cargo lần đầu tiên có hệ thống lint của riêng mình: một số cảnh báo giờ được phát ra dưới dạng lint mà người dùng có thể điều khiển trong bảng [lints.cargo], bao gồm kiểm tra dependency không dùng tới qua lint cargo::unused_dependencies.
Ngoài ra, Cargo hỗ trợ cấu hình tuổi publish tối thiểu (dependency cooldowns) theo RFC 3923: khi được bật, trình phân giải sẽ bỏ qua các phiên bản mới publish hơn ngưỡng cấu hình, trừ khi chúng đã có trong Cargo.lock. Lệnh cargo install nay mặc định dùng lockfile có sẵn trong tarball .crate, khiến cờ --locked trở thành no-op.
Một thay đổi đáng chú ý là Cargo dùng bố cục thư mục mới cho build artifact trung gian. Các công cụ đọc trực tiếp thư mục build có thể phải chuyển sang dùng thông điệp JSON của Cargo; bố cục này không phải giao diện ổn định.
Các thay đổi có thể gây lỗi
Bản phát hành liệt kê nhiều thay đổi tương thích cần lưu ý: closure nay bắt biến chính xác hơn trong if let, Infallible trở thành alias của !, never type fallback đổi thành ! trên mọi edition, box pattern không còn được phép về mặt cú pháp. Trên ARM, các giá trị -Ctarget-feature/-Ctarget-cpu làm thay đổi ABI giờ bị từ chối cứng.
Góc nhìn
Với các lập trình viên Rust tại Việt Nam, hai thay đổi đáng để ý nhất là allocator tùy biến và hệ thống lint của Cargo. Allocator tùy biến mở đường cho các dự án nhúng, hệ thống realtime hoặc dịch vụ cần quản lý bộ nhớ chuyên biệt mà trước đây phải dựa vào crate bên thứ ba hoặc nightly.
Trong khi đó, lint cargo::unused_dependencies giúp dọn dẹp dependency thừa — vấn đề khá phổ biến ở các dự án lớn lâu năm. Cần lưu ý rằng bố cục thư mục build mới của Cargo có thể làm hỏng script CI tự đọc thư mục target; nên chuyển sang dùng thông điệp JSON chính thức để tránh phải sửa lại khi Cargo tiếp tục thay đổi.
Nguồn: github.com · Quy trình biên tập
Bài viết liên quan

Công nghệ
Rust 1.96 chính thức ra mắt: Kiểu Range mới, Macro khớp mẫu và nâng cấp WebAssembly
29 tháng 5, 2026

Công nghệ
Mold 3.0.0 ra mắt: Trình liên kết tốc độ cao được viết lại hoàn toàn bằng Rust
05 tháng 10, 2026

Công nghệ
Microsoft chính thức đưa Rust trở thành ngôn ngữ 'Tier 1' trong nội bộ
11 tháng 9, 2026