= Proposed System Wide Change: Ruby 2.4 =
* Vít Ondruch <vondruch AT redhat DOT com>
Ruby 2.4 is the latest stable version of Ruby. Many new features and
improvements are included for the increasingly diverse and expanding
demands for Ruby. With this major update from Ruby 2.3 in Fedora 24 to
Ruby 2.4 in Fedora 26, Fedora becomes the superior Ruby development
== Detailed Description ==
Ruby 2.4 is upstream's new major release of Ruby. Many new features
and improvements are included.
* Introduce hash table improvement (by Vladimir Makarov)
Improve the internal structure of hash table (st_table) by introducing
open addressing and an inclusion order array. This improvement has
been discussed with many people, especially with Yura Sokolov.
* Binding#irb: Start a REPL session similar to binding.pry
While you are debugging, you may often use p to see the value of
variables. With pry you can use binding.pry in your application to
launch a REPL and run any Ruby code. r56624 introduces binding.irb
which behaves like that with irb.
* Unify Fixnum and Bignum into Integer
Though ISO/IEC 30170:2012 doesn’t specify details of the Integer
class, Ruby had two visible Integer classes: Fixnum and Bignum. Ruby
2.4 unifies them into Integer. All C extensions which touch the Fixnum
or Bignum class need to be fixed.
* String supports Unicode case mappings
String/Symbol#upcase/downcase/swapcase/capitalize(!) now handle
Unicode case mappings instead of only ASCII case mappings.
* Performance improvements
Ruby 2.4 also contains the following performance improvements
including language changes:
-- Array#max, Array#min [x, y].max and [x, y].min are optimized to not
create a temporary array under certain conditions.
-- Regexp#match? Added Regexp#match?, which executes a regexp match
without creating a back reference object and changing $~ to reduce
-- Speed up instance variable access
Thread#report_on_exception and Thread.report_on_exception Ruby ignores
exceptions in threads unless another thread explicitly joins them.
With report_on_exception = true, you can notice if a thread has died
due to an unhandled exception.
Thread deadlock detection now shows threads with their backtrace and
dependency Ruby has deadlock detection around waiting threads, but its
report doesn’t include enough information for debugging. Ruby 2.4’s
deadlock detection shows threads with their backtrace and dependent
== Scope ==
* Proposal owners:
- Finish packaging of Ruby 2.4. Current changes available in
private-ruby-2.4 branch of ruby package in dist-git.
- Rebuilding of Ruby packages providing native extensions (i.e.
packages which depends on libruby).
* Other developers:
Rebuild of packages with binary extensions (i.e. packages which
depends on libruby) will be handled automatically, but some packages
might need fixes/updates to support Ruby 2.4 properly.
* Release engineering:
* Separate Koji tag for package rebuild will be needed.
* Policies and guidelines: N/A (not needed for this Change)
* Trademark approval: N/A (not needed for this Change)
Platform & Fedora Program Manager
Red Hat Czech s.r.o., Purkynova 99/71, 612 45 Brno, Czech Republic