いいえ、RubyはTCOを実行しません。ただし、 TCOも実行しません。
Ruby言語仕様はTCOについて何も述べていません。それはあなたがそれをしなければならないとは言いませんが、あなたがそれをすることができないとも言いません。あなたはそれに頼ることができません。
これは、言語仕様ですべての実装がTCOを実行する必要があるSchemeとは異なります。しかし、Pythonの実装がTCOを実行するべきではないことを、Guido van Rossumが何度も(前回はほんの数日前に)非常に明確にしたPythonとは異なります。
まつもとゆきひろはTCOに同情しており、すべての実装にTCOのサポートを強制したくはありません。残念ながら、これはTCOに依存できないことを意味します。信頼すると、コードは他のRuby実装に移植できなくなります。
したがって、一部のRuby実装はTCOを実行しますが、ほとんどは実行しません。たとえば、YARVはTCOをサポートしていますが、(現時点では)ソースコードの行のコメントを明示的に解除してVMを再コンパイルし、TCOをアクティブ化する必要があります。将来のバージョンでは、実装が証明された後、デフォルトでオンになります。安定。Parrot仮想マシンはTCOをネイティブにサポートしているため、Cardinalも非常に簡単にサポートできます。CLRはTCOをある程度サポートしています。つまり、IronRubyとRuby.NETでTCOをサポートできる可能性があります。ルビニウスもおそらくそれを行うことができます。
ただし、JRubyとXRubyはTCOをサポートしておらず、JVM自体がTCOのサポートを取得しない限り、おそらくサポートしません。問題はこれです。高速な実装とJavaとの高速でシームレスな統合が必要な場合は、Javaとスタック互換性があり、JVMのスタックを可能な限り使用する必要があります。トランポリンまたは明示的な継続渡しスタイルを使用してTCOを非常に簡単に実装できますが、JVMスタックを使用しなくなります。つまり、Javaを呼び出したり、JavaからRubyを呼び出したりするたびに、何らかの実行が必要になります。変換は遅いです。そのため、XRubyとJRubyは、TCOと継続(基本的に同じ問題があります)よりも速度とJavaの統合を選択しました。
これは、TCOをネイティブにサポートしていないホストプラットフォームと緊密に統合したいRubyのすべての実装に適用されます。たとえば、MacRubyでも同じ問題が発生すると思います。