Microsoft viết lại nhân Windows bằng hơn 36.000 dòng code Rust, sự phát triển của một ngôn ngữ lập trình mới.

VNZ-NEWS
Vn-Z.vn Ngày 30 tháng 05 năm 2023, Một dự án nhằm thay thế C++ bằng Rust với hơn 3,6 vạn dòng mã nguồn đã được thực hiện để viết lại nhân hệ điều hành Windows. Điều đáng ngạc nhiên là Rust, ngôn ngữ lập trình mới ra đời, ban đầu được sử dụng để sửa chữa thang máy.

Rust, ngôn ngữ lập trình tương đối mới, đã được sử dụng để viết lại hạt nhân của hệ điều hành Windows thay thế cho ngôn ngữ lập trình C++ truyền thống. Sự việc đã nhận được nhiều chú ý của các công ty lớn như Linux, Google, Amazon Web Services và nhiều công ty khác.
Có thể thấy tốc độ phát triển của Rust rất nhanh. Trước đó vào tháng 4 đã có tin đồn về việc sử dụng Rust trong Windows 11, chỉ trong vòng hai tuần, phiên bản xem trước nội bộ của hệ điều hành Windows 11 đã sử dụng Rust.

CTO của Microsoft Azure có một bài đăng trên Twitter với trạng thái phấn khích: "Tôi đã sử dụng Rust để viết code trong dự án của mình, và tôi rất vui mừng khi thấy Microsoft cũng đang áp dụng Rust vào trong các dự án của họ."


Ban-sao-Rust-code-Windows-kernel.jpg


Dự án viết lại nhân cho hệ điều hành Windows bằng Rust bao gồm hai dự án chính, đó là DWriteCore và Win32 GDI, các dự án này đều đã được kiểm tra thành công trên tất cả các bài kiểm tra khởi động của Windows.
Được biết, nhân Win32 GDI được viết từ cuối thập niên 80 và đầu thập niên 90 của thế kỷ trước, Win32 GDI có mã nguồn cổ đại với hơn 30 năm tuổi.

Win32 GDI (Graphic Device Interface) là một bộ API (Application Programming Interface) được sử dụng để truy cập các tính năng đồ họa của hệ điều hành Windows. Nó được sử dụng để vẽ các hình ảnh, văn bản và các thành phần giao diện người dùng khác trên các ứng dụng Windows. Win32 GDI được giới thiệu vào năm 1985 và đã trở thành một phần quan trọng của hệ điều hành Windows. Tuy nhiên, mã nguồn của Win32 GDI đã được sử dụng trong suốt hơn 30 năm và đã trở nên cũ kỹ và khó bảo trì. Việc sử dụng Rust để viết lại mã nguồn Win32 GDI có thể giúp cải thiện hiệu suất và độ tin cậy của nó trên các phiên bản Windows mới hơn.

Lý do mà Microsoft sử dụng Rust thay thế cho C++ là bởi Rust có những tính năng giúp ngăn chặn các lỗi bảo mật phổ biến trong C++, bao gồm cả lỗi xảy ra do quản lý bộ nhớ không đúng và lỗi tràn bộ đệm. Rust cũng có hệ thống kiểm tra lỗi biên dịch tĩnh mạnh mẽ, giúp phát hiện các lỗi trước khi chương trình được biên dịch và chạy, giúp tăng tính ổn định và độ tin cậy của mã nguồn.

Rust là một ngôn ngữ lập trình có tính an toàn về bộ nhớ rất cao, giúp ngăn chặn các lỗi bảo mật phổ biến trong C++. Việc sử dụng Rust để viết lại mã nguồn của Windows Kernel đã giúp loại bỏ nhiều subroutines không an toàn có trong mã nguồn gốc, giúp tăng cường tính bảo mật của hệ thống.

