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

From Vigyanwiki
No edit summary
No edit summary
Line 39: Line 39:


भाषा के लिए कोई भी संहिता लिखे जाने से पहले 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 115: Line 115:
=== रूबी 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 MJIT के साथ आता है, और बाद में YJIT, जस्ट-इन-टाइम संकलनकर्ता (कंपाइलर्स), कार्यक्रम को तेज़ बनाने के लिए, हालांकि उन्हें प्रायोगिक के रूप में वर्णित किया गया है और बने रहते हैं व्यतिक्रम रूप से अक्षम (रनटाइम पर झंडे द्वारा सक्षम)।


रूबी 3.0 का एक अन्य लक्ष्य संगामिति (कंप्यूटर साइंस) और दो और उपयोगिताओं फाइबर अनुसूचक , और प्रयोगात्मक रेक्टर लक्ष्य को को सुगम बनाते हैं।<ref name="Ruby 3.0.0 Released"/>रेक्टर हल्का वजन और सूत्र-सुरक्षित है क्योंकि इसे साझा वस्तुओं के बजाय संदेशों का आदान-प्रदान करके प्राप्त किया जाता है।
रूबी 3.0 का एक अन्य लक्ष्य संगामिति (कंप्यूटर साइंस) और दो और उपयोगिताओं फाइबर अनुसूचक , और प्रयोगात्मक रेक्टर लक्ष्य को को सुगम बनाते हैं।<ref name="Ruby 3.0.0 Released"/>रेक्टर हल्का वजन और सूत्र-सुरक्षित है क्योंकि इसे साझा वस्तुओं के बजाय संदेशों का आदान-प्रदान करके प्राप्त किया जाता है।
Line 123: Line 123:
रुबी 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"/>इसमें 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.2 को 2022 में क्रिसमस के दिन विज्ञप्ति किया गया था। यह एक WASI अंतरापृष्ठ के माध्यम से WebAssembly वातावरण के अंदर चलाने के लिए समर्थन लाता है। नियमित अभिव्यक्ति में कुछ सुधार भी प्राप्त होते हैं, जिसमें कुछ ReDoS हमलों से बचाने के लिए तेज़, मेमोइज़्ड मेल  कलन विधि और नियमित अभिव्यक्ति मेल के लिए समनुरूप करने योग्य टाइमआउट शामिल हैं। इस विज्ञप्ति में अतिरिक्त डिबगिंग और  वाक्य - विन्यास सुविधाएँ भी शामिल हैं, जिसमें  वाक्य - विन्यास सुझाव, साथ ही त्रुटि हाइलाइटिंग शामिल हैं। MJIT संकलनकर्ता को एक मानक लाइब्रेरी मॉड्यूल के रूप में फिर से लागू किया गया है, जबकि YJIT, एक जंग-आधारित JIT संकलनकर्ता अब Linux पर अधिक संरचना का समर्थन करता है।
रूबी 3.2 को 2022 में क्रिसमस के दिन प्रकाशन किया गया था। यह एक WASI अंतरापृष्ठ के माध्यम से WebAssembly वातावरण के अंदर चलाने के लिए समर्थन लाता है। नियमित अभिव्यक्ति में कुछ सुधार भी प्राप्त होते हैं, जिसमें कुछ ReDoS हमलों से बचाने के लिए तेज़, मेमोइज़्ड मेल  कलन विधि और नियमित अभिव्यक्ति मेल के लिए समनुरूप करने योग्य टाइमआउट शामिल हैं। इस प्रकाशन में अतिरिक्त डिबगिंग और  वाक्य - विन्यास सुविधाएँ भी शामिल हैं, जिसमें  वाक्य - विन्यास सुझाव, साथ ही त्रुटि हाइलाइटिंग शामिल हैं। MJIT संकलनकर्ता को एक मानक लाइब्रेरी मॉड्यूल के रूप में फिर से लागू किया गया है, जबकि YJIT, एक जंग-आधारित JIT संकलनकर्ता अब Linux पर अधिक संरचना का समर्थन करता है।




Line 135: Line 135:
! संस्करण
! संस्करण
! नवीनतम नन्हा संस्करण
! नवीनतम नन्हा संस्करण
! प्रारंभिक विज्ञप्ति की तारीख
! प्रारंभिक प्रकाशन की तारीख
! समर्थन चरण का अंत
! समर्थन चरण का अंत
! सुरक्षा रखरखाव चरण का अंत
! सुरक्षा रखरखाव चरण का अंत
Line 334: Line 334:
{{Portal|Free and open-source software|Computer programming}}
{{Portal|Free and open-source software|Computer programming}}
* [[प्रोग्रामिंग भाषाओं की तुलना|क्रमदेशन भाषाओं की तुलना]]
* [[प्रोग्रामिंग भाषाओं की तुलना|क्रमदेशन भाषाओं की तुलना]]
* मेटास्प्लोइट परियोजना
* मेटाविभाजन परियोजना
* क्यों (मार्मिक) रूबी के लिए पथप्रदर्शक
* क्यों (मार्मिक) रूबी के लिए पथप्रदर्शक
* [[क्रिस्टल (प्रोग्रामिंग भाषा)|क्रिस्टल ( क्रमदेशन भाषा)]]
* [[क्रिस्टल (प्रोग्रामिंग भाषा)|क्रिस्टल ( क्रमदेशन भाषा)]]

