Код Читати оригінал на Techtimes 2 хв читання 0

Git 2.55 впроваджує підтримку Rust для підвищення безпеки

Система контролю версій Git оголосила про масштабне оновлення архітектури, що змінить вимоги до середовищ збірки програмного забезпечення. Вихід реліз-кандидата Git 2.55 передбачає ввімкнення підтримки мови Rust за замовчуванням для всіх нових інсталяцій. Це рішення є прямим кроком до підвищення безпеки коду, оскільки розробники прагнуть усунути критичні вразливості пам'яті, що десятиліттями супроводжували використання мови C.

Графічний логотип платформи GitHub із характерним символом кота-октопуса та написом на однотонному чорному тлі.
Графічний логотип платформи GitHub із характерним символом кота-октопуса та написом на однотонному чорному тлі. · Джерело зображення: Techtimes

За даними 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-проєктів.

Контекст для України

Для української спільноти розробників, яка активно використовує Git як базовий інструмент, це означає зміну стандартів налаштування CI/CD пайплайнів. Компаніям, що релокували команди або працюють з open-source проєктами, доведеться оновити скрипти автоматизації збірки, щоб уникнути помилок при компіляції Git із вихідного коду. Оскільки багато українських розробників активноконтрибутують у глобальні репозиторії, розуміння нових вимог до тулчейнів Rust стане критичним для підтримки безперервного процесу розгортання.

Часті запитання

Чому Git переходить на мову Rust?
Перехід зумовлений необхідністю підвищити безпеку коду та усунути критичні вразливості пам'яті, такі як переповнення буферів. Мова C не має вбудованих механізмів захисту від таких помилок, що призводило до виявлення серйозних вразливостей, зокрема CVE-2022-41903 та CVE-2022-23521.
Чи буде Git повністю переписаний на Rust?
Ні, розробники використовують інкрементальний підхід. Код на Rust збирається як окрема статична бібліотека через Cargo і підключається до існуючих систем збірки Makefile або Meson за допомогою Foreign Function Interface (FFI) та інструменту cbindgen.
Telegram

Свіжі новини у нашому Telegram

Отримуйте миттєві сповіщення про нові публікації в рубриці «Код»

@procodeandevenmore