Bên cạnh đó, Rust cũng có cú pháp đơn giản và hiệu quả hơn so với C++, giúp giảm độ phức tạp của mã nguồn và tăng tốc độ thực thi của chương trình.
Trong tương lai, việc sử dụng Rust để viết lại Windows Kernel sẽ được mở rộng rất nhiều. Không chỉ được các công ty lớn ưa chuộng, Rust còn liên tục được bầu chọn là "ngôn ngữ lập trình được yêu thích nhất" trong các cuộc khảo sát developer của Stack Overflow trong nhiều năm liên tiếp.

Gần đây, các công cụ cơ bản của hệ thống Unix như sudo và su cũng sẽ được viết lại bằng Rust.

Tuy nhiên, điều gây bất ngờ là ban đầu Rust được phát minh ra để sửa chữa thang máy.

Vào năm 2006, Graydon Hoare - "cha đẻ" của Rust - rất bực tức vì thang máy trong căn hộ của anh ta bị hỏng , điều này đã khiến anh ta quyết định phát triển một ngôn ngữ mới nhằm giải quyết vấn đề.

Thời điểm đó,với tư cách là một kỹ sư lập trình cho một công ty lớn, Graydon Hoare đã nhận ra rằng sự cố thang máy có thể được giải quyết. Khi đó ông mới 29 tuổi và đang làm việc tại Mozilla, công ty phát triển trình duyệt web mã nguồn mở Firefox.

Là một chuyên gia trong lĩnh vực này, ông hiểu rõ rằng hầu hết các sự cố thang máy đều xuất phát từ các lỗi bộ nhớ xuất hiện một cách vô tình trong quá trình lập trình, dẫn đến sự cố phần mềm.
Vào thời điểm đó, các phần mềm điều khiển thang máy thường được viết bằng ngôn ngữ lập trình C hoặc C++. Những ngôn ngữ này có ưu điểm là gọn nhẹ và nhanh chóng, nhưng có vấn đề là rất dễ dẫn đến lỗi bộ nhớ, kéo theo sự cố hệ thống và cả vấn đề bảo mật.
Do đó, Graydon Hoare quyết định tạo ra một ngôn ngữ lập trình mới, với mục tiêu ban đầu là một ngôn ngữ ít gặp lỗi bộ nhớ, có thể được viết ngắn gọn và hiệu quả hơn. Kết quả cuối cùng là ông cho ra đời Rust, ngôn ngữ lập trình mạnh mẽ , an toàn về bộ nhớ, được sử dụng trong nhiều ứng dụng lớn , quan trọng, bao gồm cả nhân của hệ điều hành Windows.

Nguồn gốc tên Rust.

Rust có cùng tên với một loại nấm, được gọi là bệnh rỉ sắt trong tiếng Anh. Graydon Hoare đã chọn tên này vì ông cho rằng nấm Rust có một cấu trúc sinh học phân tán hoàn toàn, không có điểm đơn lẻ, vì vậy nếu một phần bị mất đi thì nó vẫn có thể sống sót. Nấm Rust cũng có khả năng chuyển đổi giữa nhiều hình thái khác nhau trong suốt vòng đời của nó, điều này tương tự như khả năng của Rust có thể chuyển đổi giữa các kiểu dữ liệu khác nhau.

Ngoài ra, nấm Rust cũng có khả năng ký sinh trên nhiều chủ bệnh khác nhau, điều này phù hợp ngôn ngữ lập trình Rust trong khả năng tương tác giữa các ngôn ngữ khác nhau và khả năng kết nối với các hệ thống khác. Chính vì những đặc điểm này, Graydon Hoare đã quyết định đặt tên cho ngôn ngữ của mình là Rust, ngôn ngữ này đã trở thành một trong những ngôn ngữ lập trình phổ biến nhất trong cộng đồng phát triển phần mềm hiện nay.

Sau vài năm phát triển độc lập, Rust đã nhận được sự hỗ trợ từ Viện Nghiên cứu của Mozilla vào năm 2009 và được phát hành ra bên ngoài cộng đồng vào năm 2010.

