Ruby MRI

Last updated
Ruby
Developer(s) Yukihiro Matsumoto (among others)
Initial release04.08.2003 [1]
Stable release
3.2.0 / 25 December 2022 [2]
Repository
Written in C
Operating system Cross-platform
Type Ruby programming language interpreter
License Ruby License
Simplified BSD License
GNU General Public License (prior to 1.9.3)
Website www.ruby-lang.org
Yukihiro Matsumoto, the creator of Ruby. Yukihiro Matsumoto.JPG
Yukihiro Matsumoto, the creator of Ruby.

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

Contents

The latest stable version is Ruby 3.2.0 [2]

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. [5]

The 1.8 branch has been maintained until June 2013, [6] and 1.8.7 releases have been released since April 2008. [7] [8] 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., [9] 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. [3]

Licensing terms

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. [10] 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. [11]

Operating systems

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, [12] Ruby MRI performance on PowerPC64 was improved. [13] [14] [15]

Criticism

Commonly noted limitations include:

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

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

See also

Related Research Articles

<span class="mw-page-title-main">Ruby (programming language)</span> General-purpose programming language

Ruby is an interpreted, high-level, general-purpose programming language which supports multiple programming paradigms. It was designed with an emphasis on programming productivity and simplicity. In Ruby, everything is an object, including primitive data types. It was developed in the mid-1990s by Yukihiro "Matz" Matsumoto in Japan.

<span class="mw-page-title-main">Vim (text editor)</span> Improved version of the Vi keyboard-oriented text editor

Vim is a free and open-source, screen-based text editor program. It is an improved clone of Bill Joy's vi. Vim's author, Bram Moolenaar, derived Vim from a port of the Stevie editor for Amiga and released a version to the public in 1991. Vim is designed for use both from a command-line interface and as a standalone application in a graphical user interface.

<span class="mw-page-title-main">Yukihiro Matsumoto</span> Japanese computer scientist (born 1965)

Yukihiro Matsumoto, also known as Matz, is a Japanese computer scientist and software programmer best known as the chief designer of the Ruby programming language and its original reference implementation, Matz's Ruby Interpreter (MRI). His demeanor has brought about a motto in the Ruby community: "Matz is nice and so we are nice," commonly abbreviated as MINASWAN.

<span class="mw-page-title-main">Ghostscript</span> Interpreter for the PostScript language

Ghostscript is a suite of software based on an interpreter for Adobe Systems' PostScript and Portable Document Format (PDF) page description languages. Its main purposes are the rasterization or rendering of such page description language files, for the display or printing of document pages, and the conversion between PostScript and PDF files.

<span class="mw-page-title-main">LLVM</span> Compiler backend for multiple programming languages

LLVM is a set of compiler and toolchain technologies that can be used to develop a front end for any programming language and a back end for any instruction set architecture. LLVM is designed around a language-independent intermediate representation (IR) that serves as a portable, high-level assembly language that can be optimized with a variety of transformations over multiple passes.

<span class="mw-page-title-main">Ruby on Rails</span> Server-side open source web application framework

Ruby on Rails is a server-side web application framework written in Ruby under the MIT License. Rails is a model–view–controller (MVC) framework, providing default structures for a database, a web service, and web pages. It encourages and facilitates the use of web standards such as JSON or XML for data transfer and HTML, CSS and JavaScript for user interfacing. In addition to MVC, Rails emphasizes the use of other well-known software engineering patterns and paradigms, including convention over configuration (CoC), don't repeat yourself (DRY), and the active record pattern.

JRuby is an implementation of the Ruby programming language atop the Java Virtual Machine, written largely in Java. It is free software released under a three-way EPL/GPL/LGPL license. JRuby is tightly integrated with Java to allow the embedding of the interpreter into any Java application with full two-way access between the Java and the Ruby code.

why the lucky stiff Artist and computer programmer

Jonathan Gillette, known by the pseudonym why the lucky stiff, is a writer, cartoonist, artist, and programmer notable for his work with the Ruby programming language. Annie Lowrey described him as "one of the most unusual, and beloved, computer programmers" in the world. Along with Yukihiro Matsumoto and David Heinemeier Hansson, he was seen as one of the key figures in the Ruby community. His pseudonym might allude to the exclamation "Why, the lucky stiff!" from The Fountainhead by Ayn Rand.

YARV is a bytecode interpreter that was developed for the Ruby programming language by Koichi Sasada. The goal of the project was to greatly reduce the execution time of Ruby programs.

<span class="mw-page-title-main">Sony NEWS</span> UNIX workstation series

The Sony NEWS is a series of Unix workstations sold during the late 1980s and 1990s. The first NEWS machine was the NWS-800, which originally appeared in Japan in January 1987 and was conceived as a desktop replacement for the VAX series of minicomputers.

