, proiectul Chromium va sprijini utilizarea bibliotecilor Rust C++ terțe în Chromium
Google a anunțat recent că echipa din spatele proiectului Chromium lucrează la adăugarea unui lanț de instrumente Rust pentru producție la sistemul său de compilare.
Pentru cei care încă nu cunosc Rust, ar trebui să-l amintească bine, deoarece acest limbaj de programare, care a fost dezvoltat de Mozilla special pentru a fi folosit în scrierea unui browser, a început să se introducă și să fie acceptat în multe proiecte importante, unul dintre ele fiind Rust Kernel. Linux.
Acest lucru ne va permite să includem codul Rust în binarul Chrome în anul următor. Scopul este de a începe cu mici și de a stabili așteptări clare pentru care bibliotecile vor fi luate în considerare atunci când vor fi pregătite.
Este logic, așadar, că și Chromium începe în sfârșit să dezvolte această tehnologie. Pentru Google, introducerea Rust în Chromium va îndeplini obiectivul de a oferi o modalitate mai ușoară și mai sigură de a realiza „regula de doi”, care constă în accelerarea dezvoltării și îmbunătățirea securității Chrome. În plus, îmbunătățește securitatea prin eliminarea erorilor de memorie și reducerea densității erorilor din cod.
Știm că C++ și Rust pot funcționa foarte bine împreună, datorită instrumentelor precum cxx, autocxx bindgen, cbindgen, diplomat și crubit (experimental). Cu toate acestea, există și limitări. Ne putem aștepta ca forma acestor limitări să se schimbe în timp cu instrumente noi sau îmbunătățite, dar deciziile și descrierile de aici se bazează pe starea actuală a tehnologiei.
Decizia a fost luată ca parte a unei inițiative de prevenire a apariției erorilor de memorie în baza de cod Chrome. Conform statisticilor furnizate acum doi ani, 70% din problemele de securitate critice și periculoase din Chromium se datorează erorilor de memorie.
Utilizarea limbajului Rust, care se concentrează pe gestionarea securizată a memoriei și oferă o gestionare automată a memoriei, va reduce riscul vulnerabilităților cauzate de probleme precum accesarea unei zone de memorie după ce aceasta a fost eliberată și depășirea bufferului.
Scopul aducerii Rust la Chromium este de a oferi o modalitate mai ușoară (fără IPC) și mai sigură (C++ mai puțin complex în general, fără erori de siguranță ale memoriei în sandbox) de a satisface regula de doi, pentru a accelera dezvoltarea (mai puțin cod de scris). , mai puține documente de proiectare, mai puține corecții de securitate) și pentru a îmbunătăți securitatea (mai multe linii de cod fără erori de securitate în memorie, densitate mai mică a erorilor de cod) din Chrome. În plus, compania are încredere că putem folosi biblioteci Rust terțe pentru a atinge acest obiectiv.
La începutul anului 2022, echipa Chromium experimentase deja cu Rust și, după câteva luni, a ajuns la concluzia că limbajul nu este inițial potrivit ca înlocuitor pentru C++ pentru sarcini complexe cu cod asincron care trebuie să funcționeze alături de codul existent.
Prin urmare, utilizarea planificată a Rust în Chromium este evident limitată la început . Pe de o parte, interoperabilitatea va merge într-o singură direcție: de la C++ la Rust. Pe de altă parte, inițial este permisă doar utilizarea bibliotecilor terțe. Acestea funcționează ca componente independente și sunt independente de componentele interne ale Chromium. Bibliotecile trebuie să aibă o API simplă pentru sarcina lor specifică. Echipa Chromium va analiza apoi bibliotecile.
În cele din urmă, merită menționat faptul că adăugarea suportului în Chromium va permite portarea codului Rust către binarele Chrome începând de anul viitor. Decizia este determinată în principal de preocupări legate de securitate: Rust oferă o securitate mai mare la scrierea în memorie decât C++ și interzice comportamente potențial dăunătoare, cum ar fi citirea variabilelor nescrise, accesarea valorilor dincolo de limitele stabilite de matrice, dereferențierea pointerilor nuli sau invalidi și utilizarea iteratorilor invalidați.
Dacă sunteți interesați să aflați mai multe, puteți găsi detalii la linkul următor.