Trong quá trình phát triển, Rust đã có một cộng đồng rất năng động, cho phép bất kỳ nhà phát triển nào đều có thể góp ý và đóng góp cho dự án này.
Rust thu hút rất nhiều người hâm mộ chỉ trong vài năm. Từ năm 2016 trở đi, Rust đã liên tục được bình chọn là "ngôn ngữ lập trình được yêu thích nhất" trong các cuộc khảo sát phát triển viên của Stack Overflow tới 7 năm liên tiếp.
Rust được đánh giá cao vì tốc độ chạy nhanh, sử dụng bộ nhớ hiệu quả, khả năng ngăn ngừa các lỗi bộ nhớ. Rust được coi là một công cụ rất hữu ích trong việc thay thế C / C++ trong một số trường hợp. Vì vậy, trong cộng đồng phát triển phần mềm, Rust được ví như một môn thể thao đầy mạo hiểm, có thể thực hiện các động tác nguy hiểm, nhưng không dễ bị tổn thương. So với C++ có thể được xem như một chiếc cưa điện đang chạy với lửa.

Nhờ việc phát triển Rust, Graydon Hoare cũng đã trở nên nổi tiếng và sau đó ông đã tham gia vào việc phát triển ngôn ngữ Swift.

Graydon Hoare cũng có một câu chuyện thú vị liên quan đến việc ông trở thành một thành viên nhóm phát triển Swift của Apple.

Sau khi phát triển Rust trong một thời gian, Graydon Hoare đã quyết định rời Mozilla vào năm 2010 để tìm kiếm một công việc mới. Ông đã làm việc tại một số công ty khác nhau, nhưng cuối cùng ông đã trở lại với công việc lập trình viên độc lập.
Tuy nhiên, vào năm 2015, Apple đã liên hệ với Graydon Hoare và mời ông tham gia vào nhóm phát triển Swift của họ. Ban đầu, ông không muốn nhận lời vì ông thích làm lập trình viên độc lập hơn là làm nhà lãnh đạo của một nhóm phát triển.
Nhưng sau đó, Graydon Hoare đã quyết định tham gia vào dự án Swift vì ông thấy thấy rằng đó là một cơ hội để học hỏi và trải nghiệm các công nghệ mới. Bên cạnh đó, ông cũng muốn đóng góp cho một dự án lớn hơn và tham gia vào một cộng đồng lớn hơn.
Graydon Hoare đã làm việc tại Apple trong hai năm, trong thời gian đó ông đã tham gia vào việc phát triển ngôn ngữ Swift và đóng góp cho các dự án khác của Apple.
Sau đó, ông quyết định rời khỏi Apple và trở lại làm việc độc lập.

Câu chuyện này cho thấy rằng, đôi khi một nhà phát triển có thể muốn trở thành một lập trình viên độc lập và thích làm việc một mình hơn là làm một nhà lãnh đạo của một nhóm phát triển lớn. Tuy nhiên, đôi khi việc tham gia vào các dự án lớn và các cộng đồng lớn cũng là một cơ hội để học hỏi và trải nghiệm các công nghệ mới, cũng như đóng góp cho sự phát triển của ngành công nghiệp phần mềm.

raydon Hoare đã trải qua một thời gian khó khăn trong cuộc sống cá nhân của mình, khi anh đang phải vật lộn với một cuộc ly dị vào năm 2013. Điều này đã khiến anh không còn đủ năng lượng để tiếp tục làm việc với Rust và sau đó anh cũng rời khỏi Mozilla để tìm kiếm một công việc mới.

Tuy nhiên, Rust vẫn tiếp tục phát triển và trở thành một trong những ngôn ngữ lập trình được yêu thích nhất trong cộng đồng phát triển phần mềm. Nhờ vào khả năng bảo mật cao của nó, Rust đã được các công ty lớn như Amazon Web Services, Microsoft và Google sử dụng để phát triển các ứng dụng và dịch vụ của họ. Nó cũng đã được sử dụng để phát triển các hệ thống như Firefox, Dropbox và Cloudflare.

Rust được các công ty lớn như Microsoft sử dụng để giải quyết vấn đề về bảo mật trong phát triển phần mềm. Microsoft xác định sử dụng Rust là một cách tốt để loại bỏ các lỗ hổng bảo mật trong mã nguồn trước khi sản phẩm được phát hành.

