Міграція Bun на Rust за допомогою ШІ

Дата9 лип. 2026 р.
Читати3 хв
Міграція Bun на Rust за допомогою ШІ
Міграція з однієї системної мови програмування на іншу в масштабах промислового рантайму традиційно вважається операцією надвисокого рівня складності та ризику. Зазвичай такі процеси вимагають місяців ручного рефакторингу та повного «заморожування» розробки нового функціоналу. Проте кейс Bun демонструє радикальну зміну парадигми, де роль основних виконавців беруть на себе нейромережеві агенти. Цей досвід доводить: за умови наявності ґрунтовного тестового покриття, ШІ здатен переписати мільйон рядків коду за лічені дні.

Історія розвитку Bun завжди була нерозривно пов'язана з пошуком граничної продуктивності, що спочатку й призвело творців проєкту до вибору мови Zig. Однак разом із потужністю ручного керування пам'яттю прийшли й класичні проблеми системного програмування: помилки типу use-after-free та double-free. Постійна боротьба з непередбачуваними крашами та занепокоєння щодо стабільності системи стали каталізатором для сміливого рішення — повного перенесення кодової бази на Rust.

Перехід на Rust був продиктований не просто модою, а прагматичним прагненням до безпеки. У Rust концепції володіння та запозичення (ownership і borrowing) переносять перевірку коректності роботи з пам'яттю з етапу виконання на етап компіляції. Те, що в Zig призводило до падіння програми в продакшені, у Rust стає помилкою, яку неможливо ігнорувати під час збірки.

Масштаби завдання виглядали приголомшливо: понад 535 тисяч рядків коду на Zig потребували перекладу на нову мову. За найоптимістичнішими прогнозами, команда інженерів витратила б на це близько року, що фактично означало б зупинку розвитку продукту. Рішенням став не просто «розумний промпт», а розгортання складної агентної інфраструктури.

Фундаментом, що зробив цей стрибок можливим, став масивний набір тестів на TypeScript. Оскільки тести були написані мовою високого рівня і не залежали від внутрішньої реалізації рантайму, вони стали «золотим еталоном». Мільйон перевірок гарантували: якщо нова версія на Rust проходить тести, вона поводиться ідентично оригіналу. Це дозволило перетворити процес міграції на ітеративне завдання з усунення розбіжностей.

Процес реалізації став справжнім тріумфом агентної інженерії. Замість одного чат-бота була задіяна ціла армія з 64 паралельних екземплярів Claude. Основна складність виникла під час спроби розбити моноліт на 100 окремих Rust-крейтів: боротьба з циклічними залежностями породила близько 16 000 помилок компіляції. Для людини такий обсяг правок став би непереборним бар'єром, але для розподіленої мережі ШІ-агентів це стало рутинним завданням.

Методологія була суворо вивірена: агенти групували помилки за файлами, виконували перевірку через cargo check і працювали в ізольованих циклах, не зачіпаючи git до завершення прогону. Найважливішим аспектом став підхід до виправлення помилок. Коли процес давав збій, розробник не правив код вручну — він коригував сам алгоритм роботи агентів, оптимізуючи цикл генерації.

Результати виявилися вражаючими. За 11 днів кількість тестів, що падали, скоротилася з майже тисячі файлів до кількох одиниць, а згодом і зовсім обнулилася для всіх підтримуваних операційних систем. Мільйон рядків Rust-коду були інтегровані в основну гілку лише через шість днів після відкриття пул-реквесту.

Проте така стрімка міграція залишила свій слід. Аналіз нової кодової бази виявив понад 13 000 блоків unsafe. В екосистемі Rust використання unsafe дозволяє обходити суворі перевірки компілятора заради продуктивності або взаємодії з низькорівневим API, але надлишок таких блоків може нівелювати переваги мови в плані безпеки. Це вказує на те, що прямий порт коду за допомогою ШІ, навіть за умови ідеального проходження тестів, може призвести до створення технічного боргу, який доведеться розгрібати в майбутньому.

Кейс Bun стає важливим прецедентом для всієї індустрії. Він демонструє, що ШІ переростає стадію «помічника в написанні функцій» і стає інструментом для масштабної структурної трансформації ПЗ, перетворюючи багатомісячні міграції на завдання кількох днів.

Тала знає • Використання матеріалів сайту дозволено виключно за умови розміщення активного, прямого і відкритого для пошукових систем гіперпосилання на першоджерело. Посилання має бути клікабельним і розташовуватися безпосередньо в тілі публікації — до або після запозиченого тексту. Будь-яке копіювання, відтворення або цитування контенту без дотримання цієї умови розглядається як порушення авторських прав.