Открыт код C++ компилятора Zapcc

Израильская компания Ceemple Software открыла исходные тексты C++ компилятора Zapcc, основанного на наработках Clang/LLVM и отличающегося очень высокой скоростью компиляции, благодаря активному применению кэширования различных этапов сборки. Компилятор может выступать в роли прозрачной замены clang и gcc, и поддерживает интеграцию с любыми системами сборки. Исходные тексты открыты под лицензией LLVM.

Особенно заметное увеличение скорости сборки наблюдается для проектов на C++ с большим число заголовочных файлов с шаблонами, таких как ScyllaDB, Webkit и LLVM, для проектов на Си ускорение менее заметно. Например, при тестировании производительности типовая повторная пересборка Boost.Math при помощи Zapcc производится в 10–50 раз быстрее по сравнению с Clang, а время полной сборки WebKit быстрее в 2–5 раз. Сборка Clang при помощи Zapcc выполняется в два раза быстрее, чем сборка Clang при помощи Clang. По умолчанию для кода на языке Си кэширование отключается, поэтому компилятор Zapcc актуален только для проектов на C++.

Высокая скорость сборки достигается применением специального фонового процесса (zapccs), который поддерживает в оперативной памяти кэш компиляции, в котором сохраняется информация о всех этапах сборки между разными запусками компилятора. Запускаемого для компиляции приложение zapcc, поддерживающее полный набор опций Clang, выступает в роли клиента к серверу zapccs. Запуск сервера осуществляется автоматически. Качество и производительность итогового генерируемого кода аналогичны Сlang.

©  OpenNet