Here are some new ruby developments from the latest version 2.4.
Hash Table Enhancements
The internal structure of the hash table (st_table) has been retouched to support open addressing (a method of collision resolution), and thus maintains an inclusion order. This substantial change was designed by many people.
Binding # irb: launching a REPL session similar to binding.pry
During your debugging phases, you often use p to inspect the contents of variables. With pry, it is possible to write binding.pry to start a REPL session from anywhere, to execute Ruby code.
R56624 reproduces this feature for IRB, with binding.irb.
Fusion of Fixnum and Bignum in Integer
Although the ISO / IEC 30170: 2012 spec does not predict the implementation of the Integer class, Ruby has historically built an abstraction based on two specialized classes: Fixnum and Bignum. Ruby 2.4 unites these APIs in the "mother" Integer class. Any extensions C that modify Fixnum or Bignum will have to be corrected.
Unicode support in String transformations
The String / Symbol method set # upcase / downcase / swapcase / capitalize (!) Now supports Unicode. So far, the transformations were limited to ASCII.
- "Thread # report_on_exception" and "Thread.report_on_exception"
Ruby ignores the exceptions not treated by rescue in threads, except when another thread imposes the opposite behavior due to the use of Thread # join. With report_on_exception = true, you can now a priori control this behavior, and thus be notified when an arbitrary thread dies due to an unprocessed exception.
- Thread deadlock detection now displays threads with their backtrace and dependencies
Ruby has deadlock detection for threads queued, but the detection report did not provide enough information so far to be really useful in the debugging phase. Ruby 2.4 adds the backtrace to the report, as well as a list of dependent threads.
We invite you to try all these changes brought by Ruby 2.4.0-rc1. For more information, contact us here !