注目★★★★★Hacker News
C 言語のテール呼び出し最適化、実は 2001 年以降に本格対応
30秒で把握
- 1テール呼び出し最適化、C では 2001 年 GCC 初実装・当初は間接呼び出し非対応
- 2最新 GCC/Clang で実用的な TCO 動作確認・数万コード片展開が可能に
- 3VM コンパイラ設計で goto * から TCO への移行検討・メンテナンス性向上の余地
要約
テール呼び出し最適化 (TCO) は C 言語では比較的最近の機能で、2001 年に Mark Probst が GCC に実装するまで、呼び出し規約の制約により実用的でなかった。当初の GCC/Clang は間接呼び出しなど対応が限定的だったが、最近のバージョンではテール呼び出しが動作確認できるようになった。Gforth などの VM コンパイラは従来 goto * で対応していたが、テール呼び出し最適化により数万コード片の展開が可能になり、コンパイル手法の拡張性が向上する。
あなたへの影響
C の TCO 対応は既存のバイトコード VM や JIT コンパイラの実装で goto * よりメンテナンスしやすい選択肢になり得るため、Gforth や同様の処理系を保守・改善するチームは最新 GCC/Clang の TCO 能力を評価対象に加える価値がある。
推奨:現時点で即時対応は不要です。必要に応じて原文を確認してください。