, projekt Chromium bude podporovat použití knihoven C++ Rust třetích stran v Chromiu
Google nedávno oznámil , že tým stojící za projektem Chromium pracuje na přidání produkční sady nástrojů Rust do svého systému sestavení.
Pro ty, kteří stále neznají Rust, měli by si to dobře zapamatovat, protože tento programovací jazyk, který byl vyvinut Mozillou speciálně pro použití při psaní prohlížeče, začal pronikat a být přijímán v mnoha důležitých projektech, jedním z nich je Rust Kernel. Linux.
To nám umožní zahrnout kód Rust do binárky Chrome během příštího roku. Cílem je začít v malém a stanovit jasná očekávání, o kterých bude u knihoven uvažovat, až budou připraveny.
Je tedy logické, že Chromium konečně také začíná tuto technologii vyvíjet. Pro Google zavedení Rustu v Chromu splní cíl, kterým je poskytnout snadnější a bezpečnější způsob, jak dosáhnout „pravidla dvou“, které spočívá v urychlení vývoje a zlepšení zabezpečení Chromu. Dále se zlepšuje zabezpečení eliminací chyb paměti a snížením hustoty chyb v kódu.
Víme, že C++ a Rust mohou velmi dobře spolupracovat díky nástrojům jako cxx, autocxx bindgen, cbindgen, diplomat a (experimentální) crubit. Existují však také omezení. Můžeme očekávat, že se podoba těchto omezení časem změní s novými nebo vylepšenými nástroji, ale rozhodnutí a popisy zde vycházejí ze současného stavu technologie.
Toto rozhodnutí bylo učiněno v rámci iniciativy, jejímž cílem je zabránit objevování chyb paměti v kódové základně Chromu. Podle statistik zveřejněných před dvěma lety je 70 % kritických a nebezpečných bezpečnostních problémů v Chromu způsobeno chybami paměti.
Používání jazyka Rust, který se zaměřuje na bezpečnou správu paměti a poskytuje automatickou správu paměti, sníží riziko zranitelností způsobených problémy, jako je přístup k oblasti paměti po jejím uvolnění a přetečení vyrovnávací paměti.
Cílem zavedení Rust do Chromia je poskytnout snazší (žádné IPC) a bezpečnější (méně složité C++ obecně, žádné chyby bezpečnosti paměti v sandboxu), jak splnit pravidlo dvou, aby se urychlil vývoj (méně kódu k zápisu , méně návrhových dokumentů, méně bezpečnostních záplat) a ke zlepšení zabezpečení (více řádků kódu bez bezpečnostních chyb v paměti, nižší hustota chyb v kódu) prohlížeče Chrome. Kromě toho je společnost přesvědčena, že k dosažení tohoto cíle můžeme použít knihovny Rust třetích stran.
Začátkem roku 2022 tým Chromia již experimentoval s Rustem a po několika měsících dospěl k závěru, že jazyk zpočátku není vhodný jako náhrada za C++ pro složité úlohy s asynchronním kódem, který musí fungovat vedle stávajícího kódu.
Plánované použití Rustu v Chromiu je proto zpočátku jasně omezené . Na jedné straně bude interoperabilita směřovat pouze jedním směrem: z C++ do Rustu. Na druhé straně je zpočátku povoleno pouze použití knihoven třetích stran. Ty fungují jako samostatné komponenty a jsou nezávislé na interních komponentách Chromia. Knihovny musí mít pro svůj specifický úkol jednoduché API. Tým Chromia poté knihovny zkontroluje.
Konečně stojí za zmínku, že přidání podpory v Chromu umožní portování kódu Rustu do binárních souborů Chrome od příštího roku. Rozhodnutí je primárně motivováno bezpečnostními obavami: Rust nabízí větší bezpečnost při zápisu do paměti než C++ a zakazuje potenciálně škodlivé chování, jako je čtení nezapsaných proměnných, přístup k hodnotám mimo limity stanovené poli, dereferencování nulových nebo neplatných ukazatelů a používání neplatných iterátorů.
Pokud máte zájem dozvědět se více, podrobnosti naleznete na následujícím odkazu.