Jump to content

Ruby MRI: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
No edit summary
 
(38 intermediate revisions by 31 users not shown)
Line 1: Line 1:
{{short description|Interpreter for the Ruby programming language}}
{{Infobox software
{{Infobox software
| name = Ruby
| name = Ruby
| logo = [[File:Ruby-logo-notext.png]]
| logo = Ruby-logo-notext.png
| screenshot =
| screenshot =
| caption =
| caption =
| developer = Yukihiro Matsumoto (among others)
| developer = Yukihiro Matsumoto (among others)
| discontinued = yes
| latest release version = 2.3.1
| latest release date = {{release date|2016|04|26}}<ref name="ruby-announce">{{Cite web
| latest release version = 1.8.7
| latest release date = 31 May 2008<ref name="Ruby 1.8.7 is released">{{Cite web
|url=https://www.ruby-lang.org/en/news/2016/04/26/ruby-2-3-1-released/
|title=Ruby 2.3.1 Released
|url=https://www.ruby-lang.org/en/news/2008/05/31/ruby-1-8-7-has-been-released/
|author= nagachika
|access-date=24 March 2023|title=Ruby 1.8.7 Released}}</ref>
| released = 04.08.2003<ref name="Ruby 1.8.0 is released">{{Cite web
|date=2016-04-26
|work=ruby-lang.org
|url=https://www.ruby-lang.org/en/news/2003/08/04/ruby-180-released/
|publisher=
|access-date=12 January 2018|title=Ruby-1.8.0 released!}}</ref>
| operating system = [[Cross-platform]]
|accessdate=26 August 2016}}</ref>
| replaced_by = [[YARV]]
| year = 1995
| programming language = [[C (programming language)|C]]
| operating system = [[Cross-platform]]
| programming language = [[C (programming language)|C]]
| genre = Ruby programming language interpreter
| license = [[Ruby License]]<br />[[Simplified BSD License]]<br />[[GNU General Public License]] (prior to 1.9.3)
| genre = Ruby programming language interpreter
| website = {{URL|www.ruby-lang.org}}
| license = [[Ruby License]]<br />[[Simplified BSD License]]<br />[[GNU General Public License]] (prior to 1.9.3)
| website = [http://www.ruby-lang.org/ www.ruby-lang.org]
}}
}}
[[File:Yukihiro Matsumoto.JPG|thumb|right|100px|Yukihiro Matsumoto, the creator of Ruby.]]
[[File:Yukihiro Matsumoto.JPG|thumb|right|100px|Yukihiro Matsumoto, the creator of Ruby.]]


'''Matz's Ruby Interpreter''' or '''Ruby MRI''' (also called '''CRuby''') is the [[reference implementation]] of the [[Ruby (programming language)|Ruby programming language]] named after Ruby creator [[Yukihiro Matsumoto]] ("Matz"). Until the specification of the Ruby language in 2011{{citation needed|reason=needed pointer to the spec, draft spec is gone|date=November 2015}}, the MRI implementation was considered the [[De facto standard|''de facto'' reference]], especially since an independent attempt to create the specification ([[RubySpec]]) had failed.<ref name="rubyspecfail" />
'''Matz's Ruby Interpreter''' or '''Ruby MRI''' (also called '''CRuby''') is an [[programming language implementation|implementation]] of the [[Ruby (programming language)|Ruby programming language]] named after Ruby creator [[Yukihiro Matsumoto]] ("Matz"). Until the specification of the Ruby language in 2012,<ref>{{cite web|url=https://www.iso.org/standard/59579.html |title=ISO - ISO/IEC 30170:2012 - Information technology — Programming languages — Ruby |website=iso.org|access-date=24 March 2023}}</ref> the MRI implementation was considered the [[De facto standard|''de facto'' reference]], especially since an independent attempt to create the specification ([[RubySpec]]) had failed.<ref name="rubyspecfail" /> Starting with Ruby 1.9, and continuing with Ruby 2.x and above, the official Ruby interpreter has been [[YARV]] ("Yet Another Ruby VM").<ref>{{cite web |url=http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/284720 |archive-url=https://web.archive.org/web/20071230011616/http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/284720 |date=26 Dec 2007 |title=Subject: [ANN] Ruby 1.9.0 is released |first=Yukihiro |last=Matsumoto |archive-date=2007-12-30}}</ref>


Ruby 1.8 is the last version that uses MRI.
The latest stable version is Ruby 2.3.1.<ref name="ruby-announce" />


==History==
==History==
[[Yukihiro Matsumoto]] ("Matz") started working on Ruby on February 24, 1993, and released it to the public in 1995. "Ruby" was named as a gemstone because of a joke within Matsumoto's circle of friends alluding to the name of the [[Perl]] programming language.<ref>{{cite web |url=http://www.linuxdevcenter.com/pub/a/linux/2001/11/29/ruby.html |title=An Interview with the Creator of Ruby |author=Bruce Stewart |date=2001-11-29 |website=linuxdevcenter.com |publisher=O'Reilly |accessdate=22 February 2014}}</ref>
[[Yukihiro Matsumoto]] ("Matz") started working on Ruby on February 24, 1993, and released it to the public in 1995. "Ruby" was named as a gemstone because of a joke within Matsumoto's circle of friends alluding to the name of the [[Perl]] programming language.<ref>{{cite web |url=http://www.linuxdevcenter.com/pub/a/linux/2001/11/29/ruby.html |title=An Interview with the Creator of Ruby |author=Bruce Stewart |date=2001-11-29 |website=linuxdevcenter.com |publisher=O'Reilly |access-date=22 February 2014}}</ref>


The 1.8 branch has been maintained until June 2013,<ref name="1.8.7-retirement">{{cite web |url=https://www.ruby-lang.org/en/news/2013/06/30/we-retire-1-8-7/ |title=We retire Ruby 1.8.7 |author=shyouhei |date=30 Jun 2013 |website=ruby-lang.org |accessdate=22 February 2014}}</ref> and 1.8.7 releases have been released since April 2008.<ref>{{cite web
The 1.8 branch has been maintained until June 2013,<ref name="1.8.7-retirement">{{cite web |url=https://www.ruby-lang.org/en/news/2013/06/30/we-retire-1-8-7/ |title=We retire Ruby 1.8.7 |author=shyouhei |date=30 Jun 2013 |website=ruby-lang.org |access-date=22 February 2014}}</ref> and 1.8.7 releases have been released since April 2008.<ref>{{cite web
| url = http://www.ruby-forum.com/topic/154217#new
| url = http://www.ruby-forum.com/topic/154217#new
| title = Ruby Core: Ruby 1.8.7-preview4 has been released
| title = Ruby Core: Ruby 1.8.7-preview4 has been released
| date = 2008-05-26
| date = 2008-05-26
| quote = ''The new version of Ruby includes many bug fixes, lots of feature enhancements and some performance improvements since 1.8.6 while maintaining stability and backward compatibility with the previous release to a high degree, although there are ongoing efforts that need to be done toward adopting RubySpec.''
| quote = The new version of Ruby includes many bug fixes, lots of feature enhancements and some performance improvements since 1.8.6 while maintaining stability and backward compatibility with the previous release to a high degree, although there are ongoing efforts that need to be done toward adopting RubySpec.
| last = Musha|first=Akinori
| last = Musha|first=Akinori
| accessdate = 2008-05-30}}</ref><ref>{{cite web
| access-date = 2008-05-30}}</ref><ref>{{cite web
| url = http://svn.ruby-lang.org/repos/ruby/tags/v1_8_7_preview4/NEWS
| url = http://svn.ruby-lang.org/repos/ruby/tags/v1_8_7_preview4/NEWS
| title = 1.8.7 NEWS
| title = 1.8.7 NEWS
| accessdate = 2008-05-30}}</ref> This version provides bug fixes, but also many Ruby feature enhancements.
| access-date = 2008-05-30}}</ref> This version provides bug fixes, but also many Ruby feature enhancements.


