«Мінус 50000 рядків коду»: Meta переписала частину месенджера WhatsApp з C++ на Rust
Meta вирішили не відставати від тренду сьогодення і повідомили про те, що вони переписали з С++ на Rust свою бібліотеку wamedia, яка відповідає за обробку та перевірку медіафайлів у WhatsApp, що відправляються користувачами.

За словами компанії, «wamedia» обробляє мільярди файлів щомісяця на різних платформах: Android, iOS, Mac, Web, Wearables та браузерах. Функціонал бібліотеки заключається в тому, що вона перевіряє, чи відповідають медіафайли стандартам, і блокує ті, які можуть викликати помилки у вразливих ОС-бібліотеках.
Історія переходу на Rust пов’язана з ще з часів 2015 року, коли стало відомо про вразливість Stagefright, за допомогою якої зловмисники могли атакувати користувачів шкідливими MP4-файлами та заражати їхні Android-пристрої через системні бібліотеки. Тоді WhatsApp і почав захищати користувачів на стороні додатка, перевіряючи файли перед їх обробкою, замість того щоб чекати оновлень ОС.
Переписування на Rust відбувалося паралельно з оригінальною C++ реалізацією. Команда перевіряла нову версію за допомогою спеціальних тестів та порівняння результатів, щоб переконатися, що Rust-бібліотека працює так само, як стара на C++. В результаті замість 160 000 рядків C++ (без тестів) вийшло отримати 90 000 рядків Rust (з тестами). Себто загальна кількість коду зменшилася аж на 50000 рядків
«Це найбільше на сьогодні розгортання коду на Rust на різноманітних кінцевих платформах та продуктах, про яке нам відомо. Наш досвід підтверджує готовність Rust до використання на стороні клієнта та його унікальну цінність», — кажуть представники компанії.
WhatsApp також додав додаткові перевірки для ризикових типів файлів, таких як PDF, і файлів з підробленими розширеннями або MIME-типами. Комплекс цих перевірок отримав назву Kaleidoscope.
Нагадаємо, що раніше стало відомо, що експерименти з Rust в ядрі Linux успішно завершені.

68 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів