Chrome переходить з бібліотеки обробки шрифтів FreeType на проєкт Skrifa, створений мовою Rust

Google вирішили змінити спосіб обробки шрифтів у браузері Chrome, замінивши стару бібліотеку FreeType на нову — Skrifa, написану мовою Rust.

Проблеми FreeType і чому його замінили

Бібліотека FreeType та її залежності, такі як bzip2, libpng і zlib, неодноразово ставали джерелами вразливостей, а лише минулого тижня було виявлено баг, що дозволяв зловмисникам виконувати шкідливий код через переповнення буфера.

Додатковою проблемою є складність тестування, оскільки формати шрифтів дуже заплутані, і стандартні методи перевірки, зокрема fuzzing, не здатні виявити всі потенційні помилки.

Чим кращий Rust і Skrifa

Google не просто так обрали Rust. Він створений із чітким акцентом на безпеку роботи з пам’яттю. За статистикою Google та Microsoft, якраз таки значну частину критичних вразливостей у програмному забезпеченні спричиняють помилки в керуванні пам’яттю.

Skrifa — це бібліотека, яка виконує лише ті завдання, що дійсно потрібні Chrome. Вона не намагається повністю замінити FreeType, а лише робить необхідну роботу для рушія Skia, що відповідає за рендеринг графіки у браузері.

Перехід на Skrifa відбувається поступово:

  • У Chrome 128 її додали як експеримент.
  • Починаючи з Chrome 133, вона використовується для всіх веб-шрифтів на Linux, Android та ChromeOS.
  • У Windows і macOS Skrifa поки що працює лише у випадках, коли система не підтримує певний формат шрифту.

Зазначимо, що популярність Rust, останнім часом сильно зросла. Не так давно в команді розробників Linux сталася запекла суперечка з приводу імплементації Rust в ядро, але Лінус Торвальдс дав Rust`у «зелене світло» і розставив всі крапки над «і». Тепер і Google починає віддавати перевагу більш безпечним мовам, таким як Rust, замість С++ та інших, проблемних мов.

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті

👍ПодобаєтьсяСподобалось3
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Підписатись на коментарі