Revision as of 22:35, 31 December 2022

रूबी
Ruby logo.svg
ParadigmMulti-paradigm: functional, imperative, object-oriented, reflective
द्वारा डिज़ाइन किया गयाYukihiro Matsumoto
DeveloperYukihiro Matsumoto, et al.
पहली प्रस्तुति1995; 29 years ago (1995)
Stable release
3.1.3[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 नहीं) जानता था, लेकिन मुझे यह वास्तव में पसंद नहीं आया, क्योंकि इसमें खिलौना भाषा की गंध थी (यह अभी भी है)। वस्तु-उन्मुख भाषा बहुत ही आशाजनक लग रही थी। मैं तब पायथन को जानता था। लेकिन मुझे यह पसंद नहीं आया, क्योंकि मुझे नहीं लगा कि यह एक वास्तविक वस्तु-उन्मुख भाषा थी - OO सुविधाएँ भाषा में ऐड-ऑन दिखाई देती हैं। 15 वर्षों के लिए एक भाषा उन्मादी और OO प्रशंसक के रूप में, मैं वास्तव में एक वास्तविक वस्तु-उन्मुख, उपयोग में आसान पटकथा भाषा चाहता था। मैंने खोजा लेकिन एक नहीं मिला। इसलिए मैंने इसे बनाने का फैसला किया।

