20 августа 2026
Ilyaтекст ещё не в индексе
ну думаю как раз требовать боксить там где нужен рантайм полиморфизм было бы лучше, может даже тоглом включать такое поведение компилятора через отдельный экстеншен
Ilyaрантаймность большинства такого полиморфизма получается только из того, что компилятор пытается сыкономить время на кодогенерации
Компактность ещё и спидов дает! Кэши же всякие.
Ilyaрантаймность большинства такого полиморфизма получается только из того, что компилятор пытается сыкономить время на кодогенерации
Тут не буду далеко идущих утверждений делать, но я сомневаюсь что про Хаскель это актуально
Dima | No AI clubТут не буду далеко идущих утверждений делать, но я сомневаюсь что про Хаскель это актуально
это экстремально актуально для хаскеля
Ilyaэто экстремально актуально для хаскеля
Мне кажется что в LLVM языках IR горадо ниже уровнем и меньше семантики знает, а потому должен гораздо больше работы выполнять в ходе кодогенерации и там это гораздо актуальнее. В Хаскеле же на моем опыте обычно раздувает стадию преобразования корки, а на ней очень много семантики остается и к этим стадиям преобразования легко подлезть через рулы, там много всего переписывается и стирается в первую очередь ради рантайм эврестик. Но я лишь догадки строю по тому как у меня несколько миллионов строк линзо-векторного кода компилируется под пол часа - явно там компилятор не о скорости своей работы думает. Рулы он вроде исполняет строго как ему сказали
Dima | No AI clubМне кажется что в LLVM языках IR горадо ниже уровнем и меньше семантики знает, а потому должен гораздо больше работы выполнять в ходе кодогенерации и там это гораздо актуальнее. В Хаскеле же на моем опыте обычно раздувает стадию преобразования корки, а на ней очень много семантики остается и к этим
Если бы твой протобаф был разбит на файлы, то и генерилось несколько модулей которые быстрее компилились
Dima | No AI clubКролик, если не ошибаюсь, когда-то рассказывал, что в целом в ходе оптимизаций много ненужной метаинформации сохраняется при проходах, но ее в несколько подходов не смогли нормально подчистить
Сохраняется куча информации о типах для линтера корки, который никто кроме разработчиков компилятора не использует. И есть десятилетий долгострой по ее урезанию. Но это токо часть проблемы
IlyaУ гхц куча всяких катофф значений когда он просто сдается. Естественно это для скорости компиляции сделано и последние лет двадцать их тюнят в сторону ускорения компиляции а не скорости кода обычно, хотя есть исключения для новых дженериков
Спорить не буду, в кишках компилятора мало ковырялся и в основном только выхлопы корки ковырял. Надеюсь чаще эвристики коррелируют с неоднозначностью влияния на рантайм в лучшую сторону
IlyaЭти значения не в кишках компилятора это флаги которые часто нужно теребить когда дженерики используют и т. Д.
ну флажки стадий оптимизатора я немного теребил и обычно от их ослабления раздувало корку и рантайм только страдал, на компиляцию при этом вроде не особо сказывалось
Dima | No AI clubделал это в своем КХ драйвере, где вся сериализация на дженериках поверх Get из binary
Надо было оставить слой ручной сериализации, а поверх женерики отдельной либой. Как в hasql
Leonid 🦇 OnokhovНадо было оставить слой ручной сериализации, а поверх женерики отдельной либой. Как в hasql
Ну там еще отдельная внутренняя сериализация пакетов протокола СУБД на дженериках. Для юзеров 100% нужно сделать такую апишку и у меня есть такой план
Leonid 🦇 OnokhovЖуть какая
Ну к перфомансу все равно критичнее сериализация самих данных. Там же батчинг бай десинг и сами пакеты очень легкие по сравнению с батчами векторов, которые надо юзерам еще в строки транспонировать для удобства