Google zaprezentował niedawno dowiedzieliśmy się, że zespół odpowiedzialny za projekt Chromium pracuje nad dodaniem zestawu narzędzi Rust z produkcji do systemu kompilacji.
Ci, którzy jeszcze nie znają Rusta, powinni go dobrze pamiętać, ponieważ ten język programowania, który został opracowany przez Mozillę specjalnie do pisania przeglądarek, zaczął przenikać i być akceptowany w wielu ważnych projektach, jednym z nich jest Jądro rdzy. Linux.
To pozwoli nam włączyć kod Rust do pliku binarnego Chrome w ciągu następnego roku. Celem jest rozpoczęcie od małych kroków i określenie jasnych oczekiwań, które biblioteki zostaną wzięte pod uwagę, gdy będą gotowe.
Jest więc zrozumiałe, że Chromium wreszcie zaczyna wdrażać tę technologię. Dla Google wprowadzenie Rust w Chromium spełni cel zapewnienia łatwiejszego i bezpieczniejszego sposobu przestrzegania zasady dwóch, czyli przyspieszenia rozwoju i poprawy bezpieczeństwa Chrome, oprócz poprawy bezpieczeństwa, usunięcia błędów pamięci i zmniejszenie gęstości błędów w kodzie.
Wiemy, że C++ i Rust mogą ze sobą bardzo dobrze współpracować dzięki narzędziom takim jak cxx, autocxx bindgen, cbindgen, dyplomat i (eksperymentalny) crubit. Istnieją jednak również ograniczenia. Możemy spodziewać się, że kształt tych ograniczeń będzie się zmieniał wraz z nowymi lub ulepszonymi narzędziami, ale decyzje i opisy tutaj oparte są na obecnym stanie technologii.
Decyzja została podjęta w ramach inicjatywy mającej na celu zapobieganie pojawianiu się błędów pamięci w bazie kodu Chrome. Według statystyk przedstawionych dwa lata temu, 70% krytycznych i niebezpiecznych problemów bezpieczeństwa w Chromium wynika z błędów pamięci.
Wykorzystanie języka Rust, który koncentruje się na bezpiecznym zarządzaniu pamięcią i zapewnia automatyczne zarządzanie pamięcią, zmniejszy ryzyko podatności spowodowane problemami takimi jak dostęp do obszaru pamięci po jego zwolnieniu i przepełnienie bufora.
Celem wprowadzenia Rust do Chromium jest zapewnienie łatwiejszego (bez IPC) i bezpieczniejszego (ogólnie mniej złożonego C++, bez błędów bezpieczeństwa pamięci w piaskownicy) sposobu spełnienia zasady dwóch, aby przyspieszyć programowanie (mniej kodu do napisania , mniej dokumentów projektowych, mniej poprawek bezpieczeństwa) i poprawić bezpieczeństwo (więcej wierszy kodu bez błędów bezpieczeństwa w pamięci, mniejsza liczba błędów w kodzie) Chrome. Ponadto firma jest przekonana, że do osiągnięcia tego celu możemy użyć zewnętrznych bibliotek Rusta.
Na początku 2022 roku zespół Chromium eksperymentował już z Rust i po kilku miesiącach doszedł do wniosku że język początkowo nie nadaje się jako zamiennik C++ dla złożonych zadań z kodem asynchronicznym, który musi współpracować z istniejącym kodem.
Dlatego planowane użycie Rust in Chromium jest początkowo wyraźnie ograniczone. Po pierwsze, interop będzie działać tylko w jedną stronę: od C++ do Rusta. Z drugiej strony, początkowo dozwolone jest tylko korzystanie z bibliotek innych firm. Działają one jako samodzielne komponenty i są niezależne od wewnętrznych komponentów Chromium. Biblioteki powinny mieć prosty interfejs API do określonego zadania. Następnie zespół Chromium sprawdzi biblioteki.
Na koniec warto wspomnieć, że jako takie dodanie obsługi w Chromium umożliwi przeniesienie kodu Rust do plików binarnych Chrome począwszy od przyszłego roku. Decyzja dotyczy głównie kwestii bezpieczeństwa: Rust zapewnia większe bezpieczeństwo podczas zapisywania w pamięci niż C++ i zabrania potencjalnie szkodliwych zachowań, takich jak odczytywanie niezapisanych zmiennych, dostęp poza ograniczeniami określonymi przez tablice, usuwanie odwołań do zerowych lub nieprawidłowych wskaźników, stosowanie przesłoniętych iteratorów .
Jeśli chcesz dowiedzieć się więcej na ten temat, możesz zapoznać się ze szczegółami W poniższym linku.