मात्सुमोतो ने रूबी के प्रारुप का वर्णन इसके मूल में एक साधारण लिस्प ( क्रमदेशन लैंग्वेज) भाषा की तरह किया है, जिसमें स्मॉलटॉक की तरह एक वस्तु प्रणाली, उच्च-क्रम के कार्यों से प्रेरित खंड और पर्ल की तरह व्यावहारिक उपयोगिता है।[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.jp द्वारा एक पूर्णकालिक विकासक (डेवलपर) के रूप में रूबी पर काम करने के लिए नियुक्त किया गया था।[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 कई उद्योग मानकों का विषय रहा है। रूबी के लिए भाषा विनिर्देशों को जापानी औद्योगिक मानक समिति (JISC) और फिर अंतर्राष्ट्रीय मानकीकरण संगठन (ISO) को प्रस्तुत करने के लिए सूचना-प्रौद्योगिकी संवर्धन एजेंसी (जापान सरकार की एक एजेंसी) के ओपन स्टैंडर्ड प्रमोशन सेंटर द्वारा विकसित किया गया था। इसे 2011 में एक जापानी औद्योगिक मानक (JIS X 3017) [24]और 2012 में एक अंतरराष्ट्रीय मानक (ISO/IEC 30170)।[25][26]

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

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

  • स्थानीय चर को ब्लॉक करें (वे चर जो उस ब्लॉक के लिए स्थानीय हैं जिसमें उन्हें घोषित किया गया है)
  • एक अतिरिक्त lambda syntax: f = ->(a,b) { puts a + b }
  • प्रतीक कुंजियों के लिए कोलन का उपयोग करके एक अतिरिक्त Hash तालिका शाब्दिक वाक्य - विन्यास: {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, एक वर्ग का विस्तार करने के लिए,
  • प्रतीकों की एक सरणी बनाने के लिए एक नया शाब्दिक,
  • अंकगणित के आलसी मूल्यांकन के लिए नया API, और
  • वस्तुओं को हैश में बदलने के लिए #to_h का उपयोग करने का एक नया सम्मेलन।[32]

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

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

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

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

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

  • 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.6.0 में कुछ उल्लेखनीय परिवर्तनों में एक प्रायोगिक जस्ट-इन-टाइम कंपाइलर (JIT) और रूबीVM::सार सिंटैक्स ट्री (प्रयोगात्मक) शामिल हैं।

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

रूबी 3

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

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

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

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

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

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


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

संस्करण नवीनतम नन्हा संस्करण प्रारंभिक प्रकाशन की तारीख समर्थन चरण का अंत सुरक्षा रखरखाव चरण का अंत
Old version, no longer maintained: 1.0 NA 1996-12-25[46] NA NA
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.6[76] 2019-12-25[77] 2022-04-12[78] TBA
Older version, yet still maintained: 3.0 3.0.4[79] 2020-12-25[80] TBA TBA
Current stable version: 3.1 3.1.2[81] 2021-12-25[44] TBA TBA
Legend:
Old version
Older version, still maintained
Latest version
Latest preview version
Future release


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

युकिहिरो मात्सुमोतो

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

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

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

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

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

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

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

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


विशेषताएं

  • वंशानुक्रम , मिश्रण और मेटाक्लासेस के साथ पूरी तरह से वस्तु-उन्मुख[87]
  • गतिशील टाइपिंग और बतख टाइपिंग
  • सब कुछ एक अभिव्यक्ति है (यहां तक ​​​​कि कथन भी) और सब कुछ अनिवार्य रूप से निष्पादित किया जाता है (यहां तक कि घोषणाएं भी)
  • संक्षिप्त और लचीला वाक्य - विन्यास[88]जो वाक्यात्मक शोर को कम करता है और अनुक्षेत्र-विशिष्ट भाषाओं के लिए नींव के रूप में कार्य करता है[89]
  • मेटा क्रमदेशन की सुविधा के लिए वस्तुओं का का गतिशील प्रतिबिंब और परिवर्तन [90]
  • खंड वाक्य विन्यास के साथ शाब्दिक संवरण, पुनरावर्तक और जनित्र [91]
  • गतिशील सरणी, हैश, साहचर्य सरणी, नियमित अभिव्यक्ति और प्रतीकों के लिए शाब्दिक अंकन
  • स्ट्रिंग्स में संपुटन (एम्बेडिंग) संहिता (प्रक्षेप)
  • व्यतिक्रम तर्क
  • चर दायरे के चार स्तर (वैश्विक चर, वर्ग चर, उदाहरण चर और स्थानीय चर) जिसे सिगिल (कंप्यूटर क्रमदेशन) या उसके अभाव से चिह्नित
  • अपशिष्ट संग्रह
  • प्रथम श्रेणी निरंतरता
  • सख्त बूलियन निहित प्रकार के रूपांतरण नियम (सब कुछ सत्य है सिवाय false तथा nil)
  • अपवाद प्रहस्तन
  • प्रचालक अतिभारण[92]
  • परिमेय संख्याओं, जटिल संख्याओं और मनमाना-परिशुद्धता अंकगणित के लिए अंतर्निहित समर्थन
  • आचार प्रेषण व्यवहार (के माध्यम से method_missing तथा const_missing)
  • प्राकृत सूत्र और सहकारी तंत्रिका (तंत्रिका एक 1.9/YARV विशेषता हैं)
  • एकल कूट और कई एकाधिक वर्ण संकेतन के लिए समर्थन।
  • C में प्राकृत प्लग-इन API
  • पारस्परिक रूबी आवरण, एक पारस्परिक समादेश रेखा दुभाषिया जिसका उपयोग संहिता को जल्दी से परीक्षण करने के लिए किया जा सकता है (REPL)
  • रूबीजम्स के माध्यम से केंद्रीकृत संकुल प्रबंधन
  • सभी प्रमुख पटल पर लागू किया गया
  • बड़े मानक पुस्तकालय, YAML, JSON, XML, CGI, OpenSSL, HTTP, FTP, RSS, curses , zlib और Tk के लिए मॉड्यूल सहित[93]
  • अभी-अभी संकलन

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

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

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

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

कार्यान्वयन

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

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

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

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

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

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

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

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

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

  • MagLev, एक स्मॉलटाक कार्यान्वयन जो जेमटॉक प्रणाली के जम्सtone/S VM पर चलता है।
  • mरूबी, लुआ के समान नस में C संहिता में अंतर्निहित करने के लिए अभिकल्पना किया गया एक कार्यान्वयन। यह वर्तमान में युकिहिरो मात्सुमोतो और अन्य द्वारा विकसित किया जा रहा है
  • RGSS, या रूबी गेम लिपिकरण तंत्र, एक मालिकाना कार्यान्वयन है जिसका प्रयोग RPG रचनाकार श्रृंखला यंत्रेतर सामग्री द्वारा गेम अभिकल्पना और RPG रचनाकार इंजन के संशोधन के लिए किया जाता है।
  • julializer, एक ट्रांसपिलर (आंशिक) रूबी से जूलिया के लिए । इसका उपयोग बड़े गति वर्धन के लिए किया जा सकता है उदा। रूबी या Jरूबी कार्यान्वयन (केवल संख्यात्मक संहिता के लिए उपयोगी हो सकता है)।[96]
  • Topaz (रूबी), पायथन में लिखा गया एक रूबी कार्यान्वयन
  • Opal (रूबी), एक वेब-आधारित दुभाषिया जो रूबी को जावास्क्रिप्ट में संकलित करता है

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

  • Macरूबी, वस्तुनिष्ठ-C कार्यावधि पर एक Mac OS X कार्यान्वयन। इसके iOS समकक्ष को रूबीमोशन कहा जाता है
  • Ironरूबी .NET संरचना पर एक कार्यान्वयन
  • कार्डिनल, तोता आभासी यंत्र के लिए एक कार्यान्वयन
  • रूबी उद्यम संस्करण, जिसे अक्सर ree के रूप में संक्षिप्त किया जाता है, रेल परियोजनाओं पर बड़े पैमाने पर रूबी को संभालने के लिए अनुकूलित एक कार्यान्वयन
  • Hotरूबी, रूबी क्रमदेशन भाषा का एक जावास्क्रिप्ट और एक्शनस्क्रिप्ट कार्यान्वयन

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

पटल समर्थन

मात्सुमोतो ने मूल रूप से रूबी को 4.3BSD-आधारित Sony NEWS-OS 3.x पर विकसित किया था, लेकिन बाद में अपने काम को SunOS 4.x और अंत में Linux में स्थानांतरित कर दिया।[98][99]1999 तक, रूबी को कई अलग-अलग संचालन प्रणाली पर काम करने के लिए जाना जाता था। आधुनिक रूबी संस्करण और कार्यान्वयन सभी प्रमुख डेस्कटॉप, मोबाइल और सर्वर-आधारित संचालन प्रणाली पर उपलब्ध हैं। रूबी को Jelastic, Heroku, Google Cloud Platform और अन्य जैसे कई क्लाउड होस्टिंग पटल पर भी समर्थित किया जाता है।

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

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

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

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

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


यह भी देखें

संदर्भ

  1. ""Ruby 3.1.3 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. Matsumoto, Yukihiro (13 February 2006). "Re: Ruby's lisp features". Archived from the original on 2007-01-16. Retrieved 15 February 2020. {{cite web}}: |archive-date= / |archive-url= timestamp mismatch (help)
  14. 14.0 14.1 14.2 14.3 14.4 14.5 "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.6 Released". Ruby Programming Language. 2022-04-12. Retrieved 2022-11-27.
  79. "Ruby 3.0.4 Released". Ruby Programming Language. 2022-04-12. Retrieved 2022-04-28.
  80. "Ruby 3.0.0 Released". www.ruby-lang.org.
  81. "Ruby 3.1.2 Released". ruby-lang.org. Retrieved 28 April 2022.
  82. "The Ruby Programming Language". Retrieved 2 May 2015.
  83. Google Tech Talks – Ruby 1.9 on YouTube
  84. 84.0 84.1 84.2 Bill Venners. "The Philosophy of Ruby". Retrieved 2 May 2015.
  85. "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)
  86. "The Ruby Language FAQ: How Does Ruby Stack Up Against...?". Retrieved 2 May 2015.
  87. Bruce Stewart (29 November 2001). "An Interview with the Creator of Ruby". O'Reilly Media. Retrieved 2 May 2015.
  88. Bill Venners. "Dynamic Productivity with Ruby". Retrieved 2 May 2015.
  89. "Language Workbenches: The Killer-App for Domain Specific Languages?". martinfowler.com. Retrieved 2 May 2015.
  90. "Ruby – Add class methods at runtime".
  91. Bill Venners. "Blocks and Closures in Ruby". Retrieved 2 May 2015.
  92. "Methods". Official Ruby FAQ.
  93. Britt, James. "Ruby 2.0.0 Standard Library Documentation". Retrieved 2013-12-09.
  94. "[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).
  95. "[ruby-talk:02460] Re: Precedence question". statement [...] can not be part of expression unless grouped within parentheses.
  96. "remove/virtual_module: Born to make your Ruby Code more than 3x faster. Hopefully". GitHub. 21 February 2020.
  97. Peter Cooper (2010-05-18). "The Why, What, and How of Rubinius 1.0's Release".
  98. Maya Stodte (February 2000). "IBM developerWorks – Ruby: a new language". Archived from the original on August 18, 2000. Retrieved 3 March 2014.
  99. Yukihiro Matsumoto (August 2002). "lang-ruby-general: Re: question about Ruby initial development". Retrieved 3 March 2014.
  100. "The Ruby Toolbox". Retrieved 2015-04-04.
  101. "Stats RubyGems.org आपका समुदाय रत्न होस्ट". rubygems.org. Retrieved 10 December 2021.
  102. "We retire raa.ruby-lang.org". 2013-08-08. Retrieved 2016-01-03.


अग्रिम पठन


बाहरी संबंध