Design: 適切な末尾呼び出しのサポート

作成日 2015年06月18日  ·  3コメント  ·  ソース: WebAssembly/design

WebAssemblyは適切な末尾呼び出しをサポートしますか? 現在、 https://github.com/WebAssembly/design/blob/master/AstSemantics.md#control -flow-structuresに、「署名が制限された適切な末尾呼び出し機能」に言及するリンクがあり、そのようなサポートが検討されていることを示唆しています。ただし、リンクは、投稿MVP機能ページで欠落しているアンカーを参照しています: https

答えが「たぶん」である場合、そのようなサポートを支援するために貢献するための最良の方法は何ですか?

最も参考になるコメント

はい、適切な末尾呼び出しはサポートされますが、MVPではサポートされない可能性があります。 これは、保証された末尾呼び出しの最適化に依存する関数型言語で特に役立ちます。 #33および#44の説明を参照してください。 実験とパフォーマンス測定が必要なため、サポート方法はまだ空中です。

全てのコメント3件

はい、適切な末尾呼び出しはサポートされますが、MVPではサポートされない可能性があります。 これは、保証された末尾呼び出しの最適化に依存する関数型言語で特に役立ちます。 #33および#44の説明を参照してください。 実験とパフォーマンス測定が必要なため、サポート方法はまだ空中です。

#33と#44を見てきましたが、#45も関連しているようです。 しかし、制御フロー分析に基づく任意のメカニズム(既約フロー制御がサポートされているかどうかに関係なく)を介して適切な末尾呼び出しを実現できるかどうかについては疑問があります。

あなたが言うように、関数型言語は保証された末尾呼び出しの最適化に依存していますが、C / C ++ / etcコンパイラによって実行されるTCOの種類と混同されるため、このような用語は嫌われます。 したがって、代わりに「適切な末尾呼び出し」という用語が使用されます。 適切な末尾呼び出しがある言語では、呼び出し元のアクティブ化フレームによって占有されていたストレージを放棄するために、末尾位置での呼び出しが必要です。 これには間接呼び出しが含まれるため、ローカル制御フロー分析が困難になります。 したがって、関数型言語のコンパイラー/ランタイムには通常、明示的な末尾呼び出し操作とそれらをサポートする呼び出し規約があります。

適切な末尾呼び出しサポートのアイデアを受け入れてくれるのは素晴らしいことです。この問題はMVPの範囲外であることを理解できます。 しかし、単に閉じるのではなく、開いたままにして、MVP後/何でも/アイスボックスのラベルを付けて、問題がまだ解決されていないことを明確にすることはできますか?

申し訳ありませんが、ドキュメントを修正する前に閉じるつもりはありませんでした。 この問題に対処するために#190を開きました(そしてこの問題を閉じます)。 提出された問題の状態全体を読むのではなく、新しい読者が物事の状態を理解しやすくなるため、問題をデザインのテキストに移動しています。

このページは役に立ちましたか?
0 / 5 - 0 評価

関連する問題

artem-v-shamsutdinov picture artem-v-shamsutdinov  ·  6コメント

frehberg picture frehberg  ·  6コメント

mfateev picture mfateev  ·  5コメント

konsoletyper picture konsoletyper  ·  6コメント

nikhedonia picture nikhedonia  ·  7コメント