fbpx
Wikipedia

History of Ruby

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.

Table of versions edit

Version[1] Latest teeny version Initial release date End of support phase[2] End of security maintenance phase
Old version, no longer maintained: 1.0 NA 1996-12-25[3] NA NA
Old version, no longer maintained: 1.8 1.8.7-p375[4] 2003-08-04[5] 2012-06[6] 2014-07-01[7]
Old version, no longer maintained: 1.9 1.9.3-p551[8] 2007-12-25[9] 2014-02-23[10] 2015-02-23[11]
Old version, no longer maintained: 2.0 2.0.0-p648[12] 2013-02-24[13] 2015-02-24[12] 2016-02-24[12]
Old version, no longer maintained: 2.1 2.1.10[14] 2013-12-25[15] 2016-03-30[14][16] 2017-03-31[17][18]
Old version, no longer maintained: 2.2 2.2.10[19] 2014-12-25[20] 2017-03-28[21] 2018-03-31[22]
Old version, no longer maintained: 2.3 2.3.8[23] 2015-12-25[24] 2018-06-20[25] 2019-03-31[25]
Old version, no longer maintained: 2.4 2.4.10[26] 2016-12-25[27] 2019-04-01[28] 2020-04-01[28]
Old version, no longer maintained: 2.5 2.5.9[29] 2017-12-25[30] 2021-04-05[29] 2021-04-05[29]
Old version, no longer maintained: 2.6 2.6.10[31] 2018-12-25[32] 2022-04-12[31] 2022-04-12[31]
Old version, no longer maintained: 2.7 2.7.8[33] 2019-12-25[34] 2023-03-30[33] 2023-03-30[33]
Older version, yet still maintained: 3.0 3.0.5[35] 2020-12-25[36] TBA TBA
Older version, yet still maintained: 3.1 3.1.2[37] 2021-12-25[38] TBA TBA
Older version, yet still maintained: 3.2 3.2.0[39] 2022-12-25[39] TBA TBA
Current stable version: 3.3 3.3.0 2023-12-25 TBA TBA
Legend:
Old version
Older version, still maintained
Latest version
Latest preview version
Future release

Conception edit

Ruby creator Yukihiro Matsumoto has said that Ruby was conceived in 1993. In a 1999 post to the ruby-talk mailing list, he describes some of his early ideas about the language:[40]

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 then. But I didn't like it, because I didn't think it was a true object-oriented language – 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 describes the design of Ruby as being like a simple Lisp language at its core, with an object system like that of Smalltalk, blocks inspired by higher-order functions, and practical utility like that of Perl.[41]

The name "Ruby" originated during an online chat session between Matsumoto and Keiju Ishitsuka on February 24, 1993, before any code had been written for the language.[42] Initially two names were proposed: "Coral" and "Ruby". Matsumoto chose the latter in a later e-mail to Ishitsuka.[43] Matsumoto later noted a factor in choosing the name "Ruby" – it was the birthstone of one of his colleagues.[44][45]

First publication edit

The first public release of Ruby 0.95 was announced on Japanese domestic newsgroups on December 21, 1995.[46][47] Subsequently, three more versions of Ruby were released in two days.[42] The release coincided with the launch of the Japanese-language ruby-list mailing list, which was the first mailing list for the new language.

Already present at this stage of development were many of the features familiar in later releases of Ruby, including object-oriented design, classes with inheritance, mixins, iterators, closures, exception handling and garbage collection.[48]

Early releases edit

Following the release of Ruby 0.95 in 1995, several stable versions of Ruby were released in the following years:

  • Ruby 1.0: December 25, 1996[42]
  • Ruby 1.2: December 1998
  • Ruby 1.4: August 1999
  • Ruby 1.6: September 2000

In 1997, the first article about Ruby was published on the Web. In the same year, Matsumoto was hired by netlab.jp to work on Ruby as a full-time developer.[42]

In 1998, the Ruby Application Archive was launched by Matsumoto, along with a simple English-language homepage for Ruby.[42]

In 1999, the first English language mailing list ruby-talk began, which signaled a growing interest in the language outside Japan.[49] In this same year, Matsumoto and Keiju Ishitsuka wrote the first book on Ruby, The Object-oriented Scripting Language Ruby (オブジェクト指向スクリプト言語 Ruby), which was published in Japan in October 1999. It would be followed in the early 2000s by around 20 books on Ruby published in Japanese.[42]

By 2000, Ruby was more popular than Python in Japan.[50] In September 2000, the first English language book Programming Ruby was printed, which was later freely released to the public, further widening the adoption of Ruby amongst English speakers. In early 2002, the English-language ruby-talk mailing list was receiving more messages than the Japanese-language ruby-list, demonstrating Ruby's increasing popularity in the non-Japanese speaking world.

Ruby 1.8 edit