Năm 2019, Microsoft thừa nhận rằng 70% các lỗ hổng bảo mật được báo cáo bởi CVE trong các sản phẩm của họ là do các lỗ hổng bảo mật trong mã nguồn C/C++. Với Rust, các công cụ phát hiện lỗ hổng có thể giúp giảm thiểu nguy cơ mà mã nguồn bị tấn công bởi hacker.

Ngoài ra, Rust cũng đã được sử dụng trong Linux kernel. Năm ngoái, tại hội nghị Open Source Summit 2022, được tổ chức bởi Linux Foundation, Linus Torvalds đưa ra thông báo rằng Rust có thể sẽ được sử dụng trong phiên bản tiếp theo của Linux kernel. Điều này có nghĩa là Rust sẽ được tích hợp vào nhánh chính của Linux kernel.

Rust đã được tích hợp vào Linux kernel và trở thành ngôn ngữ lập trình đứng thứ hai, sau C, được sử dụng trong kernel.

Đối với Android của Google, họ đã bắt đầu sử dụng Rust để phát triển các phần mềm và dịch vụ của mình. Tuy nhiên, Google không sử dụng Rust để thay thế hoàn toàn C/C++, mà thay vào đó họ sử dụng Rust để viết các phần mềm mới.

Từ dữ liệu trong cuộc các cuộc khảo sát , ta có thể thấy rằng C/C++ vẫn chiếm ưu thế trong số các ngôn ngữ lập trình được sử dụng trong các ứng dụng và dịch vụ. Tuy nhiên, Rust đang từng bước sử dụng nhiều hơn và được coi là một công cụ hữu ích trong việc phát triển phần mềm an toàn và bảo mật.

New-native-code.png

Google cho biết đến cuối năm ngoái, những phần mềm được viết bằng Rust trong Android vẫn chưa có bất kỳ lỗ hổng bảo mật nào được phát hiện. Điều này cho thấy Rust thực sự có khả năng giải quyết vấn đề về lỗ hổng bảo mật trong các ứng dụng và dịch vụ.


Memory-Safety.png

Trong các lỗ hổng bảo mật được báo cáo, lỗ hổng bảo mật liên quan đến bộ nhớ chiếm một tỷ lệ lớn. Rust có khả năng giúp giảm thiểu nguy cơ mà các lỗ hổng bảo mật này xảy ra bằng cách cung cấp tính năng an toàn về bộ nhớ.

Rust có thể giúp giảm thiểu số lượng lỗ hổng bảo mật trong phần mềm và dịch vụ bằng cách cung cấp tính năng an toàn về bộ nhớ. Nếu ta so sánh với tỷ lệ 1 lỗ hổng/1.000 dòng code trong các thành phần được viết bằng C/C++, Rust có thể đã giúp ngăn chặn hàng trăm lỗ hổng bảo mật.

Rust cũng có thể cải thiện hiệu suất của các hệ thống như Android và được sử dụng để tối ưu hóa tiêu thụ năng lượng. Một nghiên cứu gần đây đã chỉ ra rằng Rust hiệu quả hơn nhiều so với các ngôn ngữ lập trình khác như Java và Python trong việc sử dụng năng lượng.
Trong nhiều thành phần được viết bằng C/C++ (như Bluetooth, NFC, v.v.), cứ 1 nghìn dòng code sẽ có 1 lỗ hổng. Với tốc độ đó, Rust có lẽ đã ngăn chặn được hàng trăm lỗi. V

Việc sử dụng Rust trong Android có thể cân bằng hơn nữa độ trễ và bảo mật của hệ thống.Nói chung, một số biện pháp bảo mật sẽ khiến ngôn ngữ lập trình bị chậm lại.
Ví dụ: sử dụng ngăn xếp UWB mới, bạn có thể tiết kiệm vài megabyte bộ nhớ và chạy qua các quy trình hiện có để tránh một số chậm trễ IPC. Amazon Cloud cũng thích Rust vì ngôn ngữ này cũng rất tốt về mặt tiết kiệm năng lượng.

