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 ()
Последнее исправление: cetjs2 (всего исправлений: 1)
Ответ на: комментарий от ozz_is_here

Ну почему же? Я вот решился изучать C++, мне и на федоре понравилось использовать

playX ★★
() автор топика

Как раз недавно хотел поспрашивать о судьбе одного громкого открытия Открыт код компилятора 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 ★★★★★
()
Ответ на: комментарий от buddhist

Вопрос

А почему бы не скооперироваться с командой LLVM/Clang и не передать разработки туда, для включения этих оптимизаций в Clang?

Ptomaine
()

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

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

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

значительно более быстрый код

очень сомнительное утверждение

ZERG ★★★★★
()
Ответ на: комментарий от 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
()
Ответ на: комментарий от tailgunner

remembering all compilation information between runs
between runs

То есть «холодная» компиляция та же? Нужны нормальные бенчи.

PS: на сайте у них везде recompile. Походу ТС налажал.

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

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

«Холодная» - это с запуском нового сервера? Да. Но это бывает крайне редко.

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

Просто в новости ни слова про пересборку.

Потому что оно ускоряет не только пересборку (сужу по FAQ).

tailgunner ★★★★★
()

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

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

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

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

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

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

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

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

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

https://github.com/somian/Path64 — не он?

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

Что сказать-то хотел?

Разжевываю:

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

Переходим по ссылке:

Incremental Build of Boost.Math

Стало понятней?

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

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

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

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

который бесплатно дают только при наличии своего открытого проекта?

Почему именно своего? Достаточно просто быть контрибутором куда либо.

o-
()
Ответ на: комментарий от 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 ★★★★★
()
Ответ на: комментарий от dimgel

не может выигрыш в скорости быть бесплатным в качестве.

Может, если ценой требования к другим ресурсам.

В частности здесь, как я понял - к оперативке.

Scondo
()

Стесняюсь спросить: а как насчет качества и быстроты сгенерированного кода?

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

Код генерирует LLVM, а это проект — мод фронтенда (clang).

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

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

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

anonymous
()

Хочется кеширования - есть ccache в tmpfs в связке со шлангом/гцц. А как у него с оптимизациями, поддержкой стандартов и прочим?

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

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

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

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

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

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

Не включает оптимизации для процессоров AMD.

Чем и плох.

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

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

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

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

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

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

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

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

RazrFalcon ★★★★★
()

Сборка Boost.Math

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

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

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

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

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

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

anonymous
()

Уже в ауре :D

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

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

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

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

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

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

makoven ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.