Фахівці Meta перенесли значну частину коду WhatsApp з мови програмування C++ на більш безпечну Rust. Замінили понад 160 000 рядків коду в критично важливій частині програми — обробці медіафайлів. Це дозволило не тільки суттєво скоротити код, але й знизити в сервісі небезпеку помилок управління пам’яттю.
Читайте также: Нову Лару Крофт озвучить інша акторка. Розробники оголосили вихід двох ігор Tomb Raider: Catalyst та оновлення класики 1996 року
Проблема з’явилась ще в 2015 році, коли спеціалісти компанії виявили, що кросплатформна бібліотека C++, яка розроблена WhatsApp для надсилання та послідовного форматування файлів MP4 (так звана «wamedia»), може бути модифікована для виявлення файлів, які не відповідають стандарту MP4. Це може викликати помилки на стороні одержувача.
Замість поступового переписування, в Meta розробили версію wamedia на Rust паралельно з оригінальною версією на C++. Потім було вирішено повністю переписати медіабібліотеку, паралельно підтримуючи дві реалізації — на C++ і на Rust.
Зрештою, компанія замінила 160 000 рядків C++ (без урахування тестів) на 90 000 рядків Rust (включно з тестами). Версія Rust продемонструвала переваги в продуктивності та використанні пам’яті під час виконання порівняно з C++. WhatsApp додав такі засоби захисту, як CFI, посилені розподільники пам’яті, безпечніші API обробки буферів тощо.
Читайте также: Hogwarts Legacy 2. Warner Bros. шукає спеціалістів для створення повноцінного сюжетного сиквелу
Нагадаємо, два тижні тому керівництво Meta ухвалило рішення припинити підтримку Workrooms — віртуальних просторів для віддаленої роботи.
https://highload.tech/uk/whatsapp-skorotyly-na-50-000-ryadkiv-perepysavshy-chastynu-kodu-c-na-rust/
Читайте также: Новую Лару Крофт озвучит другая актриса. Разработчики объявили выход двух игр Tomb Raider: Catalyst и обновление классики 1996 года
