, projekt Chromium będzie obsługiwał korzystanie z zewnętrznych bibliotek C++ Rust w Chromium
Google niedawno ogłosiło , że zespół stojący za projektem Chromium pracuje nad dodaniem produkcyjnego zestawu narzędzi Rust do swojego 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.
Logiczne jest zatem, że Chromium w końcu zaczyna rozwijać również tę technologię. Dla Google wprowadzenie Rusta do Chromium spełni cel, jakim jest zapewnienie łatwiejszego i bezpieczniejszego sposobu na osiągnięcie „zasady dwóch”, która polega na przyspieszeniu rozwoju i zwiększeniu bezpieczeństwa Chrome. Co więcej, poprawia bezpieczeństwo poprzez eliminację 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 ta została podjęta w ramach inicjatywy mającej na celu zapobieganie pojawianiu się błędów pamięci w kodzie przeglądarki Chrome. Według statystyk opublikowanych dwa lata temu, 70% krytycznych i niebezpiecznych problemów bezpieczeństwa w przeglądarce Chromium wynika z błędów pamięci.
Użycie języka Rust, który kładzie nacisk na bezpieczne zarządzanie pamięcią i umożliwia jej automatyczne zarządzanie, zmniejszy ryzyko wystąpienia luk w zabezpieczeniach spowodowanych problemami takimi jak dostęp do obszaru pamięci po jego zwolnieniu czy 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 Rustem i po kilku miesiącach doszedł do wniosku, że język ten na razie nie nadaje się jako zamiennik języka C++ w przypadku złożonych zadań wymagających asynchronicznego kodu, który musi współdziałać z istniejącym kodem.
W związku z tym planowane wykorzystanie Rusta w Chromium jest początkowo wyraźnie ograniczone . Z jednej strony interoperacyjność będzie jednokierunkowa: z C++ do Rusta. Z drugiej strony, początkowo dozwolone jest korzystanie wyłącznie z bibliotek zewnętrznych. Działają one jako samodzielne komponenty i są niezależne od wewnętrznych komponentów Chromium. Biblioteki muszą posiadać proste API do realizacji swoich konkretnych zadań. Zespół Chromium dokona następnie przeglądu bibliotek.
Na koniec warto wspomnieć, że dodanie obsługi w Chromium umożliwi przenoszenie kodu Rust do plików binarnych Chrome od przyszłego roku. Decyzja ta podyktowana jest przede wszystkim względami bezpieczeństwa: Rust oferuje większe bezpieczeństwo podczas zapisu do pamięci niż C++ i zabrania potencjalnie szkodliwych zachowań, takich jak odczytywanie niezapisanych zmiennych, dostęp do wartości poza limitami określonymi przez tablice, dereferowanie nullów lub nieprawidłowych wskaźników oraz używanie nieprawidłowych iteratorów.
Jeśli chcesz dowiedzieć się więcej, szczegóły znajdziesz pod poniższym linkiem.