Size: a a a

Compiler Development

2019 October 06

PS

Peter Sovietov in Compiler Development
Aleksey Shipilev
Мне гошные рантаймщики рассказывали, что это палка о двух концах: попытки запилить продвинутые оптимизации в гошный компилятор напарываются на претензии к упавшей скорости компиляции от пользователей.
Я могу себе представить, что даже идею SSA-модуля поначалу авторы Go могли воспринять в штыки :)
источник

M

MaxGraey in Compiler Development
На самом деле все не так плохо в среднем. Просто тот пример очень синтетический и надеманный. Вот более реальное сравнение скорости компиляции разных ЯП в том числе  Go и Rust:
https://imgur.com/a/jQUav
источник

E

EgorBo in Compiler Development
Сейчас бы мерять скорость компиляции по одной бессмысленной ф-ции с непонятной арифметикой
источник

M

MaxGraey in Compiler Development
EgorBo
Сейчас бы мерять скорость компиляции по одной бессмысленной ф-ции с непонятной арифметикой
тоже самое что мерять 1млн println c hello world
источник

E

EgorBo in Compiler Development
Вообще компиляторщики любят такое - чтобы была арифметика, байты, сдвиги и всё это бенчмаркать и чтобы оптимизации сверху.
никому не интересно бенчмаркать реальный код с объектами, веб реквестами
источник

M

MaxGraey in Compiler Development
У Rust есть ктати один фатальный недостаток (как мне сказали недавно) и которого оказывается нету в Clang. Ну во первых это MIR, который много отжирает памти, ну а во вторых это отсутсвие мемоизации AST поддеревьев
источник

VK

Val Krylov in Compiler Development
Peter Sovietov
Да, я видел этот доклад, он очень хороший. Идея простая — и это у него как раз мотивам алгоритмизации мат. нотации времен Fortress. Я был бы только рад такому ЯП, на котором бы выполнялся "код" из научных статей. Возможно, некоторых авторов это бы дисциплинировало :)
Проблема в том, что "единая мат. нотация" есть только в голове у Гая. В мире - множество разных нотаций, конфликтующих и не формализованных. А времена, когда можно было "минобороны велело COBOL" - прошли.
источник

VK

Val Krylov in Compiler Development
MaxGraey
здесь как всегда тредофф или быстрая компиляция или хорошо оптимизированный таргет. У Rust с его заинлайнингом и разматыванием всего и вся приоритет сдвинут на второе, у гошечки на первое. Просто разные проиоритеты.
Одно другому не противоречит. Можно быстро компилировать у разработчиков и медленно оптимизировать релизный билд.
источник

M

MaxGraey in Compiler Development
Val Krylov
Одно другому не противоречит. Можно быстро компилировать у разработчиков и медленно оптимизировать релизный билд.
поэтому и существуют дебаг и релиз сборки
источник

M

MaxGraey in Compiler Development
ну и еще потому что в дебаг можно больше отладочной информации засунуть
источник

PS

Peter Sovietov in Compiler Development
Val Krylov
Проблема в том, что "единая мат. нотация" есть только в голове у Гая. В мире - множество разных нотаций, конфликтующих и не формализованных. А времена, когда можно было "минобороны велело COBOL" - прошли.
Вот это "в мире -- множество..." — постановка задачи, указание ее важности. Если уж автор некоторой статьи предлагает набор правил абстрактного синтаксиса или, например, правил вывода типов, то было бы желательно избавиться здесь от любых возможных неформальных моментов. В последнее время хорошим тоном считается приводить ссылки на рабочий код в статье, чтобы читатель мог проверить результаты самостоятельно. Возможно, неплохо было бы и проверять мат. синтаксис с помощью исполнимой нотации :)
источник

E

EgorBo in Compiler Development
к сожалению дебаг не означает что не надо аст в SSA llvm ir разбирать :)
источник

PS

Peter Sovietov in Compiler Development
EgorBo
к сожалению дебаг не означает что не надо аст в SSA llvm ir разбирать :)
Точно. Для многих современных языков это отказ от завершающей трансляции в JVM или LLVM :)
источник

E

EgorBo in Compiler Development
Peter Sovietov
Точно. Для многих современных языков это отказ от завершающей трансляции в JVM или LLVM :)
не уловил причем тут жвм
источник

E

EgorBo in Compiler Development
вроде как там нет проблем со скоростью компиляции :)
источник

E

EgorBo in Compiler Development
ну вернее я помню у котлина были (хз как ща) но это были его личные проблемы
источник

PS

Peter Sovietov in Compiler Development
EgorBo
не уловил причем тут жвм
В принципе, у всех JVM-языков проблемы со скоростью трансляции. После компиляции в JVM нужно учитывать еще и время "разогрева" самой JVM. В одном проекте у нас был Web GUI на ClojureScript. Вот там было совсем смешно: трансляция в JVM, а оттуда — в JS. Простые программы транслировались десятки секунд. Я смотрел и недоумевал, как можно разрабатывать Web GUI в таком режиме :)
источник

E

EgorBo in Compiler Development
> В принципе, у всех JVM-языков проблемы со скоростью трансляции

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

E

EgorBo in Compiler Development
с тиеред компиляции там же вообще мгновенный старт по сути
источник

VK

Val Krylov in Compiler Development
Peter Sovietov
Вот это "в мире -- множество..." — постановка задачи, указание ее важности. Если уж автор некоторой статьи предлагает набор правил абстрактного синтаксиса или, например, правил вывода типов, то было бы желательно избавиться здесь от любых возможных неформальных моментов. В последнее время хорошим тоном считается приводить ссылки на рабочий код в статье, чтобы читатель мог проверить результаты самостоятельно. Возможно, неплохо было бы и проверять мат. синтаксис с помощью исполнимой нотации :)
Мне кажется более вероятным другой вариант развития, когда рабочий код будет в proof assistant, а неформальная мат. нотация в "традиционных картинках-иллюстрациях".
источник