रूबी (प्रोग्रामिंग लैंग्वेज): Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
 
(38 intermediate revisions by 7 users not shown)
Line 1: Line 1:
{{Short description|General-purpose programming language}}
{{distinguish|Ruby on Rails}}
{{Technical|introduction|date=June 2022}}
{{infobox programming language
{{infobox programming language
| logo                  = Ruby logo.svg
| logo                  = Ruby logo.svg
Line 7: Line 4:
| designer              = [[Yukihiro Matsumoto]]
| designer              = [[Yukihiro Matsumoto]]
| developer              = Yukihiro Matsumoto, et al.
| developer              = Yukihiro Matsumoto, et al.
| latest_release_version = 3.1.3<ref>{{Cite web|url=https://www.ruby-lang.org/en/news/2022/11/24/ruby-3-1-3-released/|title="Ruby 3.1.3 Released"}}</ref>
| </ref>| latest_release_version = {{wikidata|property|edit|Q161053|P348}}<ref name="Ruby 3.2.0 Released">{{Cite web|url=https://www.ruby-lang.org/en/news/2022/12/25/ruby-3-2-0-released/|title="Ruby 3.2.0 Released"}}</ref>
| latest_release_date    = 24 November 2022
| latest_release_date    = 24 November 2022
| typing                = [[Duck typing|Duck]], [[Dynamic typing|dynamic]], [[Strong typing|strong]]
| typing                = [[Duck typing|Duck]], [[Dynamic typing|dynamic]], [[Strong typing|strong]]
Line 22: Line 19:
| file_ext              = .rb
| file_ext              = .rb
}}
}}
रूबी एक [[व्याख्या की गई भाषा|व्याख्या की गई]] , उच्च-स्तरीय, सामान्य-उद्देश्य वाली क्रमादेशन (प्रोग्रामिंग) भाषा है जो कई क्रमादेशन प्रतिमानों का समर्थन करती है। इसे क्रमादेशन उत्पादकता और सरलता पर जोर देने के साथ अभिकल्पना किया गया था। रूबी में, सब कुछ एक वस्तु है, जिसमें आदिम तथ्य प्रकार शामिल हैं। यह 1990 के दशक के मध्य में [[जापान]] में युकीहिरो "मात्ज़" मात्सुमोतो द्वारा विकसित किया गया था।
'''रूबी''' एक व्याख्या है , उच्च-स्तरीय, सामान्य-उद्देश्य वाली क्रमादेशन लैंग्वेज है जो कई क्रमादेशन प्रतिमानों का समर्थन करती है। इसे क्रमादेशन उत्पादकता और सरलता पर जोर देने के साथ अभिकल्पना किया गया था। रूबी में, सब कुछ एक वस्तु है, जिसमें प्राचीन तथ्य का प्रकार सम्मिलित हैं। यह 1990 के दशक के मध्य में [[जापान]] में युकीहिरो "मात्ज़" मात्सुमोतो द्वारा विकसित किया गया था।


रूबी [[गतिशील टाइपिंग|गतिशील रूप से]] टाइप की जाती है और [[कचरा संग्रह (कंप्यूटर विज्ञान)|कचरा संग्रह]] और [[समय-समय पर संकलन]] का उपयोग करती है। यह प्रक्रियात्मक क्रमदेशन,वस्तु-उन्मुख क्रमदेशन सहित कई क्रमदेशन प्रतिमानों का समर्थन करता है। निर्माता के अनुसार, रूबी Perl, Smalltalk, [[एफिल (प्रोग्रामिंग भाषा)|Eiffel]] , [[एडा (प्रोग्रामिंग भाषा)|Ada]] , [[बुनियादी|BASIC]], Java और [[लिस्प (प्रोग्रामिंग भाषा)|Lisp]]  से प्रभावित थी।<ref name="about"/><ref name="confreaks" />
रूबी [[गतिशील टाइपिंग|गतिशील]] प्रकार की है और [[कचरा संग्रह (कंप्यूटर विज्ञान)|अपशिष्ट संग्रह]] और [[समय-समय पर संकलन]] का उपयोग करती है। यह प्रक्रियात्मक क्रमदेशन,वस्तु-उन्मुख क्रमदेशन सहित कई क्रमदेशन प्रतिमानों का समर्थन करता है। रचनाकार के अनुसार, रूबी पर्ल, लघु बातचीत, एफिल, एडा, बेसिक, जावा और लिस्प से प्रभावित थी।<ref name="about"/><ref name="confreaks" />




== इतिहास ==
== इतिहास ==
{{main|History of Ruby}}
=== प्रारंभिक अवधारणा ===
=== प्रारंभिक अवधारणा ===
मात्सुमोतो ने कहा है कि रूबी की कल्पना 1993 में की गई थी। रूबी-टॉक प्रेषण सूची के 1999 के एक पद में, उन्होंने भाषा के बारे में अपने कुछ शुरुआती विचारों का वर्णन किया है:<ref name="FAQ"/>
मात्सुमोतो ने कहा है कि रूबी की कल्पना 1993 में की गई थी। रूबी- बातचीत प्रेषण सूची के 1999 के एक पद में, उन्होंने लैंग्वेज के बारे में अपने कुछ शुरुआती विचारों का वर्णन किया है:<ref name="FAQ"/>


{{quote|मैं अपने सहयोगी के साथ वस्तु-उन्मुख पटकथा भाषा की संभावना के बारे में बात कर रहा था। मैं पर्ल (पर्ल 4, पर्ल 5 नहीं) जानता था, लेकिन मुझे यह वास्तव में पसंद नहीं आया, क्योंकि इसमें खिलौना भाषा की गंध थी (यह अभी भी है)। वस्तु-उन्मुख भाषा बहुत ही आशाजनक लग रही थी। मैं तब पायथन को जानता था। लेकिन मुझे यह पसंद नहीं आया, क्योंकि मुझे नहीं लगा कि यह एक वास्तविक वस्तु-उन्मुख भाषा थी - OO सुविधाएँ भाषा में ऐड-ऑन दिखाई देती हैं। 15 वर्षों के लिए एक भाषा उन्मादी और OO प्रशंसक के रूप में, मैं वास्तव में एक वास्तविक वस्तु-उन्मुख, उपयोग में आसान पटकथा भाषा चाहता था। मैंने खोजा लेकिन एक नहीं मिला। इसलिए मैंने इसे बनाने का फैसला किया।}}
{{quote|मैं अपने सहयोगी के साथ वस्तु-उन्मुख पटकथा भाषा की संभावना के बारे में बात कर रहा था। मैं पर्ल (पर्ल 4, पर्ल 5 नहीं) जानता था, लेकिन मुझे यह वास्तव में पसंद नहीं आया, क्योंकि इसमें टॉइ भाषा की गंध थी (यह अभी भी है)। वस्तु-उन्मुख भाषा बहुत ही आशाजनक लग रही थी। मैं तब पायथन को जानता था। लेकिन मुझे यह पसंद नहीं आया, क्योंकि मुझे नहीं लगा कि यह एक वास्तविक वस्तु-उन्मुख भाषा थी - सुविधाएँ भाषा में मिली हुई दिखाई देती हैं। 15 वर्षों के लिए एक भाषा उन्मादी और प्रशंसक के रूप में, मैं वास्तव में एक वास्तविक वस्तु-उन्मुख, उपयोग में आसान पटकथा भाषा चाहता था। मैंने खोजा लेकिन एक नहीं मिला। इसलिए मैंने इसे बनाने का फैसला किया।}}


मात्सुमोतो ने रूबी के प्रारुप का वर्णन इसके मूल में एक साधारण लिस्प (प्रोग्रामिंग लैंग्वेज) भाषा की तरह किया है, जिसमें Smalltalk की तरह एक वस्तु प्रणाली, उच्च-क्रम के कार्यों से प्रेरित खंड और पर्ल की तरह व्यावहारिक उपयोगिता है।<ref name="lisp-features"/>
मात्सुमोतो ने रूबी के प्रारुप का वर्णन इसके मूल में एक साधारण लिस्प लैंग्वेज की तरह किया है, जिसमें लघु बातचीत की तरह एक वस्तु प्रणाली, उच्च-क्रम के कार्यों से प्रेरित खंड और पर्ल की तरह व्यावहारिक उपयोगिता है।<ref name="lisp-features"/>


भाषा के लिए कोई भी कोड लिखे जाने से पहले 24 फरवरी,1993 को मात्सुमोतो और कीजु इशित्सुका के बीच एक ऑनलाइन चैट सत्र के दौरान "रूबी" नाम की उत्पत्ति हुई थी।<ref name="rubyconf-history-of-ruby"/>प्रारंभ में दो नाम प्रस्तावित थे: [[मूंगा|"कोरल"]] और "रूबी"। मात्सुमोतो ने इशित्सुका को बाद में एक ई-मेल में बाद वाले को चुना।<ref name="ruby-name"/>मात्सुमोतो ने बाद में "रूबी" नाम चुनने में एक कारक का उल्लेख किया - यह उनके एक सहयोगी का जन्मस्थान था।<ref name="faq-name"/><ref name="ruby-talk-name"/>
लैंग्वेज के लिए कोई भी संहिता लिखे जाने से पहले 24 फरवरी,1993 को मात्सुमोतो और कीजु इशित्सुका के बीच एक ऑनलाइन बातचीत सत्र के दौरान "रूबी" नाम की उत्पत्ति हुई थी।<ref name="rubyconf-history-of-ruby"/>प्रारंभ में दो नाम प्रस्तावित थे: [[मूंगा|"कोरल"]] और "रूबी"। मात्सुमोतो ने इशित्सुका को बाद में एक ई-मेल में बाद वाले को चुना।<ref name="ruby-name"/>मात्सुमोतो ने बाद में "रूबी" नाम चुनने में एक कारक का उल्लेख किया - यह उनके एक सहयोगी का जन्मस्थान था।<ref name="faq-name"/><ref name="ruby-talk-name"/>
=== प्रारंभिक विज्ञप्ति ===
=== प्रारंभिक प्रकाशन ===


रूबी 0.95 की पहली सार्वजनिक विज्ञप्ति की घोषणा 21 दिसंबर, 1995 को जापानी घरेलू समाचार समूहों पर की गई थी।<ref name="0.95"/><ref name="ruby-history"/>इसके बाद, दो दिनों में रूबी के तीन और संस्करण जारी किए गए।<ref name="rubyconf-history-of-ruby"/>रिलीज [[जापानी भाषा]] के लॉन्च के साथ हुई। जापानी-भाषा रूबी-सूची प्रेषण सूची, जो नई भाषा के लिए पहली प्रेषण सूची थी।
रूबी 0.95 की पहली सार्वजनिक प्रकाशन की घोषणा 21 दिसंबर, 1995 को जापानी घरेलू समाचार समूहों पर की गई थी।<ref name="0.95"/><ref name="ruby-history"/>इसके बाद, दो दिनों में रूबी के तीन और संस्करण जारी किए गए।<ref name="rubyconf-history-of-ruby"/>प्रकाशन जापानी-लैंग्वेज रूबी-सूची प्रेषण सूची के शुरूआत के साथ हुई,जो नई लैंग्वेज के लिए पहली प्रेषण सूची थी।


विकास के इस चरण में पहले से मौजूद रूबी के बाद के विज्ञप्ति में परिचित सुविधाओं में से कई थे, जिनमें वस्तु-उन्मुख प्रारुप, विरासत (इनहेरिटेंस) वाली कक्षाएं, मिक्सिन्स, इटरेटर्स, क्लोजर, अपवाद प्रहस्तन (एक्सेप्शन हैंडलिंग) और अपशिष्ट संग्रह शामिल हैं।<ref name="tutorial-features"/>
विकास के इस चरण में पहले से मौजूद रूबी के बाद के प्रकाशन में परिचित सुविधाओं में से कई थे, जिनमें वस्तु-उन्मुख प्रारुप, विरासत (इनहेरिटेंस) वाली कक्षाएं, मिक्सिन्स, पुनरावर्तक, समापन, अपवाद प्रहस्तन (एक्सेप्शन हैंडलिंग) और अपशिष्ट संग्रह सम्मिलित हैं।<ref name="tutorial-features"/>


1995 में रूबी 0.95 के जारी होने के बाद, रूबी के कई स्थिर संस्करण अगले वर्षों में जारी किए गए:
1995 में रूबी 0.95 के जारी होने के बाद, रूबी के कई स्थिर संस्करण अगले वर्षों में जारी किए गए:
Line 51: Line 45:
* रूबी 1.6: सितंबर 2000
* रूबी 1.6: सितंबर 2000


1997 में रूबी के बारे में पहला लेख वेब पर प्रकाशित हुआ था। उसी वर्ष, मात्सुमोतो को netlab.jp द्वारा एक पूर्णकालिक विकासक (डेवलपर) के रूप में रूबी पर काम करने के लिए नियुक्त किया गया था।<ref name="rubyconf-history-of-ruby"/>
1997 में रूबी के बारे में पहला लेख वेब पर प्रकाशित हुआ था। उसी वर्ष, मात्सुमोतो को netlab.जेp द्वारा एक पूर्णकालिक विकासक (डेवलपर) के रूप में रूबी पर काम करने के लिए नियुक्त किया गया था।<ref name="rubyconf-history-of-ruby"/>


1998 में, मात्सुमोतो द्वारा रूबी अनुप्रयोग पुरालेख (एप्लिकेशन आर्काइव) को रूबी के लिए एक सरल अंग्रेजी भाषा के मुखपृष्ठ के साथ प्रमोचन किया गया था।<ref name="rubyconf-history-of-ruby"/>
1998 में, मात्सुमोतो द्वारा रूबी अनुप्रयोग पुरालेख (एप्लिकेशन आर्काइव) को रूबी के लिए एक सरल अंग्रेजी लैंग्वेज के मुखपृष्ठ के साथ प्रमोचन किया गया था।<ref name="rubyconf-history-of-ruby"/>


1999 में, पहली अंग्रेजी भाषा की प्रेषण सूची रूबी-टॉक शुरू हुई, जिसने जापान के बाहर भाषा में बढ़ती रुचि का संकेत दिया।<ref name="linuxdevcenter"/>इसी वर्ष, मात्सुमोतो और कीजू इशित्सुका ने रूबी पर पहली पुस्तक लिखी, वस्तु-उन्मुख पटकथा भाषा रूबी (オブジェクト指向スクリプト言語 Ruby), जो अक्टूबर 1999 में जापान में प्रकाशित हुई थी। इसका पालन 2000 के दशक की शुरुआत में लगभग किया जाएगा। रूबी पर 20 किताबें जापानी भाषा में प्रकाशित होंगी। .<ref name="rubyconf-history-of-ruby"/>
1999 में, पहली अंग्रेजी लैंग्वेज की प्रेषण सूची रूबी-बातचीत आरम्भ हुई, जिसने जापान के बाहर लैंग्वेज में बढ़ती रुचि का संकेत दिया।<ref name="linuxdevcenter"/>इसी वर्ष, मात्सुमोतो और कीजू इशित्सुका ने रूबी पर पहली पुस्तक लिखी, एक वस्तु-उन्मुख पटकथा लैंग्वेज रूबी (オブジェクト指向スクリプト言語 रूबी), जो अक्टूबर 1999 में जापान में प्रकाशित हुई थी। इसका पालन 2000 के दशक की शुरुआत में लगभग किया जाएगा। रूबी पर 20 किताबें जापानी लैंग्वेज में प्रकाशित होंगी। .<ref name="rubyconf-history-of-ruby"/>


2000 तक, रूबी जापान में पायथन से अधिक लोकप्रिय थी।<ref name="programming-ruby"/>सितंबर 2000 में, पहली अंग्रेजी भाषा की किताब क्रमदेशन रूबी छपी थी, जिसे बाद में जनता के लिए स्वतंत्र रूप से जारी किया गया था, जिससे अंग्रेजी बोलने वालों के बीच रूबी को अपनाने का विस्तार हुआ। 2002 की शुरुआत में, अंग्रेजी भाषा की रूबी-टॉक प्रेषण सूची को जापानी भाषा की रूबी-सूची की तुलना में अधिक संदेश प्राप्त हो रहे थे, जो गैर-जापानी भाषी दुनिया में रूबी की बढ़ती लोकप्रियता को दर्शाता है।
2000 तक, रूबी जापान में पायथन से अधिक लोकप्रिय थी।<ref name="programming-ruby"/>सितंबर 2000 में, पहली अंग्रेजी लैंग्वेज की किताब क्रमदेशन रूबी छपी थी, जिसे बाद में जनता के लिए स्वतंत्र रूप से जारी किया गया था, जिससे अंग्रेजी बोलने वालों के बीच रूबी को अपनाने का विस्तार हुआ। 2002 की शुरुआत में, अंग्रेजी लैंग्वेज की रूबी- बातचीत प्रेषण सूची को जापानी लैंग्वेज की रूबी-सूची की तुलना में अधिक संदेश प्राप्त हो रहे थे, जो गैर-जापानी भाषी दुनिया में रूबी की बढ़ती लोकप्रियता को दर्शाता है।


=== रूबी 1.8 और 1.9 ===
=== रूबी 1.8 और 1.9 ===


रूबी 1.8 को शुरू में अगस्त 2003 में जारी किया गया था, यह लंबे समय तक स्थिर था, और जून 2013 को सेवानिवृत्त हो गया था।<ref name="1.8.7-retirement"/>हालांकि बहिष्कृत, इसके आधार पर अभी भी कोड है। रूबी 1.8 रूबी 1.9 के साथ केवल आंशिक रूप से संगत है।
रूबी 1.8 को आरम्भ में अगस्त 2003 में जारी किया गया था, यह लंबे समय तक स्थिर था, और जून 2013 को सेवानिवृत्त हो गई थी।<ref name="1.8.7-retirement"/>हालांकि बहिष्कृत, इसके आधार पर अभी भी संहिता है। रूबी 1.8 रूबी 1.9 के साथ केवल आंशिक रूप से संगत है।


रूबी 1.8 कई उद्योग मानकों का विषय रहा है। रूबी के लिए भाषा विनिर्देशों को [[जापानी औद्योगिक मानक समिति]] (JISC) और फिर अंतर्राष्ट्रीय मानकीकरण संगठन (ISO) को प्रस्तुत करने के लिए सूचना-प्रौद्योगिकी संवर्धन एजेंसी ([[जापान सरकार]] की एक एजेंसी) के ओपन स्टैंडर्ड प्रमोशन सेंटर द्वारा विकसित किया गया था। इसे 2011 में एक जापानी औद्योगिक मानक (JIS X 3017) <ref name="JIS X 3017"/>और 2012 में एक अंतरराष्ट्रीय मानक (ISO/IEC 30170)।<ref name="IPA"/><ref name="IEC 30170"/>
रूबी 1.8 कई उद्योग मानकों की विषय रही है। रूबी के लिए लैंग्वेज विनिर्देशों को [[जापानी औद्योगिक मानक समिति]] (जेआईएससी) और फिर अंतर्राष्ट्रीय मानकीकरण संगठन (आईएसओ) को प्रस्तुत करने के लिए सूचना-प्रौद्योगिकी संवर्धन संस्था ([[जापान सरकार]] की एक एजेंसी) के खुले मानक प्रचार केंद्र द्वारा विकसित किया गया था। इसे 2011 में एक जापानी औद्योगिक मानक (जेआईएस एक्स 3017) <ref name="JIS X 3017"/>और 2012 में एक अंतरराष्ट्रीय मानक (आईएसओ/आईईसी 30170)।<ref name="IPA"/><ref name="IEC 30170"/>


2005 के आसपास, रूबी भाषा में रुचि रूबी ऑन रेल्स, रूबी में लिखी गई एक वेब रूपरेखा के साथ मिलकर बढ़ी। रूबी के बारे में बढ़ती जागरूकता का श्रेय अक्सर रेल को दिया जाता है।<ref name="Devarticles"/>
2005 के आसपास, रूबी लैंग्वेज में रुचि रूबी ऑन रेल्स, रूबी में लिखी गई एक वेब रूपरेखा के साथ मिलकर बढ़ी। रूबी के बारे में बढ़ती जागरूकता का श्रेय अक्सर रेल को दिया जाता है।<ref name="Devarticles"/>


रूबी 1.9.3 के साथ प्रभावी, 31 अक्टूबर, 2011 को जारी किया गया,<ref name="Ruby 1.9.3"/>रूबी ने रूबी अनुज्ञप्ति और GPL के तहत दोहरे अनुज्ञप्ति वाले होने से रूबी अनुज्ञप्ति और दो-खंड बीएसडी अनुज्ञप्ति के तहत दोहरे अनुज्ञप्ति होने के लिए स्विच किया।<ref name="license-change"/>1.9 को अपनाने की गति 1.8 के परिवर्तनों से धीमी हो गई थी जिसके लिए कई लोकप्रिय तृतीय पक्ष के रत्नों को फिर से लिखने की आवश्यकता थी। रूबी 1.9 ने 1.8 श्रृंखला में कई महत्वपूर्ण बदलाव पेश किए। उदाहरणों में शामिल:<ref name="1-9-features"/>
रूबी 1.9.3 के साथ प्रभावी, 31 अक्टूबर, 2011 को जारी किया गया,<ref name="Ruby 1.9.3"/>रूबी ने रूबी अनुज्ञप्ति और जीपीएल के तहत दोहरे अनुज्ञप्ति वाले होने से रूबी अनुज्ञप्ति और दो-खंड बीएसडी अनुज्ञप्ति के तहत दोहरे अनुज्ञप्ति होने के लिए स्विच किया।<ref name="license-change"/>1.9 को अपनाने की गति 1.8 के परिवर्तनों से धीमी हो गई थी जिसके लिए कई लोकप्रिय तृतीय पक्ष के जेम को फिर से लिखने की आवश्यकता थी। रूबी 1.9 ने 1.8 श्रृंखला में कई महत्वपूर्ण बदलाव पेश किए। उदाहरणों में सम्मिलित:<ref name="1-9-features"/>


* स्थानीय चर को ब्लॉक करें (वे चर जो उस ब्लॉक के लिए स्थानीय हैं जिसमें उन्हें घोषित किया गया है)
* स्थानीय चर को रोकें (वे चर जो उस खंड के लिए स्थानीय हैं जिसमें उन्हें घोषित किया गया है)
* एक अतिरिक्त lambda syntax: {{code|2=ruby|1=f = ->(a,b) {{(}} puts a + b {{)}}}}
* एक अतिरिक्त लैम्ब्डा वाक्य - विन्यास: {{code|2=ruby|1=f = ->(a,b) {{(}} puts a + b {{)}}}}
* प्रतीक कुंजियों के लिए कोलन का उपयोग करके एक अतिरिक्त Hash तालिका शाब्दिक सिंटैक्स: {{code|2=ruby|1={{(}}symbol_key: "value"{{)}} == {{(}}:symbol_key => "value"{{)}}}}
* प्रतीक कुंजियों के लिए कोलन का उपयोग करके एक अतिरिक्त हैश तालिका शाब्दिक वाक्य - विन्यास: {{code|2=ruby|1={{(}}symbol_key: "value"{{)}} == {{(}}:symbol_key => "value"{{)}}}}
* प्रति-स्ट्रिंग वर्ण कूटलेखन (एन्कोडिंग) समर्थित हैं
* प्रति- स्ट्रिंग वर्ण कूटलेखन (एन्संहितािंग) समर्थित हैं
* नया सॉकेट  API ([[इपवश|IPv6]] समर्थन)
* नया गर्तिका API ([[इपवश|IPv6]] समर्थन)
* <code>require_relative</code> आयात सुरक्षा
* <code>require_relative</code> आयात सुरक्षा


=== रूबी 2 ===
=== रूबी 2 ===


रूबी 2.0 का उद्देश्य रूबी 1.9.3 के साथ पूरी तरह से पिछड़ा संगत होना था। 24 फरवरी, 2013 को आधिकारिक 2.0.0 विमोचन के अनुसार, केवल पांच ज्ञात (मामूली)असंगतियां थीं।<ref name="2-0-release-incompatibilities"/>रूबी 2.0 ने कई नई सुविधाएँ जोड़ीं, जिनमें शामिल हैं:
रूबी 2.0 का उद्देश्य रूबी 1.9.3 के साथ पूरी तरह से पिछड़ा संगत होना था। 24 फरवरी, 2013 को आधिकारिक 2.0.0 विमोचन के अनुसार, केवल पांच ज्ञात (मामूली) असंगतियां थीं।<ref name="2-0-release-incompatibilities"/>रूबी 2.0 ने कई नई सुविधाएँ जोड़ीं, जिनमें सम्मिलित हैं:


* विधि मूलशब्द (कीवर्ड) तर्क,
* विधि मूलशब्द (कीवर्ड) तर्क,
*एक नया तरीका, <code>Module#prepend</code>, एक वर्ग का विस्तार करने के लिए,
*एक नया तरीका, <code>Module#prepend</code>, एक वर्ग का विस्तार करने के लिए,
* प्रतीकों की एक सरणी बनाने के लिए एक नया शाब्दिक,
* प्रतीकों की एक सरणी बनाने के लिए एक नया शाब्दिक,
* अंकगणित के [[आलसी मूल्यांकन]] के लिए नया API, और
* अंकगणित के [[आलसी मूल्यांकन]] के लिए नया एपीआई, और
* वस्तुओं को हैश में बदलने के लिए #to_h का उपयोग करने का एक नया सम्मेलन।<ref name="Endoh"/>
* वस्तुओं को हैश में बदलने के लिए #to_h का उपयोग करने का एक नया सम्मेलन।<ref name="Endoh"/>


2.1.0 से शुरू होकर, रूबी की संस्करण नीति शब्दार्थगत संस्करण के समान हो गई।<ref name="semantic-versioning"/>
2.1.0 से आरम्भ होकर, रूबी की संस्करण नीति शब्दार्थगत संस्करण के समान हो गई।<ref name="semantic-versioning"/>


रूबी 2.2.0 में चालवर्धी , बग फिक्स और पुस्तकालय अद्यतन शामिल हैं और कुछ बहिष्कृत APIs को हटा देता है। सबसे विशेष रूप से, रूबी 2.2.0 स्मृति प्रबंधन में बदलाव पेश करता है{{snd}} एक वृद्धिशील अपशिष्ट संग्राहक, प्रतीकों के अपशिष्ट संग्रह के लिए समर्थन और जेमलोक के खिलाफ सीधे संकलन करने का विकल्प। इसमें system () और spawn () के साथ vfork (2) का प्रयोग करने के लिए प्रयोगात्मक समर्थन भी शामिल है, और यूनिकोड 7.0 विनिर्देश के लिए अतिरिक्त समर्थन शामिल है। संस्करण 2.2.1 के बाद से,<ref name="2-2-1-release"/> PowerPC64 पर रूबी MRI के प्रदर्शन में सुधार हुआ था।<ref name="2-2-1-changelog"/><ref name="Pedrosa-1"/><ref name="Pedrosa-2"/>जिन सुविधाओं को अप्रचलित या हटा दिया गया था उनमें callcc, DL library, Digest::HMAC, lib/rational.rb, lib/complex.rb, GServer, Logger::Application और साथ ही विभिन्न C API कार्य शामिल हैं।<ref name="obsolete-or-gone-in-2.2"/>
रूबी 2.2.0 में चालवर्धी, दोष मरम्मत और पुस्तकालय अद्यतन सम्मिलित हैं और कुछ बहिष्कृत एपीआई को हटा देता है। सबसे विशेष रूप से, रूबी 2.2.0 स्मृति प्रबंधन में बदलाव पेश करता है{{snd}} एक वृद्धिशील अपशिष्ट संग्राहक, प्रतीकों के अपशिष्ट संग्रह के लिए समर्थन और जेमलोक के खिलाफ सीधे संकलन करने का विकल्प। इसमें प्रणाली () और स्पान () के साथ वीफोर्क (2) का प्रयोग करने के लिए प्रयोगात्मक समर्थन भी सम्मिलित है, और यूनिसंहिता 7.0 विनिर्देश के लिए अतिरिक्त समर्थन सम्मिलित है। संस्करण 2.2.1 के बाद से,<ref name="2-2-1-release"/> पॉवरपीसी64 पर रूबी एमआरआई के प्रदर्शन में सुधार हुआ था।<ref name="2-2-1-changelog"/><ref name="Pedrosa-1"/><ref name="Pedrosa-2"/>जिन सुविधाओं को अप्रचलित या हटा दिया गया था उनमें कॉलसीसी, डीएल पुस्तकालय, संग्रह :: एचएमएसी, लिब/विवेकी.आरबी, लिब/जटिल.आरबी, जीएसरवर, प्रचालेखित्र :: अनुप्रयोग और साथ ही विभिन्न सी एपीआई कार्य सम्मिलित हैं।<ref name="obsolete-or-gone-in-2.2"/>


रूबी 2.3.0 में कई प्रदर्शन सुधार, अद्यतन और बग फिक्स शामिल हैं, जिसमें Proc#call, Socket और IO अपवाद मूलशब्द का उपयोग, Thread# नाम प्रबंधन, व्यतिक्रम निष्क्रिय Net::FTP कनेक्शन, और रेक को stdlib से हटाया जा रहा है।<ref name="Ruby 2.3.0 NEWS"/>अन्य उल्लेखनीय परिवर्तनों में शामिल हैं:
रूबी 2.3.0 में कई प्रदर्शन सुधार, अद्यतन और दोष मरम्मत सम्मिलित हैं, जिसमें प्रोक # कॉल, गर्तिका और आईओ अपवाद मूलशब्द का उपयोग, डोर# नाम प्रबंधन, व्यतिक्रम निष्क्रिय नेट::एफ़टीपी कनेक्शन, और रेक को एसटीडीलिब से हटाया जा रहा है।<ref name="Ruby 2.3.0 NEWS"/>अन्य उल्लेखनीय परिवर्तनों में सम्मिलित हैं:


* स्ट्रिंग ऑपरेशंस में परिणामस्वरूप बड़े प्रदर्शन में वृद्धि के साथ व्यतिक्रम रूप से सभी स्ट्रिंग शाब्दिक को जमे हुए के रूप में चिह्नित करने की क्षमता।<ref name="frozen-strings"/>* केवल चाबियों के बजाय कुंजी/मान जोड़े की प्रत्यक्ष जांच की अनुमति देने के लिए हैश तुलना।
* डोर संचालन में परिणामस्वरूप बड़े प्रदर्शन में वृद्धि के साथ व्यतिक्रम रूप से सभी डोर शाब्दिक को जमे हुए के रूप में चिह्नित करने की क्षमता।<ref name="frozen-strings"/>
* एक नया सुरक्षित मार्गनिर्देशन संचालक <code>&.</code> जो निल  प्रबंधन को आसान बना सकता है (उदाहरण के लिए {{code|lang=ruby|code=if obj && obj.foo && obj.foo.bar}}, हम प्रयोग कर सकते हैं <code>if obj&.foo&.bar</code>).
*केवल चाबियों के बजाय कुंजी/मान जोड़े की प्रत्यक्ष जांच की अनुमति देने के लिए हैश तुलना।
* did_you_mean रत्न अब व्यतिक्रम रूप से समूह किया गया है और शुरुआत पर स्वचालित रूप से NameError या NoMethodError पर समान नाम मिलानों का सुझाव देने के लिए आवश्यक है।
* एक नया सुरक्षित मार्गनिर्देशन संचालक <code>&.</code> जो शून्य प्रबंधन को आसान बना सकता है (उदाहरण के लिए {{code|lang=ruby|code=if obj && obj.foo && obj.foo.bar}}, हम प्रयोग कर सकते हैं <code>if obजे&.foo&.bar</code>).
* गहरे नेस्टेड मानों को आसानी से निकालने के लिए हैश # डिग और ऐरे # डिग (उदाहरण के लिए दिया गया {{code|lang=ruby|code=profile = { social: { wikipedia: { name: 'Foo Baz' } } }<nowiki />}}, फू बाज का मूल्य अब <code>profile.dig(:social, :wikipedia, :name)</code>) द्वारा प्राप्त किया जा सकता है ।
* डिड_यू_मीन रत्न अब व्यतिक्रम रूप से समूह किया गया है और शुरुआत पर स्वचालित रूप से नाम त्रुटिया नहीं विधि त्रुटि पर समान नाम मिलानों का सुझाव देने के लिए आवश्यक है।
* गहरे नेस्टेड मानों को आसानी से निकालने के लिए हैश # डिग और ऐरे # डिग (उदाहरण के लिए दिया गया {{code|lang=ruby|code=profile = { social: { wikipedia: { name: 'Foo Baz' } } }<nowiki />}}, फू बाज का मूल्य अब <code>profile.dig(:soसीial, :wikipedia, :name)</code>) द्वारा प्राप्त किया जा सकता है ।
* <code>.grep_v(regexp)</code> जो अन्य नई सुविधाओं के साथ-साथ दिए गए नियमित अभिव्यक्ति के सभी नकारात्मक उदाहरणों से मेल खाएगा।
* <code>.grep_v(regexp)</code> जो अन्य नई सुविधाओं के साथ-साथ दिए गए नियमित अभिव्यक्ति के सभी नकारात्मक उदाहरणों से मेल खाएगा।


रूबी 2.4.0 में हैश टेबल, Array#max, Array#min और उदाहरण चर अभिगम (इंस्टेंस वेरिएबल एक्सेस) में प्रदर्शन सुधार शामिल हैं।<ref name=":0"/>अन्य उल्लेखनीय परिवर्तनों में शामिल हैं:
रूबी 2.4.0 में हैश सूची, ऐरे#मैक्स, ऐरे#मिन और उदाहरण चर अभिगम (इंस्टेंस वेरिएबल एक्सेस) में प्रदर्शन सुधार सम्मिलित हैं।<ref name=":0"/>अन्य उल्लेखनीय परिवर्तनों में सम्मिलित हैं:


* Binding#irb: binding.pry के समान एक REPL सत्र प्रारंभ करें
* बाइंडिंग#आईआरबी: बाइंडिंग.पीआरवाई के समान एक आरईपीएल सत्र प्रारंभ करें
* Unify ''Fixnum'' और ''Bignum'' को पूर्णांक वर्ग में एकीकृत करें
* यूनिफाई फिक्सनमऔर बिग्नम को पूर्णांक वर्ग में एकीकृत करें
* स्ट्रिंग केवल ASCII ही नहीं, बल्कि यूनिकोड स्थिति प्रतिचित्रण का समर्थन करती है
* डोर केवल एएससीआईआई ही नहीं, बल्कि यूनिसंहिता स्थिति प्रतिचित्रण का समर्थन करती है
* एक नई विधि, Regexp#match?, जो Regexp#match का तेज़ बूलियन संस्करण है
* एक नई विधि, रेगऍक्स्प#मैच?, जो रेगऍक्स्प#मैच का तेज़ बूलियन संस्करण है
* सूत्र गतिरोध पहचान अब सूत्र को उनके पश्व-अनुरेखन (बैकट्रेस) और निर्भरता के साथ दिखाता है
* सूत्र गतिरोध पहचान अब सूत्र को उनके पश्व-अनुरेखन (बैकट्रेस) और निर्भरता के साथ दिखाता है


रूबी 2.5.0 में कुछ उल्लेखनीय परिवर्तनों में बचाव और सुनिश्चित करना शामिल है कि बयान स्वचालित रूप से आसपास के डू-एंड ब्लॉक (अतिरिक्त स्टार्ट-एंड ब्लॉक की कम आवश्यकता) का उपयोग करते हैं, ''yield_self'' के साथ विधि-श्रृंखला, शाखा व्याप्ति के लिए समर्थन और विधि व्याप्ति माप, और आसान ''Hash#slice'' और ''Hash#transform_keys'' के साथ हैश रूपांतर इसके शीर्ष पर कई प्रदर्शन सुधार आते हैं जैसे तेज खंड क्षणिक (3 गुना तेज), तेज म्यूटेक्स, तेज ERB  सांचा और कुछ संघनन विधियों में सुधार।
रूबी 2.5.0 में कुछ उल्लेखनीय परिवर्तनों में बचाव और सुनिश्चित करना सम्मिलित है कि बयान स्वचालित रूप से आसपास के डू-एंड ब्लॉक (अतिरिक्त स्टार्ट-एंड ब्लॉक की कम आवश्यकता) का उपयोग करते हैं, ''उपज_स्वयं'' के साथ विधि-श्रृंखला, शाखा व्याप्ति के लिए समर्थन और विधि व्याप्ति माप, और आसान ''हैश#'' स्लाइस और ''हैश#परिवर्तन_कुंजी'' के साथ हैश रूपांतर इसके शीर्ष पर कई प्रदर्शन सुधार आते हैं जैसे तेज खंड क्षणिक (3 गुना तेज), तेज म्यूटेक्स, तेज ईआरबी सांचा और कुछ संघनन विधियों में सुधार।


रूबी 2.6.0 में कुछ उल्लेखनीय परिवर्तनों में एक प्रायोगिक [[जस्ट-इन-टाइम कंपाइलर]] (JIT) और RubyVM::AbstractSyntaxTree (प्रयोगात्मक) शामिल हैं।
रूबी 2.6.0 में कुछ उल्लेखनीय परिवर्तनों में एक प्रायोगिक [[जस्ट-इन-टाइम कंपाइलर]] (जेआईटी) और रूबीवीएम::सार वाक्य - विन्यास वृक्ष (प्रयोगात्मक) सम्मिलित हैं।


रूबी 2.7.0 में कुछ उल्लेखनीय परिवर्तनों में स्वरूप मिलान (प्रायोगिक), REPL सुधार, एक संघनन GC, और स्थितीय और मुख्य शब्द तर्कों को अलग करना शामिल है।
रूबी 2.7.0 में कुछ उल्लेखनीय परिवर्तनों में स्वरूप मिलान (प्रायोगिक), आरईपीएल सुधार, एक संघनन जीसी, और स्थितीय और मुख्य शब्द तर्कों को अलग करना सम्मिलित है।


=== रूबी 3 ===
=== रूबी 3 ===


रूबी 3.0.0 को 2020 में क्रिसमस के दिन विज्ञप्ति किया गया था।<ref name="Ruby 3.0.0 Released"/>इसे रूबी 3x3 के रूप में जाना जाता है जिसका अर्थ है कि रूबी 2.0 की तुलना में रूबी 3.0 में कार्यक्रम तीन गुना तेजी से चलेंगे।<ref>{{cite web|url=https://blog.heroku.com/ruby-3-by-3|title=रूबी 3x3: मैट्ज़, कोइची, और रूबी प्रदर्शन के भविष्य पर टेंडरलव}}</ref> और कुछ ने पहले से ही 2 से 3 तक सड़क पर मध्यवर्ती विज्ञप्ति में लागू किया था। 3x3 को प्राप्त करने के लिए, रूबी 3 MJIT के साथ आता है, और बाद में YJIT, जस्ट-इन-टाइम संकलनकर्ता (कंपाइलर्स), कार्यक्रम को तेज़ बनाने के लिए, हालांकि उन्हें प्रायोगिक के रूप में वर्णित किया गया है और बने रहते हैं व्यतिक्रम रूप से अक्षम (रनटाइम पर झंडे द्वारा सक्षम)
रूबी 3.0.0 को 2020 में क्रिसमस के दिन प्रकाशन किया गया था।<ref name="Ruby 3.0.0 Released"/>इसे रूबी 3x3 के रूप में जाना जाता है जिसका अर्थ है कि रूबी 2.0 की तुलना में रूबी 3.0 में कार्यक्रम तीन गुना तेजी से चलेंगे।<ref>{{cite web|url=https://blog.heroku.com/ruby-3-by-3|title=रूबी 3x3: मैट्ज़, कोइची, और रूबी प्रदर्शन के भविष्य पर टेंडरलव}}</ref> और कुछ ने पहले से ही 2 से 3 तक मार्ग पर मध्यवर्ती प्रकाशन में लागू किया था। 3x3 को प्राप्त करने के लिए, रूबी 3 एमजेआईटी के साथ आता है, और बाद में वाईजेआईटी, सही समय पर संकलनकर्ता (कंपाइलर्स), कार्यक्रम को तेज़ बनाने के लिए, हालांकि उन्हें प्रायोगिक के रूप में वर्णित किया गया है और व्यतिक्रम रूप से अक्षम (रनटाइम पर झंडे द्वारा सक्षम) बने रहते हैं।


रूबी 3.0 का एक अन्य लक्ष्य संगामिति (कंप्यूटर साइंस) और दो और उपयोगिताओं फाइबर अनुसूचक , और प्रयोगात्मक रेक्टर लक्ष्य को को सुगम बनाते हैं।<ref name="Ruby 3.0.0 Released"/>रेक्टर हल्का वजन और सूत्र-सुरक्षित है क्योंकि इसे साझा वस्तुओं के बजाय संदेशों का आदान-प्रदान करके प्राप्त किया जाता है।
रूबी 3.0 का एक अन्य लक्ष्य संगामिति (कंप्यूटर साइंस) और दो और उपयोगिताओं फाइबर अनुसूचक, और प्रयोगात्मक रेक्टर लक्ष्य को सुगम बनाते हैं।<ref name="Ruby 3.0.0 Released"/>रेक्टर हल्का वजन और सूत्र-सुरक्षित है क्योंकि इसे साझा वस्तुओं के बजाय संदेशों का आदान-प्रदान करके प्राप्त किया जाता है।


रूबी 3.0 स्थैतिक कार्यक्रम विश्लेषण के लिए रूबी कार्यक्रमों के प्रकारों का वर्णन करने के लिए RBS भाषा का परिचय देता है।<ref name="Ruby 3.0.0 Released"/>इसे सामान्य रूबी प्रोग्राम से अलग किया जाता है।
रूबी 3.0 स्थैतिक कार्यक्रम विश्लेषण के लिए रूबी कार्यक्रमों के प्रकारों का वर्णन करने के लिए आरबीएस लैंग्वेज का परिचय देता है।<ref name="Ruby 3.0.0 Released"/>इसे सामान्य रूबी कार्यक्रम से अलग किया जाता है।


रुबी 3.0 में कुछ रचनाक्रम संवर्द्धन और पुस्तकालय परिवर्तन भी हैं।<ref name="Ruby 3.0.0 Released"/>
रुबी 3.0 में कुछ वाक्य - विन्यास संवर्द्धन और पुस्तकालय परिवर्तन भी हैं।<ref name="Ruby 3.0.0 Released"/>


रूबी 3.1 को 2021 में क्रिसमस के दिन विज्ञप्ति किया गया था।<ref name="Ruby 3.1.0 Released"/>इसमें YJIT शामिल है, जो वास्तविक दुनिया के व्यावसायिक अनुप्रयोगों के प्रदर्शन को बढ़ाने के लिए Shopify द्वारा विकसित एक नया जस्ट-इन-टाइम कंपाइलर है। एक नया दोषमार्जक ([[डिबगर|डिबगर)]] भी शामिल है। इस विज्ञप्ति में कुछ रचनाक्रम संवर्द्धन और अन्य सुधार हैं। FTP, SMTP, IMAP, and POP के लिए संजाल (नेटवर्क लाइब्रेरी) को व्यतिक्रम रत्नों से समूह किए गए रत्नों में ले जाया जाता है। <ref>{{cite web|url=https://www.ruby-lang.org/en/news/2021/12/25/ruby-3-1-0-released//|title=रूबी 3.1.0 जारी}}</ref>
रूबी 3.1 को 2021 में क्रिसमस के दिन प्रकाशन किया गया था।<ref name="Ruby 3.1.0 Released"/>इसमें वाईजेआईटी सम्मिलित है, जो वास्तविक दुनिया के व्यावसायिक अनुप्रयोगों के प्रदर्शन को बढ़ाने के लिए शॉपआईएफवाई द्वारा विकसित एक नया सही समय पर संकलक है। एक नया दोषमार्जक ([[डिबगर|डिबगर)]] भी सम्मिलित है। इस प्रकाशन में कुछ वाक्य - विन्यास संवर्द्धन और अन्य सुधार हैं। एफ़टीपी, एसएमटीपी, आईएमएपी और पीओपी के लिए संजाल (नेटवर्क पुस्तकालय) को व्यतिक्रम जेम से समूह किए गए जेम में ले जाया जाता है। <ref>{{cite web|url=https://www.ruby-lang.org/en/news/2021/12/25/ruby-3-1-0-released//|title=रूबी 3.1.0 जारी}}</ref>


रूबी 3.2 को 2022 में क्रिसमस के दिन विज्ञप्ति किया गया था। यह एक WASI अंतरापृष्ठ के माध्यम से WebAssembly वातावरण के अंदर चलाने के लिए समर्थन लाता है। नियमित अभिव्यक्ति में कुछ सुधार भी प्राप्त होते हैं, जिसमें कुछ ReDoS हमलों से बचाने के लिए तेज़, मेमोइज़्ड मेल  कलन विधि और नियमित अभिव्यक्ति मेल के लिए समनुरूप करने योग्य टाइमआउट शामिल हैं। इस विज्ञप्ति में अतिरिक्त डिबगिंग और रचनाक्रम सुविधाएँ भी शामिल हैं, जिसमें रचनाक्रम सुझाव, साथ ही त्रुटि हाइलाइटिंग शामिल हैं। MJIT संकलनकर्ता को एक मानक लाइब्रेरी मॉड्यूल के रूप में फिर से लागू किया गया है, जबकि YJIT, एक जंग-आधारित JIT संकलनकर्ता अब Linux पर अधिक संरचना का समर्थन करता है।
रूबी 3.2 को 2022 में क्रिसमस के दिन प्रकाशन किया गया था। यह एक डब्ल्यूएएसआई अंतरापृष्ठ के माध्यम से वेब समन्वायोजन वातावरण के अंदर चलाने के लिए समर्थन लाता है। नियमित अभिव्यक्ति में कुछ सुधार भी प्राप्त होते हैं, जिसमें कुछ रे डॉस हमलों से बचाने के लिए तेज़, मेमोइज़्ड मिलान कलन विधि और नियमित अभिव्यक्ति मिलान के लिए समनुरूप करने योग्य काल समापन (टाइमआउट) सम्मिलित हैं। इस प्रकाशन में अतिरिक्त दोषमार्जन और वाक्य - विन्यास सुविधाएँ भी सम्मिलित हैं, जिसमें वाक्य - विन्यास सुझाव, साथ ही त्रुटि हाइलाइटिंग सम्मिलित हैं। एमजेआईटी संकलनकर्ता को एक मानक पुस्तकालय उपागम के रूप में फिर से लागू किया गया है, जबकि वाईजेआईटी, एक जंग-आधारित जेआईटी संकलनकर्ता अब लिनक्स पर अधिक संरचना का समर्थन करता है।






== संस्करणों की तालिका ==
== संस्करणों की तालिका ==
{| class="wikitable"
{| class="wikitable"
|-
|-
! संस्करण
! संस्करण
! नवीनतम नन्हा संस्करण
! नवीनतम नन्हा संस्करण
! प्रारंभिक विज्ञप्ति की तारीख
! प्रारंभिक रिलीज की तारीख
! समर्थन चरण का अंत
! समर्थन चरण का अंत
! सुरक्षा रखरखाव चरण का अंत
! सुरक्षा अनुरक्षण चरण का अंत
|-
|-
| {{Version |o |1.0}}
| {{Version |o |1.0}}
| NA
| {{N/A}}
| 1996-12-25<ref name="1.0"/>
| 1996-12-25<ref name="1.0"/>
| NA
| {{N/A}}
| NA
| {{N/A}}
|-
|-
| {{Version |o |1.8}}
| {{Version |o |1.8}}
Line 199: Line 193:
|-
|-
| {{Version |co |2.7}}
| {{Version |co |2.7}}
| 2.7.6<ref name="2.7"/>
| 2.7.7<ref name="2.7"/>
| 2019-12-25<ref name="2.7-release"/>
| 2019-12-25<ref name="2.7-release"/>
| 2022-04-12<ref name="Ruby 2.7.6 Released">{{cite web | url = https://www.ruby-lang.org/en/news/2022/04/12/ruby-2-7-6-released/ | title = Ruby 2.7.6 Released | website = Ruby Programming Language | date = 2022-04-12 | access-date = 2022-11-27}}</ref>
| 2022-04-12<ref name="Ruby 2.7.7 Released">{{cite web | url = https://www.ruby-lang.org/en/news/2022/11/24/ruby-2-7-7-released/ | title = Ruby 2.7.7 Released | website = Ruby Programming Language | date = 2022-11-24 | access-date = 2022-11-24}}</ref>
| {{TBA}}
| 2023-03-31<ref name="ReleaseEngineering"/>
|-
|-
| {{Version |co |3.0}}
| {{Version |co |3.0}}
| 3.0.4<ref name="3.0"/>
| 3.0.5<ref name="3.0"/>
| 2020-12-25<ref name="3.0-release"/>
| 2020-12-25<ref name="3.0-release"/>
| {{TBA}}
| 2023-03-31<ref name="ReleaseEngineering"/>
| {{TBA}}
| {{TBA}}
|-
|-
| {{Version |c |3.1}}
| {{Version | co |3.1}}
| 3.1.2<ref name="Ruby 3.1.2 Released"/>
| 3.1.3<ref name="Ruby 3.1.3 Released"/>
| 2021-12-25<ref name="Ruby 3.1.0 Released"/>
| 2021-12-25<ref name="Ruby 3.1.0 Released"/>
| {{TBA}}
| {{TBA}}
| {{TBA}}
| {{TBA}}
|-
|-
| colspan=5 | {{Version|l|show=111101}}
| {{Version|c|3.2}}
| 3.2.0<ref name="Ruby 3.2.0 Released"/>
| 2022-12-25<ref name="Ruby 3.2.0 Released"/>
| {{TBA}}
| {{TBA}}
 
|}
|}


 
==शब्दार्थ और दर्शन==
== शब्दार्थ और दर्शन ==
मात्सुमोतो ने कहा है कि अच्छे उपयोगकर्ता अंतरफलक प्रारूप के सिद्धांतों का पालन करते हुए रूबी को क्रमादेशक उत्पादकता और मनोरंजन के लिए परिकलन किया गया है।<ref name="informit"/>2008 में एक गूगल तकनीकी बात में मात्सुमोतो ने आगे कहा, मुझे उम्मीद है कि रूबी दुनिया के हर क्रमादेशक को उत्पादक बनने और कार्यरचना का आनंद लेने और खुश रहने में मदद करेगी। वह रूबी लैंग्वेज का प्राथमिक उद्देश्य है।<ref name="googletechtalk"/>उन्होंने जोर देकर कहा कि प्रणाली प्रारूप को संगणक के बजाय मानव पर जोर देने की जरूरत है:<ref name="artima"/>
[[File:Yukihiro Matsumoto.JPG|thumb|युकिहिरो मात्सुमोतो]]मात्सुमोतो ने कहा है कि अच्छे यूजर इंटरफेस डिजाइन के सिद्धांतों का पालन करते हुए रूबी को प्रोग्रामर उत्पादकता और मनोरंजन के लिए डिजाइन किया गया है।<ref name="informit"/>2008 में एक Google टेक टॉक में मात्सुमोतो ने आगे कहा, मुझे उम्मीद है कि रूबी दुनिया के हर प्रोग्रामर को उत्पादक बनने और प्रोग्रामिंग का आनंद लेने और खुश रहने में मदद करेगी। वह रूबी भाषा का प्राथमिक उद्देश्य है।<ref name="googletechtalk"/>उन्होंने जोर देकर कहा कि सिस्टम डिजाइन को कंप्यूटर के बजाय मानव पर जोर देने की जरूरत है:<ref name="artima"/>


{{quote|
{{quote|
अक्सर लोग, खासकर कंप्यूटर इंजीनियर, मशीनों पर ध्यान केंद्रित करते हैं। वे सोचते हैं, "ऐसा करने से मशीन तेजी से चलेगी। ऐसा करने से मशीन अधिक प्रभावी ढंग से चलेगी। ऐसा करने से मशीन कुछ कुछ करेगी।" वे मशीनों पर ध्यान केंद्रित कर रहे हैं। लेकिन वास्तव में हमें मनुष्यों पर ध्यान केंद्रित करने की आवश्यकता है कि कैसे मनुष्य प्रोग्रामिंग करने या मशीनों के अनुप्रयोग को संचालित करने की परवाह करते हैं। हम उस्ताद हैं। वे गुलाम हैं।}}
अक्सर लोग, खासकर संगणक अभियन्ता, यंत्र पर ध्यान केंद्रित करते हैं। वे सोचते हैं, "ऐसा करने से यंत्र तेजी से चलेगी। ऐसा करने से यंत्र अधिक प्रभावी ढंग से चलेगी। ऐसा करने से यंत्र कुछ करेगा।" वे यंत्र पर ध्यान केंद्रित कर रहे हैं। लेकिन वास्तव में हमें मनुष्यों पर ध्यान केंद्रित करने की आवश्यकता है कि कैसे मनुष्य कार्यरचना करने या यंत्र के अनुप्रयोग को संचालित करने की परवाह करते हैं। हम उस्ताद हैं। वे गुलाम हैं।}}
मात्सुमोतो ने कहा है कि उनका प्राथमिक डिजाइन लक्ष्य प्रोग्रामर के काम को कम करके और संभावित भ्रम को कम करके एक ऐसी भाषा बनाना था जिसका उपयोग करने में उन्हें खुद मज़ा आता था। उन्होंने कहा है कि उन्होंने रूबी के डिजाइन के लिए कम से कम विस्मय का सिद्धांत (पोला) लागू नहीं किया था;<ref name="artima"/>मई 2005 में समाचार समूह comp.lang.ruby पर चर्चा में, मात्सुमोतो ने रूबी को पोला से दूर करने का प्रयास किया, यह समझाते हुए कि क्योंकि कोई भी डिज़ाइन विकल्प किसी के लिए आश्चर्यजनक होगा, वह आश्चर्य का मूल्यांकन करने में एक व्यक्तिगत मानक का उपयोग करता है। यदि वह व्यक्तिगत मानक सुसंगत रहता है, तो मानक से परिचित लोगों के लिए कुछ आश्चर्य होगा।<ref name="rubyweeklynews"/>
मात्सुमोतो ने कहा है कि उनका प्राथमिक अभिकल्पना लक्ष्य क्रमादेशक के काम को कम करके और संभावित भ्रम को कम करके एक ऐसी लैंग्वेज बनाना था जिसका उपयोग करने में उन्हें खुद मज़ा आता था। उन्होंने कहा है कि उन्होंने रूबी के अभिकल्पना के लिए कम से कम विस्मय का सिद्धांत (पोला) लागू नहीं किया था;<ref name="artima" />मई 2005 में समाचार समूह कॉम्प.लैंग.रूबी पर चर्चा में, मात्सुमोतो ने रूबी को पोला से दूर करने का प्रयास किया, यह समझाते हुए कि क्योंकि कोई भी अभिकल्पना किसी के लिए आश्चर्यजनक होगा, वह आश्चर्य का मूल्यांकन करने में एक व्यक्तिगत मानक का उपयोग करता है। यदि वह व्यक्तिगत मानक सुसंगत रहता है, तो मानक से परिचित लोगों के लिए कुछ आश्चर्य होगा।<ref name="rubyweeklynews" />


मात्सुमोतो ने एक साक्षात्कार में इसे इस प्रकार परिभाषित किया:<ref name="artima"/>
मात्सुमोतो ने एक साक्षात्कार में इसे इस प्रकार परिभाषित किया:<ref name="artima" />


{{quote|
{{quote|
प्रत्येक व्यक्ति की एक व्यक्तिगत पृष्ठभूमि होती है। कोई पायथन से आ सकता है, कोई पर्ल से आ सकता है, और वे भाषा के विभिन्न पहलुओं से आश्चर्यचकित हो सकते हैं। फिर वे मेरे पास आते हैं और कहते हैं, 'मैं भाषा की इस विशेषता से हैरान था, इसलिए रूबी कम से कम आश्चर्य के सिद्धांत का उल्लंघन करती है।' रुकना। रुकना। कम से कम आश्चर्य का सिद्धांत सिर्फ आपके लिए नहीं है। कम से कम आश्चर्य का सिद्धांत मतलब कम से कम 'मेरा' आश्चर्य का सिद्धांत। और इसका अर्थ है रूबी को बहुत अच्छी तरह से सीखने के बाद कम से कम आश्चर्य का सिद्धांत। उदाहरण के लिए, रूबी को डिजाइन करना शुरू करने से पहले मैं एक सी ++ प्रोग्रामर था। मैंने विशेष रूप से दो या तीन वर्षों के लिए C++ में प्रोग्राम किया। और सी ++ प्रोग्रामिंग के दो साल बाद, यह अभी भी मुझे आश्चर्यचकित करता है।
प्रत्येक व्यक्ति की एक व्यक्तिगत पृष्ठभूमि होती है। कोई पायथन से आ सकता है, कोई पर्ल से आ सकता है, और वे भाषा के विभिन्न पहलुओं से आश्चर्यचकित हो सकते हैं। फिर वे मेरे पास आते हैं और कहते हैं, 'मैं भाषा की इस विशेषता से हैरान था, इसलिए रूबी कम से कम आश्चर्य के सिद्धांत का उल्लंघन करती है।' रुकना। रुकना। कम से कम आश्चर्य का सिद्धांत सिर्फ आपके लिए नहीं है। कम से कम आश्चर्य का सिद्धांत मतलब कम से कम 'मेरा' आश्चर्य का सिद्धांत। और इसका अर्थ है रूबी को बहुत अच्छी तरह से सीखने के बाद कम से कम आश्चर्य का सिद्धांत। उदाहरण के लिए, रूबी को डिजाइन करना शुरू करने से पहले मैं एक C ++ क्रमादेशक था। मैंने विशेष रूप से दो या तीन वर्षों के लिए C++ में क्रमादेश किया। और C ++ क्रमदेशन के दो साल बाद, यह अभी भी मुझे आश्चर्यचकित करता है।
}}
}}
रूबी वस्तु-उन्मुख है: प्रत्येक मान एक वस्तु है, जिसमें कक्षाएं और प्रकार के उदाहरण शामिल हैं, जिन्हें कई अन्य भाषाएँ आदिम (जैसे कि [[पूर्णांक (कंप्यूटर विज्ञान)]], बूलियन्स, और नल पॉइंटर) के रूप में निर्दिष्ट करती हैं। चर हमेशा वस्तुओं के संदर्भ रखते हैं। प्रत्येक फ़ंक्शन (प्रोग्रामिंग) एक विधि (प्रोग्रामिंग) है और विधियों को हमेशा किसी वस्तु पर बुलाया जाता है। शीर्ष स्तर के दायरे में परिभाषित तरीके ऑब्जेक्ट क्लास के तरीके बन जाते हैं। चूंकि यह वर्ग हर दूसरे वर्ग का पूर्वज है, इसलिए किसी भी वस्तु पर ऐसी विधियों को बुलाया जा सकता है। वे वैश्विक प्रक्रियाओं के रूप में प्रभावी रूप से सेवा करते हुए, सभी क्षेत्रों में भी दिखाई दे रहे हैं। रूबी [[गतिशील प्रेषण]], मिक्सिन्स और सिंगलटन विधियों के साथ वंशानुक्रम (वस्तु-उन्मुख प्रोग्रामिंग) का समर्थन करती है (कक्षा पर परिभाषित होने के बजाय एकल [[उदाहरण (कंप्यूटर विज्ञान)]] से संबंधित और परिभाषित)। हालांकि रूबी एकाधिक वंशानुक्रम का समर्थन नहीं करती है, कक्षाएं मिश्रण के रूप में मॉड्यूल (प्रोग्रामिंग) आयात कर सकती हैं।
रूबी वस्तु-उन्मुख है: प्रत्येक मान एक वस्तु है, जिसमें कक्षाएं और प्रकार के उदाहरण सम्मिलित हैं, जिन्हें कई अन्य भाषाएँ आदिम (जैसे कि [[पूर्णांक (कंप्यूटर विज्ञान)]], बूलियन्स, और शून्य) के रूप में निर्दिष्ट करती हैं। चर सदैव वस्तुओं के संदर्भ रखते हैं। प्रत्येक प्रकार्य एक विधि है और विधियों को सदैव किसी वस्तु पर बुलाया जाता है। शीर्ष स्तर के दायरे में परिभाषित तरीके वस्तु वर्ग के तरीके बन जाते हैं। चूंकि यह वर्ग हर दूसरे वर्ग का पूर्वज है, इसलिए किसी भी वस्तु पर ऐसी विधियों को बुलाया जा सकता है। वे वैश्विक प्रक्रियाओं के रूप में प्रभावी रूप से सेवा करते हुए, सभी क्षेत्रों में भी दिखाई दे रहे हैं। रूबी [[गतिशील प्रेषण]], मिक्सिन्स और एकाकी वस्तु (सिंगलटन) विधियों के साथ वंशानुक्रम (वस्तु-उन्मुख क्रमदेशन) का समर्थन करती है (कक्षा पर परिभाषित होने के बजाय एकल [[उदाहरण (कंप्यूटर विज्ञान)|उदाहरण]] से संबंधित और परिभाषित)। हालांकि रूबी एकाधिक वंशानुक्रम का समर्थन नहीं करती है, कक्षाएं मिश्रण के रूप में अनुखंड आयात कर सकती हैं।


रूबी को बहु-प्रतिमान प्रोग्रामिंग भाषा के रूप में वर्णित किया गया है: यह प्रक्रियात्मक प्रोग्रामिंग की अनुमति देता है (वर्गों के बाहर कार्यों/चर को परिभाषित करना उन्हें जड़ का हिस्सा बनाता है, 'स्वयं' ऑब्जेक्ट), ऑब्जेक्ट ओरिएंटेशन (सब कुछ एक ऑब्जेक्ट है) या [[वंशानुक्रम (वस्तु-उन्मुख प्रोग्रामिंग)]]यह अनाम कार्य, क्लोजर (कंप्यूटर विज्ञान), और निरंतरताएं हैं; बयानों में सभी मूल्य हैं, और कार्य अंतिम मूल्यांकन लौटाते हैं)। इसमें [[आत्मनिरीक्षण (कंप्यूटर विज्ञान)]], प्रतिबिंब (कंप्यूटर विज्ञान) और मेटाप्रोग्रामिंग के साथ-साथ दुभाषिया-आधारित थ्रेड (कंप्यूटर विज्ञान) के लिए समर्थन है। रूबी फीचर टाइप सिस्टम, और पैरामीट्रिक बहुरूपता का समर्थन करता है।
रूबी को बहु-प्रतिमान क्रमदेशन लैंग्वेज के रूप में वर्णित किया गया है: यह प्रक्रियात्मक क्रमदेशन की अनुमति देता है (वर्गों के बाहर कार्यों/चर को परिभाषित करना उन्हें जड़ का हिस्सा बनाता है, 'स्वयं' वस्तु), वस्तु अभिविन्यास (सब कुछ एक वस्तु है) या [[वंशानुक्रम (वस्तु-उन्मुख प्रोग्रामिंग)|वंशानुक्रम (वस्तु-उन्मुख क्रमदेशन)]]यह अनाम कार्य, क्लोजर (कंप्यूटर विज्ञान), और निरंतरताएं हैं; बयानों में सभी मूल्य हैं, और कार्य अंतिम मूल्यांकन लौटाते हैं)। इसमें [[आत्मनिरीक्षण (कंप्यूटर विज्ञान)|आत्मनिरीक्षण]] , प्रतिबिंब और मेटा क्रमदेशन के साथ-साथ दुभाषिया-आधारित डोर के लिए समर्थन है। रूबी गतिशील टंकण की सुविधा देता है, और प्राचलिक बहुरूपता का समर्थन करता है।


रूबी एफएक्यू के अनुसार, सिंटैक्स पर्ल के समान है और शब्दार्थ स्मॉलटॉक | स्मॉलटाक के समान है, लेकिन डिजाइन दर्शन पायथन (प्रोग्रामिंग भाषा) | पायथन से बहुत अलग है।<ref name="faq-comparison"/>
रूबी एफएक्यू के अनुसार, वाक्य - विन्यास पर्ल के समान है और शब्दार्थ गपशप | गपशप के समान है, लेकिन अभिकल्पना दर्शन पायथन ( क्रमदेशन लैंग्वेज) | पायथन से बहुत अलग है।<ref name="faq-comparison" />




== सुविधाएँ ==
==विशेषताएं==


* [[वंशानुक्रम (कंप्यूटर विज्ञान)]], मिश्रण और मेटाक्लासेस के साथ पूरी तरह से वस्तु-उन्मुख<ref name="stewart"/>* डायनामिक टाइपिंग और [[बतख टाइपिंग]]
*[[वंशानुक्रम (कंप्यूटर विज्ञान)|वंशानुक्रम]] , मिश्रण और मेबातचीतक्षा के साथ पूरी तरह से वस्तु-उन्मुख<ref name="stewart" />
* सब कुछ एक [[अभिव्यक्ति (प्रोग्रामिंग)]] है (यहां तक ​​​​कि कथन (प्रोग्रामिंग)) और सब कुछ [[अनिवार्य प्रोग्रामिंग]] (यहां तक ​​​​कि [[घोषणा (कंप्यूटर विज्ञान)]]) निष्पादित किया जाता है।
*गतिशील टंकण और [[बतख टाइपिंग|डक टंकण]]
* संक्षिप्त और लचीला वाक्य रचना<ref name="venners-productivity"/>जो सिंटैक्टिक शोर को कम करता है और डोमेन-विशिष्ट भाषाओं के लिए नींव के रूप में कार्य करता है<ref name="fowler-dsl"/>* डायनेमिक रिफ्लेक्शन (कंप्यूटर साइंस) और डायनेमिक प्रोग्रामिंग लैंग्वेज # मेटाप्रोग्रामिंग की सुविधा के लिए ऑब्जेक्ट्स का ऑब्जेक्ट रनटाइम परिवर्तन<ref name="codeproject-dynamic"/>* क्लोजर (कंप्यूटर साइंस), इटरेटर और जेनरेटर (कंप्यूटर साइंस), रूबी सिंटैक्स # ब्लॉक और इटरेटर के साथ<ref name="venners-closures"/>* [[गतिशील सरणी]], [[साहचर्य सरणी]], नियमित अभिव्यक्ति और प्रतीक (लिस्प) के लिए शाब्दिक अंकन
*सब कुछ एक [[अभिव्यक्ति (प्रोग्रामिंग)|अभिव्यक्ति]] है (यहां तक ​​​​कि कथन भी) और सब कुछ [[अनिवार्य प्रोग्रामिंग|अनिवार्य]] रूप से निष्पादित किया जाता है (यहां तक कि घोषणाएं भी)
* स्ट्रिंग्स में एम्बेडिंग कोड (वैरिएबल इंटरपोलेशन)
*संक्षिप्त और लचीला वाक्य - विन्यास<ref name="venners-productivity" />जो वाक्यात्मक शोर को कम करता है और अनुक्षेत्र-विशिष्ट भाषाओं के लिए नींव के रूप में कार्य करता है<ref name="fowler-dsl" />
* [[डिफ़ॉल्ट तर्क|व्यतिक्रम तर्क]]
*मेटा क्रमदेशन की सुविधा के लिए वस्तुओं का गतिशील प्रतिबिंब और परिवर्तन <ref name="codeproject-dynamic" />
* वेरिएबल स्कोप के चार स्तर ([[वैश्विक चर]], [[वर्ग चर]], [[उदाहरण चर]] और लोकल वेरिएबल) जिसे सिगिल (कंप्यूटर प्रोग्रामिंग) या उसके अभाव में दर्शाया गया है
*खंड वाक्य विन्यास के साथ शाब्दिक संवरण, पुनरावर्तक और जनित्र <ref name="venners-closures" />
* कचरा संग्रह (कंप्यूटर विज्ञान)
*[[गतिशील सरणी]], हैश, [[साहचर्य सरणी]], नियमित अभिव्यक्ति और प्रतीकों के लिए शाब्दिक अंकन
* [[प्रथम श्रेणी निरंतरता]]
*स्ट्रिंग्स में संपुटन (एम्बेडिंग) संहिता (प्रक्षेप)
* सख्त बूलियन निहित प्रकार के रूपांतरण नियम (सब कुछ सत्य है सिवाय <code>false</code> तथा <code>[[Null pointer|nil]]</code>)
*[[डिफ़ॉल्ट तर्क|व्यतिक्रम तर्क]]
* एक्सेप्शन हेंडलिंग
*चर दायरे के चार स्तर ([[वैश्विक चर]], [[वर्ग चर]], [[उदाहरण चर]] और स्थानीय चर) जिसे सिगिल (कंप्यूटर क्रमदेशन) या उसके अभाव से चिह्नित
* ऑपरेटर ओवरलोडिंग<ref name="Methods"/>* परिमेय संख्याओं, [[जटिल संख्या]]ओं और मनमाना-परिशुद्धता अंकगणित के लिए अंतर्निहित समर्थन
*अपशिष्ट संग्रह
* कस्टम प्रेषण व्यवहार (के माध्यम से <code>method_missing</code> तथा <code>const_missing</code>)
*[[प्रथम श्रेणी निरंतरता]]
* नेटिव थ्रेड (कंप्यूटर साइंस) और कोऑपरेटिव फाइबर (कंप्यूटर साइंस) (फाइबर एक 1.9/YARV फीचर हैं)
*सख्त बूलियन निहित प्रकार के रूपांतरण नियम (सब कुछ सत्य है सिवाय गलत तथा<code>[[Null pointer|शून्य]]</code>)
* यूनिकोड और कई कैरेक्टर एनकोडिंग के लिए समर्थन।
*अपवाद प्रहस्तन
* नेटिव प्लग-इन (कंप्यूटिंग)| प्लग-इन एपीआई इन [[सी (प्रोग्रामिंग भाषा)]]
*प्रचालक अतिभारण<ref name="Methods" />
* इंटरएक्टिव रूबी शेल, एक इंटरैक्टिव कमांड-लाइन दुभाषिया जिसका उपयोग कोड को जल्दी से परीक्षण करने के लिए किया जा सकता है (रीड-इवल-प्रिंट लूप)
*परिमेय संख्याओं, [[जटिल संख्या]]ओं और मनमाना-परिशुद्धता अंकगणित के लिए अंतर्निहित समर्थन
* RubyGems के माध्यम से केंद्रीकृत पैकेज प्रबंधन
*आचार प्रेषण व्यवहार (के माध्यम से <code>मेथड_मिसिंग</code> तथा <code>कांस्ट_मिसिंग</code>)
* सभी प्रमुख प्लेटफार्मों पर लागू किया गया
*प्राकृत सूत्र और सहकारी तंत्रिका (तंत्रिका एक 1.9/वाईएआरवी विशेषता हैं)
* YAML, [[JSON]], XML, [[कॉमन गेटवे इंटरफ़ेस]], OpenSSL, [[HTTP]], FTP, RSS, कर्स (प्रोग्रामिंग लाइब्रेरी), zlib और Tk के लिए मॉड्यूल सहित बड़े मानक पुस्तकालय<ref name="stdlib-2.0.0"/>* अभी-अभी संकलन
*एकल कूट और कई एकाधिक वर्ण संकेतन के लिए समर्थन।
*सी में प्राकृत प्लग-इन एपीआई
*पारस्परिक रूबी आवरण, एक पारस्परिक समादेश रेखा दुभाषिया जिसका उपयोग संहिता को जल्दी से परीक्षण करने के लिए किया जा सकता है (आरईपीएल)
*रूबीजम्स के माध्यम से केंद्रीकृत संकुल प्रबंधन
*सभी प्रमुख पटल पर लागू किया गया
*बड़े मानक पुस्तकालय, वाईएएमएल, [[JSON|जेएसओएन]], एक्सएमएल, [[कॉमन गेटवे इंटरफ़ेस|सीजीआई]], ओपनएसएसएल, [[HTTP|एचटीटीपी]], एफ़टीपी, आरएसएस, सी यूआर एसईएस, जेड लिबऔर टीके के लिए मापांक सहित<ref name="stdlib-2.0.0" />
*अभी-अभी संकलन


== सिंटेक्स ==
==वाक्य-विन्यास==
{{main|Ruby syntax}}
{{main|रूबी  वाक्य विन्यास}}
रूबी का सिंटैक्स मोटे तौर पर पर्ल और पायथन (प्रोग्रामिंग लैंग्वेज) के समान है। क्लास और मेथड डेफिनिशन को कीवर्ड द्वारा सिग्नल किया जाता है, जबकि कोड ब्लॉक को कीवर्ड या ब्रेसेस द्वारा परिभाषित किया जा सकता है। पर्ल के विपरीत, चर अनिवार्य रूप से एक सिगिल (कंप्यूटर प्रोग्रामिंग) के साथ उपसर्ग नहीं होते हैं। जब उपयोग किया जाता है, तो सिगिल चर के दायरे के शब्दार्थ को बदल देता है। व्यावहारिक उद्देश्यों के लिए अभिव्यक्ति (प्रोग्रामिंग) और कथन (प्रोग्रामिंग) के बीच कोई अंतर नहीं है।<ref name="while"/><ref name="precedence"/>पंक्ति विराम महत्वपूर्ण हैं और एक बयान के अंत के रूप में लिया जाता है; अल्पविराम का समान रूप से उपयोग किया जा सकता है। पायथन के विपरीत, इंडेंटेशन महत्वपूर्ण नहीं है।


पायथन और पर्ल से एक अंतर यह है कि रूबी अपने सभी उदाहरण चर को पूरी तरह से कक्षा में निजी रखती है और केवल उन्हें एक्सेसर विधियों के माध्यम से उजागर करती है (<code>attr_writer</code>, <code>attr_reader</code>, आदि।)। [[सी ++]] या [[जावा (प्रोग्रामिंग भाषा)]] जैसी अन्य भाषाओं के गेट्टर और सेटर विधियों के विपरीत, रूबी में एक्सेसर विधियों को मेटाप्रोग्रामिंग के माध्यम से कोड की एक पंक्ति के साथ बनाया जा सकता है; हालाँकि, एक्सेसर विधियाँ C++ और Java के पारंपरिक फैशन में भी बनाई जा सकती हैं। चूंकि इन विधियों के आह्वान के लिए कोष्ठकों के उपयोग की आवश्यकता नहीं होती है, कॉलिंग कोड की एक पंक्ति को संशोधित किए बिना या C Sharp (प्रोग्रामिंग भाषा) के समान कार्यक्षमता प्राप्त करने के लिए किसी भी रीफैक्टरिंग को किए बिना, एक आवृत्ति चर को पूर्ण फ़ंक्शन में बदलना तुच्छ है। |C# और VB.NET गुण सदस्य।
रूबी का वाक्य-विन्यास मोटे तौर पर पर्ल और पायथन के समान है। यह अभिस्थापन और पठनीय का उपयोग करता है। वर्ग और विधि परिभाषा को मूलशब्द द्वारा संकेत किया जाता है, जबकि संहिता खंड को मूलशब्द या धनुकोष्ठक द्वारा परिभाषित किया जा सकता है। पर्ल के विपरीत, चर अनिवार्य रूप से एक सिगिल के साथ उपसर्ग नहीं होते हैं। जब उपयोग किया जाता है, तो सिगिल चर के दायरे के शब्दार्थ को बदल देता है। व्यावहारिक उद्देश्यों के लिए अभिव्यक्तियों और कथन के बीच कोई अंतर नहीं है।<ref name="while" /><ref name="precedence" />पंक्ति विराम महत्वपूर्ण हैं और एक कथन के अंत के रूप में लिया जाता है; अल्पविराम का समान रूप से उपयोग किया जा सकता है। पायथन के विपरीत, अभिस्थापन महत्वपूर्ण नहीं है।


पायथन के संपत्ति विवरणक समान हैं, लेकिन विकास प्रक्रिया में व्यापार-बंद के साथ आते हैं। यदि कोई सार्वजनिक रूप से उजागर उदाहरण चर का उपयोग करके पायथन में शुरू होता है, और बाद में एक संपत्ति वर्णनकर्ता के माध्यम से उजागर किए गए एक निजी उदाहरण चर का उपयोग करने के लिए कार्यान्वयन को बदलता है, तो कक्षा के आंतरिक कोड को सार्वजनिक संपत्ति के बजाय निजी चर का उपयोग करने के लिए समायोजित करने की आवश्यकता हो सकती है। . रूबी का डिज़ाइन सभी उदाहरण चर को निजी होने के लिए बाध्य करता है, लेकिन घोषित करने का एक सरल तरीका भी प्रदान करता है <code>set</code> तथा <code>get</code> तरीके। यह इस विचार को ध्यान में रखते हुए है कि रूबी में, कक्षा के बाहर से कक्षा के आंतरिक सदस्यों तक सीधे पहुंच नहीं होती है; बल्कि, कोई कक्षा को संदेश भेजता है और प्रतिक्रिया प्राप्त करता है।
पायथन और पर्ल से एक अंतर यह है कि रूबी अपने सभी उदाहरण चर को पूरी तरह से कक्षा में निजी रखती है और केवल उन्हें पूरकर विधियों के माध्यम से उजागर करती है (<code>एटीटीआर_प्रणेता</code>, <code>एटीटीआर_पाठक</code>, के माध्यम से उजागर करती है। [[सी ++]] या [[जावा (प्रोग्रामिंग भाषा)|जावा]] जैसी अन्य भाषाओं के "ग्राही" और "सुरेखक" विधियों के विपरीत, रूबी में पूरकर विधियों को मेटा क्रमदेशन के माध्यम से संहिता की एक पंक्ति के साथ बनाया जा सकता है; हालाँकि, पूरकर विधियाँ सी++ और जावा के पारंपरिक आचरण में भी बनाई जा सकती हैं। चूंकि इन विधियों के आह्वान के लिए कोष्ठकों के उपयोग की आवश्यकता नहीं होती है, कॉलिंग संहिता की एक पंक्ति को संशोधित किए बिना सी# और वीबी.एनइटी गुण सदस्य।


== कार्यान्वयन ==
पायथन के संपत्ति विवरणक समान हैं, लेकिन विकास प्रक्रिया में व्यापार-बंद के साथ आते हैं। यदि कोई सार्वजनिक रूप से उजागर उदाहरण चर का उपयोग करके पायथन में आरम्भ होता है, और बाद में एक संपत्ति वर्णनकर्ता के माध्यम से उजागर किए गए एक निजी उदाहरण चर का उपयोग करने के लिए कार्यान्वयन को बदलता है, तो कक्षा के आंतरिक संहिता को सार्वजनिक संपत्ति के बजाय निजी चर का उपयोग करने के लिए समायोजित करने की आवश्यकता हो सकती है। रूबी का अभिकल्पना सभी उदाहरण चर को निजी होने के लिए बाध्य करता है, लेकिन घोषित करने का एक सरल तरीका भी प्रदान करता है <code>सेट</code> तथा <code>गेट</code> तरीके से। यह इस विचार को ध्यान में रखते हुए है कि रूबी में, कक्षा के बाहर से कक्षा के आंतरिक सदस्यों तक सीधे पहुंच नहीं होती है; बल्कि, कोई कक्षा को संदेश भेजता है और प्रतिक्रिया प्राप्त करता है।
{{See also|Ruby MRI#Operating systems}}


==कार्यान्वयन==
{{See also|रूबी एमआरआई# संचालन प्रणाली}}


=== मैट्स का रूबी दुभाषिया ===
===मैट्स का रूबी दुभाषिया===


मूल रूबी [[दुभाषिया (कंप्यूटर सॉफ्टवेयर)]] को अक्सर रूबी एमआरआई | मैट्स रूबी इंटरप्रेटर या एमआरआई के रूप में संदर्भित किया जाता है। यह कार्यान्वयन सी में लिखा गया है और अपनी रूबी-विशिष्ट वर्चुअल मशीन का उपयोग करता है।
मूल रूबी [[दुभाषिया (कंप्यूटर सॉफ्टवेयर)|दुभाषिया]] को अक्सर रूबी दुभाषिया या एमआरआई| यह कार्यान्वयन सी में लिखा गया है और अपनी रूबी-विशिष्ट आभासी यंत्र का उपयोग करता है।


मानकीकृत और सेवानिवृत्त रूबी 1.8 रूबी एमआरआई को सी (प्रोग्रामिंग लैंग्वेज) में सिंगल-पास इंटरप्रेटेड लैंग्वेज के रूप में लिखा गया था।<ref name="1.8.7-retirement"/>
मानकीकृत और सेवानिवृत्त रूबी 1.8 रूबी कार्यान्वयन को एकल-पास व्याख्यात्मक लैंग्वेज के रूप में सी में लिखा गया था।<ref name="1.8.7-retirement" />


रूबी 1.9 के साथ शुरू, और रूबी 2.x और इसके बाद के संस्करण के साथ जारी, आधिकारिक रूबी दुभाषिया YARV (फिर भी एक और रूबी वीएम) रहा है, और इस कार्यान्वयन ने एमआरआई के पिछले रिलीज में उपयोग की जाने वाली धीमी आभासी मशीन को हटा दिया है।
रूबी 1.9 के साथ आरम्भ, और रूबी 2.x और इसके बाद के संस्करण के साथ जारी, आधिकारिक रूबी दुभाषिया वाईएआरवी (फिर भी एक और रूबी वीएम) रहा है, और इस कार्यान्वयन ने एमआरआईके पिछले प्रकाशन में उपयोग की जाने वाली धीमी आभासी यंत्र को हटा दिया है।


=== वैकल्पिक कार्यान्वयन ===
===वैकल्पिक कार्यान्वयन===


{{As of|2018}}, रूबी के कई वैकल्पिक कार्यान्वयन हैं, जिनमें [[JRuby]], Rubinius और mruby शामिल हैं। प्रत्येक एक अलग दृष्टिकोण लेता है, JRuby और Rubinius समय-समय पर संकलन प्रदान करते हैं और mruby भी समय-समय पर संकलन प्रदान करते हैं।
2018 तक, रूबी के कई वैकल्पिक कार्यान्वयन हैं, जिनमें [[JRuby|जेरूबी]], रुबिनियस और एमरूबी सम्मिलित हैं। प्रत्येक एक अलग दृष्टिकोण लेता है, जेरूबी और रुबिनियस समय-समय पर संकलन प्रदान करते हैं और एमरूबी भी समय-समय पर संकलन प्रदान करते हैं।


रूबी के तीन प्रमुख वैकल्पिक कार्यान्वयन हैं:
रूबी के तीन प्रमुख वैकल्पिक कार्यान्वयन हैं:


* JRuby, एक मिश्रित जावा (प्रोग्रामिंग भाषा) और रूबी कार्यान्वयन जो [[जावा वर्चुअल मशीन]] पर चलता है। JRuby वर्तमान में रूबी 2.5 को लक्षित करता है।
*जेरूबी, एक मिश्रित जावा और रूबी कार्यान्वयन जो [[जावा वर्चुअल मशीन|जावा आभासी यंत्र]] पर चलता है। जेरूबी वर्तमान में रूबी 2.5 को लक्षित करता है।
* TruffleRuby, [[GraalVM]] के साथ Truffle भाषा कार्यान्वयन ढांचे का उपयोग करते हुए जावा कार्यान्वयन
*ट्रफलरूबी, [[GraalVM|ग्रालवीएम]] के साथ कवक (ट्रफल) लैंग्वेज कार्यान्वयन ढांचे का उपयोग करते हुए जावा कार्यान्वयन
* रूबिनियस, एक C++ बायटेकोड वर्चुअल मशीन जो रनटाइम पर मशीन कोड को संकलित करने के लिए [[LLVM]] का उपयोग करती है। बायटेकोड कंपाइलर और अधिकांश कोर क्लास शुद्ध रूबी में लिखे गए हैं। रूबिनियस वर्तमान में रूबी 2.3.1 को लक्षित करता है।
*रुबिनियस, एक सी++ बाईटकोड संहिता आभासी यंत्र जो कार्यावधि पर यंत्र संहिता को संकलित करने के लिए एलएलवीएम का उपयोग करती है। बाईटकोड संहिता संकलक और अधिकांश मूल कक्षा शुद्ध रूबी में लिखे गए हैं। रुबिनियस वर्तमान में रूबी 2.3.1 को लक्षित करता है।


अन्य रूबी कार्यान्वयन में शामिल हैं:
अन्य रूबी कार्यान्वयन में सम्मिलित हैं:  


* मैग्लेव (सॉफ्टवेयर), एक स्मॉलटाक कार्यान्वयन जो [[जेमटॉक सिस्टम्स]] के जेमस्टोन (डेटाबेस) पर चलता है। जेमस्टोन/एस वीएम
*मैग्लेव, एक लघु बातचीत कार्यान्वयन जो [[जेमटॉक सिस्टम्स|जेम बातचीत प्रणाली]] के जम्सस्वर / एस वीएम पर चलता है।
* mruby, लुआ (प्रोग्रामिंग भाषा) के समान नस में सी कोड में एम्बेड करने के लिए डिज़ाइन किया गया एक कार्यान्वयन। यह वर्तमान में युकिहिरो मात्सुमोतो और अन्य द्वारा विकसित किया जा रहा है
*एमरूबी, लुआ के समान नस में सी संहिता में अंतर्निहित करने के लिए अभिकल्पना किया गया एक कार्यान्वयन। यह वर्तमान में युकिहिरो मात्सुमोतो और अन्य द्वारा विकसित किया जा रहा है
* आरजीएसएस, या रूबी गेम स्क्रिप्टिंग सिस्टम, एक प्रोप्रायटरी सॉफ्टवेयर कार्यान्वयन है जिसका प्रयोग आरपीजी मेकर श्रृंखला सॉफ्टवेयर द्वारा गेम डिजाइन और आरपीजी मेकर इंजन के संशोधन के लिए किया जाता है।
* आरजीएसएस, या रूबी गेम लिपिकरण तंत्र, एक मालिकाना कार्यान्वयन है जिसका प्रयोग आरपीजी रचनाकार श्रृंखला यंत्रेतर सामग्री द्वारा गेम अभिकल्पना और आरपीजी रचनाकार इंजन के संशोधन के लिए किया जाता है।
* [[julializer]], रूबी से [[जूलिया (प्रोग्रामिंग भाषा)]] का एक ट्रांसपिलर (आंशिक)। इसका उपयोग बड़े स्पीडअप के लिए किया जा सकता है उदा। रूबी या JRuby कार्यान्वयन (केवल संख्यात्मक कोड के लिए उपयोगी हो सकता है)।<ref name="virtual-module"/>* पुखराज (रूबी), पायथन (प्रोग्रामिंग भाषा) में लिखा गया एक रूबी कार्यान्वयन
*[[julializer|जूलीएलिज़र]], एक ट्रांसपिलर (आंशिक) रूबी से [[जूलिया (प्रोग्रामिंग भाषा)|जूलिया]] के लिए । इसका उपयोग बड़े गति वर्धन के लिए किया जा सकता है उदा। रूबी या जेरूबी कार्यान्वयन (केवल संख्यात्मक संहिता के लिए उपयोगी हो सकता है)।<ref name="virtual-module" />
* ओपल (रूबी), एक वेब-आधारित दुभाषिया जो रूबी को [[जावास्क्रिप्ट]] में संकलित करता है
*टोपाज़ (रूबी), पायथन में लिखा गया एक रूबी कार्यान्वयन
*ओपल (रूबी), एक वेब-आधारित दुभाषिया जो रूबी को [[जावास्क्रिप्ट|जावालिपि]] में संकलित करता है


अन्य अब मृत रूबी कार्यान्वयन थे:
अन्य अब मृत रूबी कार्यान्वयन थे:
* MacRuby, ऑब्जेक्टिव-सी रनटाइम पर एक macOS कार्यान्वयन। इसके आईओएस समकक्ष को रूबीमोशन कहा जाता है
* मैकरूबी, वस्तुनिष्ठ-सी कार्यावधि पर एक मैक ओएस एक्स कार्यान्वयन। इसके आईओएस समकक्ष को रूबीमोशन कहा जाता है
* आयरन रूबी .NET फ्रेमवर्क पर एक कार्यान्वयन
*लोहरूबी .एनइटी संरचना पर एक कार्यान्वयन
* कार्डिनल, तोता आभासी मशीन के लिए एक कार्यान्वयन
*गणनांक (कार्डिनल), पैरेट आभासी यंत्र के लिए एक कार्यान्वयन
* रूबी एंटरप्राइज़ संस्करण, जिसे अक्सर री के रूप में संक्षिप्त किया जाता है, रेल परियोजनाओं पर बड़े पैमाने पर रूबी को संभालने के लिए अनुकूलित एक कार्यान्वयन
*रूबी उद्यम संस्करण, जिसे अक्सर री के रूप में संक्षिप्त किया जाता है, रेल परियोजनाओं पर बड़े पैमाने पर रूबी को संभालने के लिए अनुकूलित एक कार्यान्वयन
* [[HotRuby]], रूबी प्रोग्रामिंग भाषा का एक जावास्क्रिप्ट और [[ActionScript]] कार्यान्वयन
*[[HotRuby|गरमरूबी]], रूबी क्रमदेशन लैंग्वेज का एक जावालिपि और [[ActionScript|क्रियालिपि]] कार्यान्वयन
 
रूबी कार्यान्वयन की परिपक्वता को रूबी ऑन रेल्स (रेल) ढांचे को चलाने की उनकी क्षमता से मापा जाता है, क्योंकि यह कई रूबी-विशिष्ट सुविधाओं को लागू करने और उपयोग करने के लिए जटिल है। वह बिंदु जब कोई विशेष कार्यान्वयन इस लक्ष्य को प्राप्त करता है, उसे "रेल विलक्षणता" कहा जाता है। संदर्भ कार्यान्वयन, जेरूबी, और रुबिनियस<ref name="Rubinius" />सभी एक उत्पादन वातावरण में अपरिवर्तित रेल चलाने में सक्षम हैं।


रूबी कार्यान्वयन की परिपक्वता को रूबी ऑन रेल्स (रेल) ढांचे को चलाने की उनकी क्षमता से मापा जाता है, क्योंकि यह कई रूबी-विशिष्ट सुविधाओं को लागू करने और उपयोग करने के लिए जटिल है। वह बिंदु जब कोई विशेष कार्यान्वयन इस लक्ष्य को प्राप्त करता है, उसे रेल विलक्षणता कहा जाता है। संदर्भ कार्यान्वयन, JRuby, और Rubinius<ref name="Rubinius"/>सभी एक उत्पादन वातावरण में अपरिवर्तित रेल चलाने में सक्षम हैं।
===पटल समर्थन===


=== प्लेटफार्म समर्थन ===
मात्सुमोतो ने मूल रूप से रूबी को 4.3बीएसडी-आधारित सोनी न्यूज-ओएस 3.x पर विकसित किया था, लेकिन बाद में अपने काम को सन ओएस 4.x और अंत में [[Linux|लिनक्स]] में स्थानांतरित कर दिया।<ref name="Stodte" /><ref name="initial-development" />1999 तक, रूबी को कई अलग-अलग संचालन प्रणाली पर काम करने के लिए जाना जाता था। आधुनिक रूबी संस्करण और कार्यान्वयन सभी प्रमुख डेस्कटॉप, मोबाइल और सर्वर-आधारित संचालन प्रणाली पर उपलब्ध हैं। रूबी को जेलास्टिक, हरोकू, गूगल क्लाउड प्लेटफॉर्म और अन्य जैसे कई क्लाउड होस्टिंग पटल पर भी समर्थित किया जाता है।


मात्सुमोतो ने मूल रूप से रूबी को BSD|4.3BSD-आधारित Sony NEWS|Sony NEWS-OS 3.x पर विकसित किया था, लेकिन बाद में अपने काम को SunOS 4.x और अंत में [[Linux]] में स्थानांतरित कर दिया।<ref name="Stodte"/><ref name="initial-development"/>1999 तक, रूबी को कई अलग-अलग ऑपरेटिंग सिस्टम पर काम करने के लिए जाना जाता था। आधुनिक रूबी संस्करण और कार्यान्वयन सभी प्रमुख डेस्कटॉप, मोबाइल और सर्वर-आधारित ऑपरेटिंग सिस्टम पर उपलब्ध हैं। रूबी को [[Jelastic]], [[Heroku]], [[Google Cloud Platform]] और अन्य जैसे कई क्लाउड होस्टिंग प्लेटफ़ॉर्म पर भी सपोर्ट किया जाता है।
आरवीएम और आरबीईएनवी जैसे उपकरण, एक यंत्र पर कई रूबी संस्करणों की स्थापना और विभाजन की सुविधा प्रदान करते हैं, और कई 'जम्सets'।


रूबी संस्करण प्रबंधक और आरबीईएनवी जैसे उपकरण, एक मशीन पर कई रूबी संस्करणों की स्थापना और विभाजन की सुविधा प्रदान करते हैं, और कई 'रत्नसेट'।
==भंडार और पुस्तकालय==


== भंडार और पुस्तकालय ==
रूबीजम्स, रूबी का संकुल प्रबंधक है। रूबी संकुल को "जम्स" कहा जाता है और इसे समादेश रेखा के माध्यम से स्थापित किया जा सकता है। अधिकांश जम्स पुस्तकालय हैं, हालांकि कुछ मौजूद हैं जो अनुप्रयोग हैं, जैसे एकीकृत विकास पर्यावरण।<ref name="ruby-toolbox" />[http://rubygems.org रूबीजम्स.org] पर 100,000 से अधिक रूबी जम्स परपोषी किए गए हैं।<ref>{{cite web|url=https://rubygems.org/stats|title=Stats RubyGems.org आपका समुदाय रत्न होस्ट|website=rubygems.org|access-date=10 December 2021}}</ref>


RubyGems, Ruby का पैकेज मैनेजर है। रूबी पैकेज को रत्न कहा जाता है और इसे कमांड लाइन के माध्यम से स्थापित किया जा सकता है। अधिकांश रत्न पुस्तकालय हैं, हालांकि कुछ मौजूद हैं जो अनुप्रयोग हैं, जैसे एकीकृत विकास पर्यावरण।<ref name="ruby-toolbox"/>[http://rubygems.org RubyGems.org] पर 100,000 से अधिक रूबी रत्न होस्ट किए गए हैं।<ref>{{cite web|url=https://rubygems.org/stats|title=Stats RubyGems.org आपका समुदाय रत्न होस्ट|website=rubygems.org|access-date=10 December 2021}}</ref>
गिटहब पर कई नए और मौजूदा रूबी पुस्तकालयों की मेजबानी की जाती है, जो एक सेवा है जो [[गिट (सॉफ्टवेयर)|गिट]] के लिए संशोधन नियंत्रण भंडार परपोषी प्रदान करती है।
गिटहब पर कई नए और मौजूदा रूबी पुस्तकालयों की मेजबानी की जाती है, जो एक सेवा है जो [[गिट (सॉफ्टवेयर)]] के लिए संशोधन नियंत्रण भंडार होस्टिंग प्रदान करती है।


रूबी एप्लीकेशन आर्काइव, जिसने रूबी प्रोग्रामिंग के लिए एप्लिकेशन, प्रलेखन और पुस्तकालयों की मेजबानी की, को 2013 तक बनाए रखा गया, जब इसका कार्य रूबीजम्स में स्थानांतरित कर दिया गया।<ref name="raa-retirement"/>
रूबी अनुप्रयोग लेखागार, जिसने रूबी क्रमदेशन के लिए अनुप्रयोग, प्रलेखन और पुस्तकालयों की मेजबानी की, को 2013 तक बनाए रखा गया, जब इसका कार्य रूबीजम्स में स्थानांतरित कर दिया गया।<ref name="raa-retirement" />




== यह भी देखें ==
==यह भी देखें==
{{Portal|Free and open-source software|Computer programming}}
{{Portal|Free and open-source software|Computer programming}}
* [[प्रोग्रामिंग भाषाओं की तुलना]]
*[[प्रोग्रामिंग भाषाओं की तुलना|क्रमदेशन भाषाओं की तुलना]]
* मेटास्प्लोइट प्रोजेक्ट
* मेटाविभाजन परियोजना
* क्यों (मार्मिक) रूबी के लिए गाइड
*क्यों (मार्मिक) रूबी के लिए पथप्रदर्शक
* [[क्रिस्टल (प्रोग्रामिंग भाषा)]]
*[[क्रिस्टल (प्रोग्रामिंग भाषा)|क्रिस्टल ( क्रमदेशन लैंग्वेज)]]
* रूबी ऑन रेल्स
*रूबी ऑन रेल्स


== संदर्भ ==
== संदर्भ==


{{refs|refs=
{{refs|refs=
Line 344: Line 350:
<ref name="about">{{ cite web|url=https://www.ruby-lang.org/en/about/|title=About Ruby|access-date=15 February 2020}}</ref>
<ref name="about">{{ cite web|url=https://www.ruby-lang.org/en/about/|title=About Ruby|access-date=15 February 2020}}</ref>
<ref name="FAQ">{{ cite web|url=https://www.ruby-doc.org/docs/ruby-doc-bundle/FAQ/FAQ.html|title=The Ruby Language FAQ|author=Shugo Maeda|date=17 December 2002|access-date=2 March 2014}}</ref>
<ref name="FAQ">{{ cite web|url=https://www.ruby-doc.org/docs/ruby-doc-bundle/FAQ/FAQ.html|title=The Ruby Language FAQ|author=Shugo Maeda|date=17 December 2002|access-date=2 March 2014}}</ref>
<ref name="lisp-features">{{ cite web | url = http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/179642 | title = Re: Ruby's lisp features. | last = Matsumoto | first = Yukihiro | author-link = Yukihiro Matsumoto | date = 13 February 2006 | access-date = 15 February 2020 | url-status = dead | archive-url = https://web.archive.org/web/20181027195101/blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/179642 | archive-date = 2007-01-16}}</ref>
<ref name="lisp-features">{{ cite web | url = http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/179642 | title = Re: Ruby's lisp features. | last = Matsumoto | first = Yukihiro | author-link = Yukihiro Matsumoto | date = 13 February 2006 | access-date = 15 February 2020 | url-status = dead | archive-url = https://web.archive.org/web/20181027195101/blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/179642 | archive-date = 2007-01-16}}
<ref name="rubyconf-history-of-ruby">{{ cite web|url=http://blog.nicksieger.com/articles/2006/10/20/rubyconf-history-of-ruby|title=History of Ruby}}</ref>
<ref name="rubyconf-history-of-ruby">{{ cite web|url=http://blog.nicksieger.com/articles/2006/10/20/rubyconf-history-of-ruby|title=History of Ruby}}</ref>
<ref name="ruby-name">{{ cite web|url=http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/88819|title=[FYI: historic] The decisive moment of the language name Ruby. (Re: [ANN] ruby 1.8.1)|type=E-mail from Hiroshi Sugihara to ruby-talk}}</ref>
<ref name="ruby-name">{{ cite web|url=http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/88819|title=[FYI: historic] The decisive moment of the language name Ruby. (Re: [ANN] ruby 1.8.1)|type=E-mail from Hiroshi Sugihara to ruby-talk}}</ref>
Line 408: Line 414:
<ref name="3.0-release">{{ cite web|url=https://www.ruby-lang.org/en/news/2020/12/25/ruby-3-0-0-released/ |title=Ruby 3.0.0 Released|website=www.ruby-lang.org}}</ref>
<ref name="3.0-release">{{ cite web|url=https://www.ruby-lang.org/en/news/2020/12/25/ruby-3-0-0-released/ |title=Ruby 3.0.0 Released|website=www.ruby-lang.org}}</ref>
<ref name="Ruby 3.1.0 Released">{{ cite web | website=ruby-lang.org | url=https://www.ruby-lang.org/en/news/2021/12/25/ruby-3-1-0-released/| title=Ruby 3.1.0 Released | access-date=25 Dec 2021}}</ref>
<ref name="Ruby 3.1.0 Released">{{ cite web | website=ruby-lang.org | url=https://www.ruby-lang.org/en/news/2021/12/25/ruby-3-1-0-released/| title=Ruby 3.1.0 Released | access-date=25 Dec 2021}}</ref>
<ref name="Ruby 3.1.2 Released">{{ cite web | website=ruby-lang.org | url=https://www.ruby-lang.org/en/news/2022/04/12/ruby-3-1-2-released/| title=Ruby 3.1.2 Released | access-date=28 April 2022}}</ref>
 
<ref name="informit">{{ cite web|url=http://www.informit.com/articles/article.aspx?p=18225|title=The Ruby Programming Language|access-date=2 May 2015}}</ref>
<ref name="informit">{{ cite web|url=http://www.informit.com/articles/article.aspx?p=18225|title=The Ruby Programming Language|access-date=2 May 2015}}</ref>
<ref name="googletechtalk">{{YouTube|oEkJvvGEtB4|Google Tech Talks&nbsp;– Ruby 1.9}}</ref>
<ref name="googletechtalk">{{YouTube|oEkJvvGEtB4|Google Tech Talks&nbsp;– Ruby 1.9}}</ref>
Line 441: Line 447:




== अग्रिम पठन ==
==अग्रिम पठन ==


{{refbegin}}
{{refbegin}}
* {{ citation | first1 = David | last1 = Black | first2 = Joseph | last2 = Leo | date = March 15, 2019 | title = The Well-Grounded Rubyist | edition = Third | publisher = [[Manning Publications]] | page = 584 | isbn = 978-1617295218 }}
* {{citation | first1 = David | last1 = Black | first2 = Joseph | last2 = Leo | date = March 15, 2019 | title = The Well-Grounded Rubyist | edition = Third | publisher = [[Manning Publications]] | page = 584 | isbn = 978-1617295218 }}
* {{ citation | first1 = Sandi | last1 = Metz | date = August 22, 2018 | title = Practical Object-Oriented Design: An Agile Primer Using Ruby | edition = Second | publisher = [[Addison-Wesley Professional]] | page = 288 | isbn = 978-0-13-445647-8 | url = https://www.informit.com/store/practical-object-oriented-design-an-agile-primer-using-9780134456478 }}
* {{citation | first1 = Sandi | last1 = Metz | date = August 22, 2018 | title = Practical Object-Oriented Design: An Agile Primer Using Ruby | edition = Second | publisher = [[Addison-Wesley Professional]] | page = 288 | isbn = 978-0-13-445647-8 | url = https://www.informit.com/store/practical-object-oriented-design-an-agile-primer-using-9780134456478 }}
* {{ citation | first1 = Peter | last1 = Cooper | date = July 12, 2016 | title = Beginning Ruby: From Novice to Professional | edition = Third | publisher = [[Apress]] | page = 492 | isbn = 978-1484212790 }}
* {{citation | first1 = Peter | last1 = Cooper | date = July 12, 2016 | title = Beginning Ruby: From Novice to Professional | edition = Third | publisher = [[Apress]] | page = 492 | isbn = 978-1484212790 }}
* {{ citation | first1 = Lucas | last1 = Carlson | first2 = Leonard | last2 = Richardson | date = April 3, 2015 | title = Ruby Cookbook: Recipes for Object-Oriented Scripting | edition = Second | publisher = [[O'Reilly Media]] | page = 963 | isbn = 978-1449373719 | url = http://oreilly.com/catalog/9781449373719 }}
* {{citation | first1 = Lucas | last1 = Carlson | first2 = Leonard | last2 = Richardson | date = April 3, 2015 | title = Ruby Cookbook: Recipes for Object-Oriented Scripting | edition = Second | publisher = [[O'Reilly Media]] | page = 963 | isbn = 978-1449373719 | url = http://oreilly.com/catalog/9781449373719 }}
* {{ citation | first1 = Hal | last1 = Fulton | first2 = André | last2 = Arko | date = March 2, 2015 | title = The Ruby Way: Solutions and Techniques in Ruby Programming | edition = Third | publisher = [[Addison-Wesley Professional]] | page = 816 | isbn = 978-0-321-71463-3 | url = https://www.informit.com/store/ruby-way-solutions-and-techniques-in-ruby-programming-9780321714633 }}
* {{citation | first1 = Hal | last1 = Fulton | first2 = André | last2 = Arko | date = March 2, 2015 | title = The Ruby Way: Solutions and Techniques in Ruby Programming | edition = Third | publisher = [[Addison-Wesley Professional]] | page = 816 | isbn = 978-0-321-71463-3 | url = https://www.informit.com/store/ruby-way-solutions-and-techniques-in-ruby-programming-9780321714633 }}
* {{ citation | first1 = Dave | last1 = Thomas | first2 = Chad | last2 = Fowler | first3 = Andy | last3 = Hunt | date = July 7, 2013 | title = Programming Ruby 1.9 & 2.0: The Pragmatic Programmers' Guide | edition = Fourth | publisher = [[Pragmatic Bookshelf]] | page = 888 | isbn = 978-1937785499 }}
* {{citation | first1 = Dave | last1 = Thomas | first2 = Chad | last2 = Fowler | first3 = Andy | last3 = Hunt | date = July 7, 2013 | title = Programming Ruby 1.9 & 2.0: The Pragmatic Programmers' Guide | edition = Fourth | publisher = [[Pragmatic Bookshelf]] | page = 888 | isbn = 978-1937785499 }}
* {{ citation | first1 = Jeremy | last1 = McAnally | first2 = Assaf | last2 = Arkin | date = March 28, 2009 | title = Ruby in Practice | edition = First | publisher = [[Manning Publications]] | page = 360 | isbn = 978-1933988474 }}
* {{citation | first1 = Jeremy | last1 = McAnally | first2 = Assaf | last2 = Arkin | date = March 28, 2009 | title = Ruby in Practice | edition = First | publisher = [[Manning Publications]] | page = 360 | isbn = 978-1933988474 }}
* {{ citation | first1 = David | last1 = Flanagan | first2 = Yukihiro | last2 = Matsumoto | date = January 25, 2008 | title = The Ruby Programming Language | edition = First | publisher = [[O'Reilly Media]] | page = [https://archive.org/details/rubyprogrammingl00davi/page/446 446] | isbn = 978-0-596-51617-8 | url = https://archive.org/details/rubyprogrammingl00davi/page/446 }}
* {{citation | first1 = David | last1 = Flanagan | first2 = Yukihiro | last2 = Matsumoto | date = January 25, 2008 | title = The Ruby Programming Language | edition = First | publisher = [[O'Reilly Media]] | page = [https://archive.org/details/rubyprogrammingl00davi/page/446 446] | isbn = 978-0-596-51617-8 | url = https://archive.org/details/rubyprogrammingl00davi/page/446 }}
* {{ citation | first1 = Kevin | last1 = Baird | date = June 8, 2007 | title = Ruby by Example: Concepts and Code | edition = First | publisher = [[No Starch Press]] | page = 326 | isbn = 978-1593271480 | url = https://nostarch.com/rubyex }}
* {{citation | first1 = Kevin | last1 = Baird | date = June 8, 2007 | title = Ruby by Example: Concepts and Code | edition = First | publisher = [[No Starch Press]] | page = 326 | isbn = 978-1593271480 | url = https://nostarch.com/rubyex }}
* {{ citation | first1 = Michael | last1 = Fitzgerald | date = May 14, 2007 | title = Learning Ruby | edition = First | publisher = [[O'Reilly Media]] | page = [https://archive.org/details/learningruby0000fitz/page/255 255] | isbn = 978-0-596-52986-4 | url = https://archive.org/details/learningruby0000fitz/page/255 }}
* {{citation | first1 = Michael | last1 = Fitzgerald | date = May 14, 2007 | title = Learning Ruby | edition = First | publisher = [[O'Reilly Media]] | page = [https://archive.org/details/learningruby0000fitz/page/255 255] | isbn = 978-0-596-52986-4 | url = https://archive.org/details/learningruby0000fitz/page/255 }}
{{refend}}
{{refend}}
 
==बाहरी संबंध==
 
*{{official website|https://www.ruby-lang.org/en/}}
 
* [https://www.ruby-doc.org रूबी doसीumentation]
*
*{{curlie|Computers/Programming/Languages/Ruby|Ruby}}
== बाहरी संबंध ==
{{Wikiquote}}
{{Commons category|Ruby programming language}}
{{Wikiversity|Topic:Ruby}}
 
* {{official website|https://www.ruby-lang.org/en/}}
* [https://www.ruby-doc.org Ruby documentation]
* {{curlie|Computers/Programming/Languages/Ruby|Ruby}}
 
{{Ruby programming language}}
{{Programming languages}}
{{FOSS}}
{{ISO standards}}
{{Authority control}}
{{Authority control}}


Line 482: Line 475:
[[Category:CS1 maint]]
[[Category:CS1 maint]]
[[Category:Collapse templates]]
[[Category:Collapse templates]]
[[Category:Commons category link is locally defined]]
[[Category:Lua-based templates]]
[[Category:Navigational boxes| ]]
[[Category:Navigational boxes without horizontal lists]]
[[Category:Official website not in Wikidata]]
[[Category:Pages with empty portal template]]
[[Category:Pages with reference errors]]
[[Category:Pages with script errors]]
[[Category:Portal templates with redlinked portals]]
[[Category:Short description with empty Wikidata description]]
[[Category:Sidebars with styles needing conversion]]
[[Category:Template documentation pages|Documentation/doc]]
[[Category:Templates Vigyan Ready]]
[[Category:Templates generating microformats]]
[[Category:Templates that add a tracking category]]
[[Category:Templates that are not mobile friendly]]
[[Category:Templates that generate short descriptions]]
[[Category:Templates using TemplateData]]
[[Category:Wikipedia metatemplates]]

Latest revision as of 16:10, 27 October 2023

रूबी
Ruby logo.svg
ParadigmMulti-paradigm: functional, imperative, object-oriented, reflective
द्वारा डिज़ाइन किया गयाYukihiro Matsumoto
DeveloperYukihiro Matsumoto, et al.
पहली प्रस्तुति1995; 29 years ago (1995)
Stable release
Script error: The module returned a nil value. It is supposed to return an export table.[1] / 24 November 2022
टाइपिंग अनुशासनDuck, dynamic, strong
स्कोपLexical, sometimes dynamic
कार्यान्वयन भाषाC
ओएसCross-platform
लाइसेंसRuby License
फ़ाइल नाम एक्सटेंशनएस.rb
वेबसाइटruby-lang.org
Major implementations
Ruby MRI, TruffleRuby, YARV, Rubinius, MagLev, JRuby, MacRuby, RubyMotion, Mruby, IronRuby
Influenced by
Ada,[2] Basic,[3] C++,[2] CLU,[4] Dylan,[4] Eiffel,[2] Lisp,[4] Lua, Perl,[4] Python,[4] Smalltalk[4]
Influenced
Clojure, CoffeeScript, Crystal, D, Elixir, Groovy, Ioke,[5] Julia,[6] Mirah, Nu,[7] Ring,[8] Rust,[9] Swift[10]

रूबी एक व्याख्या है , उच्च-स्तरीय, सामान्य-उद्देश्य वाली क्रमादेशन लैंग्वेज है जो कई क्रमादेशन प्रतिमानों का समर्थन करती है। इसे क्रमादेशन उत्पादकता और सरलता पर जोर देने के साथ अभिकल्पना किया गया था। रूबी में, सब कुछ एक वस्तु है, जिसमें प्राचीन तथ्य का प्रकार सम्मिलित हैं। यह 1990 के दशक के मध्य में जापान में युकीहिरो "मात्ज़" मात्सुमोतो द्वारा विकसित किया गया था।

रूबी गतिशील प्रकार की है और अपशिष्ट संग्रह और समय-समय पर संकलन का उपयोग करती है। यह प्रक्रियात्मक क्रमदेशन,वस्तु-उन्मुख क्रमदेशन सहित कई क्रमदेशन प्रतिमानों का समर्थन करता है। रचनाकार के अनुसार, रूबी पर्ल, लघु बातचीत, एफिल, एडा, बेसिक, जावा और लिस्प से प्रभावित थी।[11][3]


इतिहास

प्रारंभिक अवधारणा

मात्सुमोतो ने कहा है कि रूबी की कल्पना 1993 में की गई थी। रूबी- बातचीत प्रेषण सूची के 1999 के एक पद में, उन्होंने लैंग्वेज के बारे में अपने कुछ शुरुआती विचारों का वर्णन किया है:[12]

मैं अपने सहयोगी के साथ वस्तु-उन्मुख पटकथा भाषा की संभावना के बारे में बात कर रहा था। मैं पर्ल (पर्ल 4, पर्ल 5 नहीं) जानता था, लेकिन मुझे यह वास्तव में पसंद नहीं आया, क्योंकि इसमें टॉइ भाषा की गंध थी (यह अभी भी है)। वस्तु-उन्मुख भाषा बहुत ही आशाजनक लग रही थी। मैं तब पायथन को जानता था। लेकिन मुझे यह पसंद नहीं आया, क्योंकि मुझे नहीं लगा कि यह एक वास्तविक वस्तु-उन्मुख भाषा थी - सुविधाएँ भाषा में मिली हुई दिखाई देती हैं। 15 वर्षों के लिए एक भाषा उन्मादी और प्रशंसक के रूप में, मैं वास्तव में एक वास्तविक वस्तु-उन्मुख, उपयोग में आसान पटकथा भाषा चाहता था। मैंने खोजा लेकिन एक नहीं मिला। इसलिए मैंने इसे बनाने का फैसला किया।

मात्सुमोतो ने रूबी के प्रारुप का वर्णन इसके मूल में एक साधारण लिस्प लैंग्वेज की तरह किया है, जिसमें लघु बातचीत की तरह एक वस्तु प्रणाली, उच्च-क्रम के कार्यों से प्रेरित खंड और पर्ल की तरह व्यावहारिक उपयोगिता है।[13]

लैंग्वेज के लिए कोई भी संहिता लिखे जाने से पहले 24 फरवरी,1993 को मात्सुमोतो और कीजु इशित्सुका के बीच एक ऑनलाइन बातचीत सत्र के दौरान "रूबी" नाम की उत्पत्ति हुई थी।[14]प्रारंभ में दो नाम प्रस्तावित थे: "कोरल" और "रूबी"। मात्सुमोतो ने इशित्सुका को बाद में एक ई-मेल में बाद वाले को चुना।[15]मात्सुमोतो ने बाद में "रूबी" नाम चुनने में एक कारक का उल्लेख किया - यह उनके एक सहयोगी का जन्मस्थान था।[16][17]

प्रारंभिक प्रकाशन

रूबी 0.95 की पहली सार्वजनिक प्रकाशन की घोषणा 21 दिसंबर, 1995 को जापानी घरेलू समाचार समूहों पर की गई थी।[18][19]इसके बाद, दो दिनों में रूबी के तीन और संस्करण जारी किए गए।[14]प्रकाशन जापानी-लैंग्वेज रूबी-सूची प्रेषण सूची के शुरूआत के साथ हुई,जो नई लैंग्वेज के लिए पहली प्रेषण सूची थी।

विकास के इस चरण में पहले से मौजूद रूबी के बाद के प्रकाशन में परिचित सुविधाओं में से कई थे, जिनमें वस्तु-उन्मुख प्रारुप, विरासत (इनहेरिटेंस) वाली कक्षाएं, मिक्सिन्स, पुनरावर्तक, समापन, अपवाद प्रहस्तन (एक्सेप्शन हैंडलिंग) और अपशिष्ट संग्रह सम्मिलित हैं।[20]

1995 में रूबी 0.95 के जारी होने के बाद, रूबी के कई स्थिर संस्करण अगले वर्षों में जारी किए गए:

  • रूबी 1.0: 25 दिसंबर, 1996[14]
  • रूबी 1.2: दिसंबर 1998
  • रूबी 1.4: अगस्त 1999
  • रूबी 1.6: सितंबर 2000

1997 में रूबी के बारे में पहला लेख वेब पर प्रकाशित हुआ था। उसी वर्ष, मात्सुमोतो को netlab.जेp द्वारा एक पूर्णकालिक विकासक (डेवलपर) के रूप में रूबी पर काम करने के लिए नियुक्त किया गया था।[14]

1998 में, मात्सुमोतो द्वारा रूबी अनुप्रयोग पुरालेख (एप्लिकेशन आर्काइव) को रूबी के लिए एक सरल अंग्रेजी लैंग्वेज के मुखपृष्ठ के साथ प्रमोचन किया गया था।[14]

1999 में, पहली अंग्रेजी लैंग्वेज की प्रेषण सूची रूबी-बातचीत आरम्भ हुई, जिसने जापान के बाहर लैंग्वेज में बढ़ती रुचि का संकेत दिया।[21]इसी वर्ष, मात्सुमोतो और कीजू इशित्सुका ने रूबी पर पहली पुस्तक लिखी, एक वस्तु-उन्मुख पटकथा लैंग्वेज रूबी (オブジェクト指向スクリプト言語 रूबी), जो अक्टूबर 1999 में जापान में प्रकाशित हुई थी। इसका पालन 2000 के दशक की शुरुआत में लगभग किया जाएगा। रूबी पर 20 किताबें जापानी लैंग्वेज में प्रकाशित होंगी। .[14]

2000 तक, रूबी जापान में पायथन से अधिक लोकप्रिय थी।[22]सितंबर 2000 में, पहली अंग्रेजी लैंग्वेज की किताब क्रमदेशन रूबी छपी थी, जिसे बाद में जनता के लिए स्वतंत्र रूप से जारी किया गया था, जिससे अंग्रेजी बोलने वालों के बीच रूबी को अपनाने का विस्तार हुआ। 2002 की शुरुआत में, अंग्रेजी लैंग्वेज की रूबी- बातचीत प्रेषण सूची को जापानी लैंग्वेज की रूबी-सूची की तुलना में अधिक संदेश प्राप्त हो रहे थे, जो गैर-जापानी भाषी दुनिया में रूबी की बढ़ती लोकप्रियता को दर्शाता है।

रूबी 1.8 और 1.9

रूबी 1.8 को आरम्भ में अगस्त 2003 में जारी किया गया था, यह लंबे समय तक स्थिर था, और जून 2013 को सेवानिवृत्त हो गई थी।[23]हालांकि बहिष्कृत, इसके आधार पर अभी भी संहिता है। रूबी 1.8 रूबी 1.9 के साथ केवल आंशिक रूप से संगत है।

रूबी 1.8 कई उद्योग मानकों की विषय रही है। रूबी के लिए लैंग्वेज विनिर्देशों को जापानी औद्योगिक मानक समिति (जेआईएससी) और फिर अंतर्राष्ट्रीय मानकीकरण संगठन (आईएसओ) को प्रस्तुत करने के लिए सूचना-प्रौद्योगिकी संवर्धन संस्था (जापान सरकार की एक एजेंसी) के खुले मानक प्रचार केंद्र द्वारा विकसित किया गया था। इसे 2011 में एक जापानी औद्योगिक मानक (जेआईएस एक्स 3017) [24]और 2012 में एक अंतरराष्ट्रीय मानक (आईएसओ/आईईसी 30170)।[25][26]

2005 के आसपास, रूबी लैंग्वेज में रुचि रूबी ऑन रेल्स, रूबी में लिखी गई एक वेब रूपरेखा के साथ मिलकर बढ़ी। रूबी के बारे में बढ़ती जागरूकता का श्रेय अक्सर रेल को दिया जाता है।[27]

रूबी 1.9.3 के साथ प्रभावी, 31 अक्टूबर, 2011 को जारी किया गया,[28]रूबी ने रूबी अनुज्ञप्ति और जीपीएल के तहत दोहरे अनुज्ञप्ति वाले होने से रूबी अनुज्ञप्ति और दो-खंड बीएसडी अनुज्ञप्ति के तहत दोहरे अनुज्ञप्ति होने के लिए स्विच किया।[29]1.9 को अपनाने की गति 1.8 के परिवर्तनों से धीमी हो गई थी जिसके लिए कई लोकप्रिय तृतीय पक्ष के जेम को फिर से लिखने की आवश्यकता थी। रूबी 1.9 ने 1.8 श्रृंखला में कई महत्वपूर्ण बदलाव पेश किए। उदाहरणों में सम्मिलित:[30]

  • स्थानीय चर को रोकें (वे चर जो उस खंड के लिए स्थानीय हैं जिसमें उन्हें घोषित किया गया है)
  • एक अतिरिक्त लैम्ब्डा वाक्य - विन्यास: f = ->(a,b) { puts a + b }
  • प्रतीक कुंजियों के लिए कोलन का उपयोग करके एक अतिरिक्त हैश तालिका शाब्दिक वाक्य - विन्यास: {symbol_key: "value"} == {:symbol_key => "value"}
  • प्रति- स्ट्रिंग वर्ण कूटलेखन (एन्संहितािंग) समर्थित हैं
  • नया गर्तिका API (IPv6 समर्थन)
  • require_relative आयात सुरक्षा

रूबी 2

रूबी 2.0 का उद्देश्य रूबी 1.9.3 के साथ पूरी तरह से पिछड़ा संगत होना था। 24 फरवरी, 2013 को आधिकारिक 2.0.0 विमोचन के अनुसार, केवल पांच ज्ञात (मामूली) असंगतियां थीं।[31]रूबी 2.0 ने कई नई सुविधाएँ जोड़ीं, जिनमें सम्मिलित हैं:

  • विधि मूलशब्द (कीवर्ड) तर्क,
  • एक नया तरीका, Module#prepend, एक वर्ग का विस्तार करने के लिए,
  • प्रतीकों की एक सरणी बनाने के लिए एक नया शाब्दिक,
  • अंकगणित के आलसी मूल्यांकन के लिए नया एपीआई, और
  • वस्तुओं को हैश में बदलने के लिए #to_h का उपयोग करने का एक नया सम्मेलन।[32]

2.1.0 से आरम्भ होकर, रूबी की संस्करण नीति शब्दार्थगत संस्करण के समान हो गई।[33]

रूबी 2.2.0 में चालवर्धी, दोष मरम्मत और पुस्तकालय अद्यतन सम्मिलित हैं और कुछ बहिष्कृत एपीआई को हटा देता है। सबसे विशेष रूप से, रूबी 2.2.0 स्मृति प्रबंधन में बदलाव पेश करता है – एक वृद्धिशील अपशिष्ट संग्राहक, प्रतीकों के अपशिष्ट संग्रह के लिए समर्थन और जेमलोक के खिलाफ सीधे संकलन करने का विकल्प। इसमें प्रणाली () और स्पान () के साथ वीफोर्क (2) का प्रयोग करने के लिए प्रयोगात्मक समर्थन भी सम्मिलित है, और यूनिसंहिता 7.0 विनिर्देश के लिए अतिरिक्त समर्थन सम्मिलित है। संस्करण 2.2.1 के बाद से,[34] पॉवरपीसी64 पर रूबी एमआरआई के प्रदर्शन में सुधार हुआ था।[35][36][37]जिन सुविधाओं को अप्रचलित या हटा दिया गया था उनमें कॉलसीसी, डीएल पुस्तकालय, संग्रह :: एचएमएसी, लिब/विवेकी.आरबी, लिब/जटिल.आरबी, जीएसरवर, प्रचालेखित्र :: अनुप्रयोग और साथ ही विभिन्न सी एपीआई कार्य सम्मिलित हैं।[38]

रूबी 2.3.0 में कई प्रदर्शन सुधार, अद्यतन और दोष मरम्मत सम्मिलित हैं, जिसमें प्रोक # कॉल, गर्तिका और आईओ अपवाद मूलशब्द का उपयोग, डोर# नाम प्रबंधन, व्यतिक्रम निष्क्रिय नेट::एफ़टीपी कनेक्शन, और रेक को एसटीडीलिब से हटाया जा रहा है।[39]अन्य उल्लेखनीय परिवर्तनों में सम्मिलित हैं:

  • डोर संचालन में परिणामस्वरूप बड़े प्रदर्शन में वृद्धि के साथ व्यतिक्रम रूप से सभी डोर शाब्दिक को जमे हुए के रूप में चिह्नित करने की क्षमता।[40]
  • केवल चाबियों के बजाय कुंजी/मान जोड़े की प्रत्यक्ष जांच की अनुमति देने के लिए हैश तुलना।
  • एक नया सुरक्षित मार्गनिर्देशन संचालक &. जो शून्य प्रबंधन को आसान बना सकता है (उदाहरण के लिए if obj && obj.foo && obj.foo.bar, हम प्रयोग कर सकते हैं if obजे&.foo&.bar).
  • डिड_यू_मीन रत्न अब व्यतिक्रम रूप से समूह किया गया है और शुरुआत पर स्वचालित रूप से नाम त्रुटिया नहीं विधि त्रुटि पर समान नाम मिलानों का सुझाव देने के लिए आवश्यक है।
  • गहरे नेस्टेड मानों को आसानी से निकालने के लिए हैश # डिग और ऐरे # डिग (उदाहरण के लिए दिया गया profile = { social: { wikipedia: { name: 'Foo Baz' } } }, फू बाज का मूल्य अब profile.dig(:soसीial, :wikipedia, :name)) द्वारा प्राप्त किया जा सकता है ।
  • .grep_v(regexp) जो अन्य नई सुविधाओं के साथ-साथ दिए गए नियमित अभिव्यक्ति के सभी नकारात्मक उदाहरणों से मेल खाएगा।

रूबी 2.4.0 में हैश सूची, ऐरे#मैक्स, ऐरे#मिन और उदाहरण चर अभिगम (इंस्टेंस वेरिएबल एक्सेस) में प्रदर्शन सुधार सम्मिलित हैं।[41]अन्य उल्लेखनीय परिवर्तनों में सम्मिलित हैं:

  • बाइंडिंग#आईआरबी: बाइंडिंग.पीआरवाई के समान एक आरईपीएल सत्र प्रारंभ करें
  • यूनिफाई फिक्सनमऔर बिग्नम को पूर्णांक वर्ग में एकीकृत करें
  • डोर केवल एएससीआईआई ही नहीं, बल्कि यूनिसंहिता स्थिति प्रतिचित्रण का समर्थन करती है
  • एक नई विधि, रेगऍक्स्प#मैच?, जो रेगऍक्स्प#मैच का तेज़ बूलियन संस्करण है
  • सूत्र गतिरोध पहचान अब सूत्र को उनके पश्व-अनुरेखन (बैकट्रेस) और निर्भरता के साथ दिखाता है

रूबी 2.5.0 में कुछ उल्लेखनीय परिवर्तनों में बचाव और सुनिश्चित करना सम्मिलित है कि बयान स्वचालित रूप से आसपास के डू-एंड ब्लॉक (अतिरिक्त स्टार्ट-एंड ब्लॉक की कम आवश्यकता) का उपयोग करते हैं, उपज_स्वयं के साथ विधि-श्रृंखला, शाखा व्याप्ति के लिए समर्थन और विधि व्याप्ति माप, और आसान हैश# स्लाइस और हैश#परिवर्तन_कुंजी के साथ हैश रूपांतर इसके शीर्ष पर कई प्रदर्शन सुधार आते हैं जैसे तेज खंड क्षणिक (3 गुना तेज), तेज म्यूटेक्स, तेज ईआरबी सांचा और कुछ संघनन विधियों में सुधार।

रूबी 2.6.0 में कुछ उल्लेखनीय परिवर्तनों में एक प्रायोगिक जस्ट-इन-टाइम कंपाइलर (जेआईटी) और रूबीवीएम::सार वाक्य - विन्यास वृक्ष (प्रयोगात्मक) सम्मिलित हैं।

रूबी 2.7.0 में कुछ उल्लेखनीय परिवर्तनों में स्वरूप मिलान (प्रायोगिक), आरईपीएल सुधार, एक संघनन जीसी, और स्थितीय और मुख्य शब्द तर्कों को अलग करना सम्मिलित है।

रूबी 3

रूबी 3.0.0 को 2020 में क्रिसमस के दिन प्रकाशन किया गया था।[42]इसे रूबी 3x3 के रूप में जाना जाता है जिसका अर्थ है कि रूबी 2.0 की तुलना में रूबी 3.0 में कार्यक्रम तीन गुना तेजी से चलेंगे।[43] और कुछ ने पहले से ही 2 से 3 तक मार्ग पर मध्यवर्ती प्रकाशन में लागू किया था। 3x3 को प्राप्त करने के लिए, रूबी 3 एमजेआईटी के साथ आता है, और बाद में वाईजेआईटी, सही समय पर संकलनकर्ता (कंपाइलर्स), कार्यक्रम को तेज़ बनाने के लिए, हालांकि उन्हें प्रायोगिक के रूप में वर्णित किया गया है और व्यतिक्रम रूप से अक्षम (रनटाइम पर झंडे द्वारा सक्षम) बने रहते हैं।

रूबी 3.0 का एक अन्य लक्ष्य संगामिति (कंप्यूटर साइंस) और दो और उपयोगिताओं फाइबर अनुसूचक, और प्रयोगात्मक रेक्टर लक्ष्य को सुगम बनाते हैं।[42]रेक्टर हल्का वजन और सूत्र-सुरक्षित है क्योंकि इसे साझा वस्तुओं के बजाय संदेशों का आदान-प्रदान करके प्राप्त किया जाता है।

रूबी 3.0 स्थैतिक कार्यक्रम विश्लेषण के लिए रूबी कार्यक्रमों के प्रकारों का वर्णन करने के लिए आरबीएस लैंग्वेज का परिचय देता है।[42]इसे सामान्य रूबी कार्यक्रम से अलग किया जाता है।

रुबी 3.0 में कुछ वाक्य - विन्यास संवर्द्धन और पुस्तकालय परिवर्तन भी हैं।[42]

रूबी 3.1 को 2021 में क्रिसमस के दिन प्रकाशन किया गया था।[44]इसमें वाईजेआईटी सम्मिलित है, जो वास्तविक दुनिया के व्यावसायिक अनुप्रयोगों के प्रदर्शन को बढ़ाने के लिए शॉपआईएफवाई द्वारा विकसित एक नया सही समय पर संकलक है। एक नया दोषमार्जक (डिबगर) भी सम्मिलित है। इस प्रकाशन में कुछ वाक्य - विन्यास संवर्द्धन और अन्य सुधार हैं। एफ़टीपी, एसएमटीपी, आईएमएपी और पीओपी के लिए संजाल (नेटवर्क पुस्तकालय) को व्यतिक्रम जेम से समूह किए गए जेम में ले जाया जाता है। [45]

रूबी 3.2 को 2022 में क्रिसमस के दिन प्रकाशन किया गया था। यह एक डब्ल्यूएएसआई अंतरापृष्ठ के माध्यम से वेब समन्वायोजन वातावरण के अंदर चलाने के लिए समर्थन लाता है। नियमित अभिव्यक्ति में कुछ सुधार भी प्राप्त होते हैं, जिसमें कुछ रे डॉस हमलों से बचाने के लिए तेज़, मेमोइज़्ड मिलान कलन विधि और नियमित अभिव्यक्ति मिलान के लिए समनुरूप करने योग्य काल समापन (टाइमआउट) सम्मिलित हैं। इस प्रकाशन में अतिरिक्त दोषमार्जन और वाक्य - विन्यास सुविधाएँ भी सम्मिलित हैं, जिसमें वाक्य - विन्यास सुझाव, साथ ही त्रुटि हाइलाइटिंग सम्मिलित हैं। एमजेआईटी संकलनकर्ता को एक मानक पुस्तकालय उपागम के रूप में फिर से लागू किया गया है, जबकि वाईजेआईटी, एक जंग-आधारित जेआईटी संकलनकर्ता अब लिनक्स पर अधिक संरचना का समर्थन करता है।


संस्करणों की तालिका

संस्करण नवीनतम नन्हा संस्करण प्रारंभिक रिलीज की तारीख समर्थन चरण का अंत सुरक्षा अनुरक्षण चरण का अंत
Old version, no longer maintained: 1.0 1996-12-25[46]
Old version, no longer maintained: 1.8 1.8.7-p375[47] 2003-08-04[48] 2012-06[49] 2014-07-01[50]
Old version, no longer maintained: 1.9 1.9.3-p551[51] 2007-12-25[52] 2014-02-23[53] 2015-02-23[54]
Old version, no longer maintained: 2.0 2.0.0-p648[55] 2013-02-24[56] 2015-02-24[55] 2016-02-24[55]
Old version, no longer maintained: 2.1 2.1.10[57] 2013-12-25[58] 2016-03-30[59][60] 2017-03-31[61][62]
Old version, no longer maintained: 2.2 2.2.10[63] 2014-12-25[64] 2017-03-28[65] 2018-03-31[62]
Old version, no longer maintained: 2.3 2.3.8[66] 2015-12-25[67] 2018-06-20[68] 2019-03-31[68]
Old version, no longer maintained: 2.4 2.4.10[69] 2016-12-25[70] 2019-04-01[71] 2020-04-01[71]
Old version, no longer maintained: 2.5 2.5.9[72] 2017-12-25[73] 2021-04-05[72] 2021-04-05[72]
Old version, no longer maintained: 2.6 2.6.10[74] 2018-12-25[75] 2021-04-05[74] 2022-04-05[74]
Older version, yet still maintained: 2.7 2.7.7[76] 2019-12-25[77] 2022-04-12[78] 2023-03-31[79]
Older version, yet still maintained: 3.0 3.0.5[80] 2020-12-25[81] 2023-03-31[79] TBA
Older version, yet still maintained: 3.1 3.1.3[82] 2021-12-25[44] TBA TBA
Current stable version: 3.2 3.2.0[1] 2022-12-25[1] TBA TBA

शब्दार्थ और दर्शन

मात्सुमोतो ने कहा है कि अच्छे उपयोगकर्ता अंतरफलक प्रारूप के सिद्धांतों का पालन करते हुए रूबी को क्रमादेशक उत्पादकता और मनोरंजन के लिए परिकलन किया गया है।[83]2008 में एक गूगल तकनीकी बात में मात्सुमोतो ने आगे कहा, मुझे उम्मीद है कि रूबी दुनिया के हर क्रमादेशक को उत्पादक बनने और कार्यरचना का आनंद लेने और खुश रहने में मदद करेगी। वह रूबी लैंग्वेज का प्राथमिक उद्देश्य है।[84]उन्होंने जोर देकर कहा कि प्रणाली प्रारूप को संगणक के बजाय मानव पर जोर देने की जरूरत है:[85]

अक्सर लोग, खासकर संगणक अभियन्ता, यंत्र पर ध्यान केंद्रित करते हैं। वे सोचते हैं, "ऐसा करने से यंत्र तेजी से चलेगी। ऐसा करने से यंत्र अधिक प्रभावी ढंग से चलेगी। ऐसा करने से यंत्र कुछ करेगा।" वे यंत्र पर ध्यान केंद्रित कर रहे हैं। लेकिन वास्तव में हमें मनुष्यों पर ध्यान केंद्रित करने की आवश्यकता है कि कैसे मनुष्य कार्यरचना करने या यंत्र के अनुप्रयोग को संचालित करने की परवाह करते हैं। हम उस्ताद हैं। वे गुलाम हैं।

मात्सुमोतो ने कहा है कि उनका प्राथमिक अभिकल्पना लक्ष्य क्रमादेशक के काम को कम करके और संभावित भ्रम को कम करके एक ऐसी लैंग्वेज बनाना था जिसका उपयोग करने में उन्हें खुद मज़ा आता था। उन्होंने कहा है कि उन्होंने रूबी के अभिकल्पना के लिए कम से कम विस्मय का सिद्धांत (पोला) लागू नहीं किया था;[85]मई 2005 में समाचार समूह कॉम्प.लैंग.रूबी पर चर्चा में, मात्सुमोतो ने रूबी को पोला से दूर करने का प्रयास किया, यह समझाते हुए कि क्योंकि कोई भी अभिकल्पना किसी के लिए आश्चर्यजनक होगा, वह आश्चर्य का मूल्यांकन करने में एक व्यक्तिगत मानक का उपयोग करता है। यदि वह व्यक्तिगत मानक सुसंगत रहता है, तो मानक से परिचित लोगों के लिए कुछ आश्चर्य होगा।[86]

मात्सुमोतो ने एक साक्षात्कार में इसे इस प्रकार परिभाषित किया:[85]

प्रत्येक व्यक्ति की एक व्यक्तिगत पृष्ठभूमि होती है। कोई पायथन से आ सकता है, कोई पर्ल से आ सकता है, और वे भाषा के विभिन्न पहलुओं से आश्चर्यचकित हो सकते हैं। फिर वे मेरे पास आते हैं और कहते हैं, 'मैं भाषा की इस विशेषता से हैरान था, इसलिए रूबी कम से कम आश्चर्य के सिद्धांत का उल्लंघन करती है।' रुकना। रुकना। कम से कम आश्चर्य का सिद्धांत सिर्फ आपके लिए नहीं है। कम से कम आश्चर्य का सिद्धांत मतलब कम से कम 'मेरा' आश्चर्य का सिद्धांत। और इसका अर्थ है रूबी को बहुत अच्छी तरह से सीखने के बाद कम से कम आश्चर्य का सिद्धांत। उदाहरण के लिए, रूबी को डिजाइन करना शुरू करने से पहले मैं एक C ++ क्रमादेशक था। मैंने विशेष रूप से दो या तीन वर्षों के लिए C++ में क्रमादेश किया। और C ++ क्रमदेशन के दो साल बाद, यह अभी भी मुझे आश्चर्यचकित करता है।

रूबी वस्तु-उन्मुख है: प्रत्येक मान एक वस्तु है, जिसमें कक्षाएं और प्रकार के उदाहरण सम्मिलित हैं, जिन्हें कई अन्य भाषाएँ आदिम (जैसे कि पूर्णांक (कंप्यूटर विज्ञान), बूलियन्स, और शून्य) के रूप में निर्दिष्ट करती हैं। चर सदैव वस्तुओं के संदर्भ रखते हैं। प्रत्येक प्रकार्य एक विधि है और विधियों को सदैव किसी वस्तु पर बुलाया जाता है। शीर्ष स्तर के दायरे में परिभाषित तरीके वस्तु वर्ग के तरीके बन जाते हैं। चूंकि यह वर्ग हर दूसरे वर्ग का पूर्वज है, इसलिए किसी भी वस्तु पर ऐसी विधियों को बुलाया जा सकता है। वे वैश्विक प्रक्रियाओं के रूप में प्रभावी रूप से सेवा करते हुए, सभी क्षेत्रों में भी दिखाई दे रहे हैं। रूबी गतिशील प्रेषण, मिक्सिन्स और एकाकी वस्तु (सिंगलटन) विधियों के साथ वंशानुक्रम (वस्तु-उन्मुख क्रमदेशन) का समर्थन करती है (कक्षा पर परिभाषित होने के बजाय एकल उदाहरण से संबंधित और परिभाषित)। हालांकि रूबी एकाधिक वंशानुक्रम का समर्थन नहीं करती है, कक्षाएं मिश्रण के रूप में अनुखंड आयात कर सकती हैं।

रूबी को बहु-प्रतिमान क्रमदेशन लैंग्वेज के रूप में वर्णित किया गया है: यह प्रक्रियात्मक क्रमदेशन की अनुमति देता है (वर्गों के बाहर कार्यों/चर को परिभाषित करना उन्हें जड़ का हिस्सा बनाता है, 'स्वयं' वस्तु), वस्तु अभिविन्यास (सब कुछ एक वस्तु है) या वंशानुक्रम (वस्तु-उन्मुख क्रमदेशन)यह अनाम कार्य, क्लोजर (कंप्यूटर विज्ञान), और निरंतरताएं हैं; बयानों में सभी मूल्य हैं, और कार्य अंतिम मूल्यांकन लौटाते हैं)। इसमें आत्मनिरीक्षण , प्रतिबिंब और मेटा क्रमदेशन के साथ-साथ दुभाषिया-आधारित डोर के लिए समर्थन है। रूबी गतिशील टंकण की सुविधा देता है, और प्राचलिक बहुरूपता का समर्थन करता है।

रूबी एफएक्यू के अनुसार, वाक्य - विन्यास पर्ल के समान है और शब्दार्थ गपशप | गपशप के समान है, लेकिन अभिकल्पना दर्शन पायथन ( क्रमदेशन लैंग्वेज) | पायथन से बहुत अलग है।[87]


विशेषताएं

  • वंशानुक्रम , मिश्रण और मेबातचीतक्षा के साथ पूरी तरह से वस्तु-उन्मुख[88]
  • गतिशील टंकण और डक टंकण
  • सब कुछ एक अभिव्यक्ति है (यहां तक ​​​​कि कथन भी) और सब कुछ अनिवार्य रूप से निष्पादित किया जाता है (यहां तक कि घोषणाएं भी)
  • संक्षिप्त और लचीला वाक्य - विन्यास[89]जो वाक्यात्मक शोर को कम करता है और अनुक्षेत्र-विशिष्ट भाषाओं के लिए नींव के रूप में कार्य करता है[90]
  • मेटा क्रमदेशन की सुविधा के लिए वस्तुओं का गतिशील प्रतिबिंब और परिवर्तन [91]
  • खंड वाक्य विन्यास के साथ शाब्दिक संवरण, पुनरावर्तक और जनित्र [92]
  • गतिशील सरणी, हैश, साहचर्य सरणी, नियमित अभिव्यक्ति और प्रतीकों के लिए शाब्दिक अंकन
  • स्ट्रिंग्स में संपुटन (एम्बेडिंग) संहिता (प्रक्षेप)
  • व्यतिक्रम तर्क
  • चर दायरे के चार स्तर (वैश्विक चर, वर्ग चर, उदाहरण चर और स्थानीय चर) जिसे सिगिल (कंप्यूटर क्रमदेशन) या उसके अभाव से चिह्नित
  • अपशिष्ट संग्रह
  • प्रथम श्रेणी निरंतरता
  • सख्त बूलियन निहित प्रकार के रूपांतरण नियम (सब कुछ सत्य है सिवाय गलत तथाशून्य)
  • अपवाद प्रहस्तन
  • प्रचालक अतिभारण[93]
  • परिमेय संख्याओं, जटिल संख्याओं और मनमाना-परिशुद्धता अंकगणित के लिए अंतर्निहित समर्थन
  • आचार प्रेषण व्यवहार (के माध्यम से मेथड_मिसिंग तथा कांस्ट_मिसिंग)
  • प्राकृत सूत्र और सहकारी तंत्रिका (तंत्रिका एक 1.9/वाईएआरवी विशेषता हैं)
  • एकल कूट और कई एकाधिक वर्ण संकेतन के लिए समर्थन।
  • सी में प्राकृत प्लग-इन एपीआई
  • पारस्परिक रूबी आवरण, एक पारस्परिक समादेश रेखा दुभाषिया जिसका उपयोग संहिता को जल्दी से परीक्षण करने के लिए किया जा सकता है (आरईपीएल)
  • रूबीजम्स के माध्यम से केंद्रीकृत संकुल प्रबंधन
  • सभी प्रमुख पटल पर लागू किया गया
  • बड़े मानक पुस्तकालय, वाईएएमएल, जेएसओएन, एक्सएमएल, सीजीआई, ओपनएसएसएल, एचटीटीपी, एफ़टीपी, आरएसएस, सी यूआर एसईएस, जेड लिबऔर टीके के लिए मापांक सहित[94]
  • अभी-अभी संकलन

वाक्य-विन्यास

रूबी का वाक्य-विन्यास मोटे तौर पर पर्ल और पायथन के समान है। यह अभिस्थापन और पठनीय का उपयोग करता है। वर्ग और विधि परिभाषा को मूलशब्द द्वारा संकेत किया जाता है, जबकि संहिता खंड को मूलशब्द या धनुकोष्ठक द्वारा परिभाषित किया जा सकता है। पर्ल के विपरीत, चर अनिवार्य रूप से एक सिगिल के साथ उपसर्ग नहीं होते हैं। जब उपयोग किया जाता है, तो सिगिल चर के दायरे के शब्दार्थ को बदल देता है। व्यावहारिक उद्देश्यों के लिए अभिव्यक्तियों और कथन के बीच कोई अंतर नहीं है।[95][96]पंक्ति विराम महत्वपूर्ण हैं और एक कथन के अंत के रूप में लिया जाता है; अल्पविराम का समान रूप से उपयोग किया जा सकता है। पायथन के विपरीत, अभिस्थापन महत्वपूर्ण नहीं है।

पायथन और पर्ल से एक अंतर यह है कि रूबी अपने सभी उदाहरण चर को पूरी तरह से कक्षा में निजी रखती है और केवल उन्हें पूरकर विधियों के माध्यम से उजागर करती है (एटीटीआर_प्रणेता, एटीटीआर_पाठक, के माध्यम से उजागर करती है। सी ++ या जावा जैसी अन्य भाषाओं के "ग्राही" और "सुरेखक" विधियों के विपरीत, रूबी में पूरकर विधियों को मेटा क्रमदेशन के माध्यम से संहिता की एक पंक्ति के साथ बनाया जा सकता है; हालाँकि, पूरकर विधियाँ सी++ और जावा के पारंपरिक आचरण में भी बनाई जा सकती हैं। चूंकि इन विधियों के आह्वान के लिए कोष्ठकों के उपयोग की आवश्यकता नहीं होती है, कॉलिंग संहिता की एक पंक्ति को संशोधित किए बिना सी# और वीबी.एनइटी गुण सदस्य।

पायथन के संपत्ति विवरणक समान हैं, लेकिन विकास प्रक्रिया में व्यापार-बंद के साथ आते हैं। यदि कोई सार्वजनिक रूप से उजागर उदाहरण चर का उपयोग करके पायथन में आरम्भ होता है, और बाद में एक संपत्ति वर्णनकर्ता के माध्यम से उजागर किए गए एक निजी उदाहरण चर का उपयोग करने के लिए कार्यान्वयन को बदलता है, तो कक्षा के आंतरिक संहिता को सार्वजनिक संपत्ति के बजाय निजी चर का उपयोग करने के लिए समायोजित करने की आवश्यकता हो सकती है। रूबी का अभिकल्पना सभी उदाहरण चर को निजी होने के लिए बाध्य करता है, लेकिन घोषित करने का एक सरल तरीका भी प्रदान करता है सेट तथा गेट तरीके से। यह इस विचार को ध्यान में रखते हुए है कि रूबी में, कक्षा के बाहर से कक्षा के आंतरिक सदस्यों तक सीधे पहुंच नहीं होती है; बल्कि, कोई कक्षा को संदेश भेजता है और प्रतिक्रिया प्राप्त करता है।

कार्यान्वयन

मैट्स का रूबी दुभाषिया

मूल रूबी दुभाषिया को अक्सर रूबी दुभाषिया या एमआरआई| यह कार्यान्वयन सी में लिखा गया है और अपनी रूबी-विशिष्ट आभासी यंत्र का उपयोग करता है।

मानकीकृत और सेवानिवृत्त रूबी 1.8 रूबी कार्यान्वयन को एकल-पास व्याख्यात्मक लैंग्वेज के रूप में सी में लिखा गया था।[23]

रूबी 1.9 के साथ आरम्भ, और रूबी 2.x और इसके बाद के संस्करण के साथ जारी, आधिकारिक रूबी दुभाषिया वाईएआरवी (फिर भी एक और रूबी वीएम) रहा है, और इस कार्यान्वयन ने एमआरआईके पिछले प्रकाशन में उपयोग की जाने वाली धीमी आभासी यंत्र को हटा दिया है।

वैकल्पिक कार्यान्वयन

2018 तक, रूबी के कई वैकल्पिक कार्यान्वयन हैं, जिनमें जेरूबी, रुबिनियस और एमरूबी सम्मिलित हैं। प्रत्येक एक अलग दृष्टिकोण लेता है, जेरूबी और रुबिनियस समय-समय पर संकलन प्रदान करते हैं और एमरूबी भी समय-समय पर संकलन प्रदान करते हैं।

रूबी के तीन प्रमुख वैकल्पिक कार्यान्वयन हैं:

  • जेरूबी, एक मिश्रित जावा और रूबी कार्यान्वयन जो जावा आभासी यंत्र पर चलता है। जेरूबी वर्तमान में रूबी 2.5 को लक्षित करता है।
  • ट्रफलरूबी, ग्रालवीएम के साथ कवक (ट्रफल) लैंग्वेज कार्यान्वयन ढांचे का उपयोग करते हुए जावा कार्यान्वयन
  • रुबिनियस, एक सी++ बाईटकोड संहिता आभासी यंत्र जो कार्यावधि पर यंत्र संहिता को संकलित करने के लिए एलएलवीएम का उपयोग करती है। बाईटकोड संहिता संकलक और अधिकांश मूल कक्षा शुद्ध रूबी में लिखे गए हैं। रुबिनियस वर्तमान में रूबी 2.3.1 को लक्षित करता है।

अन्य रूबी कार्यान्वयन में सम्मिलित हैं:

  • मैग्लेव, एक लघु बातचीत कार्यान्वयन जो जेम बातचीत प्रणाली के जम्सस्वर / एस वीएम पर चलता है।
  • एमरूबी, लुआ के समान नस में सी संहिता में अंतर्निहित करने के लिए अभिकल्पना किया गया एक कार्यान्वयन। यह वर्तमान में युकिहिरो मात्सुमोतो और अन्य द्वारा विकसित किया जा रहा है
  • आरजीएसएस, या रूबी गेम लिपिकरण तंत्र, एक मालिकाना कार्यान्वयन है जिसका प्रयोग आरपीजी रचनाकार श्रृंखला यंत्रेतर सामग्री द्वारा गेम अभिकल्पना और आरपीजी रचनाकार इंजन के संशोधन के लिए किया जाता है।
  • जूलीएलिज़र, एक ट्रांसपिलर (आंशिक) रूबी से जूलिया के लिए । इसका उपयोग बड़े गति वर्धन के लिए किया जा सकता है उदा। रूबी या जेरूबी कार्यान्वयन (केवल संख्यात्मक संहिता के लिए उपयोगी हो सकता है)।[97]
  • टोपाज़ (रूबी), पायथन में लिखा गया एक रूबी कार्यान्वयन
  • ओपल (रूबी), एक वेब-आधारित दुभाषिया जो रूबी को जावालिपि में संकलित करता है

अन्य अब मृत रूबी कार्यान्वयन थे:

  • मैकरूबी, वस्तुनिष्ठ-सी कार्यावधि पर एक मैक ओएस एक्स कार्यान्वयन। इसके आईओएस समकक्ष को रूबीमोशन कहा जाता है
  • लोहरूबी .एनइटी संरचना पर एक कार्यान्वयन
  • गणनांक (कार्डिनल), पैरेट आभासी यंत्र के लिए एक कार्यान्वयन
  • रूबी उद्यम संस्करण, जिसे अक्सर री के रूप में संक्षिप्त किया जाता है, रेल परियोजनाओं पर बड़े पैमाने पर रूबी को संभालने के लिए अनुकूलित एक कार्यान्वयन
  • गरमरूबी, रूबी क्रमदेशन लैंग्वेज का एक जावालिपि और क्रियालिपि कार्यान्वयन

रूबी कार्यान्वयन की परिपक्वता को रूबी ऑन रेल्स (रेल) ढांचे को चलाने की उनकी क्षमता से मापा जाता है, क्योंकि यह कई रूबी-विशिष्ट सुविधाओं को लागू करने और उपयोग करने के लिए जटिल है। वह बिंदु जब कोई विशेष कार्यान्वयन इस लक्ष्य को प्राप्त करता है, उसे "रेल विलक्षणता" कहा जाता है। संदर्भ कार्यान्वयन, जेरूबी, और रुबिनियस[98]सभी एक उत्पादन वातावरण में अपरिवर्तित रेल चलाने में सक्षम हैं।

पटल समर्थन

मात्सुमोतो ने मूल रूप से रूबी को 4.3बीएसडी-आधारित सोनी न्यूज-ओएस 3.x पर विकसित किया था, लेकिन बाद में अपने काम को सन ओएस 4.x और अंत में लिनक्स में स्थानांतरित कर दिया।[99][100]1999 तक, रूबी को कई अलग-अलग संचालन प्रणाली पर काम करने के लिए जाना जाता था। आधुनिक रूबी संस्करण और कार्यान्वयन सभी प्रमुख डेस्कटॉप, मोबाइल और सर्वर-आधारित संचालन प्रणाली पर उपलब्ध हैं। रूबी को जेलास्टिक, हरोकू, गूगल क्लाउड प्लेटफॉर्म और अन्य जैसे कई क्लाउड होस्टिंग पटल पर भी समर्थित किया जाता है।

आरवीएम और आरबीईएनवी जैसे उपकरण, एक यंत्र पर कई रूबी संस्करणों की स्थापना और विभाजन की सुविधा प्रदान करते हैं, और कई 'जम्सets'।

भंडार और पुस्तकालय

रूबीजम्स, रूबी का संकुल प्रबंधक है। रूबी संकुल को "जम्स" कहा जाता है और इसे समादेश रेखा के माध्यम से स्थापित किया जा सकता है। अधिकांश जम्स पुस्तकालय हैं, हालांकि कुछ मौजूद हैं जो अनुप्रयोग हैं, जैसे एकीकृत विकास पर्यावरण।[101]रूबीजम्स.org पर 100,000 से अधिक रूबी जम्स परपोषी किए गए हैं।[102]

गिटहब पर कई नए और मौजूदा रूबी पुस्तकालयों की मेजबानी की जाती है, जो एक सेवा है जो गिट के लिए संशोधन नियंत्रण भंडार परपोषी प्रदान करती है।

रूबी अनुप्रयोग लेखागार, जिसने रूबी क्रमदेशन के लिए अनुप्रयोग, प्रलेखन और पुस्तकालयों की मेजबानी की, को 2013 तक बनाए रखा गया, जब इसका कार्य रूबीजम्स में स्थानांतरित कर दिया गया।[103]


यह भी देखें

संदर्भ

  1. 1.0 1.1 1.2 ""Ruby 3.2.0 Released"".
  2. 2.0 2.1 2.2 Cooper, Peter (2009). Beginning Ruby: From Novice to Professional. Beginning from Novice to Professional (2nd ed.). Berkeley: APress. p. 101. ISBN 978-1-4302-2363-4. To a lesser extent, Python, LISP, Eiffel, Ada, and C++ have also influenced Ruby.
  3. 3.0 3.1 "Reasons behind Ruby". Ruby Conference 2008. Confreaks TV. Retrieved 2019-06-25.
  4. 4.0 4.1 4.2 4.3 4.4 4.5 Bini, Ola (2007). Practical JRuby on Rails Web 2.0 Projects: Bringing Ruby on Rails to Java. Berkeley: APress. p. 3. ISBN 978-1-59059-881-8. It draws primarily on features from Perl, Smalltalk, Python, Lisp, Dylan, and CLU.
  5. Bini, Ola. "Ioke". Ioke.org. Archived from the original on 2011-07-21. Retrieved 2011-07-21. inspired by Io, Smalltalk, Lisp and Ruby
  6. "Julia 1.0 Documentation: Introduction". Retrieved 6 October 2018.
  7. Burks, Tim. "About Nu™". Programming Nu™. Neon Design Technology, Inc. Retrieved 2011-07-21.
  8. Ring Team (3 December 2017). "Ring and other languages". ring-lang.net. ring-lang.
  9. "The Rust Reference". Retrieved 16 November 2019.
  10. Lattner, Chris (2014-06-03). "Chris Lattner's Homepage". Chris Lattner. Retrieved 2014-06-03. The Swift language is the product of tireless effort from a team of language experts, documentation gurus, compiler optimization ninjas, and an incredibly important internal dogfooding group who provided feedback to help refine and battle-test ideas. Of course, it also greatly benefited from the experiences hard-won by many other languages in the field, drawing ideas from Objective-C, Rust, Haskell, Ruby, Python, C#, CLU, and far too many others to list.
  11. "About Ruby". Retrieved 15 February 2020.
  12. Shugo Maeda (17 December 2002). "The Ruby Language FAQ". Retrieved 2 March 2014.
  13. Cite error: Invalid <ref> tag; no text was provided for refs named lisp-features
  14. 14.0 14.1 14.2 14.3 14.4 14.5 Cite error: Invalid <ref> tag; no text was provided for refs named rubyconf-history-of-ruby
  15. "[FYI: historic] The decisive moment of the language name Ruby. (Re: [ANN] ruby 1.8.1)" (E-mail from Hiroshi Sugihara to ruby-talk).
  16. "1.3 Why the name 'Ruby'?". The Ruby Language FAQ. Ruby-Doc.org. Retrieved April 10, 2012.
  17. Yukihiro Matsumoto (June 11, 1999). "Re: the name of Ruby?". Ruby-Talk (Mailing list). Retrieved April 10, 2012.
  18. "More archeolinguistics: unearthing proto-Ruby". Archived from the original on 6 November 2015. Retrieved 2 May 2015.
  19. "[ruby-talk:00382] Re: history of ruby". Retrieved 2 May 2015.
  20. "[ruby-list:124] TUTORIAL — ruby's features". Retrieved 2 May 2015.
  21. "An Interview with the Creator of Ruby".
  22. Yukihiro Matsumoto (October 2000). "Programming Ruby: Forward". Retrieved 5 March 2014.
  23. 23.0 23.1 "We retire Ruby 1.8.7". Retrieved 2 May 2015.
  24. "IPA 独立行政法人 情報処理推進機構:プレス発表 プログラム言語RubyのJIS規格(JIS X 3017)制定について". Retrieved 2 May 2015.
  25. "IPA 独立行政法人 情報処理推進機構:プレス発表 プログラム言語Ruby、国際規格として承認". Retrieved 2 May 2015.
  26. "ISO/IEC 30170:2012". Retrieved 2017-03-10.
  27. Web Development: Ruby on Rails. Devarticles.com (2007-03-22). Retrieved on 2013-07-17.
  28. "Ruby 1.9.3 p0 is released". ruby-lang.org. October 31, 2011. Retrieved February 20, 2013.
  29. "v1_9_3_0/NEWS". Ruby Subversion source repository. ruby-lang.org. September 17, 2011. Retrieved February 20, 2013.
  30. Ruby 1.9: What to Expect. slideshow.rubyforge.org. Retrieved on 2013-07-17.
  31. Endoh, Yusuke. (2013-02-24) Ruby 2.0.0-p0 is released. Ruby-lang.org. Retrieved on 2013-07-17.
  32. Endoh, Yusuke. (2013-02-24) Ruby 2.0.0-p0 is released. Ruby-lang.org. Retrieved on 2013-07-17.
  33. "Semantic Versioning starting with Ruby 2.1.0". December 21, 2013. Retrieved December 27, 2013.
  34. Gustavo Frederico Temple Pedrosa, Vitor de Lima, Leonardo Bianconi (2015). "Ruby 2.2.1 Released". Retrieved 12 July 2016.{{cite web}}: CS1 maint: multiple names: authors list (link)
  35. Gustavo Frederico Temple Pedrosa, Vitor de Lima, Leonardo Bianconi (2015). "v2.2.1 ChangeLog". Retrieved 12 July 2016.{{cite web}}: CS1 maint: multiple names: authors list (link)
  36. Gustavo Frederico Temple Pedrosa, Vitor de Lima, Leonardo Bianconi (2014). "Specifying non volatile registers for increase performance in ppc64". Retrieved 12 July 2016.{{cite web}}: CS1 maint: multiple names: authors list (link)
  37. Gustavo Frederico Temple Pedrosa, Vitor de Lima, Leonardo Bianconi (2014). "Specifying MACRO for increase performance in ppc64". Retrieved 12 July 2016.{{cite web}}: CS1 maint: multiple names: authors list (link)
  38. "ruby/NEWS at v2_2_0 · ruby/ruby · GitHub". GitHub. Retrieved 2 May 2015.
  39. "Ruby/NEWS at v.2_3_0 - ruby/ruby". GitHub. Retrieved 25 December 2015.
  40. "Ruby 2.3.0 changes and features". Running with Ruby. dev.mensfeld.pl. 14 November 2015.
  41. "Ruby 2.4.0 Released". www.ruby-lang.org. Retrieved 2016-12-30.
  42. 42.0 42.1 42.2 42.3 "Ruby 3.0.0 Released". Ruby Programming Language. 2020-12-25. Retrieved 2020-12-25.
  43. "रूबी 3x3: मैट्ज़, कोइची, और रूबी प्रदर्शन के भविष्य पर टेंडरलव".
  44. 44.0 44.1 "Ruby 3.1.0 Released". ruby-lang.org. Retrieved 25 Dec 2021.
  45. "रूबी 3.1.0 जारी".
  46. "The Ruby Community's Christmas Releases". www.rubyinside.com.
  47. "A Patch in Time: Securing Ruby".
  48. "ruby-1.8.0 released!". www.ruby-lang.org.
  49. "Plans for 1.8.7". www.ruby-lang.org.
  50. "EOL for Ruby 1.8.7 and 1.9.2". www.ruby-lang.org.
  51. "Ruby 1.9.3-p551 Released". www.ruby-lang.org.
  52. "Ruby 1.9.0 Released". www.ruby-lang.org.
  53. "Support for Ruby version 1.9.3 will end on February 23, 2015". www.ruby-lang.org.
  54. "Support for Ruby 1.9.3 has ended". www.ruby-lang.org.
  55. 55.0 55.1 55.2 "Ruby 2.0.0-p648 Released". www.ruby-lang.org.
  56. "Ruby 2.0.0-p0 is released". www.ruby-lang.org.
  57. "Ruby 2.1.10 Released". www.ruby-lang.org.
  58. "Ruby 2.1.0 is released". www.ruby-lang.org.
  59. "Support plans for Ruby 2.0.0 and Ruby 2.1". www.ruby-lang.org.
  60. "Ruby 2.1.9 Released". www.ruby-lang.org.
  61. "Ruby Issue Tracking System". bugs.ruby-lang.org.
  62. 62.0 62.1 "Support of Ruby 2.1 has ended". www.ruby-lang.org.
  63. "Ruby 2.2.10 Released". www.ruby-lang.org.
  64. "Ruby 2.2.0 Released". www.ruby-lang.org.
  65. "Ruby 2.2.7 Released". www.ruby-lang.org.
  66. "Ruby 2.3.8 Released". www.ruby-lang.org.
  67. "Ruby 2.3.0 Released". www.ruby-lang.org.
  68. 68.0 68.1 "Support of Ruby 2.2 has ended". www.ruby-lang.org.
  69. "Ruby 2.4.10 Released". Ruby Programming Language. 2020-03-31. Retrieved 2020-04-01.
  70. "Ruby 2.4.0 Released". www.ruby-lang.org.
  71. 71.0 71.1 "Support of Ruby 2.4 has ended". www.ruby-lang.org.
  72. 72.0 72.1 72.2 "Ruby 2.5.9 Released". Ruby Programming Language. 2021-04-05. Retrieved 2021-04-05.
  73. "Ruby 2.5.0 Released". www.ruby-lang.org.
  74. 74.0 74.1 74.2 "Ruby 2.6.10 Released". Ruby Programming Language. 2022-04-12. Retrieved 2022-04-28.
  75. "Ruby 2.6.0 Released". www.ruby-lang.org.
  76. "Ruby 2.7.6 Released". Ruby Programming Language. 2022-04-12. Retrieved 2022-04-28.
  77. "Ruby 2.7.0 Released". www.ruby-lang.org.
  78. "Ruby 2.7.7 Released". Ruby Programming Language. 2022-11-24. Retrieved 2022-11-24.
  79. 79.0 79.1 Cite error: Invalid <ref> tag; no text was provided for refs named ReleaseEngineering
  80. "Ruby 3.0.4 Released". Ruby Programming Language. 2022-04-12. Retrieved 2022-04-28.
  81. "Ruby 3.0.0 Released". www.ruby-lang.org.
  82. Cite error: Invalid <ref> tag; no text was provided for refs named Ruby 3.1.3 Released
  83. "The Ruby Programming Language". Retrieved 2 May 2015.
  84. Google Tech Talks – Ruby 1.9 on YouTube
  85. 85.0 85.1 85.2 Bill Venners. "The Philosophy of Ruby". Retrieved 2 May 2015.
  86. "Welcome to RUBYWEEKLYNEWS.ORG". 4 July 2017. Archived from the original on 4 July 2017.{{cite web}}: CS1 maint: bot: original URL status unknown (link)
  87. "The Ruby Language FAQ: How Does Ruby Stack Up Against...?". Retrieved 2 May 2015.
  88. Bruce Stewart (29 November 2001). "An Interview with the Creator of Ruby". O'Reilly Media. Retrieved 2 May 2015.
  89. Bill Venners. "Dynamic Productivity with Ruby". Retrieved 2 May 2015.
  90. "Language Workbenches: The Killer-App for Domain Specific Languages?". martinfowler.com. Retrieved 2 May 2015.
  91. "Ruby – Add class methods at runtime".
  92. Bill Venners. "Blocks and Closures in Ruby". Retrieved 2 May 2015.
  93. "Methods". Official Ruby FAQ.
  94. Britt, James. "Ruby 2.0.0 Standard Library Documentation". Retrieved 2013-12-09.
  95. "[ruby-talk:01120] Re: The value of while..." In Ruby's syntax, statement is just a special case of an expression that cannot appear as an argument (e.g. multiple assignment).
  96. "[ruby-talk:02460] Re: Precedence question". statement [...] can not be part of expression unless grouped within parentheses.
  97. "remove/virtual_module: Born to make your Ruby Code more than 3x faster. Hopefully". GitHub. 21 February 2020.
  98. Peter Cooper (2010-05-18). "The Why, What, and How of Rubinius 1.0's Release".
  99. Maya Stodte (February 2000). "IBM developerWorks – Ruby: a new language". Archived from the original on August 18, 2000. Retrieved 3 March 2014.
  100. Yukihiro Matsumoto (August 2002). "lang-ruby-general: Re: question about Ruby initial development". Retrieved 3 March 2014.
  101. "The Ruby Toolbox". Retrieved 2015-04-04.
  102. "Stats RubyGems.org आपका समुदाय रत्न होस्ट". rubygems.org. Retrieved 10 December 2021.
  103. "We retire raa.ruby-lang.org". 2013-08-08. Retrieved 2016-01-03.


अग्रिम पठन

बाहरी संबंध