<span class="mw-page-title-main">Aptana</span> Text editor

Aptana, Inc. is a company that makes web application development tools for use with a variety of programming languages. Aptana's main products include Aptana Studio, Aptana Cloud and Aptana Jaxer.

Rubinius was an alternative Ruby implementation created by Evan Phoenix. Based loosely on the Smalltalk-80 Blue Book design, Rubinius sought to "provide a rich, high-performance environment for running Ruby code."

IronRuby is an implementation of the Ruby programming language targeting Microsoft .NET Framework. It is implemented on top of the Dynamic Language Runtime (DLR), a library running on top of the Common Language Infrastructure that provides dynamic typing and dynamic method dispatch, among other things, for dynamic languages.

<span class="mw-page-title-main">S-Lang</span>

The S-Lang programming library is a software library for Unix, Windows, VMS, OS/2, and Mac OS X. It provides routines for embedding an interpreter for the S-Lang scripting language, and components to facilitate the creation of text-based applications. The latter class of functions include routines for constructing and manipulating keymaps, an interactive line-editing facility, and both low- and high-level screen/terminal management functions. It is distributed under the terms of the GNU General Public License.

BlackBerry OS is a discontinued proprietary mobile operating system developed by Canadian company BlackBerry Limited for its BlackBerry line of smartphone handheld devices. The operating system provides multitasking and supports specialized input devices adopted by BlackBerry for use in its handhelds, particularly the trackwheel, trackball, and most recently, the trackpad and touchscreen.

oVirt Free, open-source virtualization management platform

oVirt is a free, open-source virtualization management platform. It was founded by Red Hat as a community project on which Red Hat Virtualization is based. It allows centralized management of virtual machines, compute, storage and networking resources, from an easy-to-use web-based front-end with platform independent access. KVM on x86-64, PowerPC64 and s390x architecture are the only hypervisors supported, but there is an ongoing effort to support ARM architecture in a future releases.

Heroku is a cloud platform as a service (PaaS) supporting several programming languages. One of the first cloud platforms, Heroku has been in development since June 2007, when it supported only the Ruby programming language, but now supports Java, Node.js, Scala, Clojure, Python, PHP, and Go. For this reason, Heroku is said to be a polyglot platform as it has features for a developer to build, run and scale applications in a similar manner across most languages. Heroku was acquired by Salesforce in 2010 for $212 million.

The RubySpec project aimed to write a complete executable specification for the Ruby programming language. This project contains specs that describe Ruby language syntax and standard library classes. The project contains two main components:

mruby

mruby is an interpreter for the Ruby programming language with the intention of being lightweight and easily embeddable. The project is headed by Yukihiro Matsumoto, with over 100 contributors currently working on the project.

The history of the Ruby programming language began when Yukihiro Matsumoto first conceived of the language in 1993, then released it in 1995. Annual releases of the language often take place on Christmas Day. Interest in the language surged around 2005 because of the Ruby on Rails framework.

References

  1. "Ruby-1.8.0 released!" . Retrieved 12 January 2018.
  2. 1 2 "Ruby 3.2.0 Released" . Retrieved 26 December 2022.
  3. 1 2 Brian Shirai (31 December 2014). "Matz's Ruby Developers Don't Use RubySpec and It's Hurting Ruby". Rubinius blog. Retrieved 16 November 2015.
  4. Matsumoto, Yukihiro (26 Dec 2007). "Subject: [ANN] Ruby 1.9.0 is released". Archived from the original on 2007-12-30.
  5. Bruce Stewart (2001-11-29). "An Interview with the Creator of Ruby". linuxdevcenter.com. O'Reilly. Retrieved 22 February 2014.
  6. shyouhei (30 Jun 2013). "We retire Ruby 1.8.7". ruby-lang.org. Retrieved 22 February 2014.
  7. 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.
  8. "1.8.7 NEWS" . Retrieved 2008-05-30.
  9. Yugui (18 Aug 2010). "Ruby 1.9.2 is released". ruby-lang.org. Retrieved 22 February 2014.
  10. "Ruby License". ruby-lang.org. Retrieved 22 February 2014.
  11. "Ruby 1.9.3 Release News". ruby-lang.org. Retrieved 22 February 2014.
  12. 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)
  13. 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)
  14. 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)
  15. 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)
  16. Rick DeNatale (December 26, 2007). "Ruby 1.9 released". Infoq.com. Retrieved 22 February 2014.
  17. Yusuke Endoh (24 February 2013). "Ruby 2.0.0-p0 is released". ruby-lang.org. Retrieved 22 February 2014.