Ruby 1.8 was initially released August 2003, was stable for a long time, and was retired June 2013.[51] Although deprecated, there is still code based on it. Ruby 1.8 is only partially compatible with Ruby 1.9.

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 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[52] and an international standard (ISO/IEC 30170) in 2012.[53][54]

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

Ruby 1.9 edit

Ruby 1.9 was released on Christmas Day in 2007. Effective with Ruby 1.9.3, released October 31, 2011,[56] Ruby switched from being dual-licensed under the Ruby License and the GPL to being dual-licensed under the Ruby License and the two-clause BSD license.[57] Adoption of 1.9 was slowed by changes from 1.8 that required many popular third party gems to be rewritten.

Ruby 1.9 introduces many significant changes over the 1.8 series. Examples include:[58]

  • block local variables (variables that are local to the block in which they are declared)
  • an additional lambda syntax: f = ->(a,b) { puts a + b }
  • an additional Hash literal syntax using colons for symbol keys: {symbol_key: "value"} == {:symbol_key => "value"}
  • per-string character encodings are supported
  • new socket API (IPv6 support)
  • require_relative import security

Ruby 1.9 has been obsolete since February 23, 2015,[59] and it will no longer receive bug and security fixes. Users are advised to upgrade to a more recent version.

Ruby 2.0 edit

Ruby 2.0 added several new features, including:

  • method keyword arguments,
  • a new method, Module#prepend, for extending a class,
  • a new literal for creating an array of symbols,
  • new API for the lazy evaluation of Enumerables, and
  • a new convention of using #to_h to convert objects to Hashes.[60]

Ruby 2.0 was intended to be fully backward compatible with Ruby 1.9.3. As of the official 2.0.0 release on February 24, 2013, there were only five known (minor) incompatibilities.[61]

Ruby 2.0 has been obsolete since February 24, 2016,[62] and it will no longer receive bug and security fixes. Users are advised to upgrade to a more recent version.

Ruby 2.1 edit

Ruby 2.1.0 was released on Christmas Day in 2013.[63] The release includes speed-ups, bugfixes, and library updates.

Starting with 2.1.0, Ruby's versioning policy is more like semantic versioning.[64] Although similar, Ruby's versioning policy is not compatible with semantic versioning:

Ruby Semantic versioning
MAJOR: Increased when incompatible change which can't be released in MINOR. Reserved for special events. MAJOR: Increased when you make incompatible API changes.
MINOR: increased every Christmas, may be API incompatible. MINOR: increased when you add functionality in a backwards-compatible manner.
TEENY: security or bug fix which maintains API compatibility. May be increased more than 10 (such as 2.1.11), and will be released every 2–3 months. PATCH: increased when you make backwards-compatible bug fixes.
PATCH: number of commits since last MINOR release (will be reset at 0 when releasing MINOR). -

Semantic versioning also provides additional labels for pre-release and build metadata are available as extensions to the MAJOR.MINOR.PATCH format, not available at Ruby.

Ruby 2.1 has been obsolete since April 1, 2017,[65] and it will no longer receive bug and security fixes. Users are advised to upgrade to a more recent version.

Ruby 2.2 edit

Ruby 2.2.0 was released on Christmas Day in 2014.[66] The release includes speed-ups, bugfixes, and library updates and removes some deprecated APIs. Most notably, Ruby 2.2.0 introduces changes to memory handling – 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.

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

Ruby 2.2 has been obsolete since April 1, 2018,[68] and it will no longer receive bug and security fixes. Users are advised to upgrade to a more recent version.

PowerPC64 performance
Since version 2.2.1,[69] Ruby MRI performance on PowerPC64 was improved.[70][71][72]

Ruby 2.3 edit

Ruby 2.3.0 was released on Christmas Day in 2015. A few notable changes include:

  • The ability to mark all string literals as frozen by default with a consequently large performance increase in string operations.[73]
  • Hash comparison to allow direct checking of key/value pairs instead of just keys.
  • A new safe navigation operator &. that can ease nil handling (e.g. instead of if obj && obj.foo && obj.foo.bar, we can use if obj&.foo&.bar).
  • The did_you_mean gem is now bundled by default and required on startup to automatically suggest similar name matches on a NameError or NoMethodError.
  • Hash#dig and Array#dig to easily extract deeply nested values (e.g. given profile = { social: { wikipedia: { name: 'Foo Baz' } } }, the value Foo Baz can now be retrieved by profile.dig(:social, :wikipedia, :name)).
  • .grep_v(regexp) which will match all negative examples of a given regular expression in addition to other new features.

The 2.3 branch also 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.[74]

Ruby 2.4 edit

Ruby 2.4.0 was released on Christmas Day in 2016. A few notable changes include:

  • Binding#irb: Start a REPL session similar to binding.pry
  • Unify Fixnum and Bignum into Integer class
  • String supports Unicode case mappings, not just ASCII
  • A new method, Regexp#match?, which is a faster boolean version of Regexp#match
  • Thread deadlock detection now shows threads with their backtrace and dependency

