LINUX.ORG.RU

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

 , , , ,


2

7

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

Данный компилятор заметно ускоряет компиляцию C++, но для C это не настолько заметно, к примеру сборка Boost.Math производится в 10 раз быстрее чем у clang, сборка Webkit происходит в 2-4 раза быстрее, сборка Clang при помощи Zapcc выполняется в два раза быстрее, чем самим Clang.

Высокая скорость компиляции достигается применением zapccs, непосредственно выполняющего компиляцию и поддерживающего в оперативной памяти кэш компиляции, в котором между разными запусками сохраняется информация о всех этапах сборки.

>>> Сборка Boost.Math

>>> Сборка WebKit

>>> Официальный сайт проекта

>>> Репозиторий на GitHub

>>> Подробности

★★

Проверено: Shaman007 ()

Как раз недавно хотел поспрашивать о судьбе одного громкого открытия Открыт код компилятора EKOPath 4, произошедшего ровно 7 лет назад. Дорогой был:

До этого компилятор выпускался под проприетарной лицензией, стоимость одной лицензии составляла порядка $2000.

Быстрый:

Генерирует значительно более быстрый код, чем GCC

Да ещё и с оптимизациями:

Оптимизации под x86_64 (Intel® 64/AMD64, поддержка Intel® MMX™, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AMD SSE4A и AVX)

Обещали, что навеки свободным будет:

http://www.path64.org/open-source-promise.html

И... пропал. Оказалось, не просто закрыли снова, а и удалили из публичного доступа даже то, что было вместе с баг-трекером.

В поисках натолкнулся на этот zapcc. Но и он оказался закрытым. Вот так сюрприз сейчас. Но надолго ли...

gag ★★★★★ ()

сборка Boost.Math производится в 10 раз быстрее

Так сборка или пересборка? Так как если он кеширующий, то при первой сборки никакого кеша ещё нет.

RazrFalcon ★★★★ ()
Ответ на: комментарий от RazrFalcon

если он кеширующий, то при первой сборки никакого кеша ещё нет.

«Zapcc uses in-memory compilation cache in client-server architecture, remembering all compilation information between runs. ‘zapcc’ is the client while ‘zapccs’ is the server.» // К.О.

Но, насколько я понимаю, кэш у них более сложный, чем ccache или precompiled headers.

tailgunner ★★★★★ ()

данный компилятор отличается высокой скоростью ...

Данный компилятор заметно ускоряет

Стесняюсь спросить, в каком полку служил данный индивидуум?

anonymous ()

сборка Boost.Math производится в 10 раз быстрее чем у clang

Так. А если шлангом компилять с ssd, а этим с винта? В смысле стоило ли упарываться оптимизацией?

anonymous ()
Ответ на: комментарий от RazrFalcon

Палю: для компиляции чего угодно, сложнее хелло ворлда используются больше одного запуска компилятора.

Алсо, ты в каждом треде про плюсы будешь или какую-то дичь писать с умным видом, или что-то вякать про rust? А почему сейчас не про rust?

Kuzy ★★ ()
Ответ на: комментарий от BitSum

ICC 18ый, который для опенсорсников фри - наше всё!

который бесплатно дают только при наличии своего открытого проекта? свои варианты решений задач из K&R подойдут?

grem ★★★★★ ()
Ответ на: комментарий от o-

Actively contribute to an open-source project

ну тогда фактически заниматься разработкой на регулярной основе,
хотя как знать, может им и 5 коммитов достаточно будет

похоже, что вряд ли

Who does Intel consider an open source contributor?

Developers making source contributions to open source projects. The open source project must provide significant software application capabilities in science, engineering, business, or other areas of computing.

да и рассматривают не что попало

grem ★★★★★ ()
Последнее исправление: grem (всего исправлений: 2)
Ответ на: комментарий от grem

Когда я подавал заявку у меня было несколько десятков простых коммитов в открытый клон игры с моей аватарки. Ничего, выдали лицензию на Intel Parallel Studio (туда входит ICC) без проблем. Собственно есть похожий опыт от других людей которые получали лицензию.

Просто напиши в описании проекта, что ты например хочешь провести анализ производительности проекта N и подготовить для него патчи и тебе для этого нужны их тулзы. Ну или напиши любое другое правдоподобное описание почему ты хочешь попробовать ICC там и.т.п.

