Size: a a a

Compiler Development

2020 June 18

IK

Ivan Kochurkin in Compiler Development
Yaroslav Schekin
> Если что-то было изначально, то так должно быть и всегда?

Видимо, они считают, что это работает.

> Нужен чтобы привлекать новую аудиторию

Зачем им "новая аудитория"? ;)

> технические средства на таких платформах развиты намного лучше

Есть немало развитых и известных проектов, участники которых с Вами в этом совсем не согласятся.
А можно примеры таких проектов? Линукс? К тому же это не означает, что они не сыскали бы ещё большую популярность, если переехали на гитхаб/гитлаб.
источник

PS

Peter Sovietov in Compiler Development
Ivan Kochurkin
А можно примеры таких проектов? Линукс? К тому же это не означает, что они не сыскали бы ещё большую популярность, если переехали на гитхаб/гитлаб.
Боюсь, такая дискуссия далеко нас заведет. Предлагаю здесь ее свернуть :)
источник

IK

Ivan Kochurkin in Compiler Development
Да, это уже оффтоп)
источник

YS

Yaroslav Schekin in Compiler Development
Ivan Kochurkin
Новая аудитория нужна чтобы проект не загнулся, если со старой что-то станет. К примеру, мы используем активно развиваемый .net обфускатор confuserex 2, который является форком заброшенного confuserex, который, в свою очередь, перекочевал на гитхаб с codeplex. Не думаю что он был бы так интересен, если бы застрял на codeplex.
> Новая аудитория нужна чтобы проект не загнулся, если со старой что-то станет.

"Новая аудитория" может так же запросто "загнуть" проект. Есть даже какая-то пословица на эту тему... про то, что новый друг полезнее, чем два старых... нет, там было как-то не так... ;)

> А можно примеры таких проектов? Линукс?

И другие зрелые opensource OS — тоже, насколько я помню.  Да и другие активно развивающиеся "старые" проекты.
Но, вообще, да: https://t.me/CompilerDev/68231 , извините.
источник

IJ

Igor 🐱 Jirkov in Compiler Development
"Новые песни пишут те, у кого старые плохие" :)
источник

A

Alex in Compiler Development
Не так давно опубликовали
https://habr.com/ru/company/jugru/blog/494986/
источник

A

Alex in Compiler Development
Ещё одна статья от автора вышеидущего доклада
https://habr.com/ru/company/samsung/blog/505850/
источник

PS

Peter Sovietov in Compiler Development
Интересный доклад, спасибо!

Но вот этот абзац вызывает сомнения:
«Tail Call тоже классическая оптимизация: минимизирует оверхед, который создается за счет создания стекового фрейма; преобразует call, который находится в конце функции, просто в инструкцию jump, то есть в передачу управления на следующую функцию. Оптимизация выполняется в бэкенде, потому что не для всех архитектур её возможно выполнить. Есть архитектуры, где адрес передачи управления инструкции jump кодируется в меньшее количество бит, чем call, и не все адреса в jump удается представить.»
источник

PS

Peter Sovietov in Compiler Development
Оптимизация для хвостовой рекурсии слишком выгодная вещь, чтобы опускать руки из-за проблем с jump.
источник

A

Alex in Compiler Development
Для таких случаев (если адрес не помещается в литерал для jump) мне известен только способ перехода с трамплинами, но это несколько переходов нужно сделать
источник

PS

Peter Sovietov in Compiler Development
Alex
Для таких случаев (если адрес не помещается в литерал для jump) мне известен только способ перехода с трамплинами, но это несколько переходов нужно сделать
А можно ведь и call обойтись? Убрать старый фрейм и адрес возврата перед вызовом.
источник

AD

Artyom Drozdov in Compiler Development
Peter Sovietov
А можно ведь и call обойтись? Убрать старый фрейм и адрес возврата перед вызовом.
кажется это не будет быстрее
источник

I

Ilmir in Compiler Development
Peter Sovietov
Оптимизация для хвостовой рекурсии слишком выгодная вещь, чтобы опускать руки из-за проблем с jump.
Это не хвостовая рекурсия, а замена хвостового вызова на прыжок.
источник

I

Ilmir in Compiler Development
То есть, вызова другой функции.
источник

PS

Peter Sovietov in Compiler Development
Ilmir
Это не хвостовая рекурсия, а замена хвостового вызова на прыжок.
А разве не в этом суть оптимизации хвостовой рекурсии?
источник

PS

Peter Sovietov in Compiler Development
Artyom Drozdov
кажется это не будет быстрее
Если вопрос стоит ребром — получим stack overflow или нет, то даже медленно будет хорошо :)
источник

AD

Artyom Drozdov in Compiler Development
Peter Sovietov
Если вопрос стоит ребром — получим stack overflow или нет, то даже медленно будет хорошо :)
тогда с трамлпинами точно заработает, и стэк не надо трогать
источник

I

Ilmir in Compiler Development
Peter Sovietov
А разве не в этом суть оптимизации хвостовой рекурсии?
Разница в том, вызов какой функции мы заменяем. Если вызов себя, то это, очевидно, выгодно настолько, что мы делаем замену всегда, иначе надо считать, выгодно ли вызвать другую функцию или лучше прыгнуть. Во втором случае, ктсати, ещё регистры надо не забыть почистить (если мы не имеет доступа к телу функции, а ABI гарантирует, что эти регистры можно использовать для локальных переменных).
источник

PS

Peter Sovietov in Compiler Development
Artyom Drozdov
тогда с трамлпинами точно заработает, и стэк не надо трогать
А вдруг эти "хвостовые" трамплины, в свою очередь, чрезмерно удлинят расстояния для прыжков по обычным if/while? Тогда придется делать дополнительные трамплины... :)
источник

AD

Artyom Drozdov in Compiler Development
Peter Sovietov
А вдруг эти "хвостовые" трамплины, в свою очередь, чрезмерно удлинят расстояния для прыжков по обычным if/while? Тогда придется делать дополнительные трамплины... :)
все равно безопаснее, чем ковырять стэк)
источник