14.12.20213 min

Mateusz JaroszRedakcja Bulldogjob

Microsoft pokochał Rusta. Rośnie godny następca C i C++

Coraz częściej mówi się, że w przyszłości Rust stanie się głównym językiem niskopoziomowego kodu. Być może warto zapoznać się z nim już teraz.

Microsoft pokochał Rusta. Rośnie godny następca C i C++

W nadchodzącym roku język C będzie obchodził swoje 50. urodziny. Od roku 1972 zmieniło się w zasadzie wszystko, niemniej C i młodszy ledwie o 9 lat C++ wciąż pozostają najpopularniejszymi językami w oprogramowaniu niskopoziomowym. Programiści C i wymieniają jako największe zalety „bliskość” C ze sprzętem, ogromną funkcjonalność i przenośność. 

Coraz częściej jednak pojawiają się komentarze, że w przyszłości C powinien przejść na emeryturę. Rzecz jasna nie jest to kwestia miesięcy, a zapewne nawet nie lat, niemniej alternatywa w postaci języka nowocześniejszego i lepiej wykorzystującego współczesne możliwości sprzętowe jest poszukiwana. Jako godny kandydat jest Rust. A za najlepszy dowód niech służy fakt, że swój niskopoziomowy kod na Rusta chce przepisywać największy producent softu na świecie, Microsoft.


Co jest nie tak z C i C++?

Przez przeszło 40 lat działalności Microsoftu podstawowym językiem w tworzeniu najpopularniejszych narzędzi było C i C++. To właśnie te języki stanowią fundament dla Windowsa czy pakietu Office. C jest także głównym językiem jądra Linux, bodaj najważniejszego programu na świecie. 

Skoro zatem przez ostatnie pół wieku dzięki C powstało oprogramowanie, bez którego trudno sobie wyobrazić współczesnego świata, to nasuwa się pytanie: po co szukać następcy?

Z odpowiedzią śpieszy Matt Miller, inżynier bezpieczeństwa Microsoft Security Response Center. Z jego badań wynikło bowiem, że w ciągu ostatnich 12 lat aż 70% wszystkich łatek publikowanych przez Microsoft było łatkami na podatności związane z bezpieczeństwem pamięci. Miało to wynikać właśnie ze specyfiki języków C i C++ pozwalających programistom kontrolować adresy pamięci, na której wykonany ma być kod. Wystarczy pomyłka w zarządzaniu adresami, by mogła powstać nowa podatność. 

Odnalezienie podatności, ich załatanie, a także ryzyko dla samych użytkowników i ewentualne straty finansowe, to dla Microsoftu koszty. Aby je wyeliminować, MSRC zdecydowało się spopularyzować wewnątrz korporacji pomysł systematycznego przepisywania kolejnych niskopoziomowych komponentów Windowsa na język Rust. To właśnie dzięki mechanizmom zarządzania pamięcią eksperci Microsoft Security Response Center są zdania, że pozwoli on wyeliminować kolejne podatności w przyszłości.

Na tym jednak nie koniec. Pierwsze próby przepisywania wybranych modułów Windowsa na Rusta spotkały się z entuzjazmem samych programistów, którzy docenili gwarantowane przez ten język bezpieczeństwo w zarządzaniu pamięcią i danymi. Chwalono także wygodę podczas debugowania, przejrzyste komunikaty o błędach, a przede wszystkim łatwość, z jaką programista obyty z C++ może się nauczyć Rusta. Wygląda więc na to, że eksperymenty będą kontynuowane, aż w końcu kod napisany w Ruście zawita to Windows Update.


Nie tylko Microsoft

Co ciekawe, znacznie szybciej niż do stabilnego Windowsa Rust, może zawitać do jądra Linux. Jak pisaliśmy, sporym optymizmem wobec takich propozycji wykazał się sam Linus Torvalds, a wsparcie dla tego projektu zapowiedział Josh Tripplett, odpowiedzialny za rozwój Rusta. W ostatnim czasie pojawiły się nowe informacje sugerujące, że Rust trafi do Linuksa raczej prędzej, niż później.

Przed tygodniem na do jądra Linux zgłoszono nową propozycję zmiany autorstwa Miguela Ojeda. Jest to aktualizacja („v2”) w zakresie obsługi Rusta przez jądro. Dzięki niej dokonano migracji z gałęzi beta Rusta na stabilną, dodano nowe opcji modularyzacji czy dodatkową diagnostykę podczas kompilowania. Według znanego ze swoich linuksowych benchmarków Michale Larabela jest to sygnał, że Rust pojawi się w Linuksie już w przyszłym roku.

<p>Loading...</p>