TeamQuest Blog

Google wybiera Rusta

Google wybiera Rusta

Marcin Sarna , 08.04.2021 r.

Nowy język do niskopoziomowego kodu Androida.

Google promuje język Rust zamiast C i C++ głównie z jednego powodu – chce doprowadzić do mniejszej liczby błędów bezpieczeństwa pamięci.

Chodzi o bezpieczeństwo

W zeszłym miesiącu widzieliśmy pierwsze małe kroki w kierunku przyjęcia Rusta do jądra Linuksa. Google najwyraźniej myślało w ten sam sposób jak deweloperzy kernela bo we wtorkowym wpisie na blogu firma ogłosiła, że projekt Android Open Source oparty jest teraz o Rust – przynajmniej w zakresie niskopoziomowych komponentów tego systemu operacyjnego.

Zespół Androida wkłada rzeczywiście sporo pracy wypychając Kotlina i Javę do roli języka dla programistów aplikacji. Oba te języki opierają się na Android Runtime (ART), bez którego nie mają racji bytu. W Javie nie da się napisać niczego na niższym poziomie niż ART, ponieważ po prostu nie byłoby dla takiego kodu środowiska wykonawczego, w którym można by go uruchomić. W przeszłości Google zazwyczaj używał C lub C++, ale żaden z nich nie jest językiem zarządzającym pamięcią, co czyni Androida podatnym na wycieki pamięci i przepełnienia bufora.

Zalety Rusta

Google przedstawiło zalety stosowania Rusta w porównaniu z C i C++, twierdząc, że:

Rust daje gwarancję bezpieczeństwa pamięci, używając kombinacji dwóch rodzajów kontroli: kontroli na etapie kompilacji kodu (w celu zapewnienia prawidłowego życia obiektu) i kontroli w czasie wykonywania kodu. Ma to na celu zapewnienie, że dostęp do pamięci jest udzielany w prawidłowy sposób. Bezpieczeństwo jest osiągane przy jednoczesnym zapewnieniu wydajności porównywalnej z C i C++.

Poczytaj o tym więcej u nas.

Poglądy forsowane przez Google wydają się zbieżne ze statystykami opublikowanymi przez Microsoft. Zdaniem Google błędy bezpieczeństwa pamięci nadal są głównym źródłem problemów ze stabilnością i nadal stanowią około 70% poważnych luk w zabezpieczeniach Androida.

Migracja starego kodu na Rusta jest niemożliwa

Google twierdzi, że przepisanie dziesiątek milionów wierszy istniejącego kodu C i C++ w Rust jest po prostu niewykonalne, ale też i przepisanie starego kodu Androida nie będzie miało już większego znaczenia bo większość błędów została już usunięta. Ponieważ kod źródłowy Androida jest projektem open source z miliardami użytkowników, jest też sprawdzany i monitorowany przez bardzo dużą liczbę osób. Google twierdzi, że większość naszych błędów pamięci występuje w nowym lub niedawno zmodyfikowanym kodzie, a około 50% z nich ma mniej niż rok. W razie potrzeby Rust będzie używany do pisania nowych komponentów, co powinno pomóc zredukować ryzyko występowania nowych błędów pamięci, które Google mógłby wprowadzić w przyszłości.

Sprawdź oferty pracy na TeamQuest

Blog Google podsumował temat taką zapowiedzią:

Przez ostatnie 18 miesięcy dodawaliśmy obsługę Rusta do projektu Android Open Source i mamy kilka projektów na etapie early adopters. Będziemy się nimi dzielić z Wami w nadchodzących miesiącach. System operacyjny to projekt wieloletni. Bądź na bieżąco, będziemy publikować więcej aktualizacji na naszym blogu.

Rust w Linuksie

Jeszcze w 2020 roku na konferencji Linux Plumbers programiści kernela zaczęli poważnie omawiać pomysł wykorzystania języka Rust w jądrze. Tu też nie chodziło o całkowite, od podstaw przepisanie jądra w Rust - po prostu na dodaniu nowego kodu, napisanego w Rust.

Torvalds wcale nie wydawał się wtedy przerażony tym pomysłem a ostatnio powiedział:

Interesuje mnie ten projekt, myślę, że jest on napędzany przez ludzi, którzy są bardzo podekscytowani Rustem. Chcę zobaczyć, jak to faktycznie skończy się w praktyce.

Wydaje się, że zarówno Microsoft, Google jak i społeczność Linuksa zgadzają się, że dwie trzecie lub nawet więcej luk w zabezpieczeniach wynika z problemów z bezpieczeństwem pamięci. Wraz ze wzrostem złożoności oprogramowania będzie to miało coraz większe znaczenie.

Najnowsze oferty pracy:

Polecane wpisy na blogu IT:

Szukasz pracownika IT?

Dostarczymy Ci najlepszych specjalistów z branży IT. Wyślij zapytanie

Wyrażam zgodę TeamQuest Sp. z o.o. na przetwarzanie moich danych osobowych w celu marketingu produktów i usług własnych TeamQuest, w tym na kontaktowanie się ze mną w formie połączenia telefonicznego lub środkami elektronicznymi.
Administratorem podanych przez Ciebie danych osobowych jest TeamQuest Sp. z o.o., z siedzibą w Warszawie (00-814), ul. Miedziana 3a/21, zwana dalej „Administratorem".
Jeśli masz jakiekolwiek pytania odnośnie przetwarzania przez nas Twoich danych, skontaktuj się z naszym Inspektorem Ochrony Danych (IOD). Do Twojej dyspozycji jest pod adresem e-mail: office@teamquest.pl.
W jakim celu i na jakiej podstawie będziemy wykorzystywać Twoje dane? Dowiedz się więcej