Content deleted Content added
Rescuing 10 sources and tagging 0 as dead.) #IABot (v2.0.9.5) (Whoop whoop pull up - 14407 |
Mindmatrix (talk | contribs) revert - not needed here |
||
(89 intermediate revisions by 57 users not shown) | |||
Line 1:
{{Short description|General-purpose programming language}}
{{distinguish|Ruby on Rails}}
{{infobox programming language
| logo = Ruby logo.svg
Line 7 ⟶ 6:
| designer = [[Yukihiro Matsumoto]]
| developer = Yukihiro Matsumoto, et al.
| latest_release_version = {{wikidata|property|edit|Q161053|P348}}<ref name="Ruby 3.
| latest_release_date = {{start date and age|{{wikidata|qualifier|Q161053|P348|P577}}}}
| typing = [[Duck typing|Duck]], [[Dynamic typing|dynamic]], [[Strong typing|strong]]
| scope = Lexical, sometimes dynamic
| implementations = [[Ruby MRI]], [[GraalVM#Language and Runtime Support|TruffleRuby]], [[YARV]], [[Rubinius
| influenced = [[Clojure]], [[CoffeeScript]], [[Crystal (programming language)|Crystal]], [[D (programming language)|D]], [[Elixir (programming language)|Elixir]], [[Groovy (programming language)|Groovy]], [[Julia (programming language)|Julia]],<ref name="Julia" /> [[Mirah (programming language)|Mirah]], [[Nu (programming language)|Nu]],<ref name="Burks" /> [[
| license = [[Ruby License]]
| website = {{
| wikibooks = Ruby Programming
| year = {{start date and age|1995}}
| programming_language = [[C (programming language)|C]]
| influenced_by = [[Ada (programming language)|Ada]],<ref name="nov2pro"/> [[BASIC|Basic]],<ref name="confreaks" /> [[C++]],<ref name="nov2pro"/> [[CLU (programming language)|CLU]],<ref name="bini"/> [[Dylan (programming language)|Dylan]],<ref name="bini" />
| operating_system = [[Cross-platform]]
| file_ext = .rb, .ru
}}
'''Ruby''' is
Ruby is [[interpreted language|interpreted]], [[high-level programming language|high-level]], and [[Dynamic typing|dynamically typed]];
== History ==
=== Early concept ===
{{Blockquote|I was talking with my colleague about the possibility of an object-oriented scripting language. I knew Perl (Perl4, not Perl5), but I didn't like it really, because it had the smell of a [[toy language]] (it still has). The object-oriented language seemed very promising. I knew [[Python (programming language)|Python]] then. But I didn't like it, because I didn't think it was a true object-oriented language{{snd}} OO features appeared to be add-on to the language. As a language maniac and OO fan for 15 years, I really wanted a genuine object-oriented, easy-to-use scripting language. I looked for but couldn't find one. So I decided to make it.}}
Matsumoto
The name "Ruby" originated during an online chat session between Matsumoto and Keiju Ishitsuka on 24 February
=== Early releases ===
The first public release of Ruby 0.95 was announced on Japanese domestic [[newsgroup]]s on
Already present at this stage of development were many of the features familiar in later releases of Ruby, including [[object-oriented programming|object-oriented]] design, [[class (computer science)|classes]] with inheritance, [[mixin]]s, [[iterator]]s, [[Closure (computer science)|closures]], [[exception handling]] and [[Garbage collection (computer science)|garbage collection]].<ref name="tutorial-features"/>
After the release of Ruby 0.95 in 1995, several stable versions of Ruby were released in these years
In 1997, the first article about Ruby was published on the Web. In the same year, Matsumoto was hired by [[Network Applied Communication Laboratory|netlab.jp]] to work on Ruby as a full-time developer.<ref name="rubyconf-history-of-ruby"/>
In 1998, the Ruby Application Archive was launched by Matsumoto, along with a simple English-language homepage for Ruby.<ref name="rubyconf-history-of-ruby"/>
Line 61 ⟶ 54:
=== Ruby 1.8 and 1.9 ===
Ruby 1.8 was initially released August 2003, was stable for a long time, and was retired June 2013.<ref name="1.8.7-retirement"/> Although deprecated, there is still code based on it. Ruby 1.8 is only partially compatible with Ruby 1.9.{{cn|date=April 2025}}
Ruby 1.8 has been the subject of several industry standards. The language specifications for Ruby were developed by the Open Standards Promotion Center of the Information-Technology Promotion Agency (a [[Government of Japan|Japanese government]] agency) for submission to the [[Japanese Industrial Standards Committee]] (JISC) and then to the [[International Organization for Standardization]] (ISO). It was accepted as a Japanese Industrial Standard (JIS X 3017) in 2011<ref name="JIS X 3017"/> and an international standard (ISO/IEC 30170) in 2012.<ref name="IPA"/><ref name="IEC 30170"/>
[[File:Ruby On Rails Logo.svg|thumb|[[Ruby on Rails]] logo]]
Around 2005, interest in the Ruby language surged in tandem with [[Ruby on Rails]], a [[web framework]] written in Ruby. Rails is frequently credited with increasing awareness of Ruby.<ref name="Devarticles"/>
Effective with Ruby 1.9.3, released 31 October
=== Ruby 2 ===
Ruby 2.0 was intended to be fully backward compatible with Ruby 1.9.3. As of the official 2.0.0 release on 24 February
Starting with 2.1.0, Ruby's versioning policy changed to be more similar to [[semantic versioning]], although it differs slightly in that minor version increments may be API incompatible.<ref name="semantic-versioning"/>▼
Ruby 2.2.0 includes speed-ups, bugfixes, and library updates and removes some deprecated APIs. Most notably, Ruby 2.2.0 introduces changes to memory handling{{snd}}an incremental garbage collector, support for garbage collection of symbols and the option to compile directly against jemalloc. It also contains experimental support for using [[vfork]](2) with system() and spawn(), and added support for the [[Unicode]] 7.0 specification. Since version 2.2.1,<ref name="2-2-1-release"/> [[Ruby (programming language)#Matz's Ruby interpreter|Ruby MRI]] performance on [[ppc64|PowerPC64]] was improved.<ref name="2-2-1-changelog"/><ref name="Pedrosa-1"/><ref name="Pedrosa-2"/> Features that were made obsolete or removed include callcc, the DL library, Digest::HMAC, lib/rational.rb, lib/complex.rb, GServer, Logger::Application as well as various C API functions.<ref name="obsolete-or-gone-in-2.2"/>▼
▲Starting with 2.1.0, Ruby's versioning policy changed to be more similar to [[semantic versioning]].<ref name="semantic-versioning"/>
▲Ruby 2.2.0 includes speed-ups, bugfixes, and library updates and removes some deprecated APIs. Most notably, Ruby 2.2.0 introduces changes to memory handling{{snd}}an incremental garbage collector, support for garbage collection of symbols and the option to compile directly against jemalloc. It also contains experimental support for using [[vfork]](2) with system() and spawn(), and added support for the [[Unicode]] 7.0 specification. Since version 2.2.1,<ref name="2-2-1-release"/> Ruby MRI performance on [[ppc64|PowerPC64]] was improved.<ref name="2-2-1-changelog"/><ref name="Pedrosa-1"/><ref name="Pedrosa-2"/> Features that were made obsolete or removed include callcc, the DL library, Digest::HMAC, lib/rational.rb, lib/complex.rb, GServer, Logger::Application as well as various C API functions.<ref name="obsolete-or-gone-in-2.2"/>
Ruby 2.3.0 includes many performance improvements, updates, and bugfixes including changes to Proc#call, Socket and IO use of exception keywords, Thread#name handling, default passive Net::FTP connections, and Rake being removed from stdlib.<ref name="Ruby 2.3.0 NEWS"/> Other notable changes include:
Line 104 ⟶ 84:
* Unify ''Fixnum'' and ''Bignum'' into ''Integer'' class
* String supports Unicode case mappings, not just ASCII
* A new method, Regexp#match?, which is a faster
* Thread deadlock detection now shows threads with their backtrace and dependency
Line 115 ⟶ 95:
=== Ruby 3 ===
Ruby 3.0.0 was released on [[Christmas]] Day in 2020.<ref name="Ruby 3.0.0 Released"/> It is known as Ruby 3x3, which
Another goal of Ruby 3.0 is to improve [[Concurrency (computer science)|concurrency]] and two more utilities Fibre Scheduler, and experimental Ractor facilitate the goal.<ref name="Ruby 3.0.0 Released"/> Ractor is light-weight and thread-safe as it is achieved by exchanging messages rather than shared objects.
Line 123 ⟶ 103:
There are some syntax enhancements and library changes in Ruby 3.0 as well.<ref name="Ruby 3.0.0 Released"/>
Ruby 3.1 was released on
Ruby 3.2 was released on
Ruby 3.3 was released on 25 December 2023.<ref name="Ruby 3.3.0 Released">{{Cite web|url=https://www.ruby-lang.org/en/news/2023/12/25/ruby-3-3-0-released/|title=Ruby 3.3.0 Released|access-date=2023-12-25|archive-date=2023-12-25|archive-url=https://web.archive.org/web/20231225071449/https://www.ruby-lang.org/en/news/2023/12/25/ruby-3-3-0-released/|url-status=live}}</ref> Ruby 3.3 introduces significant enhancements and performance improvements to the language. Key features include the introduction of the Prism parser for portable and maintainable parsing, the addition of the pure-Ruby JIT compiler RJIT, and major performance boosts in the YJIT compiler. Additionally, improvements in memory usage, the introduction of an M:N thread scheduler, and updates to the standard library contribute to a more efficient and developer-friendly Ruby ecosystem.
Ruby 3.4 was released on 25 December 2024.<ref name="Ruby 3.4.0 Released">{{cite web|url=https://www.ruby-lang.org/en/news/2024/12/25/ruby-3-4-0-released/ |title=Ruby 3.4.0 Released |date=2024-12-25 |access-date=2025-04-12}}</ref> Ruby 3.4 adds <code>it</code> block parameter reference, changes Prism as default parser, adds [[Happy Eyeballs]] Version 2 support to socket library, improves YJIT, adds modular Garbage Collector and so on.<ref>{{cite web |url=https://docs.ruby-lang.org/en/3.4/NEWS_md.html |title=NEWS - Documentation for Ruby 3.4 |access-date=2025-04-12}}</ref>
== Semantics and philosophy ==
[[File:Yukihiro Matsumoto.JPG|thumb|[[Yukihiro Matsumoto]], the creator of Ruby]]
Matsumoto has said that Ruby is designed for programmer productivity and fun, following the principles of good [[user interface]] design.<ref name="informit" /> At a Google Tech Talk in 2008 he said, "I hope to see Ruby help every programmer in the world to be productive, and to enjoy programming, and to be happy. That is the primary purpose of Ruby language."<ref name="googletechtalk" /> He stresses that systems design needs to emphasize human, rather than computer, needs:<ref name="artima" />
{{
Often people, especially computer engineers, focus on the machines. They think, "By doing this, the machine will run fast. By doing this, the machine will run more effectively. By doing this, the machine will something something something." They are focusing on machines. But in fact we need to focus on humans, on how humans care about doing programming or operating the application of the machines. We are the masters. They are the slaves.
}}
Matsumoto has said his primary design goal was to make a language that he himself enjoyed using, by minimizing programmer work and possible confusion. He has said that he had not applied the [[principle of least astonishment]] (POLA) to the design of Ruby;<ref name="artima" /> in a May 2005 discussion on the newsgroup comp.lang.ruby, Matsumoto attempted to distance Ruby from POLA, explaining that because any design choice will be surprising to someone, he uses a personal standard in evaluating surprise. If that personal standard remains consistent, there would be few surprises for those familiar with the standard.<ref name="rubyweeklynews" />
Matsumoto defined it this way in an interview:<ref name="artima" />
{{
Everyone has an individual background. Someone may come from Python, someone else may come from Perl, and they may be surprised by different aspects of the language. Then they come up to me and say, 'I was surprised by this feature of the language, so Ruby violates the principle of least surprise.' Wait. Wait. The principle of least surprise is not for you only. The principle of least surprise means principle of least ''my'' surprise. And it means the principle of least surprise after you learn Ruby very well. For example, I was a C++ programmer before I started designing Ruby. I programmed in C++ exclusively for two or three years. And after two years of C++ programming, it still surprises me.
}}
Ruby is [[Object-oriented programming|object-oriented]]: every value is an object, including classes and instances of types that many other languages designate as primitives (such as [[Integer (computer science)|integers]],
Ruby has been described as a [[multi-paradigm programming language]]: it allows procedural programming (defining functions/variables outside classes makes them part of the root, 'self' Object), with object orientation (everything is an object) or [[functional programming]] (it has [[anonymous function]]s, [[Closure (computer science)|closures]], and [[continuation]]s; statements all have values, and functions return the last evaluation). It has support for [[Introspection (computer science)|introspection]], [[
According to the Ruby FAQ, the syntax is similar to [[Perl]]'s and the semantics are similar to [[Smalltalk|Smalltalk's]], but the design philosophy differs greatly from [[Python (programming language)|Python]]'s.<ref name="faq-comparison" />
== Features ==
* Thoroughly [[Object-oriented programming|object-oriented]] with [[Inheritance (object-oriented programming)|inheritance]], [[mixin]]s and [[metaclass]]es<ref name="stewart" />
* [[Dynamic typing]] and [[duck typing]]
* Everything is an [[Expression (programming)|expression]] (even [[Statement (programming)|statements]]) and everything is executed [[Imperative programming|imperatively]] (even [[Declaration (computer science)|declarations]])
* Succinct and flexible syntax<ref name="venners-productivity" /> that minimizes [[syntactic noise]] and serves as a foundation for [[___domain-specific languages]]<ref name="fowler-dsl" />
* Dynamic [[
* [[Closure (computer science)|Lexical closures]], [[iterator]]s and [[Generator (computer science)|generators]], with a [[Ruby syntax#Blocks and iterators|block syntax]]<ref name="venners-closures" />
* Literal notation for [[Dynamic array|arrays]], [[Associative array|hashes]], [[regular expression]]s and [[Symbol (Lisp)|symbols]]
* Embedding code in strings ([[Variable interpolation|interpolation]])
Line 164 ⟶ 148:
* [[Garbage collection (computer science)|Garbage collection]]
* [[First-class continuation]]s
* Strict
* [[Exception handling]]
* [[Operator overloading]]<ref name="Methods"/>
Line 175 ⟶ 159:
* Centralized package management through [[RubyGems]]
* Implemented on all major platforms
* Large standard library, including modules for [[YAML]], [[JSON]], [[XML]], [[Common Gateway Interface|CGI]], [[OpenSSL]], [[HTTP]], [[FTP]], [[RSS]], [[curses (programming library)|curses]], [[zlib]] and [[Tk (software)|Tk]]<ref name="stdlib-
* [[Just-in-time compilation]]
Line 188 ⟶ 172:
== Implementations ==
{{See also|Ruby MRI#Operating systems|List of Ruby compilers}}
=== Matz's Ruby interpreter ===
Line 199 ⟶ 183:
=== Alternative implementations ===
{{As of|2018}}, there are a number of alternative implementations of Ruby, including [[JRuby]], [[Rubinius]], and [[mruby]]. Each takes a different approach, with JRuby and Rubinius providing [[just-in-time compilation]] and mruby also providing [[ahead-of-time compilation]].
Line 205 ⟶ 190:
* [[JRuby]], a mixed [[Java (programming language)|Java]] and Ruby implementation that runs on the [[Java virtual machine]]. JRuby currently targets Ruby 3.1.x.
*
* [[Rubinius]], a [[C++]] bytecode virtual machine that uses [[LLVM]] to compile to machine code at runtime. The bytecode compiler and most core classes are written in pure Ruby. Rubinius currently{{when|date=April 2025}} targets Ruby 2.3.1.
Other Ruby implementations include:
Line 212 ⟶ 197:
* [[MagLev (software)|MagLev]], a [[Smalltalk]] implementation that runs on [[GemTalk Systems]]' [[Gemstone (database)|GemStone/S]] VM
* [[mruby]], an implementation designed to be embedded into C code, in a similar vein to [[Lua (programming language)|Lua]]. It is currently being developed by [[Yukihiro Matsumoto]] and others
* [[RGSS]], or Ruby Game Scripting System, a [[Proprietary software|proprietary]] implementation
*
*
*
Other now defunct Ruby implementations were:
Line 222 ⟶ 207:
* Cardinal, an implementation for the [[Parrot virtual machine]]
* [[Ruby Enterprise Edition]], often shortened to ''ree'', an implementation optimized to handle large-scale [[Ruby on Rails]] projects
* [[HotRuby]], a [[JavaScript]] and [[ActionScript]] implementation of the
The maturity of Ruby implementations tends to be measured by their ability to run the [[Ruby on Rails]] (Rails) framework, because it is complex to implement and uses many Ruby-specific features. The point when a particular implementation achieves this goal is called "the Rails singularity". The reference implementation, JRuby, and Rubinius<ref name="Rubinius"/> are all able to run Rails unmodified in a production environment.
Line 230 ⟶ 215:
Matsumoto originally developed Ruby on the [[BSD|4.3BSD]]-based [[Sony NEWS|Sony NEWS-OS]] 3.x, but later migrated his work to [[SunOS]] 4.x, and finally to [[Linux]].<ref name="Stodte"/><ref name="initial-development"/> By 1999, Ruby was known to work across many different [[operating system]]s. Modern Ruby versions and implementations are available on all major desktop, mobile and server-based operating systems. Ruby is also supported across a number of cloud hosting platforms like [[Jelastic]], [[Heroku]], [[Google Cloud Platform]] and others.
Tools such as [[Ruby Version Manager|RVM]] and
== Repositories and libraries ==
[[RubyGems]] is Ruby's package manager. A Ruby package is called a "gem" and can be installed via the command line. Most gems are libraries, though a few exist that are applications, such as [[integrated development environment|IDEs]].<ref name="ruby-toolbox"/> There are over 100,000 Ruby gems hosted on [
Many new and existing Ruby libraries are hosted on [[GitHub]], a service that offers [[Revision control|version control]] repository hosting for [[
The Ruby Application Archive, which hosted applications, documentation, and libraries for Ruby programming, was maintained until 2013, when its function was transferred to RubyGems.<ref name="raa-retirement"/>
Line 244 ⟶ 229:
* [[Comparison of programming languages]]
* [[Metasploit
* [[Why's (poignant) Guide to Ruby]]
* [[Crystal (programming language)]]
Line 251 ⟶ 236:
== References ==
{{
<ref name="Julia">{{cite web | url = https://docs.julialang.org/en/stable/ | title = Julia 1.0 Documentation: Introduction | access-date = 6 October 2018 | archive-date = 16 August 2018 | archive-url = https://web.archive.org/web/20180816025550/https://docs.julialang.org/en/stable/ | url-status = dead }}</ref>
<ref name="Burks">{{
<ref name="Ring and other languages">{{
<ref name="rust">{{Cite web |url=https://doc.rust-lang.org/reference/influences.html |title=Influences - The Rust Reference |website=The Rust Reference |access-date=2023-04-18 |archive-date=2019-01-26 |archive-url=https://web.archive.org/web/20190126051127/https://doc.rust-lang.org/reference/influences.html |url-status=live }}</ref>
<ref name="lattner2014">{{
<ref name="nov2pro">{{ cite book | last = Cooper | first = Peter | title = Beginning Ruby: From Novice to Professional | edition = 2nd | series = Beginning from Novice to Professional | year = 2009 | publisher = APress | ___location = Berkeley | isbn = 978-1-4302-2363-4 | page = 101 | quote = To a lesser extent, Python, LISP, Eiffel, Ada, and C++ have also influenced Ruby.}}</ref>
<ref name="confreaks">{{cite web | url = https://
<ref name="bini">{{ cite book | last = Bini | first = Ola | title = Practical JRuby on Rails Web 2.0 Projects: Bringing Ruby on Rails to Java | year = 2007 | publisher = APress | ___location = Berkeley | isbn = 978-1-59059-881-8 | page = [https://archive.org/details/practicaljrubyon0000bini/page/3 3] | quote = It draws primarily on features from Perl, Smalltalk, Python, Lisp, Dylan, and CLU. | url = https://archive.org/details/practicaljrubyon0000bini/page/3}}</ref>
<ref name="about">{{
<!-- <ref name="FAQ">{{
<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/http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/179642 | archive-date =
<ref name="rubyconf-history-of-ruby">{{
<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|access-date=2008-08-14|archive-date=2011-07-17|archive-url=https://web.archive.org/web/20110717205734/http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/88819|url-status=dead}}</ref>
<ref name="faq-name">{{
<ref name="ruby-talk-name">{{
<ref name="0.95">{{ cite web|url=http://eigenclass.org/hiki/ruby+0.95|title=More archeolinguistics: unearthing proto-Ruby|access-date=2 May 2015|url-status=dead|archive-url=https://web.archive.org/web/20151106023204/http://eigenclass.org/hiki/ruby+0.95|archive-date=6 November 2015}}</ref>
<ref name="ruby-history">{{cite web|url=http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/382|title=[ruby-talk:00382] Re: history of ruby|access-date=2 May 2015|archive-date=16 July 2011|archive-url=https://web.archive.org/web/20110716133016/http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/382|url-status=dead}}</ref>
<ref name="tutorial-features">{{cite web|url=http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/124|title=[ruby-list:124] TUTORIAL — ruby's features|access-date=2 May 2015|archive-date=24 May 2003|archive-url=https://web.archive.org/web/20030524071004/http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/124|url-status=dead}}</ref>
<ref name="linuxdevcenter">{{
<ref name="programming-ruby">{{
<ref name="1.8.7-retirement">{{
<ref name="JIS X 3017">{{cite web|url=http://www.ipa.go.jp/about/press/20110322.html|title=IPA 独立行政法人 情報処理推進機構:プレス発表 プログラム言語RubyのJIS規格(JIS X 3017)制定について|access-date=2 May 2015|archive-date=2 February 2015|archive-url=https://web.archive.org/web/20150202010444/http://www.ipa.go.jp/about/press/20110322.html|url-status=dead}}</ref>
<ref name="IPA">{{cite web|url=http://www.ipa.go.jp/about/press/20120402_2.html|title=IPA 独立行政法人 情報処理推進機構:プレス発表 プログラム言語Ruby、国際規格として承認|access-date=2 May 2015|archive-date=1 February 2015|archive-url=https://web.archive.org/web/20150201213420/http://www.ipa.go.jp/about/press/20120402_2.html|url-status=dead}}</ref>
<ref name="IEC 30170">{{
<ref name="Devarticles">[http://www.devarticles.com/c/a/Ruby-on-Rails/Web-Development-Ruby-on-Rails/ Web Development: Ruby on Rails] {{Webarchive|url=https://web.archive.org/web/20090224055407/http://www.devarticles.com/c/a/Ruby-on-Rails/Web-Development-Ruby-on-Rails/ |date=2009-02-24 }}. Devarticles.com (2007-03-22). Retrieved on 2013-07-17.</ref>
<ref name="Ruby 1.9.3">{{
<ref name="license-change">{{
<ref name="
<ref name="
<ref name="obsolete-or-gone-in-2.2">{{
<ref name="
<ref name="2-2-1-changelog">{{cite web|url=https://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|archive-date=26 February 2017|archive-url=https://web.archive.org/web/20170226231425/http://svn.ruby-lang.org/repos/ruby/tags/v2_2_1/ChangeLog|url-status=dead}}</ref>
▲<ref name="obsolete-or-gone-in-2.2">{{ cite web|url=https://github.com/ruby/ruby/blob/v2_2_0/NEWS|title=ruby/NEWS at v2_2_0 · ruby/ruby · GitHub|work=GitHub|access-date=2 May 2015}}</ref>
<ref name="
<ref name="
<ref name="frozen-strings">{{cite web|url=http://dev.mensfeld.pl/2015/11/ruby-2-3-0-changes-and-features/#frozen|title=Ruby 2.3.0 changes and features|work=Running with Ruby|date=14 November 2015|publisher=dev.mensfeld.pl|access-date=27 December 2015|archive-date=5 January 2016|archive-url=https://web.archive.org/web/20160105214701/http://dev.mensfeld.pl/2015/11/ruby-2-3-0-changes-and-features/#frozen|url-status=live}}</ref>
<ref name="
<ref name="
<ref name="Ruby
<ref name="
<ref name="
<ref name="googletechtalk">{{YouTube|oEkJvvGEtB4|Google Tech Talks – Ruby 1.9}}</ref>
<ref name="artima">{{
<ref name="rubyweeklynews">{{ cite web|url=http://www.rubyweeklynews.org/20050529|title=Welcome to RUBYWEEKLYNEWS.ORG|date=4 July 2017|url-status=bot: unknown|archive-url=https://web.archive.org/web/20170704073422/http://www.rubyweeklynews.org/20050529|archive-date=4 July 2017}}</ref>
<ref name="stewart">{{
<ref name="venners-productivity">{{
<ref name="fowler-dsl">{{
<ref name="codeproject-dynamic">{{
<ref name="venners-closures">{{
<ref name="Methods">{{
<ref name="stdlib-
<ref name="faq-comparison">{{
<ref name="while">{{cite web|title=[ruby-talk:01120] Re: The value of while...|quote=In Ruby's syntax, statement is just a special case of an expression that cannot appear as an argument (e.g. multiple assignment).|url=http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/1120|access-date=2008-12-06|archive-date=2011-07-17|archive-url=https://web.archive.org/web/20110717205553/http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/1120|url-status=dead}}</ref>
<ref name="precedence">{{cite web|title=[ruby-talk:02460] Re: Precedence question|quote=statement [...] can not be part of expression unless grouped within parentheses.|url=http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/2460|access-date=2008-12-06|archive-date=2004-07-22|archive-url=https://web.archive.org/web/20040722094000/http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/2460|url-status=dead}}</ref>
<ref name="virtual-module">{{
<ref name="Rubinius">{{
<ref name="Stodte">{{ cite web|url=http://www-4.ibm.com/software/developer/library/ruby.html |title=IBM developerWorks – Ruby: a new language |author=Maya Stodte |date=February 2000 |access-date=3 March 2014 |url-status=dead |archive-url=https://web.archive.org/web/20000818164241/http://www-4.ibm.com/software/developer/library/ruby.html |archive-date=August 18, 2000 }}</ref>
<ref name="initial-development">{{
<!-- Not in use
Line 321 ⟶ 303:
Not in use-->
<ref name="ruby-toolbox">{{
<ref name="raa-retirement">{{
}}
Line 328 ⟶ 310:
{{refbegin}}
* {{ citation | first1 = David | last1 = Black | first2 = Joseph | last2 = Leo | date =
* {{
* {{ citation | first1 = Peter | last1 = Cooper | date =
* {{
* {{
* {{ citation | first1 = Dave | last1 = Thomas | first2 = Chad | last2 = Fowler | first3 = Andy | last3 = Hunt | date =
* {{ citation | first1 = Jeremy | last1 = McAnally | first2 = Assaf | last2 = Arkin | date =
* {{
* {{
* {{
{{refend}}
Line 346 ⟶ 328:
* {{official website|https://www.ruby-lang.org/en/}}
* [https://
{{Ruby programming language}}
Line 359 ⟶ 340:
[[Category:Class-based programming languages]]
[[Category:Dynamic programming languages]]
[[Category:Functional languages]]▼
[[Category:Dynamically typed programming languages]]
▲[[Category:Functional languages]]
[[Category:Free software programmed in C]]
[[Category:ISO standards]]
Line 371 ⟶ 353:
[[Category:Software using the BSD license]]
[[Category:Text-oriented programming languages]]
▲[[Category:Free compilers and interpreters]]
|