The 2.4 branch also includes performance improvements to hash table, Array#max, Array#min, and instance variable access.[75]

Ruby 2.5 edit

Ruby 2.5.0 was released on Christmas Day in 2017.[76] A few notable changes include:

  • rescue and ensure statements automatically use a surrounding do-end block (less need for extra begin-end blocks)
  • Method-chaining with yield_self
  • Support branch coverage and method coverage measurement
  • Easier Hash transformations with Hash#slice and Hash#transform_keys

On top of that come a lot of performance improvements like faster block passing (3 times faster), faster Mutexes, faster ERB templates and improvements on some concatenation methods.

Ruby 2.6 edit

Ruby 2.6.0 was released on Christmas Day in 2018.[77] A few notable changes include:

  • JIT (experimental)
  • RubyVM::AbstractSyntaxTree (experimental)

Ruby 2.7 edit

Ruby 2.7.0 was released on Christmas Day in 2019.[78] A few notable changes include:

  • Pattern Matching (experimental)
  • REPL improvement
  • Compaction GC
  • Separation of positional and keyword arguments

Ruby 3.0 edit

Ruby 3.0.0 was released on Christmas Day in 2020.[79] It is known as Ruby 3x3. One of its main aims was to switch the interpreter to a Just-In-Time Compiler, to make programs faster.

Ruby 3.1 edit

Version 3.1.0 was released on Christmas of 2021. It included an autocomplete feature.[80]

Ruby 3.2 edit

Ruby 3.2.0 was released on Christmas Day of 2022. It includes support for WebAssembly.[81]

