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

Maciej Olanicki , 02.09.2019 r.
rust Rust ma wszystko, czego trzeba, by zastąpić C w niskopoziomowym kodzie.

Nie będzie przesady w twierdzeniu, że Mozilla od ponad 15 lat z powodzeniem realizuje swoje cele statutowe: czynienie Internetu wolnym i otwartym. Być może jednak to nie Firefox, Bugzilla, silniki Gecko i Servo czy baza MDN odcisną w historii IT największe piętno. Niewykluczone, że rację miał ustępujący dyrektor wykonawczy fundacji, Chris Beard, twierdząc, że najlepsze dopiero przed Mozillą. A to za sprawą świetlanej przyszłości, jaka maluje się przed językiem programowania Rust.

Rust – największy sukces Mozilli?

Oczywiście można się spierać, na ile język taki, jak Rust może mieć jakąkolwiek przynależność. Podobne spory (dość zażarte) mają miejsce wśród społeczności programistów Golang, którzy niechętnie chcą uznawać nadzór Google nad całym przedsięwzięciem i skłaniają się w stronę społecznościowego charakteru rozwoju języka. Faktem jest jednak, że Rust powstał na łonie Mozilli (zapoczątkowany został w 2006 przez zatrudnionego w Fundacji Graydona Hoare’a), zaś aktualnie jego rozwój jest przez nią finansowany.

Z coraz większym entuzjazmem spoglądają jednak na Rusta inni duzi branżowi gracze. Wiele wskazuje na to, że wkrótce rozwijany pod egidą Mozilli język programowania trafi do najambitniejszych przedsięwzięć największych organizacji. Dość powiedzieć, że łaskawym okiem na Rusta spogląda Microsoft, przedstawiciele Intela otwarcie twierdzą w oficjalnej komunikacji, że Rust ma zadatki do bycia nowym C. Ba, przed kilkoma dniami padła propozycja, by w Ruście pisać sterowniki dla Linuksa.

Microsoft boi się o bezpieczeństwo

Zainteresowanie Rustem Microsoftu było już sygnalizowane na łamach naszego bloga. Wynika ono nie tyle z zalet samego Rusta, co z wad duetu C/C++, którym korporacja posługuje się w rozwoju między innymi Windowsa.

Po dramatycznym wzroście zainteresowania kwestiami bezpieczeństwa i prywatności spowodowanym aferą Cambridge Analytica (dziś informacje o odnalezionych w popularnym oprogramowaniu lukach lądują na stronach głównych największych mainstreamowych serwisów) bezpieczeństwo Windowsa stało się sprawą publiczną, a nie czymś, co można zamieść pod dywan za pomocą comiesięcznego biuletynu łatek bezpieczeństwa. Podatności zaczną wpływać lub już wpływają na sprzedaż.

Problem w tym, że lwia część (70% wszystkich CVE) podatności w Windowsie i innych programach Microsoftu wynika z błędów związanych z obsługą pamięci. Są to między innymi wycieki pamięci, przepełnienia bufora, hazard czy błędy w alokacji. Nowoczesne języki programowania posiadają swoje metody, by tej klasie błędów skutecznie zapobiegać, ale C/C++ nie. Duet oferuje za to wysoką wydajność kluczową dla niskopoziomowego kodu. Obie te cechy łączyć ma natomiast Rust, który według Microsoft Response Security Center powinien w celu wyeliminowania błędów pamięci stopniowo wypierać w Microsofcie C i C++.

Oczywiście zalecenia MSRC nie sprawią od razu, że Windows czy pakiet Office zostanie przepisany na Rusta. Nie sposób jednak pominąć, że największy producent oprogramowania na świecie nie tylko dostrzega potrzebę stopniowej migracji, ale ma już nawet wytypowanego kandydata na następcę C i C++. Nie była to na pewno decyzja łatwa, zważywszy na konieczność przyznania, że cudowne dzieci Microsoftu, C#.NET, nie sprawdzą się w tej roli.