sust-rust-3rank.png

Một nghiên cứu của Amazon thử nghiệm 27 ngôn ngữ lập trình và phát hiện ra rằng C và Rust tiết kiệm năng lượng hơn 50% so với Java và 98% so với Python về mặt sử dụng năng lượng. Nhưng vấn đề của C đã được nói nhiều lần, và có nhiều lỗ hổng an toàn bộ nhớ, nên nhìn một cách toàn diện, Rust lại chiến thắng.

Thực tế, các công ty lớn không chỉ đơn thuần quan tâm đến Rust mà còn yêu thích nó.
Năm 2020, công ty đứng sau Rust là Mozilla thông báo giảm nhân sự quy mô lớn, đội ngũ Rust bị giảm bớt và tương lai của Rust rơi vào tình trạng bất ổn lớn.
Để tránh tình trạng này, các công ty lớn như Amazon, Microsoft, Google, và Huawei đã cùng nhau thành lập một tổ chức phi lợi nhuận Rust. Họ cam kết đầu tư khoảng 1 triệu USD trong vòng hai năm tới để hỗ trợ việc bảo trì dự án Rust.
Trong ngành công nghiệp, Rust đã đạt được nhiều thành công đáng kể. Gần đây, hai tiện ích kernel tương tự Unix là sudo và su đang được viết lại bằng Rust; trước đó, GitHub đã sửa đổi công cụ tìm kiếm của chính mình dựa trên Rust; Discord cũng đã viết lại một dịch vụ Go bằng Rust...
(Ngoài ra, Rust cũng được yêu thích trong lĩnh vực tiền điện tử.)
Tuy nhiên, Rust cũng có nhược điểm, ví dụ như học nó khó hơn, tốc độ phát triển ban đầu chậm hơn nhiều so với Go hay Java.
Dù Rust vẫn được đánh giá rất cao, nhưng "tỉ lệ thành công" của ngôn ngữ vẫn khá bình thường, thậm chí đôi khi bị đánh dấu là "ngôn ngữ lập trình ít được biết đến".
Đặc biệt, việc tuyển dụng Rust trên thế giới cũng như Việt Nam rất ít.

Để giải quyết các vấn đề về khó khăn trong việc học và phát triển Rust, Rust đang tiếp tục cải tiến và phát triển. Theo lộ trình Rust 2024, đội ngũ phát triển chính thức sẽ tiếp tục nỗ lực để giảm thiểu rào cản học tập, tăng cường kết nối sinh thái và các cải tiến khác.
Vì vậy, chúng ta có thể hy vọng rằng Rust sẽ tiếp tục phát triển và trở thành công cụ phát triển phần mềm và dịch vụ an toàn, hiệu quả và được sử dụng rộng rãi hơn trong tương lai.
 
Trả lời

Swings Onlyone

Rìu Vàng Đôi
tuyệt vời.
mặc dù ngôn ngữ lập trình nào cũng có lỗ, rust cũng không ngoại lệ đâu, chỉ là ngta đào chưa ra mà thôi. nhưng đấy là chuyện của 15 năm sau.
trước mắt là biết W12 bao ngon bao ổn định rồi đó {smile}
 

thanphong19

Búa Gỗ
36 vạn là 360.000 mà nhỉ {amazed}
mà dù sao thì cũng mong là code mới làm win nó ít lỗi lại
 

SieuSaiyanRose

Búa Gỗ
36 vạn là 360.000 mà nhỉ {amazed}
mà dù sao thì cũng mong là code mới làm win nó ít lỗi lại
36 vạn là 360.000 như bạn nói là đúng rồi. Nhưng ở đây người ta chỉ nói 36.000 thôi, nên là 3,6 vạn
 

Uiurin

Gà con
MS có tính viết chương trình bằng Mojo không nhở, hiệu suất gấp 3 vạn python, c++ cơ mà 😃