Ruby MRI

From Wikipedia, the free encyclopedia

Ruby
Image:Ruby-logo-notext.png
Developed by Yukihiro Matsumoto (among others)
Latest release 1.8.6 / March 12, 2007 (2007-03-12); 459 days ago
Preview release 1.9.0 / December 26, 2007 (2007-12-26); 170 days ago
Written in C
OS Cross-platform
Genre Ruby programming language interpreter
License Ruby License
GNU General Public License
Website www.ruby-lang.org

Matz's Ruby Interpreter or Ruby MRI is the reference implementation of the Ruby programming language. As there is currently no specification of the Ruby language, the MRI implementation is considered the de facto reference.

Contents

[edit] History

Yukihiro Matsumoto, the creator of Ruby.
Yukihiro Matsumoto, the creator of Ruby.

Yukihiro Matsumoto 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.[1]

As of May 2008, the latest stable version is 1.8.7. Ruby 1.9.0 was released in December, but it is considered a development release. The main developers have thrown their weight behind the virtual machine provided by the YARV project, which was merged into the Ruby source tree on 31 December 2006, and released as part of Ruby 1.9.

The 1.8 branch is still maintained, and 1.8.7 preview releases have been released since April 2008[2][3]. This version will provide bug fixes, but also Ruby feature enhancements.

[edit] Licensing terms

The Ruby interpreter and libraries are distributed disjointedly (dual licensed) under the free and open source licenses GPL and Ruby License [4].

[edit] Operating systems

Ruby MRI is available for the following operating systems:

This list may not be exhaustive.

[edit] Criticism

Version 1.8, the current stable version of the interpreter, has some limitations, which include:

  • Performance -- the Ruby interpreter's performance trails that of comparable languages such as Perl, PHP, and Python[5][6], mainly due to the design of the interpreter: To execute Ruby code, the interpreter builds a syntax tree from the source code and then evaluates the syntax tree directly, instead of first compiling it into more efficiently executable form.
  • Threading -- the Ruby threading model uses green threads [7], and its model has some inherent limitations which render it difficult to use or unsafe in some scenarios.[8]
  • Unicode -- Ruby does not yet have native support for Unicode or multibyte strings.[9]
  • Backward compatibility -- Ruby suffers from backward compatibility problems.[10]

Ruby 2.0 aims to address all of the aforementioned problems:

  • Performance -- a new, faster interpreter, YARV, a virtual machine which executes bytecode instructions.
  • Threading -- native threads will be used instead of green threads.[11]
  • Unicode -- full support for Unicode strings.

Version 1.9, the codebase which is the development version of 2.0, which was released[12] on 26 December 2007 added Unicode support and significantly improved performance over 1.8.

[edit] References

  1. ^ An Interview with the Creator of Ruby
  2. ^ Musha, Akinori (2008-05-26). Ruby Core: Ruby 1.8.7-preview4 has been released. Retrieved on 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.
  3. ^ 1.8.7 NEWS. Retrieved on 2008-05-30.
  4. ^ Ruby License (ruby-lang.org)
  5. ^ Create your own Ranking | Gentoo : Intel® Pentium® 4 Computer Language Benchmarks Game
  6. ^ Ruby Performance Revisited - Joel on Software
  7. ^ Main Page - RubySpec
  8. ^ Writing a standlone, threaded application using Ruby On Rails at KILLERSITES.COM
  9. ^ Headius: Unicode in Ruby, Unicode in JRuby?
  10. ^ InfoQ: Ruby 1.9 released
  11. ^ Gluttonous : YARV Progress Report
  12. ^ [ANN] Ruby 1.9.0 is released

[edit] External links