<div dir="ltr"><div id="gmail-magicdomid158" class="gmail-ace-line"><span class="gmail-author-a-dz76zl5yez87zlfpagijjz68z">The </span><span class="gmail-author-a-pn5z65zxniz83zw4z65z20lky">Ruby 2.7 transition is </span><span class="gmail-author-a-dz76zl5yez87zlfpagijjz68z">now complete</span><span class="gmail-author-a-pn5z65zxniz83zw4z65z20lky"> and it is </span><span class="gmail-author-a-dz76zl5yez87zlfpagijjz68z">another</span><span class="gmail-author-a-pn5z65zxniz83zw4z65z20lky"> </span><span class="gmail-author-a-dz76zl5yez87zlfpagijjz68z">new feature </span><span class="gmail-author-a-pn5z65zxniz83zw4z65z20lky">for</span><span class="gmail-author-a-dz76zl5yez87zlfpagijjz68z"> users of the upcoming </span><span class="gmail-author-a-pn5z65zxniz83zw4z65z20lky">Ubuntu Focal Fossa release.</span></div><div id="gmail-magicdomid24" class="gmail-ace-line"><br></div><div id="gmail-magicdomid92" class="gmail-ace-line"><span class="gmail-author-a-pn5z65zxniz83zw4z65z20lky">Ruby 2.7 is probably the last Ruby 2.x series release (the next one should be 3.0) and it comes with some nice features and improvements like: Pattern Matching, REPL improvement, Compaction GC, Separation of positional and keyword arguments and much more. To have a broad overview about the cool features and improvements check the Ruby 2.7 Release Announcement [1]. Below you can find some changes introduced by this new release.</span></div><div id="gmail-magicdomid31" class="gmail-ace-line"><br></div><div id="gmail-magicdomid32" class="gmail-ace-line"><span class="gmail-author-a-pn5z65zxniz83zw4z65z20lky">Experimental features:</span></div><div id="gmail-magicdomid33" class="gmail-ace-line"><br></div><div id="gmail-magicdomid34" class="gmail-ace-line"><span class="gmail-author-a-pn5z65zxniz83zw4z65z20lky">* Pattern matching</span></div><div id="gmail-magicdomid35" class="gmail-ace-line"><span class="gmail-author-a-pn5z65zxniz83zw4z65z20lky">* Beginless range (i.e. array = [0,1,2,3,4,5]; p array[..2] #=> [0, 1, 2])</span></div><div id="gmail-magicdomid36" class="gmail-ace-line"><br></div><div id="gmail-magicdomid152" class="gmail-ace-line"><span class="gmail-author-a-pn5z65zxniz83zw4z65z20lky">Features that emit warnings now </span><span class="gmail-author-a-dz76zl5yez87zlfpagijjz68z">and will become</span><span class="gmail-author-a-pn5z65zxniz83zw4z65z20lky"> errors in the future:</span></div><div id="gmail-magicdomid38" class="gmail-ace-line"><br></div><div id="gmail-magicdomid39" class="gmail-ace-line"><span class="gmail-author-a-pn5z65zxniz83zw4z65z20lky">* Using the last argument as keyword parameters</span></div><div id="gmail-magicdomid40" class="gmail-ace-line"><span class="gmail-author-a-pn5z65zxniz83zw4z65z20lky">* Numbered parameters: '_1', '_2', and so on are reserved for numbered parameter</span></div><div id="gmail-magicdomid41" class="gmail-ace-line"><span class="gmail-author-a-pn5z65zxniz83zw4z65z20lky">* Proc.new and Kernel#proc with no block in a method called with a blockĀ </span></div><div id="gmail-magicdomid42" class="gmail-ace-line"><span class="gmail-author-a-pn5z65zxniz83zw4z65z20lky">* Set special variables '$;' and '$,' to non-nil values</span></div><div id="gmail-magicdomid43" class="gmail-ace-line"><span class="gmail-author-a-pn5z65zxniz83zw4z65z20lky">* 'yield' in singleton class syntax</span></div><div id="gmail-magicdomid44" class="gmail-ace-line"><span class="gmail-author-a-pn5z65zxniz83zw4z65z20lky">* Access and setting of $SAFE, it will become a normal global variable in Ruby 3.0</span></div><div id="gmail-magicdomid45" class="gmail-ace-line"><br></div><div id="gmail-magicdomid137" class="gmail-ace-line"><span class="gmail-author-a-pn5z65zxniz83zw4z65z20lky">Deprecated features</span><span class="gmail-author-a-dz76zl5yez87zlfpagijjz68z">, which will </span><span class="gmail-author-a-pn5z65zxniz83zw4z65z20lky">raise exceptions now:</span></div><div id="gmail-magicdomid47" class="gmail-ace-line"><br></div><div id="gmail-magicdomid48" class="gmail-ace-line"><span class="gmail-author-a-pn5z65zxniz83zw4z65z20lky">* Kernel#lambda with no block in a method called with a block raises an exception</span></div><div id="gmail-magicdomid49" class="gmail-ace-line"><span class="gmail-author-a-pn5z65zxniz83zw4z65z20lky">* Line break is prohibited as an identifier of the quote here document</span></div><div id="gmail-magicdomid50" class="gmail-ace-line"><span class="gmail-author-a-pn5z65zxniz83zw4z65z20lky">* Dir.glob and Dir.[] no longer allow NUL-separated glob pattern. Use Array instead.</span></div><div id="gmail-magicdomid51" class="gmail-ace-line"><br></div><div id="gmail-magicdomid95" class="gmail-ace-line"><span class="gmail-author-a-pn5z65zxniz83zw4z65z20lky">Moreover, some libraries are not bundled anymore in Ruby 2.7</span><span class="gmail-author-a-dz76zl5yez87zlfpagijjz68z">. I</span><span class="gmail-author-a-pn5z65zxniz83zw4z65z20lky">f you need them please install them separately:</span></div><div id="gmail-magicdomid53" class="gmail-ace-line"><br></div><div id="gmail-magicdomid54" class="gmail-ace-line"><span class="gmail-author-a-pn5z65zxniz83zw4z65z20lky">* CMath</span></div><div id="gmail-magicdomid55" class="gmail-ace-line"><span class="gmail-author-a-pn5z65zxniz83zw4z65z20lky">* Scanf</span></div><div id="gmail-magicdomid56" class="gmail-ace-line"><span class="gmail-author-a-pn5z65zxniz83zw4z65z20lky">* Shell</span></div><div id="gmail-magicdomid57" class="gmail-ace-line"><span class="gmail-author-a-pn5z65zxniz83zw4z65z20lky">* Synchronizer (ruby-sync)</span></div><div id="gmail-magicdomid58" class="gmail-ace-line"><span class="gmail-author-a-pn5z65zxniz83zw4z65z20lky">* ThreadsWait (ruby-thwait)</span></div><div id="gmail-magicdomid59" class="gmail-ace-line"><span class="gmail-author-a-pn5z65zxniz83zw4z65z20lky">* E2MM (ruby-e2mmap)</span></div><div id="gmail-magicdomid60" class="gmail-ace-line"><br></div><div id="gmail-magicdomid101" class="gmail-ace-line"><span class="gmail-author-a-pn5z65zxniz83zw4z65z20lky">For more information about Ruby 2.7 check the upstream documentation [2]</span><span class="gmail-author-a-pn5z65zxniz83zw4z65z20lky"> (section Reference Documentation).</span></div><div id="gmail-magicdomid62" class="gmail-ace-line"><br></div><div class="gmail-ace-line">[1] <span class="gmail-author-a-pn5z65zxniz83zw4z65z20lky"></span><span class="gmail-author-a-pn5z65zxniz83zw4z65z20lky gmail-url"><a href="https://www.ruby-lang.org/en/news/2019/12/25/ruby-2-7-0-released/)" rel="noreferrer noopener">https://www.ruby-lang.org/en/news/2019/12/25/ruby-2-7-0-released/</a><br></span></div><div class="gmail-ace-line">[2] <span class="gmail-author-a-pn5z65zxniz83zw4z65z20lky"></span><span class="gmail-author-a-pn5z65zxniz83zw4z65z20lky gmail-url"><a href="https://www.ruby-lang.org/en/documentation/)" rel="noreferrer noopener">https://www.ruby-lang.org/en/documentation/</a></span><span class="gmail-author-a-pn5z65zxniz83zw4z65z20lky"></span><br><span class="gmail-author-a-pn5z65zxniz83zw4z65z20lky gmail-url"></span><span class="gmail-author-a-pn5z65zxniz83zw4z65z20lky"></span></div><div class="gmail-ace-line"><br></div><div id="gmail-magicdomid63" class="gmail-ace-line"><span class="gmail-author-a-pn5z65zxniz83zw4z65z20lky">Enjoy it!</span></div></div>