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
Ngôn ngữ lập trình Rust đã phát hành phiên bản 1.96.0, mang đến các cải tiến quan trọng về hệ thống kiểu Range để hỗ trợ trait Copy, bổ sung macro khớp mẫu mới và thay đổi cách liên kết WebAssembly để tăng cường độ an toàn. Bản cập nhật cũng bao gồm các bản vá cho hai lỗ hổng bảo mật, dù người dùng crates.io không bị ảnh hưởng.

Đội ngũ phát triển Rust vừa thông báo sự ra mắt của phiên bản mới nhất, Rust 1.96.0. Đây là bản cập nhật quan trọng tiếp tục củng cố vị thế của Rust như một ngôn ngữ lập trình hiệu quả và đáng tin cậy để xây dựng phần mềm hiệu suất cao. Nếu bạn đã cài đặt Rust trước đó thông qua rustup, bạn có thể nâng cấp lên phiên bản này ngay lập tức bằng lệnh cập nhật tiêu chuẩn.
Các thay đổi chính trong phiên bản này tập trung vào việc cải thiện trải nghiệm lập trình, xử lý lỗi hiệu quả hơn và tăng cường tính bảo mật.
Các kiểu Range mới hỗ trợ trait Copy
Một trong những thay đổi đáng chú ý nhất trong Rust 1.96 là sự ổn định hóa các kiểu Range mới dựa trên RFC3550. Trước đây, nhiều người dùng mong đợi các kiểu như Range sẽ triển khai trait Copy, nhưng điều này không khả thi vì chúng trực tiếp triển khai Iterator. Việc triển khai cả hai trên cùng một kiểu dữ liệu có thể dẫn đến các lỗi lập trình khó phát hiện (footgun).
RFC3550 đề xuất các kiểu thay thế triển khai IntoIterator thay vì Iterator, cho phép chúng cũng có thể là Copy. Với bản phát hành này, phần thư viện chuẩn của đề xuất này đã trở nên ổn định.
Điều này cho phép các nhà phát triển lưu trữ các bộ truy cập slice (slice accessors) trong các kiểu Copy mà không cần phải tách riêng điểm bắt đầu và kết thúc. Ngoài ra, RangeInclusive mới cũng công khai các trường dữ liệu của mình, không giống như phiên bản cũ.
Hiện tại, cú pháp phạm vi như 0..1 vẫn tạo ra các kiểu legacy (cũ), nhưng sẽ được cập nhật sang các kiểu core::range trong các phiên bản tương lai. Các tác giả thư viện nên cân nhắc sử dụng impl RangeBounds trong API công khai để tương thích với cả hai kiểu cũ và mới.
Macro khớp mẫu mới
Rust 1.96 giới thiệu hai macro mới: assert_matches! và debug_assert_matches!. Những macro này được sử dụng để kiểm tra xem một giá trị có khớp với một mẫu (pattern) nhất định hay không, nếu không thì chương trình sẽ panic và hiển thị biểu diễn Debug của giá trị đó.
Về cơ bản, chúng hoạt động tương tự như assert!(matches!(..)) nhưng cung cấp thông tin giá trị được in ra chi tiết hơn, giúp việc chẩn đoán nguyên nhân thất bại trở nên dễ dàng hơn đáng kể.
Tuy nhiên, các macro này chưa được thêm vào Prelude chuẩn của Rust để tránh xung đột tên với các crate bên thứ ba phổ biến hiện có. Do đó, người dùng cần nhập thủ công chúng từ core hoặc std trước khi sử dụng.
Thay đổi liên kết WebAssembly
Đối với các mục tiêu WebAssembly (Wasm), Rust 1.96 không còn chuyển cờ --allow-undefined cho trình liên kết (linker) theo mặc định. Điều này có nghĩa là các biểu tượng không xác định (undefined symbols) khi liên kết giờ đây sẽ gây ra lỗi của linker thay vì được chuyển đổi ngầm thành các import WebAssembly từ mô-đun "env".
Thay đổi này giúp ngăn chặn các mô-đun liên kết trừ khi tất cả các biểu tượng liên quan được định nghĩa rõ ràng, giúp phát hiện lỗi sớm hơn và tránh các sự cố về định danh biểu tượng. Nếu hành vi cũ là cần thiết, người dùng có thể bật lại bằng cách đặt biến môi trường RUSTFLAGS=-Clink-arg=--allow-undefined.
Các bản vá bảo mật quan trọng
Rust 1.96 cũng giải quyết hai lỗ hổng bảo mật ảnh hưởng đến người dùng sử dụng các đăng ký (registries) crate bên thứ ba:
- CVE-2026-5223: Lỗ hổng mức độ nghiêm trọng trung bình liên quan đến việc giải nén các tệp tin crate tarball chứa các liên kết tượng trưng (symlinks).
- CVE-2026-5222: Lỗ hổng mức độ nghiêm trọng thấp liên quan đến xác thực với các URL đã được chuẩn hóa.
Tuy nhiên, người dùng của crates.io – kho chứa crate chính thức của Rust – không bị ảnh hưởng bởi hai lỗ hổng này.
Để biết thêm chi tiết về những thay đổi trong Rust, Cargo và Clippy, người đọc có thể xem đầy đủ các ghi chú phát hành (release notes). Rust 1.96.0 là kết quả của sự đóng góp công sức từ nhiều người trong cộng đồng, giúp ngôn ngữ này ngày càng hoàn thiện hơn.
Bài viết liên quan

Công nghệ
Kia EV9 gặp vấn đề nghiêm trọng về pin: Trải nghiệm của người dùng và cuộc chờ đợi kéo dài
28 tháng 5, 2026

Công nghệ
CEO Palantir: 10% thế giới "ghét chúng tôi một cách chuyên nghiệp"
05 tháng 5, 2026

Công nghệ
OpenAI tặng ưu đãi Codex đặc biệt cho 8.000 developer sau khi tiệc GPT-5.5 cháy vé
05 tháng 5, 2026
