Ruby Programming Language

 Ruby Programming Language 

 What is it? 

    Ruby is a general-purpose language that was created in the 1990s by Yukihiro "Matz" Matsumoto in Japan. It was designed with an emphasis on programming productivity and simplicity. It is increasingly becoming a popular language for programs that run on web servers. 



       Ruby is dynamically typed and uses garbage collection and just-in-time compilation, and it supports multiple programming paradigms including procedural, object-oriented, and functional programming.





History

       According to the creator (Yukihiro "Matz" Matsumoto), Ruby was influenced by Perl, Smalltalk, Eiffel, Ada, BASIC, Java, and Lisp. He said that Ruby was conceived in 1993. 
        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 and later noted a factor in choosing the name "Ruby" - it was one of his colleague's birthstone. 
        Matsumoto has said that Ruby was designed for programmer productivity and fun, following the principles of good user interface design. He stresses that system design need to emphasize human, rather than computer needs. 
                                                                                                                                                  Yukihiro "Matz" Matsumoto


   Early Releases

    
   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. Its release coincided with the launch of the Japanese-language ruby-list mailing list, which was the first mailing list for the new language.
        After the release of Ruby 0.95 in 1995, several stable versions of Ruby were released in these years:

  • Ruby 1.0: December 25, 1996
  • 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 and Matsumoto was hired by netlab.jp to work on Ruby as a full-time developer. 

         In 1998, Matsumoto launched the Ruby Application Archive, along with a simple English-language homepage for Ruby.

       in 1999, the first English language mailing list ruby-talk began, which signaled a growing interest in the language outside Japan. In the same year, Matsumoto and Keiju Ishitsuka wrote the first book on Ruby, The Object-oriented Scripting Language Ruby, which was published in Japan in October 1999.

       By 2000, Ruby was more popular that Python in Japan. The first English language book Programming Ruby was printed in September 2000, which was later 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 and 1.9
    
         Ruby 1.8 was initially released August 2003, was stable for a long time, and was retired June 2013 but there is still code based on it. It is partially compatible with Ruby 1.9

           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. 

             Effective with Ruby 1.9.3, which was 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. Ruby 1.9 introduces many significant changes over the 1.8 series.






      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 February 24, 2013, there were only five known (minor) incompatibilities. Ruby 2.0 added several new features including:

  • method key arguments,
  • a new method, Module#prepend, for 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.



    Ruby 2.4.0 includes performance improvements to hash table, Array#max, Array#min, and instance variable access. 

     A few notable changes in Ruby 2.5 include rescue and ensure statements automatically use a surrounding do-end block (less need for extra begin-end blocks), method-changing with yield_self, support for branch coverage and method coverage measurement, and 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.
 
         A few notable changes in Ruby 2.6.0 include an experimental just-in-time compiler (JIT), and RubyVM:AbstractSyntaxTree (experimental).

    A few notable changes in Ruby 2.7.0 include pattern matching (experimental), REPL improvements, a compaction GC, and separation of positional and keyword arguments. 



    Ruby 3

        Ruby 3.0.0 was released on December 25, 2020. It was known as Ruby 3x3 which means that programs would run three times faster in Ruby 3.0 comparing to Ruby 2.0. 

        Another goal of Ruby 3.0 is to improve concurrency and two more utilities; Fibre Scheduler and experimental Ractor facilitate the goal. Ractor is light-weight and thread-safe as it is achieved by exchanging messages rather than shared objects. It introduces RBS language to describe the type of Ruby programs for static analysis and is separated from other Ruby programs. There are some syntax enhancements and library changes as well.



        Ruby 3.1 was released on December 25, 2021. It includes YJIT, a new, experimental, Just-In-Time Compiler developed by Shopify, to enhance the performance of real-world business applications and a new debugger was also included. There are some syntax enhancements and other improvements in this release: Network libraries for FTP, SMTP, IMAP, and POP are moved from default gems to bundles gems. 




        Ruby 3.2 was also released on Christmas day in the year 2022. It brings support for being run inside of a WebAssembly environment via a WASI interface. Regular expressions receive some improvements as well, including a faster, memoized matching algorithm to protect against certain ReDoS attacks, and configurable timeouts for regular expression matching. Also, additional debugging syntax features were included in this release: syntax suggestion and error highlighting. The MJIT compiler has been re-implemented as a standard library module, while the YJIT, a Rust-based JIT compiler now supports more architectures on Linux.




        

        In conclusion, the Ruby is a programming language that is interpreted, high-level, and general-purpose, which supports multiple paradigms. It is a beginner-friendly programming language because of its simplicity and the creator designed it with a vision to innovative technology. 







Comments