Size: a a a

Compiler Development

2020 January 09

AZ

Alexander Zaitsev in Compiler Development
ну и про вещи уровня distcc, incredibuild, pch, unity(jumbo) builds и тому прочее
источник

O

Oriflame Holding AG in Compiler Development
Alexander Zaitsev
смотрите в сторону дебажных билдов и модулей (если мы говорим про С++)
вы неправильно поняли, изменил описание, без разницы какой яп, главное понять суть дабы реализовать у  себя в проекте (компиляторе)
источник

O

Oriflame Holding AG in Compiler Development
построение собственного многопоточного компилятора
источник

YS

Yuriy Syrovetskiy in Compiler Development
параллелизовать всё, что можно
источник

A

Alex in Compiler Development
Если говорить про обычный режим, то параллельность сборки достигается через Makefile. По крайней мере обычно есть много единиц трансляции, время сборки каждой в отдельности значительно меньше суммарного. В этом случае параллельная сборка каждого файла в отдельности не имеет большого смысла.

Ваш компилятор на какой режим работы рассчитан?
источник

AT

Alexander Tchitchigin in Compiler Development
Oriflame Holding AG
Интересно же как можно существенно ускорить компиляцию, чтобы компилить менее чем за секунду)) У го вроде бы компилятор многопоточный судя по коду
Посмотрите стримы Jonathan Blow - многопоточность тут не при чём. 😉
источник

YS

Yuriy Syrovetskiy in Compiler Development
Yuriy Syrovetskiy
параллелизовать всё, что можно
а для этого уменьшать логические связи между разными элементами
источник

O

Oriflame Holding AG in Compiler Development
Alex
Если говорить про обычный режим, то параллельность сборки достигается через Makefile. По крайней мере обычно есть много единиц трансляции, время сборки каждой в отдельности значительно меньше суммарного. В этом случае параллельная сборка каждого файла в отдельности не имеет большого смысла.

Ваш компилятор на какой режим работы рассчитан?
Много файлов, много единиц трансляции
источник

O

Oriflame Holding AG in Compiler Development
Yuriy Syrovetskiy
а для этого уменьшать логические связи между разными элементами
тоже так и думал, но к примеру разбивать файл на "блоки" для дальнейшего лексического и синтаксического анализа это бесполезно, так как если попадать на середину файла и на какой-то токен типа строкового литерала нужно будет шагать назад дабы понять что за синтаксическая конструкция используется. Я думаю есть смысл только в том чтобы уже с готового дерева проводить кодогенерацию распределив процессы
источник

A

Alex in Compiler Development
Тогда я бы ещё раз перепроверил необходимость параллелизма на уровне компилятора. Она может всплывать в режимах типа lto, при котором после парсинга кода компилятор должен видеть все функции из всех модулей. Это будет бутылочным горлышком в параллельной схеме, на этот случай рекомендую копнуть в сторону thinlto. На русском, к сожалению, материалов не припомню
источник

YS

Yuriy Syrovetskiy in Compiler Development
Oriflame Holding AG
тоже так и думал, но к примеру разбивать файл на "блоки" для дальнейшего лексического и синтаксического анализа это бесполезно, так как если попадать на середину файла и на какой-то токен типа строкового литерала нужно будет шагать назад дабы понять что за синтаксическая конструкция используется. Я думаю есть смысл только в том чтобы уже с готового дерева проводить кодогенерацию распределив процессы
да, конечно, ни текст, ни поток токенов не имеет смысла разбивать где попало. а список функций можно.

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

AT

Alexander Tchitchigin in Compiler Development
Oriflame Holding AG
тоже так и думал, но к примеру разбивать файл на "блоки" для дальнейшего лексического и синтаксического анализа это бесполезно, так как если попадать на середину файла и на какой-то токен типа строкового литерала нужно будет шагать назад дабы понять что за синтаксическая конструкция используется. Я думаю есть смысл только в том чтобы уже с готового дерева проводить кодогенерацию распределив процессы
Прежде чем браться за распараллеливание, хорошо бы убедиться в эффективности всех выбранных алгоритмов и структур данных применительно к задаче. Ибо закон Амдала. 😉
источник

I

Ilmir in Compiler Development
EgorBo
но что с ним будет если гугл на андроиде сделает дарт основным языком разработки?
Андроид сгниет из-за отсутсвия поддержки существующих приложений, как сгнил винфон.
источник

I

Ilmir in Compiler Development
EgorBo
а я котлин не понимаю. я за ним следил с самой первой беты, но в какой-то момент он стал слишком непонятным для меня, и я бы наверное предпочел Java, быть может с пятком фич повверх.
Никто не мешает ограничить язык сабсетом и закрепить его в документации проекта.
источник

I

Ilmir in Compiler Development
Constantine
мне так никто и не смог ответить, что такое можно сделать на котлине, чего нельзя сделать на джаве)
Написать код одновременно для JS, JVM/андроида и iOS.
источник

I

Ilmir in Compiler Development
Berkus Decker
Вот починенная джава и есть котлин
Ваши сведения устарели на где-то три мажорных релиза.
источник

I

Ilmir in Compiler Development
EgorBo
вроде котлин не решает эту проблему, не? разве что нейтив
Нет, не решает. Там претензии на АПИ, а джава АПИ не зависит от языка.
источник

O

Oriflame Holding AG in Compiler Development
Alex
Тогда я бы ещё раз перепроверил необходимость параллелизма на уровне компилятора. Она может всплывать в режимах типа lto, при котором после парсинга кода компилятор должен видеть все функции из всех модулей. Это будет бутылочным горлышком в параллельной схеме, на этот случай рекомендую копнуть в сторону thinlto. На русском, к сожалению, материалов не припомню
понял, спасибо, почитаю)
источник

BD

Berkus Decker in Compiler Development
Ilmir
Ваши сведения устарели на где-то три мажорных релиза.
Три мажорных релиза в джаве никого не напугают в энтерпрайзе, там до сих пор слава богу если джава 8 есть
источник

I

Ilmir in Compiler Development
Berkus Decker
Три мажорных релиза в джаве никого не напугают в энтерпрайзе, там до сих пор слава богу если джава 8 есть
А Котлин до сих пор умеет таргетить шестую Джаву. И нейтив (в бете) и JS. Поэтому без разницы, какая версия джава-машины стоит у энтерпрайза. Можно брать самый свежий Котлин.
источник