Design: Правильная поддержка хвостового вызова

Созданный на 18 июн. 2015  ·  3Комментарии  ·  Источник: WebAssembly/design

Будет ли веб-сборка поддерживать правильные хвостовые вызовы? В настоящее время есть ссылка в https://github.com/WebAssembly/design/blob/master/AstSemantics.md#control -flow-структурах, где упоминается «функция правильного хвостового вызова, ограниченная сигнатурой», предполагающая, что такая поддержка была рассмотрена, но ссылка указывает на отсутствующий якорь на странице функций MVP публикации: https://github.com/WebAssembly/design/blob/master/PostMVP.md#signature -restricted-right-tail-calls

Если ответ - «может быть», как лучше всего внести свой вклад, чтобы помочь такой поддержке?

Самый полезный комментарий

Да, правильные хвостовые вызовы будут поддерживаться, но, скорее всего, не в MVP. Это будет особенно полезно для функциональных языков, которые полагаются на гарантированную оптимизацию хвостового вызова. См. Обсуждения в №33 и №44. Вопрос о том, как он будет поддерживаться, все еще не решен, так как он требует экспериментов и измерений производительности.

Все 3 Комментарий

Да, правильные хвостовые вызовы будут поддерживаться, но, скорее всего, не в MVP. Это будет особенно полезно для функциональных языков, которые полагаются на гарантированную оптимизацию хвостового вызова. См. Обсуждения в №33 и №44. Вопрос о том, как он будет поддерживаться, все еще не решен, так как он требует экспериментов и измерений производительности.

Я посмотрел на № 33 и № 44, и № 45, похоже, тоже связаны. Но я скептически отношусь к тому, что правильный хвостовой вызов может быть достигнут с помощью любого механизма, основанного на анализе потока управления (независимо от того, поддерживается ли управление неснижаемым потоком или нет).

Как вы говорите, функциональные языки полагаются на гарантированную оптимизацию хвостовых вызовов, хотя такая терминология не одобряется, потому что она вызывает путаницу с видом совокупной стоимости владения, выполняемой компиляторами C / C ++ и т. Д., Где могут быть наложены различные ограничения на то, какие вызовы являются допустимыми. Поэтому вместо этого используется термин «правильные хвостовые вызовы». В языке с правильными хвостовыми вызовами любой вызов в хвостовой позиции требуется для освобождения памяти, занимаемой вызывающим кадром активации. Это включает в себя косвенные вызовы, отсюда и трудность анализа локального потока управления. Таким образом, компиляторы / среды выполнения функциональных языков обычно имеют явные операции хвостового вызова и соглашения о вызовах для их поддержки.

Замечательно, что вы открыты для идеи правильной поддержки хвостовых вызовов, и я понимаю, что эта проблема выходит за рамки MVP. Но вместо того, чтобы просто закрыть его, можно ли оставить его открытым, но с пометкой post-MVP / post-something / icebox, чтобы было ясно, что вопрос еще не решен?

К сожалению, я не хотел закрывать перед исправлением документации. Я открыл №190, чтобы решить эту проблему (и закрыть эту проблему). Мы переместили проблемы в текст проекта, так как это помогает новым читателям понять положение вещей, а не читать все состояние зарегистрированных проблем.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

mfateev picture mfateev  ·  5Комментарии

jfbastien picture jfbastien  ·  6Комментарии

artem-v-shamsutdinov picture artem-v-shamsutdinov  ·  6Комментарии

ghost picture ghost  ·  7Комментарии

chicoxyzzy picture chicoxyzzy  ·  5Комментарии