Браузер Chrome перевели на бібліотеку Skrifa, яка написана на Rust
Компанія Google перевела браузер Chrome на бібліотеку Skrifa, яка написана на мові програмування Rust і надає можливість обробки шрифтів у форматі OpenType. Для позбавлення існуючої бібліотеки Skia, яка використовується в Chrome і Chromium, від прив’язки до рушія FreeType створено новий шрифтовий бекенд, заснований на Skrifa. Про це повідомляє блог Chrome for Developers.
Код Skrifa розроблений в Google у рамках інструментарію Fontations, він відкритий для використання під ліцензіями MIT та Apache 2.0. Розробка компонентів Chrome на Rust почалася через недостатню ефективність виявлення помилок за допомогою fuzzing-тестування, оскільки формати шрифтів надто складні для охоплення всіх можливих комбінацій. Наприклад, нещодавно у FreeType виявили критичну вразливість, яка дозволяє виконати код при обробці спеціально оформлених шрифтів з переповнення буфера.
Використання Rust дозволило значно знизити ймовірність появи проблем при роботі з пам’яттю, підвищити якість коду, знизити витрати часу на виправлення проблем з безпекою та прискорити внесення покращень у можливості Chrome, пов’язані зі шрифтами.
За статистикою Google та Microsoft, близько 70% небезпечних вразливостей викликані проблемами при роботі з пам’яттю, яких можна уникнути при використанні мови Rust. Наприклад, це позбавляє проблем в коді FreeType, пов’язаних зі зверненням до звільнених областей пам’яті, виходом за межі буфера, доступом до масивів без перевірки індексів, цілими переповненнями, некоректним використанням необнулених областей пам’яті і помилками приведення типів.
Favbet Tech – це ІТ-компанія зі 100% українською ДНК, що створює досконалі сервіси для iGaming і Betting з використанням передових технологій та надає доступ до них. Favbet Tech розробляє інноваційне програмне забезпечення через складну багатокомпонентну платформу, яка здатна витримувати величезні навантаження та створювати унікальний досвід для гравців.
Сообщить об опечатке
Текст, который будет отправлен нашим редакторам: