# -*- rdoc -*-
This document is a list of user visible feature changes made between releases except for bug fixes.
Note that each entry is kept so brief that no reason behind or reference information is supplied with. For a full list of changes with all sufficient information, see the ChangeLog file.
Binding
New methods:
Binding#local_variables
Binding#receiver
Enumerable
New methods:
Enumerable#slice_after
Extended methods:
min, min_by, max and max_by supports optional argument to return multiple elements.
Float
New methods:
Float#next_float
Float#prev_float
File
New methods:
File.birthtime
File#birthtime
File::Stat
New methods:
File::Stat#birthtime
Kernel
New methods:
Kernel#itself
Process
Extended method:
Process execution methods such as Process.spawn opens the file in write mode for redirect from [:out, :err].
Symbol
New methods
Symbol.find(str) returns whether given string is defined as symbol or not.
Improvements
Most symbols which are returned by String#to_sym and String#intern are GC-able.
Matrix
New methods:
Matrix#first_minor(row, column) returns the submatrix obtained by deleting the specified row and column.
Matrix#cofactor(row, column) returns the (row, column) cofactor which is obtained by multiplying the first minor by (-1)**(row + column).
Method
New methods:
Method#curry([arity]) returns a curried Proc.
Method#super_method returns a Method of superclass, which would be called when super is used.
IO
incompatible changes:
When flushing file IO, you cannot assume that the metadata of the file is updated immediately. On some platforms (especially Windows), it is delayed until the filesystem load is decreased.
Math
incompatible changes:
Math.log now raises Math::DomainError instead of returning NaN if the base is less than 0, and returns NaN instead of -infinity if both of two arguments are 0.
Math.atan2 now returns values like as expected by C99 if both two arguments are infinity.
Proc
incompatible changes:
ArgumentError is no longer raised when lambda Proc is passed as a block, and the number of yielded arguments does not match the formal arguments of the lambda, if just an array is yielded and its length matches.
Process
Process execution methods such as Process.spawn opens the file in write mode for redirect from [:out, :err]. Before Ruby 2.2, it was opened in read mode.
Digest
Digest::HMAC has been removed just as previously noticed.
Etc
New methods:
Etc.uname
Etc.sysconf
Etc.confstr
IO#pathconf
Find, Pathname
Extended methods:
find method accepts “ignore_error” keyword argument.
Pathname
Pathname#/ is aliased to Pathname#+.
New methods:
Pathname#birthtime
ext/date/lib/date/format.rb
Removed because it’s empty file.
Digest
Digest::HMAC has finally ceased to exist. Use OpenSSL::HMAC or an external gem instead.
time.rb
Time.parse, Time.strptime, Time.rfc2822, Time.xmlschema may produce fixed-offset Time objects. It is happen when usual localtime doesn’t preserve the offset from UTC.
Time.httpdate produces always UTC Time object.
Time.strptime raises ArgumentError when no date information.
lib/minitest/*.rb
Removed because it conflicts to minitest 5. [Feature #9711]
lib/test/**/*.rb
Removed because it conflicts to minitest 5, and it was just an wrapper of minitest 4. [Feature #9711]
lib/uri
support RFC 3986. [Feature #2542]
GServer
GServer is extracted to gserver gem. It’s unmaintain code.
Logger
Logger::Application is extracted to logger-application gem. It’s unmaintain code.
Prime
incompatible changes:
Prime.prime? now returns false for negative numbers. This method should not be used to know the number is composite or not. [Bug #7395]
Psych
Removed Psych::EngineManager [Bug #8344]
Deprecated APIs removed. [Feature #9502]
Check_SafeStr -> SafeStringValue rb_check_safe_str -> SafeStringValue rb_quad_pack -> rb_integer_pack rb_quad_unpack -> rb_integer_unpack rb_read_check : access struct FILE internal. no replacement. rb_struct_iv_get : internal function. no replacement. struct rb_blocking_region_buffer : internal type. no replacement. rb_thread_blocking_region_begin -> rb_thread_call_without_gvl family rb_thread_blocking_region_end -> rb_thread_call_without_gvl family TRAP_BEG -> rb_thread_call_without_gvl family TRAP_END -> rb_thread_call_without_gvl family rb_thread_select -> rb_thread_fd_select struct rb_exec_arg : internal type. no replacement. rb_exec : internal function. no replacement. rb_exec_arg_addopt : internal function. no replacement. rb_exec_arg_fixup : internal function. no replacement. rb_exec_arg_init : internal function. no replacement. rb_exec_err : internal function. no replacement. rb_fork : internal function. no replacement. rb_fork_err : internal function. no replacement. rb_proc_exec_n : internal function. no replacement. rb_run_exec_options : internal function. no replacement. rb_run_exec_options_err : internal function. no replacement. rb_thread_blocking_region -> rb_thread_call_without_gvl family rb_thread_polling -> rb_thread_wait_for rb_big2str0 : internal function. no replacement. rb_big2ulong_pack -> rb_integer_pack rb_gc_set_params : internal function. no replacement.
struct RBignum is hidden. [Feature #6083] Use rb_integer_pack and rb_integer_unpack instead.
struct RRational is hidden. [Feature #9513] Use rb_rational_num and rb_rational_den instead.
rb_big_new and rb_big_resize takes a size_t instead of long.
rb_num2long returns a long instead of SIGNED_VALUE.
rb_num2ulong returns an unsigned long instead of VALUE.
st hash table uses power-of-two sizes for speed [Feature #9425]. Lookups are 10-25% faster if using appropriate hash functions. However, weaknesses in hash distribution can no longer be masked by prime number-sized tables, so extensions may need to tweak hash functions to ensure good distribution.
rb_sym2str() added. This is almost same as ‘rb_id2str(SYM2ID(sym))` but not pinning a dynamic symbol.
rb_str_cat_cstr() added. This is same as ‘rb_str_cat2()`.
‘rb_str_substr()` and `rb_str_subseq()` now share middle of a string, but not only the end of a string. Therefore, result strings may not be NUL-terminated, `StringValueCStr()` is needed calling to obtain a NUL-terminated C string.