Собранный компилятор Opus 4.6 не прошёл независимый бенчмарк Обложка: Skyread

Собранный компилятор Opus 4.6 не прошёл независимый бенчмарк

Новости
Главное:

  • Anthropic представила C-компилятор CCC, написанный ИИ Claude Opus 4.6 на Rust.
  • В независимом тестировании CCC проиграл GCC по производительности в SQLite в сотни и тысячи раз.
  • Хотя компиляция исходников ядра Linux прошла успешно, сборка итогового работающего образа vmlinux оказалась невозможной из-за ошибок линковки.

На прошлой неделе компания Anthropic объявила о создании CCC (Claude’s C Compiler) — полноценного компилятора языка C, разработанного с помощью искусственного интеллекта Claude Opus 4.6 и написанного на языке Rust. В рекламе продукта утверждалось, что компилятор способен успешно собрать ядро операционной системы Linux.

Однако независимое тестирование, проведённое автором технического блога Harshanu, выявило существенные проблемы в работе CCC. На популярном бенчмарке SQLite версия CCC скомпилированного кода выполнила тест более чем за 2 часа, в то время как GCC без оптимизации справился с задачей всего за 10,3 секунды. Такое отставание составило порядка 737 раз, а при выполнении сложных запросов с вложенными подзапросами разница доходила до 158 тысяч раз. Основной причиной называют примитивный способ распределения регистров: CCC использует один регистр в качестве «челнока» для обращения к ячейкам стека, что существенно замедляет операционные инструкции и увеличивает требуемый размер бинарных файлов в 2,7–3 раза. Сам же компилятор потреблял в почти 6 раз больше оперативной памяти.

Ситуация с компиляцией ядра Linux версии 6.9 оказалась неоднозначной: CCC действительно смог полностью обработать 2844 исходных файла на C без ошибок компиляции. В то же время этап линковки завершился более чем 40 тысячами ошибок undefined reference из-за неправильной генерации релокаций для структур __jump_table и __ksymtab. В итоге собрать рабочий бинарник vmlinux не удалось. Заявление Anthropic о возможности собрать ядро корректно лишь формально, поскольку учитывает только этап компиляции кода, но не получение работоспособного образа ядра.

Дополнительно следует отметить, что флаги оптимизации -O2 и -O3 у CCC не влияют на генерируемый код: бинарники во всех случаях совпадают побайтно. Компилятор всегда запускает 15 проходов SSA-оптимизации, однако отсутствуют современные методы оптимизации, такие как инлайнинг функций, развёртка циклов или векторизация. Кроме того, из коробки CCC не способен собрать даже простую программу Hello World на популярных дистрибутивах Linux (Ubuntu и Fedora) из-за ошибок в путях к системным заголовкам, что вызвало значительный резонанс в сообществе.

Несмотря на масштабность проекта — ИИ написал порядка 100 тысяч строк компилятора, корректно разбирающего реальный C-код, — на текущем этапе его практическая ценность ограничена. За две недели и с бюджетом около $20 000 API не удалось воспроизвести накопленные за десятилетия усилия и оптимизации компиляторов типа GCC.

Tagged