The [[RubySpec]] project has independently created a large test suite that captures 1.8.6/1.8.7/1.9 behavior as a reference conformance tool. Ruby MRI 1.9.2 passed over 99% of RubySpec.,<ref name="1.9.2-release">{{cite web |url=http://www.ruby-lang.org/en/news/2010/08/18/ruby-1-9.2-released/ |title=Ruby 1.9.2 is released |author=Yugui |date=18 Aug 2010 |website=ruby-lang.org |accessdate=22 February 2014}}</ref> MRI Ruby 2.2 crashed on one of the tests. As a result of the limited uptake by the MRI developers, RubySpec project has been discontinued as of end of 2014.<ref name="rubyspecfail">{{cite web|title=Matz's Ruby Developers Don't Use RubySpec and It's Hurting Ruby. | url=http://rubini.us/2014/12/31/matz-s-ruby-developers-don-t-use-rubyspec/|website=[[Rubinius]] blog|date=31 Dec 2014|access-date=16 November 2015|author=Brian Shirai}}</ref>
The [[RubySpec]] project has independently created a large test suite that captures 1.8.6/1.8.7/1.9 behavior as a reference conformance tool. Ruby MRI 1.9.2 passed over 99% of RubySpec.,<ref name="1.9.2-release">{{cite web |url=http://www.ruby-lang.org/en/news/2010/08/18/ruby-1-9.2-released/ |title=Ruby 1.9.2 is released |author=Yugui |date=18 Aug 2010 |website=ruby-lang.org |access-date=22 February 2014}}</ref> MRI Ruby 2.2 crashed on one of the tests. As a result of the limited uptake by the MRI developers, RubySpec project has been discontinued as of end of 2014.<ref name="rubyspecfail">{{cite web|title=Matz's Ruby Developers Don't Use RubySpec and It's Hurting Ruby. | url=http://rubini.us/2014/12/31/matz-s-ruby-developers-don-t-use-rubyspec/|website=[[Rubinius]] blog|date=31 December 2014|access-date=16 November 2015|author=Brian Shirai}}</ref>


==Licensing terms==
==Licensing terms==
Prior to release 1.9.3, the Ruby interpreter and libraries were distributed as [[multi-licensing|dual-licensed]] [[Free software|free]] and [[open source]] software, under the [[GNU General Public License]] or the Ruby License.<ref>{{cite web |url=http://www.ruby-lang.org/en/LICENSE.txt |title=Ruby License |website=ruby-lang.org |accessdate=22 February 2014}}</ref> In release 1.9.3, Ruby's License has been changed from a dual license with [[GPLv2]] to a dual license with the [[BSD licenses|2-clause BSD license]].<ref name="1.9.3-release-news">{{cite web |url=http://svn.ruby-lang.org/repos/ruby/tags/v1_9_3_0/NEWS |title=Ruby 1.9.3 Release News |website=ruby-lang.org |accessdate=22 February 2014}}</ref>
Prior to release 1.9.3, the Ruby interpreter and libraries were distributed as [[multi-licensing|dual-licensed]] [[Free software|free]] and [[Open-source software|open source]] software, under the [[GNU General Public License]] or the Ruby License.<ref>{{cite web |url=http://www.ruby-lang.org/en/LICENSE.txt |title=Ruby License |website=ruby-lang.org |access-date=22 February 2014}}</ref> In release 1.9.3, Ruby's License has been changed from a dual license with [[GPLv2]] to a dual license with the [[BSD licenses|2-clause BSD license]].<ref name="1.9.3-release-news">{{cite web |url=http://svn.ruby-lang.org/repos/ruby/tags/v1_9_3_0/NEWS |title=Ruby 1.9.3 Release News |website=ruby-lang.org |access-date=22 February 2014}}</ref>


==Operating systems==
==Operating systems==
Ruby MRI is available for the following [[operating system]]s (supported Ruby versions can be different):
Ruby MRI is available for the following [[operating system]]s (supported Ruby versions can be different):

{{colbegin||25em}}
{{Div col|colwidth=25em}}
* [[Acorn Computers Ltd|Acorn]] [[RISC OS]]
* [[Acorn Computers Ltd|Acorn]] [[RISC OS]]
* [[Amiga]]
* [[Amiga]]
Line 66: Line 67:
* [[Blue Gene/L]] compute node kernel
* [[Blue Gene/L]] compute node kernel
* Most flavors of [[Unix]]
* Most flavors of [[Unix]]
{{colend}}
{{Div col end}}

This list may not be exhaustive.
This list may not be exhaustive.


;PowerPC64 Operating systems: After version 2.2.1,<ref>{{cite web|url=https://www.ruby-lang.org/en/news/2015/03/03/ruby-2-2-1-released|title=Ruby 2.2.1 Released|accessdate=12 July 2016|author=Gustavo Frederico Temple Pedrosa, Vitor de Lima, Leonardo Bianconi|year=2015}}</ref> Ruby MRI became performance compatible with [[ppc64|PowerPC64]] operating systems.<ref>{{cite web|url=http://svn.ruby-lang.org/repos/ruby/tags/v2_2_1/ChangeLog|title=v2.2.1 ChangeLog|accessdate=12 July 2016|author=Gustavo Frederico Temple Pedrosa, Vitor de Lima, Leonardo Bianconi|year=2015}}</ref><ref>{{cite web|url=https://bugs.ruby-lang.org/issues/9997|title=Specifying non volatile registers for increase performance in ppc64|accessdate=12 July 2016|author=Gustavo Frederico Temple Pedrosa, Vitor de Lima, Leonardo Bianconi|year=2014}}</ref><ref>{{cite web|url=https://bugs.ruby-lang.org/issues/10081|title=Specifying MACRO for increase performance in ppc64|accessdate=12 July 2016|author=Gustavo Frederico Temple Pedrosa, Vitor de Lima, Leonardo Bianconi|year=2014}}</ref>
;PowerPC64 performance: Since version 2.2.1,<ref>{{cite web|url=https://www.ruby-lang.org/en/news/2015/03/03/ruby-2-2-1-released|title=Ruby 2.2.1 Released|access-date=12 July 2016|author=Gustavo Frederico Temple Pedrosa, Vitor de Lima, Leonardo Bianconi|year=2015}}</ref> Ruby MRI performance on [[ppc64|PowerPC64]] was improved.<ref>{{cite web|url=http://svn.ruby-lang.org/repos/ruby/tags/v2_2_1/ChangeLog|title=v2.2.1 ChangeLog|access-date=12 July 2016|author=Gustavo Frederico Temple Pedrosa, Vitor de Lima, Leonardo Bianconi|year=2015}}</ref><ref>{{cite web|url=https://bugs.ruby-lang.org/issues/9997|title=Specifying non volatile registers for increase performance in ppc64|access-date=12 July 2016|author=Gustavo Frederico Temple Pedrosa, Vitor de Lima, Leonardo Bianconi|year=2014}}</ref><ref>{{cite web|url=https://bugs.ruby-lang.org/issues/10081|title=Specifying MACRO for increase performance in ppc64|access-date=12 July 2016|author=Gustavo Frederico Temple Pedrosa, Vitor de Lima, Leonardo Bianconi|year=2014}}</ref>


==Criticism==
==Limitations==
Commonly noted limitations include:
Commonly noted limitations include:
;Backward compatibility: Version 1.9 and 1.8 have slight semantic differences.<ref>{{cite web |url=http://www.infoq.com/news/2007/12/ruby-19 |title=Ruby 1.9 released |author=Rick DeNatale |date=Dec 26, 2007 |website=Infoq.com |accessdate=22 February 2014}}</ref> The release of Ruby 2.0 sought to avoid such a conflict between different versions.<ref>{{cite web |url=https://www.ruby-lang.org/en/news/2013/02/24/ruby-2-0-0-p0-is-released/ |title=Ruby 2.0.0-p0 is released |author=Yusuke Endoh |date=24 Feb 2013 |website=ruby-lang.org |accessdate=22 February 2014}}</ref>


;Backward compatibility: Version 1.9 and 1.8 have slight semantic differences.<ref>{{cite web |url=http://www.infoq.com/news/2007/12/ruby-19 |title=Ruby 1.9 released |author=Rick DeNatale |date=December 26, 2007 |website=Infoq.com |access-date=22 February 2014}}</ref> The release of Ruby 2.0 sought to avoid such a conflict between different versions.<ref>{{cite web |url=https://www.ruby-lang.org/en/news/2013/02/24/ruby-2-0-0-p0-is-released/ |title=Ruby 2.0.0-p0 is released |author=Yusuke Endoh |date=24 February 2013 |website=ruby-lang.org |access-date=22 February 2014}}</ref>
== See also ==

{{Portal|Free software}}
Threaded programs cannot use more than a single CPU core due to the [[Global interpreter lock]].

==See also==
{{Portal|Free and open-source software}}
* [[YARV]]
* [[YARV]]


Line 83: Line 88:


==External links==
==External links==
*[http://www.ruby-lang.org/en/ Ruby language home page]
* {{Official website|www.ruby-lang.org/en/}}
{{Ruby programming language}}
{{Ruby programming language}}


{{DEFAULTSORT:Ruby Mri}}
{{DEFAULTSORT:Ruby Mri}}
[[Category:Ruby (programming language)]]
[[Category:Free and open source interpreters]]
[[Category:Free compilers and interpreters]]
[[Category:Free software programmed in C]]
[[Category:Free software programmed in C]]
[[Category:Ruby (programming language)]]

Latest revision as of 18:33, 10 November 2024

Ruby
Developer(s)Yukihiro Matsumoto (among others)
Initial release04.08.2003[1]
Final release
1.8.7 / 31 May 2008[2]
Repository
Written inC
Operating systemCross-platform
SuccessorYARV
TypeRuby programming language interpreter
LicenseRuby License
Simplified BSD License
GNU General Public License (prior to 1.9.3)
Websitewww.ruby-lang.org
Yukihiro Matsumoto, the creator of Ruby.

Matz's Ruby Interpreter or Ruby MRI (also called CRuby) is an implementation of the Ruby programming language named after Ruby creator Yukihiro Matsumoto ("Matz"). Until the specification of the Ruby language in 2012,[3] the MRI implementation was considered the de facto reference, especially since an independent attempt to create the specification (RubySpec) had failed.[4] Starting with Ruby 1.9, and continuing with Ruby 2.x and above, the official Ruby interpreter has been YARV ("Yet Another Ruby VM").[5]

Ruby 1.8 is the last version that uses MRI.

History

[edit]

Yukihiro Matsumoto ("Matz") started working on Ruby on February 24, 1993, and released it to the public in 1995. "Ruby" was named as a gemstone because of a joke within Matsumoto's circle of friends alluding to the name of the Perl programming language.[6]

The 1.8 branch has been maintained until June 2013,[7] and 1.8.7 releases have been released since April 2008.[8][9] This version provides bug fixes, but also many Ruby feature enhancements.

The RubySpec project has independently created a large test suite that captures 1.8.6/1.8.7/1.9 behavior as a reference conformance tool. Ruby MRI 1.9.2 passed over 99% of RubySpec.,[10] MRI Ruby 2.2 crashed on one of the tests. As a result of the limited uptake by the MRI developers, RubySpec project has been discontinued as of end of 2014.[4]

Licensing terms

[edit]

Prior to release 1.9.3, the Ruby interpreter and libraries were distributed as dual-licensed free and open source software, under the GNU General Public License or the Ruby License.[11] In release 1.9.3, Ruby's License has been changed from a dual license with GPLv2 to a dual license with the 2-clause BSD license.[12]

Operating systems

[edit]

Ruby MRI is available for the following operating systems (supported Ruby versions can be different):

This list may not be exhaustive.

PowerPC64 performance
Since version 2.2.1,[13] Ruby MRI performance on PowerPC64 was improved.[14][15][16]

Limitations

[edit]

Commonly noted limitations include:

Backward compatibility
Version 1.9 and 1.8 have slight semantic differences.[17] The release of Ruby 2.0 sought to avoid such a conflict between different versions.[18]

Threaded programs cannot use more than a single CPU core due to the Global interpreter lock.

See also

[edit]

References

[edit]
  1. ^ "Ruby-1.8.0 released!". Retrieved 12 January 2018.
  2. ^ "Ruby 1.8.7 Released". Retrieved 24 March 2023.
  3. ^ "ISO - ISO/IEC 30170:2012 - Information technology — Programming languages — Ruby". iso.org. Retrieved 24 March 2023.
  4. ^ a b Brian Shirai (31 December 2014). "Matz's Ruby Developers Don't Use RubySpec and It's Hurting Ruby". Rubinius blog. Retrieved 16 November 2015.
  5. ^ Matsumoto, Yukihiro (26 Dec 2007). "Subject: [ANN] Ruby 1.9.0 is released". Archived from the original on 2007-12-30.
  6. ^ Bruce Stewart (2001-11-29). "An Interview with the Creator of Ruby". linuxdevcenter.com. O'Reilly. Retrieved 22 February 2014.
  7. ^ shyouhei (30 Jun 2013). "We retire Ruby 1.8.7". ruby-lang.org. Retrieved 22 February 2014.
  8. ^ Musha, Akinori (2008-05-26). "Ruby Core: Ruby 1.8.7-preview4 has been released". Retrieved 2008-05-30. The new version of Ruby includes many bug fixes, lots of feature enhancements and some performance improvements since 1.8.6 while maintaining stability and backward compatibility with the previous release to a high degree, although there are ongoing efforts that need to be done toward adopting RubySpec.
  9. ^ "1.8.7 NEWS". Retrieved 2008-05-30.
  10. ^ Yugui (18 Aug 2010). "Ruby 1.9.2 is released". ruby-lang.org. Retrieved 22 February 2014.
  11. ^ "Ruby License". ruby-lang.org. Retrieved 22 February 2014.
  12. ^ "Ruby 1.9.3 Release News". ruby-lang.org. Retrieved 22 February 2014.
  13. ^ 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)
  14. ^ 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)
  15. ^ 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)
  16. ^ 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)
  17. ^ Rick DeNatale (December 26, 2007). "Ruby 1.9 released". Infoq.com. Retrieved 22 February 2014.
  18. ^ Yusuke Endoh (24 February 2013). "Ruby 2.0.0-p0 is released". ruby-lang.org. Retrieved 22 February 2014.
[edit]