Microsoft công bố dự án Rust/WinRT trên GitHub

Rust là một ngôn ngữ lập trình mới, sở hữu khá nhiều nét tương đồng với các ngôn ngữ lâu đời như C hoặc C++. Tuy nhiên ngôn ngữ lập trình “trẻ tuổi” này vẫn chứa đựng một số yếu tố cốt lõi tạo nên sự khác biệt, với sự an toàn và bảo mật là nền tảng trung tâm.

Về cơ bản, Rust được thiết kế cho các hệ thống hiệu suất cao, khả năng bảo mật mạnh mẽ, đồng thời sở hữu một quy trình quản lý gói hiện đại, có thể được cài đặt để sử dụng trên hầu hết mọi hệ điều hành, và thậm chí trên phần cứng nhúng (embedded hardware).

Microsoft vừa đưa ra tuyên bố sẽ hỗ trợ Rust trên Windows thông qua các phép chiếu Rust language cho Windows Runtime (Rust language projections for Windows Runtime), bằng cách sử dụng các ngôn ngữ và trình biên dịch tiêu chuẩn, cung cấp một phương pháp tự nhiên và dễ làm quen cho các nhà phát triển Rust khi tương tác với API Windows.

Rust/WinRT cho phép các nhà phát triển gọi bất kỳ API WinRT nào trong quá khứ, hiện tại và tương lai bằng cách sử dụng mã được tạo trực tiếp từ siêu dữ liệu mô tả API và ngay trong gói Rust, nơi nhà phát triển có thể gọi chúng tương tự như các mô-đun Rust khác.

Biểu tượng (Logo) của ngôn ngữ lập trình Rust.

Windows Runtime dựa trên các API Component Object Model (COM), và được thiết kế để có thể truy cập thông qua các phép chiếu ngôn ngữ như C++/WinRT và Rust/WinRT. Những phép chiếu ngôn ngữ này lấy siêu dữ liệu mô tả các API khác nhau và tạo ra những cơ chế ràng buộc tự nhiên cho ngôn ngữ lập trình đích.

Điều này cho phép các nhà phát triển dễ dàng xây dựng các ứng dụng những như thành phần tương thích cho Windows bằng ngôn ngữ lập trình mà họ mong muốn. Bên cạnh đó, cũng có thể sử dụng những API Windows này để xây dựng các ứng dụng desktop, lưu trữ ứng dụng hoặc một thành phần nào đó độc đáo hơn như dịch vụ NT hoặc trình điều khiển của thiết bị (device driver).

Dưới đây là một ví dụ nhỏ về việc Rust gọi API Windows.

use windows::data::xml::dom::*;

let doc = XmlDocument::new()?;
doc.load_xml("hello world")?;

let root = doc.document_element()?;
assert!(root.node_name()? == "html");
assert!(root.inner_text()? == "hello world");

Hay một ví dụ có ý nghĩa khác, bạn có thể xem trò chơi Minesweeper sau đây được triển khai bằng Rust/WinRT: https://github.com/robmikh/minesweeper-rs.

Bạn có thể tham tham khảo và đóng góp ý kiến cho Microsoft trên chuyên trang Rust/WinRT GitHub tại địa chỉ: https://github.com/microsoft/winrt-rs.

Dự án ngôn ngữ Rust/WinRT hiện đang ở chế độ xem công khai (public preview), tuy nhiên Microsoft đã quyết định mở nguồn dự án ngay bây giờ để nhận thêm phản hồi từ phía cộng đồng.