The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Открыт код C++ компилятора Zapcc, opennews (?), 18-Июн-18, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


79. "Открыт код C++ компилятора Zapcc"  +/
Сообщение от КО (?), 18-Июн-18, 16:36 
>Это, скорее, компилятор для рабочих станций, где идёт разработка.

Можно и на серверах для автоматических тестов гонять.

Просто люди изобрели флажок precompiled headers (см. какой-нибудь Borland C годов так 90х прошлого тысячелетия) и засунули его в отдельный процесс (клиент-сервер все дела). Так что если раньше можно было прекомпилированные части выкладывать в файл, а тот уж хошь в tmpfs, хошь в zram. То теперь жестко в памяти процесса.

Ответить | Правка | Наверх | Cообщить модератору

82. "Открыт код C++ компилятора Zapcc"  –1 +/
Сообщение от PereresusNeVlezaetBuggy (ok), 18-Июн-18, 16:52 
>>Это, скорее, компилятор для рабочих станций, где идёт разработка.
> Можно и на серверах для автоматических тестов гонять.

А вот это не всегда хорошая идея. С тем же ccache я уже натыкался на сбои; с прекомпилированными заголовками тоже бывали проблемы — правда, последнее было давно, неправда и под виндой, когда я был куда моложе и глупее. Лучше, ИМХО, дать железке больше работы и сэкономить своё время за счёт не-разбора сбоев при сборке.

> Просто люди изобрели флажок precompiled headers (см. какой-нибудь Borland C годов так
> 90х прошлого тысячелетия) и засунули его в отдельный процесс (клиент-сервер все
> дела). Так что если раньше можно было прекомпилированные части выкладывать в
> файл, а тот уж хошь в tmpfs, хошь в zram. То
> теперь жестко в памяти процесса.

Разве всё в памяти? Я так понял, что процесс нужен только как интерфейс к БД (кешу), который может прекрасно жить на диске.

Ответить | Правка | Наверх | Cообщить модератору

99. "Открыт код C++ компилятора Zapcc"  +/
Сообщение от Orduemail (ok), 18-Июн-18, 19:38 
> прекомпилированные части выкладывать в файл

Это значит сериализовать содержимое памяти компилятора, а потом десериализовывать его на каждый запуск компилятора, коих могут быть сотни и тысячи на проект. Куча сложностей с (де)сериализацией и дополнительные тормоза. Зачем всё это?

Ответить | Правка | К родителю #79 | Наверх | Cообщить модератору

104. "Открыт код C++ компилятора Zapcc"  –2 +/
Сообщение от Vkni (ok), 18-Июн-18, 20:35 
> Это значит сериализовать содержимое памяти компилятора, а потом десериализовывать его
> на каждый запуск компилятора, коих могут быть сотни и тысячи на
> проект. Куча сложностей с (де)сериализацией и дополнительные тормоза. Зачем всё это?

mmap + подходящая структура данных (базирующаяся на POD) спасет отца русской демократии. Если файл находится в /dev/shm, то без обращения эти данные даже через шину памяти не проходят.

Ответить | Правка | Наверх | Cообщить модератору

110. "Открыт код C++ компилятора Zapcc"  +1 +/
Сообщение от Orduemail (ok), 18-Июн-18, 21:52 
> mmap + подходящая структура данных (базирующаяся на POD) спасет отца русской демократии.
> Если файл находится в /dev/shm, то без обращения эти данные даже
> через шину памяти не проходят.

Вопрос "зачем эти сложности" не снимается упоминанием mmap и POD.

Ответить | Правка | Наверх | Cообщить модератору

160. "Открыт код C++ компилятора Zapcc"  +/
Сообщение от Vkni (ok), 22-Июн-18, 07:08 
> Вопрос "зачем эти сложности" не снимается упоминанием mmap и POD.

Ну скорость компиляторов ЦэПэПэ в разы увеличивается. Разумеется, необходимость этих извращений можно устранить просто введя в язык модули - см. Borland Pascal, Ocaml, Haskell и т.д., практически всё, кроме C и C++.

Ответить | Правка | Наверх | Cообщить модератору

