Claude Code теперь работает на Bun, переписанном на Rust
Как Jarred Sumner переписал 535 тысяч строк Zig-кода на Rust за 11 дней с помощью Claude — и почему это незаметно для пользователей.
Тихая революция под капотом Claude Code
Если вы пользуетесь Claude Code — AI-ассистентом для разработчиков от Anthropic — хорошая новость: начиная с версии v2.1.181 он работает быстрее. Плохая новость: вы, скорее всего, этого не заметили. И это именно то, чего хотели инженеры.
Claude Code v2.1.181, выпущенный 17 июня, и все последующие версии используют Rust-порт Bun. Время запуска на Linux ускорилось на 10%, но в остальном — почти никто не заметил разницы. Скучно — это хорошо.
Но за этим «скучным» результатом скрывается одна из самых амбициозных инженерных операций 2026 года: полный переезд среды выполнения JavaScript с языка Zig на Rust — за 11 дней, силами десятков параллельных AI-агентов.
Что такое Bun и почему это важно
Bun — это JavaScript-рантайм (среда выполнения), на котором работает Claude Code. CLI Bun скачивают более 22 миллионов раз в месяц, а такие популярные инструменты, как Claude Code и OpenCode, сделали ставку на Bun как на свой рантайм.
Изначально Bun создавался как построчный порт транспайлера JavaScript и TypeScript из esbuild — переписанный с Go на Zig. Первоначальная версия Bun была написана одним человеком за год — в тесной квартире в Окленде, без LLM, на Zig.
Почему Zig → Rust: проблема памяти
Zig — язык системного уровня без сборщика мусора. Это давало Bun колоссальную производительность, но создавало хроническую проблему: в коде регулярно появлялись ошибки управления памятью.
Проблемы с безопасностью памяти никуда не уходили. Смешение ручного управления памятью Zig со сборщиком мусора JavaScriptCore порождало повторяющиеся баги — use-after-free (обращение к освобождённой памяти), double-free (двойное освобождение) и утечки памяти. Borrow checker Rust перехватывает эти ошибки на этапе компиляции.
Только в версии 1.3.14 было зафиксировано целое созвездие проблем: heap-use-after-free в node:zlib, use-after-free в node:http2 и целый ряд ошибок повреждения памяти, которые fuzzing-тесты ловили уже постфактум.
«Когда ваш рантайм обеспечивает работу production-систем других людей, “мы стараемся быть осторожными” — это не гарантия безопасности.»
Bun был приобретён Anthropic в конце 2025 года. Как написал Jarred Sumner в блоге Bun, Claude Code поставляется как Bun-исполняемый файл для миллионов пользователей. Если Bun ломается — ломается Claude Code. Такие ставки требуют максимально закалённой кодовой базы. Rust отвечает этому требованию лучше, чем Zig сегодня.
Как переписать 535 000 строк кода за 11 дней
Jarred Sumner опубликовал технические подробности переписывания Bun с Zig на Rust: 535 496 строк кода были переведены за 11 дней с помощью Claude.
Процесс был отнюдь не «напиши промпт и жди».
Шаг 1: Подготовка (3 часа)
Прежде чем написать хоть строчку кода, Jarred потратил около 3 часов в разговоре с Claude — обсуждая, как максимально точно перенести паттерны из Zig-кодовой базы в Rust. Результатом стал подробный документ с правилами трансляции — своеобразный «словарь» перевода между языками.
Шаг 2: Пробный запуск + состязательное ревью
Сначала — пробный запуск: попросить Claude переписать три файла из 1 448. После переписи Jarred провёл два отдельных состязательных ревью (adversarial review) с Claude — в сессиях, отдельных от той, в которой Claude вносил изменения, чтобы критик не совпадал с автором кода.
Шаг 3: 64 параллельных агента
Работа была разбита так, чтобы агенты работали с независимыми файлами параллельно — до 64 экземпляров Claude одновременно.
Шаг 4: Координация воркфлоу (~1 день)
При попытке запустить всё это агенты начали мешать друг другу: один Claude делал git stash до коммита, другой — git stash pop, третий — git reset HEAD –hard. Они наступали друг другу на ноги!
В итоге всё разбили на 4 шарда воркфлоу, каждый со своим worktree, каждый управлял 16 Клодами, которые коммитили и пушили файлы.
Шаг 5: Исправление ~1 600 ошибок компилятора (~12 часов)
После завершения переписи — ничего не компилировалось. Крейт за крейтом (crate — единица компиляции в Rust) Jarred просил Claude исправить ошибки компилятора.
graph TD
A[Подготовка: 3 часа с Claude\nСоздание правил трансляции Zig→Rust] --> B[Пробный запуск:\n3 файла из 1448]
B --> C[Состязательное ревью\nАдверсариальный Claude-критик]
C --> D[64 параллельных агента\n4 worktree × 16 Claude]
D --> E[~2 дня: 535 496 строк\n6502 коммита]
E --> F[Исправление 1600 ошибок\nкомпилятора — 12 часов]
F --> G[Финальный мёрдж PR\n1.01M строк Rust]
G --> H[Claude Code v2.1.181\n+10% скорость запуска на Linux]
Цена вопроса
Привилегия работы в Anthropic — не нужно платить за токены. Очень кстати, когда предполагаемая стоимость составляет $165 000. До мёрджа процесс потребил 5,9 миллиарда некэшированных входных токенов, 690 миллионов выходных токенов и 72 миллиарда кэшированных входных токенов — около $165 000 по ценам API.
При $165 000 в стоимости API-запросов плюс 11 дней работы Jarred’а — это было недёшево. Но, как отметили несколько комментаторов, наём команды для ручной переписи 535 000 строк обошёлся бы значительно дороже.
Результаты: что изменилось
Производительность
Bun v1.3.14 стал последней версией, написанной на Zig. Bun v1.4.0 — первой версией, написанной на Rust.
Вот реальные бенчмарки из официального поста Bun:
| Сервер / сценарий | Bun v1.3.14 (Zig) | Bun v1.4.0 (Rust) | Δ |
|---|---|---|---|
| Bun.serve (HTTP req/s) | 169 600 | 177 700 | +4.8% |
| node:http | 103 800 | 108 500 | +4.5% |
| Elysia | 158 900 | 163 300 | +2.8% |
| express | 64 500 | 66 600 | +3.2% |
| next build | 13.62 с | 13.03 с | +4.5% |
| tsc -b –force | 0.94 с | 0.89 с | +4.7% |
В сочетании с переписью на Rust, изменениями ICU и identical code folding, размер бинарника Bun на Linux и Windows уменьшился примерно на 20%.
Безопасность памяти
Rust-переписанная версия достигла 99,8% совместимости тестов на Linux x64 glibc.
Фокус переписи — стабильность, но было бы невозможно провести такое масштабное изменение и не внести ни одной регрессии. Переписывание добавило 19 известных регрессий, каждая из которых была впоследствии исправлена.
Команда сообщает о полном прохождении тестового набора на всех 6 платформах: macOS, Linux, Windows — каждая на x64 и arm64.
Как проверить самостоятельно
Симон Уиллисон (Simon Willison) описал простой способ убедиться, что ваш Claude Code действительно использует Bun на Rust. Достаточно выполнить одну команду в терминале:
strings ~/.local/bin/claude | grep -m1 'Bun v1'
Для пользователей macOS путь к бинарнику может отличаться. Если вывод показывает Bun v1.4.0 или выше — вы уже используете Rust-версию.
Bun v1.4.0 (macOS arm64). Это подтверждает, что Claude Code использует Bun, переписанный на Rust.Споры и критика
Переписывание вызвало оживлённые дискуссии в сообществе.
На Hacker News несколько комментаторов усомнились в том, что AI-генерированный код в таком масштабе может быть поддерживаемым: «535 000 строк за 11 дней? При 8-часовом рабочем дне это 100 строк в минуту. Вы никак не можете полноценно ревьюить код с такой скоростью».
Создатель языка Zig, Эндрю Келли (Andrew Kelley), не захотел, чтобы его проект считали виновником проблем Bun, — причину он видит в плохих практиках программирования самого Sumner’а.
Второй pull request, удаляющий более 600 000 строк Zig-кода, был автоматически помечен GitHub как «AI slop» (AI-мусор) и закрыт — хотя впоследствии, очевидно, появится в другом виде.
За: Код уже в production, тесты проходят на всех платформах, пользователи не заметили регрессий.
Против: Ни один человек не читал весь сгенерированный код целиком. Скрытые баги могут проявиться под специфической нагрузкой в production.
Что это значит для индустрии
Это детальное описание чрезвычайно сложного агентного инжиниринга: динамические воркфлоу, пробные запуски, состязательное ревью и множество других интересных приёмов.
LLM-перевод кода уже готов к production — для определённых паттернов. Механические, строчка-за-строчкой переносы между похожими языками работают. Трансляция сохранила архитектуру Bun, добавив гарантии безопасности Rust. Это принципиально отличается от просьбы к AI спроектировать систему с нуля.
Воркфлоу Sumner’а запускал агента-«писателя» параллельно с двумя агентами-«ревьюерами», чья единственная задача — найти причины, по которым код может не работать. Именно этому подходу приписывается обнаружение use-after-free в коде порождения процессов до мёрджа.
Скучный результат для конечных пользователей — это не провал. Это высший пилотаж инженерии.
Когда миллионы разработчиков используют инструмент и никто не замечает, что его фундамент был полностью переписан за 11 дней — значит, всё сделано правильно.