What is Ruby ( programming language )

Ruby is a dynamic, interpreted, reflective, object-oriented, general-purpose programming language. It was designed and developed in the mid-1990s by Yukihiro "Matz" Matsumoto in Japan.
According to the creator, Ruby was influenced by Perl, Smalltalk, Eiffel, Ada, and Lisp. It supports multiple programming paradigms, including functional, object-oriented, and imperative. It also has a dynamic type system and automatic memory management.
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.Initially two names were proposed: "Coral" and "Ruby". Matsumoto chose the latter in a later e-mail to Ishitsuka. Matsumoto later noted a factor in choosing the name "Ruby" – it was the birthstone of one of his colleagues.
The first public release of Ruby 0.95 was announced on Japanese domestic newsgroups on December 21, 1995. Subsequently, three more versions of Ruby were released in two days. 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

Early releases:
Ruby 1.8
Ruby 1.8 was initially released August 2003, was stable for a long time, and was retired June 2013. 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 and an international standard (ISO/IEC 30170) in 2012.
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
Ruby 1.9
Ruby 1.9 was released on Christmas Day in 2007. Effective with Ruby 1.9.3, released October 31, 2011, 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. 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:
  • 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, and it will no longer receive bug and security fixes. Users are advised to upgrade to a more recent version.
Ruby 2.0
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,
  • a new convention of using #to_h to convert objects to Hashes
Ruby 2.0 is 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. It has been obsolete since February 22, 2016,and it will no longer receive bug and security fixes. Users are advised to upgrade to a more recent version.
Ruby 2.1
Ruby 2.1.0 was released on Christmas Day in 2013.[36] The release includes speed-ups, bugfixes, and library updates.
Starting with 2.1.0, Ruby's versioning policy is more like semantic versioning.Although similar, Ruby's versioning policy is not compatible with semantic versioning.
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, and it will no longer receive bug and security fixes. Users are advised to upgrade to a more recent version.
Ruby 2.2
Ruby 2.2.0 was released on Christmas Day in 2014. 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 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.
Ruby 2.3
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.
  • 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.
Ruby 2.4
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.Ruby's popularity has been declining since 2014, a slip that may be permanent in the face of increasing competition.
Ruby 2.5
Ruby 2.5.0 was released on Christmas Day in 2017. 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.

Comments

Popular Posts