Если у тебя профиль на гитхабе не совершенно пустой никаких проблем не будет, ИМХО.

o- ()
Ответ на: комментарий от o-

Спасибо за информацию. В таких случаях и подтверждать лицензию не сложно каждый 12 месяцев. Если туда и ifc входит, то вообще замечательно. Можно тогда при наличии времени сравнить на чём-нибудь gcc, pgi и ifc, если найти какой-нибудь подходящий код.

grem ★★★★★ ()

Высокая скорость компиляции достигается применением zapccs, непосредственно выполняющего компиляцию и поддерживающего в оперативной памяти кэш компиляции

Вот что в ПК 64Гб оперативки делают!

Napilnik ★★★★★ ()

Попробовал один рабочий проект этим собрать, а то раньше можно было на обед уходить во время компиляции. Ну что я могу сказать: не работает, не поддерживает целую кучу флагов.

ZERG ★★★★ ()
Ответ на: комментарий от ozz_is_here

Гентушники обрадуются в 20-х годах, когда софт начнёт потихоньку мигрировать на С++модули. А сабж - это полумеры, причём сомнительные: не может выигрыш в скорости быть бесплатным в качестве.

dimgel ()
Ответ на: комментарий от RazrFalcon

То есть «холодная» компиляция та же?

Судя по их описанию, холодная тоже может ускориться, если какой-то заголовочный файл переиспользуется много раз, если много раз инстанциируются одинаковые темплейты. В отличие от PCH, zapcc кэширует не только хедеры с темплейтами и прочим, но и инстанциации этих темплетов в коде.

anonymous ()
Ответ на: комментарий от ncrmnt

Хочется кеширования - есть ccache в tmpfs в связке со шлангом/гцц

Нету. Врубитесь уже: речь о кешировании внутренних структур, никакая связка это не решает.

anonymous ()
Ответ на: комментарий от anonymous

Повторю свой вопрос: Что там с поддержкой стандартов языков С/С++, поддерживаемыми архитектурами, и оптимизациями под конкретные архитектуры. Это самое главное. Под многие архитектуры даже шланга нет, только гцц. Скорость компиляции полезно, но далеко не критично. В 99% ccache дает достаточно ускорения для комфортной работы даже с большими проектами.

ncrmnt ★★★★★ ()
Последнее исправление: ncrmnt (всего исправлений: 1)
Ответ на: комментарий от ncrmnt

Повторю свой вопрос:

О да, сделай это еще раз!

Что там с поддержкой стандартов языков С/С++, поддерживаемыми архитектурами, и оптимизациями под конкретные архитектуры.

Ответ на твой вопрос дан в FAQ проекта. Ссылку на него я специально не привожу.

tailgunner ★★★★★ ()
Ответ на: комментарий от anonymous

У них мутно как-то описано. Особенно учитывая что для Си кеширование отключено, ибо бесполезно (по их словам).

Нужны независимые бенчи и толковое описание алгоритма работы.

RazrFalcon ★★★★ ()

Сборка Boost.Math

картинки не поддерживают loop, а ведь хочется смотреть на это снова и снова. Это я к тому, что можно было бы просто указать ускорение относительно аналога.

early_britney_fun ★★★★ ()
Последнее исправление: early_britney_fun (всего исправлений: 1)
Ответ на: комментарий от RazrFalcon

Особенно учитывая что для Си кеширование отключено, ибо бесполезно (по их словам).

И что, тебе непонятно почему это так?

толковое описание алгоритма работы

Общая идея ясна как свет и давно напрашивалась.

anonymous ()
Ответ на: комментарий от Kuzy

Почти на любом проекте простое включение pch с каким-нибудь бустом ускоряет ПЕРЕСБОРКУ (часто в несколько раз).

PCH работает между различными единицами трансляции и ускоряет как раз холодную сборку. Пересборка с PCH даёт прирост скорости только если не был модифицирован сам header-файл, иначе цепочкой будут пересобираться всё, даже те исходники, что этот файл не используют, но включают его ради использования кеша прекомпиляции.

Dendy ★★★★★ ()
Ответ на: комментарий от dimgel

в 20-х годах, когда софт начнёт потихоньку мигрировать на С++модули

С чего это вдруг упоротным линусксоидам-фанатам сишечки начинать мигрировать на C++?

makoven ★★★★★ ()