Shfletuesi Chrome është kaluar në motorin e shkrimeve Skrifa, i shkruar në Rust

Kompanija Google e ka kaluar shfletuesin Chrome në bibliotekën Skrifa, e shkruar në gjuhën Rust dhe e cila ofron mundësi për trajtimin e fonteve në formatin OpenType. Skrifa implementon një nëngrup të mundësive të motorit të fonteve FreeType, të nevojshme për bibliotekën 2D Skia, e cila përdoret në Chrome dhe Chromium. Për të zhdukur lidhjen e bibliotekës Skia me motorin FreeType, është krijuar një b backend i ri fontesh, i bazuar në Skrifa.

Në Chrome 128, backend-i i shkruar në Rust u aktivizua në një mod të eksperimentit për formatet e rralla të fonteve, si CFF2 dhe fontet me ngjyrë. Duke filluar nga lëshimi i Chrome 133, backend-i i ri është aktivizuar për të gjitha fontet web në ndërtimet për platformat Linux, Android dhe ChromeOS. Në platformat Windows dhe macOS, motori i ri përdoret ende si një rezervë dhe aplikohet në rast se sistema nuk mbështet formatin e fontit që shfletuesi përpiqet të paraqesë.

Kodi Skrifa është zhvilluar nga inxhinierët e Google si pjesë e mjetit Fontations dhe është hapur nën licencat MIT dhe Apache 2.0. Për të verifikuar saktësinë e funksionimit të Skrifa, janë përgatitur rreth 700 teste unike. Libri mbështet dekodimin e glifave në formatet glyf, CFF, CFF2, COLRv0, COLRv1, EBDT, CBDT dhe sbix, fontet variative në formatet glyf, CFF2 dhe COLRv1, dhe hjarëzimin e fonteve në formatet glyf, CFF dhe CFF2.

Përveç bibliotekës Skrifa, e cila ofron API për akses në metadatat e fonteve dhe ngarkimin e kontureve të glifave, mjeti Fontations përfshin biblioteka të nivelit të ulët për leximin, analizimin, modifikimin dhe krijimin e të dhënave të fonteve në formatin OpenType. Nga ana e tij, Fontations është pjesë e projektit Oxidize, i krijuar për të përkthyer mjete dhe biblioteka për punën me tekstin dhe fontet nga komponentet në gjuhët Python (fonttools, fontmake, nanoemoji) dhe C++ (HarfBuzz, FreeType) në implementime të reja, të shkruara në Rust.

Zhvillimi i komponentëve në Rust filloi për shkak të efikasitetit të pamjaftueshëm të identifikimit të gabimeve duke përdorur testimin fuzzing, pasi formatet e fonteve janë shumë të komplikuara për të përfshirë të gjitha kombinimet e mundshme. Për shembull, javën e kaluar në FreeType u zbulua një vulnerabilitet kritik, i cili mund të ekzekutonte kodin gjatë trajtimit të fonteve të organizuara në mënyrë speciale nga mbingarkimi i tamponit. Përveç motorit FreeType, problemet me sigurinë mund të krijohen edhe nga varësitë e përdorura në të, si bzip2, libpng dhe zlib.

Përdorimi i Rust ka lejuar një ulje të konsiderueshme të probabilitetit të shfaqjes së problemeve me menaxhimin e memories, ka përmirësuar cilësinë e kodit, ka ulur kohën e nevojshme për të zgjidhur problemet e sigurisë dhe ka përshpejtuar përmirësimet në funksionalitetet e Chrome, të lidhura me fontet. Sipas statistikave të Google dhe Microsoft, rreth 70% e vulnerabiliteteve të rrezikshme shkaktohen nga probleme me menaxhimin e memories, të cilat mund të shmangen duke përdorur gjuhën Rust pa blloqe të pasigurta.

Për shembull, përdorimi i Rust do të shmangte problemet që janë zbuluar më parë në kodin FreeType të lidhura me aksesin në hapësirat e lira të memories, mbizotërimin e tamponit, aksesin në tabela pa kontrollin e indekseve, mbingarkimet numerike, përdorimin e pamjaftueshëm të hapësirave të pa filluara dhe gabimet në shndërrimin e tipeve.

Burimi: opennet.ru

Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« đŸ”„ Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« | ProHoster