157. "Открыт код C++ компилятора Zapcc"  +/
Сообщение от nuclightemail (??), 21-Июн-18, 21:04 
Кто такое POD? На ум только перловые доки приходят.
Ответить | Правка | К родителю #104 | Наверх | Cообщить модератору

159. "Открыт код C++ компилятора Zapcc"  –1 +/
Сообщение от Vkni (ok), 22-Июн-18, 07:06 
> Кто такое POD? На ум только перловые доки приходят.

Plain Old Data - терминология С++ников.

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

1. Атомарные и массивы - это уровень Fortran 66.
2. Графы из указателей - это LISP.
3. POD - это пришло из Кобола, сейчас в основном известно по C - структуры, занимающие сплошные блоки памяти.
4. Каналы, они же pipes.

Ну и всё остальное - это сочетания этих подходов.

Ответить | Правка | Наверх | Cообщить модератору

123. "Открыт код C++ компилятора Zapcc"  –1 +/
Сообщение от КО (?), 19-Июн-18, 08:49 
Об том и новизна решения.
Только вот, как только встанет вопрос как демону компилятору сообщить, мол то, что компилировал Вася нельзя сообщать Пете, или уж тем более заменять тем, который подсунул Петя. Или о том что и после перезагрузки и на другом узле кластера тоже можно не компилять stdio.h по тыще раз на дню если он уже дней сто как не меняется. Тут сериализация может быть и полезна. Даже если совершенно не будет покидать память.
Ответить | Правка | К родителю #99 | Наверх | Cообщить модератору

134. "Открыт код C++ компилятора Zapcc"  +2 +/
Сообщение от Orduemail (ok), 19-Июн-18, 11:38 
> Об том и новизна решения.
> Только вот, как только встанет вопрос как демону компилятору сообщить, мол то,
> что компилировал Вася нельзя сообщать Пете, или уж тем более заменять
> тем, который подсунул Петя.

Никак. Это не его проблемы. Обычный компилятор совершенно не парится тем, кто компилирует -- Вася или Петя, почему этот должен? Если Вася запустил себе такого демона, то как вообще Петя сможет до него достучаться?

> Или о том что и после перезагрузки
> и на другом узле кластера тоже можно не компилять stdio.h по
> тыще раз на дню если он уже дней сто как не
> меняется. Тут сериализация может быть и полезна. Даже если совершенно не
> будет покидать память.

Видимо, кластерная сборка -- это юзкейс не для этого компилятора? Для кластера надо использовать другой кеширующий компилятор.

zapcc для разработчика, который имея дома восьмиядерную тачку с 32Гб оперативки, тратит по полчаса на каждую пересборку проекта. Тебе не приходилось писать ebuild'ы? Самый убедительный тест ебилда -- это когда emerge отлично отрабатывает этот ебилд. Но если есть замечания по тому, как ебилд отработал, то мы немного исправляем и, таким образом, инвалидируем все предыдущие тесты. Было бы круто ещё раз прогнать ебилд от начала и до конца, но это же ещё полчаса сборки... Но ок, ебилд работает, а будет ли он работать если мы поменяем окружение? Заменим bash на dash, например? Если zapcc может ускорить пересборку в пять раз, значит мы сможем позволить себе в пять раз больше тестовых прогонов ebuild'а.

zapcc для разработчика, который выгребает из почты патчи, просматривает их, применяет, компилирует, подписывает и отправляет в мейнстрим. Если пересборка занимает полчаса, то производительность работы этого разработчика упрётся в скорость компиляции. Если пересборка занимает 5 минут, то компиляция перестанет быть бутылочным горлышком.

zapcc для разработчика, который своими руками что-то твикает в коде, и хочет затем убедиться, что это компилируется и работает, а для этого надо пересобрать весь проект со всеми тестами и посмотреть, что из этого выйдет. И, скорее всего, пересобрать неоднократно, потому что с первой попытки не заработает. А когда оно в конечном итоге заработает, неплохо бы сделать make clean; make, чтобы убедиться, что оно на самом деле собирается -- бывает, что make отрабатывает, а после make clean всё ломается. А иногда оно ломается в результате твиков, и make не отрабатывает, а make clean; make -- справляется.

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

Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру