не ясно, где именно разделять функции на те, что будут иметь host-реализацию, и на те, что будут реализованы с помощью целевого языка.
К тому же, фронтенд обычно отвечает за первые стадии анализа, и ему не помешало бы знать, какие функции встроены в язык. А бэкенд может их реализовать. Но не хочется размазывать stdlib по всему проекту
Фронтенду на библиотечные и встроенные функции обычно без разницы (она будет, когда проект повзрослеет). На чём писать стандартную библиотеку зависит исключительно от принятого в проекте решения. Чаще всего стараются писать на целевом языке там, где это возможно
Возможно я неверно истолкую вопрос, поправьте, если что. Есть две концепции - нативные функции, это когда функции реализованы не на языке, а, скажем, на C, и в языке используется только заголовок. И есть функции, о которых знает компилятор, то есть "компиляторная магия". Во втором случае у функции фактически нет реализации, а бэкенд просто вставляет код в точку вызова (я утрирую, но не сильно). Для первых функций можно внести синтаксис и поддержку на линковке. Для вторых крайне желательно минимизировать количество, так как распухает код компилятора. С другой стороны, это сильно зависит от проекта, и можно вообще все внутрь компилятора загнать, в этом нет большой проблемы.
Обсуждают сегодня