Intel: Rust to przyszłość programowania systemowego

Z podobnym entuzjazmem o Ruście mówią przedstawiciele Intela. Josh Triplett, który łączy szefowanie departamentem inżynierii u niebieskich z zaangażowanie w rozwój Rusta, stwierdził podczas Intel Open Source Technology Summit, że Rust to przyszłość programowania systemowego. W rezultacie C zostanie przesunięte na pozycję, którą lata temu zajmował język asemblera. „C is the new Assembly” – wołał Triplett ze sceny w malowniczym ośrodku Skamania Lodge w stanie Waszyngton. Szkoda tylko, że słyszało go niewielu, gdyż IOSTS był w tym roku imprezą zamkniętą.

Główny inżynier Intela pochwalił się jednak, że Intel ma już wobec Rusta konkretne plany: korporacja dołoży starań, by Rust stał się językiem równorzędnym z C, tj. aby deweloperzy mieli pewność, że Rust oferuje im wszystko, to co „poprzednik”. Podobnie jak C nie mogło być lepsze od języka asemblera, tak Rust nie może być gorszy od C. To właśnie w tym aspekcie Mozilla ma liczyć na wsparcie Intela, przede wszystkim właśnie w osobie Josha Tripletta. Według niego właśnie zapewnienie równorzędności Rusta z C spowoduje prawdziwy wybuch popularności tego pierwszego.

Linux chce lepszej jakości sterowników

A skoro jesteśmy już przy zastosowaniach Rusta w niskopoziomowym kodzie, to nie sposób nie przypomnieć opinii Linusa Torvaldsa. W rozmowie z zamkniętym już Linux Journal stwierdził swojego czasu, że o przepisywaniu jądra Linux na języki nowocześniejsze niż C nie może być mowy. Według niego dzisiejsze języki nijak nie sprawdzają się w niskopoziomowym kodzie, a „nic lepszego niż C nie powstało”. Sytuacja zmienia się jednak, gdy założymy wspomnianą równorzędność C i Rusta. Nic lepszego niż C nie powstało, ale może Rust nie będzie gorszy.

Podobnie zdaje się myśleć linuksowa społeczność. Na łamach LWN.net padła bowiem propozycja, by „na dobry początek” pozwolić pisać niektóre linuksowe sterowniki właśnie w Ruście. Oczywiście, aby to było możliwe, konieczne byłoby mnóstwo pracy, np. integracja Rusta z system kompilacji Linuksa czy przepisanie na Rusta funkcji i klas opakowujących linuksowe API. Autor zaznacza jednak, że część pracy została już wykonana, jednak znajduje się w fazie eksperymentalnej.

Z entuzjazmem do tego pomysłu podchodzi Greg Kroah-Harmtan, jeden z czołowych programistów zaangażowanych w rozwój jądra. Poinformował on, że chętnie zatwierdzi rustowy framework pozwalający na przygotowanie sterowników w tym języku, jeśli tylko takowy powstanie. Na reakcję społeczności nie trzeba było czekać długo, o czym świadczy repozytorium linux-kernel-module-rust dostępne już na GitHubie. Wygląda zatem, że napisane w Ruście sterowniki dla Linuksa to kwestia czasu.

Świetlana przyszłość Rusta

Rust rzeczywiście ma zadatki do tego, by zastąpić C w rolach, w których ten język sprawdzał się od lat. A nawet jeśli wciąż posiada w stosunku do C braki, to najwięksi gracze dysponujący ogromnymi zasobami – Microsoft czy Intel – chętnie zmienią ten stan rzeczy. Optymistyczne perspektywy są dostrzegane przez samych programistów, o czym świadczą wyniki StackOverflow Developer Survey – największego internetowego badania opinii programistów, papierka lakmusowego całej branży. Niezmiennie od 2016 roku Rust utrzymuje tam chwalebny tytuł „najbardziej uwielbianego” języka programowania w ogóle.

Najnowsze oferty pracy:

Polecane wpisy na blogu IT: