Язык Goose «быстрее Rust»: как бенчмарк сравнялся после честной раскладки данных
Язык Goose, написанный ИИ, показывал выигрыш над Rust в 1,9 раза по скорости и в 1,8 раза по памяти. Блогер MrTeamlead заметил, что в Rust-версии строки лежат в куче, а в Goose — внутри структуры. Стоило выровнять раскладку, и результат стал 46,7 против 46,5 мс. Автор Goose после критики убрал спорный бенчмарк из репозитория.
AI-обработка оригинала Habr AI; редакция Hamidun News
Проект Goose обречён на холивар: ИИ написал язык программирования, который якобы быстрее C++ и Rust. Холивар оставим болельщикам. Куда интереснее артефакты, которые остались после споров: они показывают, как устроены такие сравнения и где в них прячется подвох.
Что нашёл MrTeamlead
В двух роликах блогер MrTeamlead разбирает бенчмарк records_fixed.goose. По заявлению авторов, Goose выигрывает у Rust-версии по памяти в 1,8 раза и по скорости в 1,9 раза. Блогер показывает, что Rust-код можно ускорить в 6,7 раза, если добавить распараллеливание.
Разбор автора статьи на Habr показывает, что ключевых правок две:
- Vec::new() заменили на Vec::with_capacity(N). Правка спорная: бенчмарк моделирует поток событий, и их число заранее неизвестно.
- String заменили на MyString с хранением до 15 символов прямо внутри события. Эта правка честная.
В Goose-версии текст лежит внутри записи, а в Rust-версии — в куче через String. Раскладки данных разные, поэтому сравнение нечестное. Когда текст положили в Rust так же, результат стал 46,7 против 46,5 мс. По сути, блогер написал недостающий records_fixed.rs.
У Goose есть и другой бенчмарк, records_var.goose, где длина слова (4–15 букв) — параметр генерации данных, а не известный коду размер. Для него records.rs остаётся корректной парой. Автор Goose ответил на критику так: records_fixed был лишь иллюстрацией, настоящий бенчмарк — records_var. Спорный файл он убрал из репозитория.
Как Goose работает с памятью
Главная идея — data stacks. Это не стеки вызовов, в них нет кадров функций, только данные. Освобождаются они как стек: при выходе из области видимости вершина сдвигается назад. Память резервируется заранее, но подключается к процессу лениво.
Компилятор считает число data stacks на этапе компиляции по самой глубокой цепочке вызовов. Учитываются только функции, которые держат растущие массивы, и нужно максимальное число таких массивов, живых одновременно. Во время работы новые стеки не появляются, а завершившаяся функция отдаёт свой стек следующим вызовам. Цена такого подхода — ограничения для рекурсии. В момент рекурсивного вызова у функции не должно быть живых растущих массивов. Всё, что должно пережить вызов, создаётся снаружи и передаётся по ссылке.
На примере заказа с двумя позициями (id, имя клиента, список товаров) разница видна сразу:
- Goose: 29 байт на заказ и ноль выделений в куче.
- Rust: 233 байта при сборке через collect и 153 после shrink_to_fit(), плюс четыре выделения в куче.
То же самое можно сделать и на C, ведь Goose — транспайлер. Но руками это хрупко: смотреть можно, менять опасно.
Что это значит на практике
Первый вывод касается честности замеров. Перед сравнением «язык А быстрее языка Б» проверьте, лежат ли данные в одинаковой раскладке. Часто выигрывает не язык, а размещение данных в памяти. Второй вывод — про вайб-кодинг. Если ИИ пишет код, а на ревью почти нет времени, язык с предсказуемой памятью без куч и аллокаторов снижает риск получить медленное решение по умолчанию. Для таких сценариев Goose выглядит убедительнее Rust, где «наивный» код легко оказывается неэффективным.
Ограничения тоже важны. Goose выигрывает там, где много выделений памяти и вычисления идут в одном потоке. Чтобы сравняться в чистых вычислениях, ему нужны параллельные циклы (par for) и векторизация (simd for), и их ещё предстоит реализовать. Для масштаба: репозиторию меньше трёх месяцев (август 2026 года), а Rust шёл до rayon пять с половиной лет. Фундаментальные проблемы языка при этом никуда не делись.
Главный урок шире одного проекта. Orca, о которой автор статьи пишет в конце, стартовала в марте 2026 года и набрала почти 17 тысяч коммитов и более шести миллионов строк кода вместе с тестами. Раньше такой язык остался бы пет-проектом на годы. Теперь скорость создания инструментов с ИИ такова, что «чёрные гуси-лебеди» стали реальностью. Бенчмарки же нужно перепроверять сразу.
- 29 мая 2026 г.Rust спасёт Linux от проблем с AI-кодом, считает Грег Кроа-Хартман
- 24 окт. 2026 г.Состояние IT в 2026: агенты писали больше кода, чем люди
- 12 окт. 2026 г.Разработчик переписал семь приложений Adobe на Rust и открыл код
- 16 мая 2026 г.LLM пишут Rust с семью категориями скрытых ошибок, которые компилятор не ловит
Вопросы и ответы по материалу
Что известно по теме: что нашёл MrTeamlead?
В двух роликах блогер MrTeamlead разбирает бенчмарк records_fixed.goose. По заявлению авторов, Goose выигрывает у Rust-версии по памяти в 1,8 раза и по скорости в 1,9 раза. Блогер показывает, что Rust-код можно ускорить в 6,7 раза, если добавить распараллеливание. Разбор автора статьи на Habr показывает, что ключевых правок две: Vec::new() заменили на Vec::with_capacity(N). Правка спорная: бенчмарк моделирует поток событий, и их число заранее неизвестно.
Что известно по теме: как Goose работает с памятью?
Главная идея — data stacks. Это не стеки вызовов, в них нет кадров функций, только данные. Освобождаются они как стек: при выходе из области видимости вершина сдвигается назад. Память резервируется заранее, но подключается к процессу лениво. Компилятор считает число data stacks на этапе компиляции по самой глубокой цепочке вызовов. Учитываются только функции, которые держат растущие массивы, и нужно максимальное число таких массивов, живых одновременно.
Что известно по теме: что это значит на практике?
Первый вывод касается честности замеров. Перед сравнением «язык А быстрее языка Б» проверьте, лежат ли данные в одинаковой раскладке. Часто выигрывает не язык, а размещение данных в памяти. Второй вывод — про вайб-кодинг. Если ИИ пишет код, а на ревью почти нет времени, язык с предсказуемой памятью без куч и аллокаторов снижает риск получить медленное решение по умолчанию. Для таких сценариев Goose выглядит убедительнее Rust, где «наивный» код легко оказывается неэффективным. Ограничения тоже важны.
Протестируйте новые LLM и мультимодальные модели в одном окне
Платформа Nomad AI (nomadnet.ai) даёт прямой доступ к Claude Opus 5.5, GPT-6, Gemini 3.1, DeepSeek и автономным агентам без VPN, зарубежных карт и зоопарка подписок.
Главное из мира ИИ — раз в неделю
7 ключевых событий недели, отобранных вручную. Без шума, репостов и пресс-релизов.
Готово! Проверьте почту — мы отправили подтверждение.