References edit

  1. ^ Ruby Releases
  2. ^ Ruby Maintenance Branches
  3. ^ "The Ruby Community's Christmas Releases". www.rubyinside.com.
  4. ^ "A Patch in Time: Securing Ruby".
  5. ^ "ruby-1.8.0 released!". www.ruby-lang.org.
  6. ^ "Plans for 1.8.7". www.ruby-lang.org.
  7. ^ "EOL for Ruby 1.8.7 and 1.9.2". www.ruby-lang.org.
  8. ^ "Ruby 1.9.3-p551 Released". www.ruby-lang.org.
  9. ^ "Ruby 1.9.0 Released". www.ruby-lang.org.
  10. ^ "Support for Ruby version 1.9.3 will end on February 23, 2015". www.ruby-lang.org.
  11. ^ "Support for Ruby 1.9.3 has ended". www.ruby-lang.org.
  12. ^ a b c "Ruby 2.0.0-p648 Released". www.ruby-lang.org.
  13. ^ "Ruby 2.0.0-p0 is released". www.ruby-lang.org.
  14. ^ a b "Ruby 2.1.10 Released". www.ruby-lang.org.
  15. ^ "Ruby 2.1.0 is released". www.ruby-lang.org.
  16. ^ "Support plans for Ruby 2.0.0 and Ruby 2.1". www.ruby-lang.org.
  17. ^ "Ruby Issue Tracking System". bugs.ruby-lang.org.
  18. ^ "Support of Ruby 2.1 has ended". www.ruby-lang.org.
  19. ^ "Ruby 2.2.10 Released". www.ruby-lang.org.
  20. ^ "Ruby 2.2.0 Released". www.ruby-lang.org.
  21. ^ "Ruby 2.2.7 Released". www.ruby-lang.org.
  22. ^ "Support of Ruby 2.2 has ended". www.ruby-lang.org.
  23. ^ "Ruby 2.3.8 Released". www.ruby-lang.org.
  24. ^ "Ruby 2.3.0 Released". www.ruby-lang.org.
  25. ^ a b "Support of Ruby 2.3 has ended". www.ruby-lang.org. 2019-03-31.
  26. ^ "Ruby 2.4.10 Released". Ruby Programming Language. 2020-03-31. Retrieved 2020-04-01.
  27. ^ "Ruby 2.4.0 Released". www.ruby-lang.org.
  28. ^ a b "Support of Ruby 2.4 has ended". www.ruby-lang.org.
  29. ^ a b c "Ruby 2.5.9 Released". Ruby Programming Language. 2021-04-05. Retrieved 2021-04-05.
  30. ^ "Ruby 2.5.0 Released". www.ruby-lang.org.
  31. ^ a b c "Ruby 2.6.10 Released". www.ruby-lang.org. 2022-04-12. Retrieved 2023-07-04.
  32. ^ "Ruby 2.6.0 Released". www.ruby-lang.org.
  33. ^ a b c "Ruby 2.7.8 Released". www.ruby-lang.org. 2023-03-30. Retrieved 2023-05-23.
  34. ^ "Ruby 2.7.0 Released". www.ruby-lang.org. 2019-12-25.
  35. ^ "Ruby 3.0.5 Released". www.ruby-lang.org. 2022-11-24. Retrieved 2022-11-24.
  36. ^ "Ruby 3.0.0 Released". www.ruby-lang.org. 2020-12-25.
  37. ^ "Ruby 3.1.2 Released". www.ruby-lang.org. 2022-04-12. Retrieved 2022-04-12.
  38. ^ "Ruby 3.1.0 Released". www.ruby-lang.org. 2021-12-25.
  39. ^ a b "Ruby 3.2.0 Released". www.ruby-lang.org. 2022-12-25.
  40. ^ Shugo Maeda (17 December 2002). "The Ruby Language FAQ". Retrieved 2 March 2014.
  41. ^ Matsumoto, Yukihiro (13 February 2006). "Re: Ruby's lisp features". Retrieved 15 February 2020.
  42. ^ a b c d e f "History of Ruby".
  43. ^ "[FYI: historic] The decisive moment of the language name Ruby. (Re: [ANN] ruby 1.8.1)" (E-mail from Hiroshi Sugihara to ruby-talk).
  44. ^ "1.3 Why the name 'Ruby'?". The RFFuby Language FAQ. Ruby-Doc.org. Retrieved April 10, 2012.
  45. ^ Yukihiro Matsumoto (June 11, 1999). "Re: the name of Ruby?". Ruby-Talk (Mailing list). Retrieved April 10, 2012.
  46. ^ . Archived from the original on 6 November 2015. Retrieved 2 May 2015.
  47. ^ "[ruby-talk:00382] Re: history of ruby". Retrieved 2 May 2015.
  48. ^ "[ruby-list:124] TUTORIAL — ruby's features". Retrieved 2 May 2015.
  49. ^ "An Interview with the Creator of Ruby".
  50. ^ Yukihiro Matsumoto (October 2000). "Programming Ruby: Forward". Retrieved 5 March 2014.
  51. ^ "We retire Ruby 1.8.7". Retrieved 2 May 2015.
  52. ^ "IPA 独立行政法人 情報処理推進機構:プレス発表 プログラム言語RubyのJIS規格(JIS X 3017)制定について". Retrieved 2 May 2015.
  53. ^ "IPA 独立行政法人 情報処理推進機構:プレス発表 プログラム言語Ruby、国際規格として承認". Retrieved 2 May 2015.
  54. ^ "ISO/IEC 30170:2012". Retrieved 2017-03-10.
  55. ^ Web Development: Ruby on Rails. Devarticles.com (2007-03-22). Retrieved on 2013-07-17.
  56. ^ "Ruby 1.9.3 p0 is released". ruby-lang.org. October 31, 2011. Retrieved February 20, 2013.
  57. ^ "v1_9_3_0/NEWS". Ruby Subversion source repository. ruby-lang.org. September 17, 2011. Retrieved February 20, 2013.
  58. ^ Ruby 1.9: What to Expect. slideshow.rubyforge.org. Retrieved on 2013-07-17.
  59. ^ "Support for Ruby 1.9.3 has ended". Retrieved 2 May 2015.
  60. ^ Endoh, Yusuke. (2013-02-24) Ruby 2.0.0-p0 is released. Ruby-lang.org. Retrieved on 2013-07-17.
  61. ^ Endoh, Yusuke. (2013-02-24) Ruby 2.0.0-p0 is released. Ruby-lang.org. Retrieved on 2013-07-17.
  62. ^ usa (2016-02-24). "Support plans for Ruby 2.0.0 and Ruby 2.1". Ruby-lang.org. Retrieved 2017-04-18.
  63. ^ "Ruby 2.1.0 is released". December 25, 2013. Retrieved December 26, 2013.
  64. ^ "Semantic Versioning starting with Ruby 2.1.0". December 21, 2013. Retrieved December 27, 2013.
  65. ^ "Support for Ruby 2.1 has ended". Retrieved 4 April 2017.
  66. ^ "Ruby 2.2.0 Released". December 25, 2014. Retrieved January 4, 2015.
  67. ^ "ruby/NEWS at v2_2_0 · ruby/ruby · GitHub". GitHub. Retrieved 2 May 2015.
  68. ^ "Support of Ruby 2.2 has ended". Retrieved 29 Dec 2019.
  69. ^ 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)
  70. ^ 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)
  71. ^ 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)
  72. ^ 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)
  73. ^ "Ruby 2.3.0 changes and features". Running with Ruby. dev.mensfeld.pl. 14 November 2015.
  74. ^ "Ruby/NEWS at v.2_3_0 - ruby/ruby". GitHub. Retrieved 25 December 2015.
  75. ^ "Ruby 2.4.0 Released". www.ruby-lang.org. Retrieved 2016-12-30.
  76. ^ "Ruby 2.5.0 Released". Retrieved 2018-05-02.
  77. ^ "Ruby 2.6.0 Released". Ruby Programming Language. 2018-12-25. Retrieved 2018-12-25.
  78. ^ "Ruby 2.7.0 Released". Ruby Programming Language. 2019-12-25. Retrieved 2019-12-25.
  79. ^ "Ruby 3.0.0 Released". Ruby Programming Language. 2020-12-25. Retrieved 2020-12-25.
  80. ^ "Ruby 3.1.0 Released". Ruby Programming Language. 2021-12-25. Retrieved 2022-12-26.
  81. ^ "Ruby 3.2.0 Released". Ruby Programming Language. 2022-12-25. Retrieved 2022-12-26.

history, ruby, history, ruby, programming, language, began, when, yukihiro, matsumoto, first, conceived, language, 1993, then, released, 1995, annual, releases, language, often, take, place, christmas, interest, language, surged, around, 2005, because, ruby, r. 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 Contents 1 Table of versions 2 Conception 3 First publication 4 Early releases 5 Ruby 1 8 6 Ruby 1 9 7 Ruby 2 0 8 Ruby 2 1 9 Ruby 2 2 10 Ruby 2 3 11 Ruby 2 4 12 Ruby 2 5 13 Ruby 2 6 14 Ruby 2 7 15 Ruby 3 0 16 Ruby 3 1 17 Ruby 3 2 18 ReferencesTable of versions editVersion 1 Latest teeny version Initial release date End of support phase 2 End of security maintenance phaseOld version no longer maintained 1 0 NA 1996 12 25 3 NA NAOld version no longer maintained 1 8 1 8 7 p375 4 2003 08 04 5 2012 06 6 2014 07 01 7 Old version no longer maintained 1 9 1 9 3 p551 8 2007 12 25 9 2014 02 23 10 2015 02 23 11 Old version no longer maintained 2 0 2 0 0 p648 12 2013 02 24 13 2015 02 24 12 2016 02 24 12 Old version no longer maintained 2 1 2 1 10 14 2013 12 25 15 2016 03 30 14 16 2017 03 31 17 18 Old version no longer maintained 2 2 2 2 10 19 2014 12 25 20 2017 03 28 21 2018 03 31 22 Old version no longer maintained 2 3 2 3 8 23 2015 12 25 24 2018 06 20 25 2019 03 31 25 Old version no longer maintained 2 4 2 4 10 26 2016 12 25 27 2019 04 01 28 2020 04 01 28 Old version no longer maintained 2 5 2 5 9 29 2017 12 25 30 2021 04 05 29 2021 04 05 29 Old version no longer maintained 2 6 2 6 10 31 2018 12 25 32 2022 04 12 31 2022 04 12 31 Old version no longer maintained 2 7 2 7 8 33 2019 12 25 34 2023 03 30 33 2023 03 30 33 Older version yet still maintained 3 0 3 0 5 35 2020 12 25 36 TBA TBAOlder version yet still maintained 3 1 3 1 2 37 2021 12 25 38 TBA TBAOlder version yet still maintained 3 2 3 2 0 39 2022 12 25 39 TBA TBACurrent stable version 3 3 3 3 0 2023 12 25 TBA TBALegend Old versionOlder version still maintainedLatest versionLatest preview versionFuture releaseConception editRuby creator Yukihiro Matsumoto has said that Ruby was conceived in 1993 In a 1999 post to the ruby talk mailing list he describes some of his early ideas about the language 40 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 then But I didn t like it because I didn t think it was a true object oriented language 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 describes the design of Ruby as being like a simple Lisp language at its core with an object system like that of Smalltalk blocks inspired by higher order functions and practical utility like that of Perl 41 The name Ruby originated during an online chat session between Matsumoto and Keiju Ishitsuka on February 24 1993 before any code had been written for the language 42 Initially two names were proposed Coral and Ruby Matsumoto chose the latter in a later e mail to Ishitsuka 43 Matsumoto later noted a factor in choosing the name Ruby it was the birthstone of one of his colleagues 44 45 First publication editThe first public release of Ruby 0 95 was announced on Japanese domestic newsgroups on December 21 1995 46 47 Subsequently three more versions of Ruby were released in two days 42 The release coincided with the launch of the Japanese language ruby list mailing list which was the first mailing list for the new language Already present at this stage of development were many of the features familiar in later releases of Ruby including object oriented design classes with inheritance mixins iterators closures exception handling and garbage collection 48 Early releases editFollowing the release of Ruby 0 95 in 1995 several stable versions of Ruby were released in the following years Ruby 1 0 December 25 1996 42 Ruby 1 2 December 1998 Ruby 1 4 August 1999 Ruby 1 6 September 2000In 1997 the first article about Ruby was published on the Web In the same year Matsumoto was hired by netlab jp to work on Ruby as a full time developer 42 In 1998 the Ruby Application Archive was launched by Matsumoto along with a simple English language homepage for Ruby 42 In 1999 the first English language mailing list ruby talk began which signaled a growing interest in the language outside Japan 49 In this same year Matsumoto and Keiju Ishitsuka wrote the first book on Ruby The Object oriented Scripting Language Ruby オブジェクト指向スクリプト言語 Ruby which was published in Japan in October 1999 It would be followed in the early 2000s by around 20 books on Ruby published in Japanese 42 By 2000 Ruby was more popular than Python in Japan 50 In September 2000 the first English language book Programming Ruby was printed which was later freely released to the public further widening the adoption of Ruby amongst English speakers In early 2002 the English language ruby talk mailing list was receiving more messages than the Japanese language ruby list demonstrating Ruby s increasing popularity in the non Japanese speaking world Ruby 1 8 editRuby 1 8 was initially released August 2003 was stable for a long time and was retired June 2013 51 Although deprecated there is still code based on it Ruby 1 8 is only partially compatible with Ruby 1 9 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 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 52 and an international standard ISO IEC 30170 in 2012 53 54 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 55 Ruby 1 9 editRuby 1 9 was released on Christmas Day in 2007 Effective with Ruby 1 9 3 released October 31 2011 56 Ruby switched from being dual licensed under the Ruby License and the GPL to being dual licensed under the Ruby License and the two clause BSD license 57 Adoption of 1 9 was slowed by changes from 1 8 that required many popular third party gems to be rewritten Ruby 1 9 introduces many significant changes over the 1 8 series Examples include 58 block local variables variables that are local to the block in which they are declared an additional lambda syntax span class n f span span class w span span class o span span class w span span class o gt span span class p span span class n a span span class p span span class n b span span class p span span class w span span class p span span class w span span class nb puts span span class w span span class n a span span class w span span class o span span class w span span class n b span span class w span span class p span an additional Hash literal syntax using colons for symbol keys span class p span span class ss symbol key span span class p span span class w span span class s2 value span span class p span span class w span span class o span span class w span span class p span span class ss symbol key span span class w span span class o gt span span class w span span class s2 value span span class p span per string character encodings are supported new socket API IPv6 support require relative import securityRuby 1 9 has been obsolete since February 23 2015 59 and it will no longer receive bug and security fixes Users are advised to upgrade to a more recent version Ruby 2 0 editRuby 2 0 added several new features including method keyword arguments a new method Module prepend for extending a class a new literal for creating an array of symbols new API for the lazy evaluation of Enumerables and a new convention of using to h to convert objects to Hashes 60 Ruby 2 0 was intended to be fully backward compatible with Ruby 1 9 3 As of the official 2 0 0 release on February 24 2013 there were only five known minor incompatibilities 61 Ruby 2 0 has been obsolete since February 24 2016 62 and it will no longer receive bug and security fixes Users are advised to upgrade to a more recent version Ruby 2 1 editRuby 2 1 0 was released on Christmas Day in 2013 63 The release includes speed ups bugfixes and library updates Starting with 2 1 0 Ruby s versioning policy is more like semantic versioning 64 Although similar Ruby s versioning policy is not compatible with semantic versioning Ruby Semantic versioningMAJOR Increased when incompatible change which can t be released in MINOR Reserved for special events MAJOR Increased when you make incompatible API changes MINOR increased every Christmas may be API incompatible MINOR increased when you add functionality in a backwards compatible manner TEENY security or bug fix which maintains API compatibility May be increased more than 10 such as 2 1 11 and will be released every 2 3 months PATCH increased when you make backwards compatible bug fixes PATCH number of commits since last MINOR release will be reset at 0 when releasing MINOR Semantic versioning also provides additional labels for pre release and build metadata are available as extensions to the MAJOR MINOR PATCH format not available at Ruby Ruby 2 1 has been obsolete since April 1 2017 65 and it will no longer receive bug and security fixes Users are advised to upgrade to a more recent version Ruby 2 2 editRuby 2 2 0 was released on Christmas Day in 2014 66 The release includes speed ups bugfixes and library updates and removes some deprecated APIs Most notably Ruby 2 2 0 introduces changes to memory handling 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 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 67 Ruby 2 2 has been obsolete since April 1 2018 68 and it will no longer receive bug and security fixes Users are advised to upgrade to a more recent version PowerPC64 performance Since version 2 2 1 69 Ruby MRI performance on PowerPC64 was improved 70 71 72 Ruby 2 3 editRuby 2 3 0 was released on Christmas Day in 2015 A few notable changes include The ability to mark all string literals as frozen by default with a consequently large performance increase in string operations 73 Hash comparison to allow direct checking of key value pairs instead of just keys A new safe navigation operator amp that can ease nil handling e g instead of span class k if span span class w span span class n obj span span class w span span class o amp amp span span class w span span class n obj span span class o span span class n foo span span class w span span class o amp amp span span class w span span class n obj span span class o span span class n foo span span class o span span class n bar span we can use if obj amp foo amp bar The did you mean gem is now bundled by default and required on startup to automatically suggest similar name matches on a NameError or NoMethodError Hash dig and Array dig to easily extract deeply nested values e g given span class n profile span span class w span span class o span span class w span span class p span span class w span span class ss social span span class p span span class w span span class p span span class w span span class ss wikipedia span span class p span span class w span span class p span span class w span span class nb name span span class p span span class w span span class s1 Foo Baz span span class w span span class p span span class w span span class p span span class w span span class p span the value Foo Baz can now be retrieved by profile dig social wikipedia name grep v regexp which will match all negative examples of a given regular expression in addition to other new features The 2 3 branch also 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 74 Ruby 2 4 editRuby 2 4 0 was released on Christmas Day in 2016 A few notable changes include Binding irb Start a REPL session similar to binding pry Unify Fixnum and Bignum into Integer class String supports Unicode case mappings not just ASCII A new method Regexp match which is a faster boolean version of Regexp match Thread deadlock detection now shows threads with their backtrace and dependencyThe 2 4 branch also includes performance improvements to hash table Array max Array min and instance variable access 75 Ruby 2 5 editRuby 2 5 0 was released on Christmas Day in 2017 76 A few notable changes include rescue and ensure statements automatically use a surrounding do end block less need for extra begin end blocks Method chaining with yield self Support branch coverage and method coverage measurement Easier Hash transformations with Hash slice and Hash transform keysOn top of that come a lot of performance improvements like faster block passing 3 times faster faster Mutexes faster ERB templates and improvements on some concatenation methods Ruby 2 6 editRuby 2 6 0 was released on Christmas Day in 2018 77 A few notable changes include JIT experimental RubyVM AbstractSyntaxTree experimental Ruby 2 7 editRuby 2 7 0 was released on Christmas Day in 2019 78 A few notable changes include Pattern Matching experimental REPL improvement Compaction GC Separation of positional and keyword argumentsRuby 3 0 editRuby 3 0 0 was released on Christmas Day in 2020 79 It is known as Ruby 3x3 One of its main aims was to switch the interpreter to a Just In Time Compiler to make programs faster Ruby 3 1 editVersion 3 1 0 was released on Christmas of 2021 It included an autocomplete feature 80 Ruby 3 2 editRuby 3 2 0 was released on Christmas Day of 2022 It includes support for WebAssembly 81 References edit Ruby Releases Ruby Maintenance Branches The Ruby Community s Christmas Releases www rubyinside com A Patch in Time Securing Ruby ruby 1 8 0 released www ruby lang org Plans for 1 8 7 www ruby lang org EOL for Ruby 1 8 7 and 1 9 2 www ruby lang org Ruby 1 9 3 p551 Released www ruby lang org Ruby 1 9 0 Released www ruby lang org Support for Ruby version 1 9 3 will end on February 23 2015 www ruby lang org Support for Ruby 1 9 3 has ended www ruby lang org a b c Ruby 2 0 0 p648 Released www ruby lang org Ruby 2 0 0 p0 is released www ruby lang org a b Ruby 2 1 10 Released www ruby lang org Ruby 2 1 0 is released www ruby lang org Support plans for Ruby 2 0 0 and Ruby 2 1 www ruby lang org Ruby Issue Tracking System bugs ruby lang org Support of Ruby 2 1 has ended www ruby lang org Ruby 2 2 10 Released www ruby lang org Ruby 2 2 0 Released www ruby lang org Ruby 2 2 7 Released www ruby lang org Support of Ruby 2 2 has ended www ruby lang org Ruby 2 3 8 Released www ruby lang org Ruby 2 3 0 Released www ruby lang org a b Support of Ruby 2 3 has ended www ruby lang org 2019 03 31 Ruby 2 4 10 Released Ruby Programming Language 2020 03 31 Retrieved 2020 04 01 Ruby 2 4 0 Released www ruby lang org a b Support of Ruby 2 4 has ended www ruby lang org a b c Ruby 2 5 9 Released Ruby Programming Language 2021 04 05 Retrieved 2021 04 05 Ruby 2 5 0 Released www ruby lang org a b c Ruby 2 6 10 Released www ruby lang org 2022 04 12 Retrieved 2023 07 04 Ruby 2 6 0 Released www ruby lang org a b c Ruby 2 7 8 Released www ruby lang org 2023 03 30 Retrieved 2023 05 23 Ruby 2 7 0 Released www ruby lang org 2019 12 25 Ruby 3 0 5 Released www ruby lang org 2022 11 24 Retrieved 2022 11 24 Ruby 3 0 0 Released www ruby lang org 2020 12 25 Ruby 3 1 2 Released www ruby lang org 2022 04 12 Retrieved 2022 04 12 Ruby 3 1 0 Released www ruby lang org 2021 12 25 a b Ruby 3 2 0 Released www ruby lang org 2022 12 25 Shugo Maeda 17 December 2002 The Ruby Language FAQ Retrieved 2 March 2014 Matsumoto Yukihiro 13 February 2006 Re Ruby s lisp features Retrieved 15 February 2020 a b c d e f History of Ruby FYI historic The decisive moment of the language name Ruby Re ANN ruby 1 8 1 E mail from Hiroshi Sugihara to ruby talk 1 3 Why the name Ruby The RFFuby Language FAQ Ruby Doc org Retrieved April 10 2012 Yukihiro Matsumoto June 11 1999 Re the name of Ruby Ruby Talk Mailing list Retrieved April 10 2012 More archeolinguistics unearthing proto Ruby Archived from the original on 6 November 2015 Retrieved 2 May 2015 ruby talk 00382 Re history of ruby Retrieved 2 May 2015 ruby list 124 TUTORIAL ruby s features Retrieved 2 May 2015 An Interview with the Creator of Ruby Yukihiro Matsumoto October 2000 Programming Ruby Forward Retrieved 5 March 2014 We retire Ruby 1 8 7 Retrieved 2 May 2015 IPA 独立行政法人 情報処理推進機構 プレス発表 プログラム言語RubyのJIS規格 JIS X 3017 制定について Retrieved 2 May 2015 IPA 独立行政法人 情報処理推進機構 プレス発表 プログラム言語Ruby 国際規格として承認 Retrieved 2 May 2015 ISO IEC 30170 2012 Retrieved 2017 03 10 Web Development Ruby on Rails Devarticles com 2007 03 22 Retrieved on 2013 07 17 Ruby 1 9 3 p0 is released ruby lang org October 31 2011 Retrieved February 20 2013 v1 9 3 0 NEWS Ruby Subversion source repository ruby lang org September 17 2011 Retrieved February 20 2013 Ruby 1 9 What to Expect slideshow rubyforge org Retrieved on 2013 07 17 Support for Ruby 1 9 3 has ended Retrieved 2 May 2015 Endoh Yusuke 2013 02 24 Ruby 2 0 0 p0 is released Ruby lang org Retrieved on 2013 07 17 Endoh Yusuke 2013 02 24 Ruby 2 0 0 p0 is released Ruby lang org Retrieved on 2013 07 17 usa 2016 02 24 Support plans for Ruby 2 0 0 and Ruby 2 1 Ruby lang org Retrieved 2017 04 18 Ruby 2 1 0 is released December 25 2013 Retrieved December 26 2013 Semantic Versioning starting with Ruby 2 1 0 December 21 2013 Retrieved December 27 2013 Support for Ruby 2 1 has ended Retrieved 4 April 2017 Ruby 2 2 0 Released December 25 2014 Retrieved January 4 2015 ruby NEWS at v2 2 0 ruby ruby GitHub GitHub Retrieved 2 May 2015 Support of Ruby 2 2 has ended Retrieved 29 Dec 2019 Gustavo Frederico Temple Pedrosa Vitor de Lima Leonardo Bianconi 2015 Ruby 2 2 1 Released Retrieved 12 July 2016 a href Template Cite web html title Template Cite web cite web a CS1 maint multiple names authors list link Gustavo Frederico Temple Pedrosa Vitor de Lima Leonardo Bianconi 2015 v2 2 1 ChangeLog Retrieved 12 July 2016 a href Template Cite web html title Template Cite web cite web a CS1 maint multiple names authors list link Gustavo Frederico Temple Pedrosa Vitor de Lima Leonardo Bianconi 2014 Specifying non volatile registers for increase performance in ppc64 Retrieved 12 July 2016 a href Template Cite web html title Template Cite web cite web a CS1 maint multiple names authors list link Gustavo Frederico Temple Pedrosa Vitor de Lima Leonardo Bianconi 2014 Specifying MACRO for increase performance in ppc64 Retrieved 12 July 2016 a href Template Cite web html title Template Cite web cite web a CS1 maint multiple names authors list link Ruby 2 3 0 changes and features Running with Ruby dev mensfeld pl 14 November 2015 Ruby NEWS at v 2 3 0 ruby ruby GitHub Retrieved 25 December 2015 Ruby 2 4 0 Released www ruby lang org Retrieved 2016 12 30 Ruby 2 5 0 Released Retrieved 2018 05 02 Ruby 2 6 0 Released Ruby Programming Language 2018 12 25 Retrieved 2018 12 25 Ruby 2 7 0 Released Ruby Programming Language 2019 12 25 Retrieved 2019 12 25 Ruby 3 0 0 Released Ruby Programming Language 2020 12 25 Retrieved 2020 12 25 Ruby 3 1 0 Released Ruby Programming Language 2021 12 25 Retrieved 2022 12 26 Ruby 3 2 0 Released Ruby Programming Language 2022 12 25 Retrieved 2022 12 26 Retrieved from https en wikipedia org w index php title History of Ruby amp oldid 1201106327, wikipedia, wiki, book, books, library,

article

, read, download, free, free download, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, picture, music, song, movie, book, game, games.