Открыт код C++ компилятора Zapcc
Как сообщает opennet.ru израильская компания 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.