Microsoft przepisuje niskopoziomowe komponenty Windowsa na język Rust

Maciej Olanicki , 09.11.2019 r.
rust

W połowie lipca szef Microsoft Security Response Center ogłosił, że największy producent oprogramowania na świecie szuka następcy głównych języków wykorzystywanych w Redmond między innymi w rozwoju Windowsa czy Office’a, czyli C i C++. Za sprawą wydajności i bezpieczeństwa naturalnym faworytem okazał się Rust. Zastrzegliśmy wówczas, że entuzjazm Redmond nie oznacza jeszcze, że Windows zacznie być nagle przepisywany na Rusta. Dziś wiemy, że nasza ostrożność była nieco na wyrost.

Walorom, jakie Rust przedstawia dla największy graczy IT poświęciliśmy osobny artykuł. Dość powiedzieć, że bezpieczeństwo i wydajność kodu napisanego w Ruście jest między innymi dla Microsoftu, ale też Intela i społeczności linuksowej poważnym obiektem zainteresowania. Szef inżynierii Intela otwarcie stwierdza, że język Mozilli to następca C/C++ w programowaniu systemowym i angażuje swoją korporację (także w zakresie finansowania) w zapewnienie równorzędności Rusta z C. Wiele wskazuje także, że wkrótce w Ruście będą powstawać linuksowe sterowniki – aprobatę tego pomysłu wyraził między innymi Greg Kroah-Harmtan.

Entuzjazmem nie ustępował także Microsoft, ale trudno szybkiej transpozycji od molocha, który utrzymuje trudną do wyobrażenia sobie ilość kodu napisaną w C/C++ stojącym za oprogramowaniem wykorzystywanym w zasadzie wszędzie: od użytkowników indywidualnych, przez gospodarstwa domowe, a na gigantycznych klientach korporacyjnych kończąc. A jednak eksperymenty trwają, czego dowiadujemy się z najnowszego wpisu opublikowanego na blogu MSRC. Szczegóły zostaną omówione podczas dzisiejszego wystąpienia inaugurującego konferencję RustFest Barcelona, ale już ogólniki autorstwa Adama Burcha, inżyniera z zespołu rozwijającego Hyper-V, dają sporo do myślenia:

Ostatnio otrzymałem zadanie eksperymentalnego przepisania niskopoziomowego komponentu systemowego Windows (przepraszam, nie mogę jeszcze powiedzieć, o który chodzi). Zamiast przepisywania kodu w C++ poproszono mnie o użycie Rusta, bezpiecznej dla pamięci alternatywy. Chociaż projekt jeszcze się nie zakończył, mogę powiedzieć, że moje doświadczenia z Rustem był na ogół pozytywne. Jest to dobry wybór dla osób, które chcą uniknąć częstych błędów, prowadzących do luk w zabezpieczeniach baz kodu C++.

W dalszej części wpisu Burch omawia walory korzystania z Rusta, ale też wyzwania, jakie napotkał. Wśród pierwszych wymienia przyjaźniejszą od C++ składnię, wykorzystywane mechanizmy zapobiegania błędom pamięci oraz solidny kompilator czyniący debugowanie „trywialnym” – kompilator Rusta ma bowiem oferować wyróżniające się pod kątem przejrzystości komunikaty o błędach, które z powodzeniem nakierowują programistę na źródło problemów. Inżynier Microsoftu chwali także język Mozilli za wysokiej jakości dokumentację, co wszystko razem ma się przekładać na łagodną krzywą uczenia się.

Wyzwania, jakie napotkali programiści Microsoftu, mają być chorobami wieku dziecięcego Rusta: wymieniono wśród nich brak bezpiecznej metody przetwarzania surowych danych, wsparcia dla znanych z C unii. Problemem okazało się także testowanie za pomocą Cargo – Microsoft nie mógł sobie pozwolić na wykorzystanie tego menedżera w swoich eksperymentach. Chętnych do zapoznania się z pozostałymi wnioskami zachęcamy do odwiedzenia bloga Microsoft Security Response Center. My tymczasem skupmy się na innym aspekcie – Microsoft właśnie przyznał, że przepisuje Windowsa na nowy język programowania, nawet jeśli robi to tylko w celach eksperymentalnych.

Eksperymenty nie świadczą bowiem, że korporacja nie ma wobec Rusta poważnych zamiarów. Już sam fakt, że Burch nie mógł ujawnić szczegółów świadczyć może o tym, że Microsoft myśli o Ruście bardzo poważnie. Wskazówkę może stanowić, że komponent ten oryginalnie napisany był w C (wszak zadanie polegało na przepisaniu na Rusta zamiast na C++), chodzić może więc o bardzo stary składnik Windowsa. Choć na razie konkretów brakuje, to nie ma większych wątpliwości, że zapowiedzi o poszukiwaniu następców C i C++ przez Microsoft należy traktować bardzo serio.

Trudno uwierzyć, że kadencja Steve’a Ballmera, który chciał zamknąć korporację w murach jej własnościowych narzędzi programistycznych, zakończyła się raptem 5 lat temu.

Zobacz też: Czy Rust to nowe C? Przed językiem Mozilli maluje się świetlana przyszłość

Najnowsze oferty pracy:

Polecane wpisy na blogu IT: