За даними Techtimes, вихід Git 2.55-rc0 став знаковим моментом для інфраструктури розробки програмного забезпечення у всьому світі. Головна зміна полягає в тому, що підтримка Rust тепер активується автоматично, а будь-яке середовище збірки, яке не містить відповідного тулчейну, видасть помилку, якщо користувач не вкаже спеціальний прапорець NO_RUST.
Причини переходу на безпеку пам'яті
Історія Git тісно пов'язана з мовою C, яка надає програмісту повний контроль над пам'яттю, але не має вбудованих механізмів захисту від помилок. Саме через це у коді проекту виникали критичні проблеми, такі як переповнення буферів та помилки використання після звільнення пам'яті. У 2022 році було виявлено дві серйозні вразливості (CVE-2022-41903 та CVE-2022-23521), які дозволяли потенційне дистанційне виконання коду.
Аудит безпеки, проведений компаніями X41 D-SEC та GitLab у 2023 році, підтвердив наявність великої кількості проблем з цілочисловими обчисленнями. Ситуація є системною: Microsoft повідомляє, що близько 70% їхніх щорічних вразливостей пов'язані з безпекою пам'яті, а Google зазначає схожі цифри для бази коду Chromium.
Технічна інтеграція та продуктивність
Важливо розуміти, що Git не переписується повністю на Rust. Розробники використовують інкрементальний підхід: код на Rust збирається окремим статичним бібліотекою через Cargo, яка потім підключається до існуючих систем збірки Makefile або Meson. Для взаємодії між мовами C та Rust використовується Foreign Function Interface (FFI) разом із інструментом cbindgen.
У версії Git 2.55 основний фокус припав на підсистему xdiff, яка відповідає за обчислення різниць між версіями файлів. Ця складова працює в «гарячому шляху» виконання команд git diff, git log -p та операцій злиття (merge). За даними розробника Ezekiel Newren, порт xdiff на Rust має прискорити роботу підсистеми від 5 до 19 відсотків порівняно з поточним рішенням на мові C.
Висновок щодо майбутнього проекту
Перехід на Rust дозволяє Git отримувати гарантії безпеки пам'яті на етапі компіляції, що фактично виключає цілий клас вразливостей без використання збирачів сміття. Це стратегічне рішення забезпечує довгострокову стабільність інструменту, який є фундаментом для більшості сучасних IT-проєктів.