Design: Prise en charge appropriée des appels de queue

Créé le 18 juin 2015  ·  3Commentaires  ·  Source: WebAssembly/design

Webassembly prendra-t-il en charge les appels de queue appropriés ? Il existe actuellement un lien dans https://github.com/WebAssembly/design/blob/master/AstSemantics.md#control -flow-structures mentionnant une "fonctionnalité d'appel de queue propre restreinte à la signature", suggérant qu'une telle prise en charge a été envisagée, mais le lien fait référence à une ancre manquante sur la page des fonctionnalités de la publication MVP : https://github.com/WebAssembly/design/blob/master/PostMVP.md#signature -restricted-proper-tail-calls

Si la réponse est « peut-être », quelle est la meilleure façon de contribuer à ce soutien ?

Commentaire le plus utile

Oui, les appels de queue appropriés seront pris en charge, mais probablement pas dans MVP. Cela sera particulièrement utile pour les langages fonctionnels qui reposent sur une optimisation garantie des appels de queue. Voir les discussions aux #33 et #44. La façon dont il est pris en charge est encore en suspens car elle nécessite des expérimentations et des mesures de performance.

Tous les 3 commentaires

Oui, les appels de queue appropriés seront pris en charge, mais probablement pas dans MVP. Cela sera particulièrement utile pour les langages fonctionnels qui reposent sur une optimisation garantie des appels de queue. Voir les discussions aux #33 et #44. La façon dont il est pris en charge est encore en suspens car elle nécessite des expérimentations et des mesures de performance.

J'ai regardé les numéros 33 et 44, et le numéro 45 semble également lié. Mais je suis sceptique quant au fait qu'un appel de queue approprié puisse être obtenu via n'importe quel mécanisme basé sur l'analyse de flux de contrôle (que le contrôle de flux irréductible soit pris en charge ou non).

Comme vous le dites, les langages fonctionnels reposent sur des optimisations d'appel de queue garanties, bien qu'une telle terminologie soit mal vue car elle invite à la confusion avec le type de TCO effectué par les compilateurs C/C++/etc, où diverses restrictions peuvent être imposées sur les appels éligibles. Ainsi, le terme « appels de queue appropriés » est utilisé à la place. Dans une langue avec des appels de queue appropriés, tout appel dans une position de queue est requis pour abandonner la mémoire occupée par la trame d'activation d'appel. Cela inclut les appels indirects, d'où la difficulté pour l'analyse du flux de contrôle local. Ainsi, les compilateurs/runtimes de langage fonctionnel ont généralement des opérations d'appel de queue explicites et des conventions d'appel pour les prendre en charge.

C'est formidable que vous soyez ouvert à l'idée d'une prise en charge appropriée des appels de queue, et je peux comprendre que ce problème est hors de portée du MVP. Mais plutôt que de simplement le fermer, pourrait-il être laissé ouvert mais doté d'une étiquette post-MVP / post-whatever / icebox, de sorte qu'il soit clair que l'affaire n'est pas encore réglée ?

Oups désolé, je ne voulais pas fermer avant de corriger la documentation. J'ai ouvert #190 pour résoudre ce problème (et fermer ce problème). Nous avons déplacé les problèmes vers le texte de la conception, car cela permet aux nouveaux lecteurs de comprendre plus facilement l'état des choses plutôt que de lire l'état complet des problèmes classés.

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

badumt55 picture badumt55  ·  8Commentaires

artem-v-shamsutdinov picture artem-v-shamsutdinov  ·  6Commentaires

ghost picture ghost  ·  7Commentaires

mfateev picture mfateev  ·  5Commentaires

thysultan picture thysultan  ·  4Commentaires