Hayır, Ruby TCO gerçekleştirmez. Ancak, TCO da gerçekleştirmez.
Ruby Dil Spesifikasyonu TCO hakkında hiçbir şey söylemiyor. Bu bunu yapmak zorunda demiyor, ama aynı zamanda demiyor edemez bunu. Ona güvenemezsin .
Dil Şartname burada Planı, aksine gerektirir olduğu tüm uygulamalar gerekir TCO'nuzu gerçekleştirin. Ancak Guido van Rossum, Python Uygulamalarının toplam sahip olma maliyetini gerçekleştirmemesi gerektiğini birkaç kez (son kez birkaç gün önce) açıkça ortaya koyduğu Python'dan farklıdır .
Yukihiro Matsumoto, TCO'ya sempati duyuyor, sadece tüm Uygulamaları onu desteklemeye zorlamak istemiyor . Maalesef bu, TCO'ya güvenemeyeceğiniz anlamına gelir veya güveniyorsanız, kodunuz artık diğer Ruby Uygulamalarına taşınabilir olmayacaktır.
Bu nedenle, bazı Ruby Uygulamaları TCO gerçekleştirir, ancak çoğu yapmaz. Örneğin YARV, TCO'yu destekler, ancak (şu an için) TCO'yu etkinleştirmek için kaynak koddaki bir satırı açıkça kaldırmanız ve sanal makineyi yeniden derlemeniz gerekir - gelecekteki sürümlerde, uygulama kanıtlandıktan sonra varsayılan olarak açık olacaktır. kararlı. Parrot Sanal Makinesi, TCO'yu yerel olarak destekler, bu nedenle Cardinal de bunu kolaylıkla destekleyebilir. CLR, TCO için bir miktar desteğe sahiptir, bu da IronRuby ve Ruby.NET'in muhtemelen yapabileceği anlamına gelir. Rubinius da muhtemelen yapabilirdi.
Ancak JRuby ve XRuby, TCO'yu desteklemiyor ve JVM'nin kendisi TCO için destek sağlamadığı sürece muhtemelen desteklemeyecek. Sorun şudur: Hızlı bir uygulama ve Java ile hızlı ve sorunsuz entegrasyona sahip olmak istiyorsanız, Java ile yığın uyumlu olmalı ve mümkün olduğunca JVM yığınını kullanmalısınız. TCO'yu trambolinler veya açık bir şekilde devam eden geçiş stiliyle kolayca uygulayabilirsiniz, ancak artık JVM yığınını kullanmıyorsunuz, yani Java'ya veya Java'dan Ruby'ye her çağrı yapmak istediğinizde, bir tür yavaş olan dönüşüm. Bu nedenle, XRuby ve JRuby, TCO ve süreklilikler (temelde aynı problemi olan) üzerinden hız ve Java entegrasyonunu tercih ettiler.
Bu, TCO'yu yerel olarak desteklemeyen bazı barındırma platformlarıyla sıkı bir şekilde entegre etmek isteyen tüm Ruby uygulamaları için geçerlidir. Örneğin, MacRuby'nin de aynı sorunu yaşayacağını tahmin ediyorum.