नहीं, रूबी TCO प्रदर्शन नहीं करती है। हालाँकि, यह TCO प्रदर्शन नहीं करता है ।
रूबी भाषा विनिर्देश TCO के बारे में कुछ नहीं कहता है। यह नहीं कहता कि आपको यह करना है, लेकिन यह भी नहीं कहता कि आप इसे नहीं कर सकते । आप सिर्फ इस पर भरोसा नहीं कर सकते ।
यह स्कीम के विपरीत है, जहां भाषा विशिष्टता के लिए आवश्यक है कि सभी कार्यान्वयन TCO को निष्पादित करें। लेकिन यह पाइथन के विपरीत भी है, जहां गुइडो वैन रोसुम ने कई मौकों पर (पिछली बार सिर्फ कुछ दिनों पहले) यह स्पष्ट कर दिया है कि पायथन इम्प्लीमेंटेशन TCO नहीं करना चाहिए ।
युकीहिरो मात्सुमोतो को TCO से सहानुभूति है, वह सिर्फ इसे लागू करने के लिए सभी कार्यान्वयनों को बाध्य नहीं करना चाहता है। दुर्भाग्य से, इसका मतलब है कि आप TCO पर भरोसा नहीं कर सकते, या यदि आप करते हैं, तो आपका कोड अब अन्य रूबी कार्यान्वयन के लिए पोर्टेबल नहीं होगा।
तो, कुछ रूबी कार्यान्वयन TCO प्रदर्शन करते हैं, लेकिन अधिकांश नहीं करते हैं। उदाहरण के लिए, YARV, TCO का समर्थन करता है, हालाँकि (फिलहाल के लिए) आपको स्रोत कोड में एक पंक्ति को स्पष्ट रूप से अनसुना करना होगा और VM को फिर से जोड़ना होगा, TCO को सक्रिय करने के लिए - भविष्य के संस्करणों में यह कार्यान्वयन के बाद डिफ़ॉल्ट रूप से होने वाला है। स्थिर। तोता वर्चुअल मशीन TCO को मूल रूप से समर्थन करता है, इसलिए कार्डिनल भी आसानी से इसका समर्थन कर सकता है। CLR को TCO के लिए कुछ समर्थन है, जिसका अर्थ है कि IronRuby और Ruby.NET शायद ऐसा कर सकते हैं। रुबिनियस शायद यह भी कर सकता था।
लेकिन JRuby और XRuby TCO का समर्थन नहीं करते हैं, और वे शायद नहीं करेंगे, जब तक कि JVM खुद TCO के लिए समर्थन हासिल न कर ले। समस्या यह है: यदि आप जावा के साथ तीव्र कार्यान्वयन, और तेज़ और सहज एकीकरण चाहते हैं, तो आपको जावा के साथ स्टैक-संगत होना चाहिए और जेवीएम के स्टैक का यथासंभव उपयोग करना चाहिए। आप बहुत आसानी से ट्रम्पोलिन या स्पष्ट निरंतर-गुजर शैली के साथ TCO को लागू कर सकते हैं, लेकिन फिर आप JVM स्टैक का उपयोग नहीं कर रहे हैं, जिसका अर्थ है कि हर बार आप जावा में कॉल करना चाहते हैं या जावा से रूबी में कॉल करना चाहते हैं, आपको किसी भी तरह का प्रदर्शन करना होगा। रूपांतरण, जो धीमा है। इसलिए, एक्सक्यूबी और जेरी ने टीसीओ और निरंतरता पर गति और जावा एकीकरण के साथ जाना चुना (जो मूल रूप से एक ही समस्या है)।
यह रूबी के सभी कार्यान्वयनों पर लागू होता है जो कुछ होस्ट प्लेटफ़ॉर्म के साथ कसकर एकीकृत करना चाहते हैं जो TCO को मूल रूप से समर्थन नहीं करते हैं। उदाहरण के लिए, मुझे लगता है कि MacRuby में भी यही समस्या है।