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. == Changes since the 1.9.3 release === C API updates * NUM2SHORT() and NUM2USHORT() added. They are similar to NUM2INT, but short. * rb_newobj_of() and NEWOBJ_OF() added. They create a new object of a given class. === Library updates (outstanding ones only) * builtin classes * Array * added method: * added Array#bsearch for binary search. * incompatible changes: * random parameter of Array#shuffle! and Array#sample now will be called with one argument, maximum value. * when given Range arguments, Array#values_at now returns nil for each value that is out-of-range. * Enumerable * added method: * added Enumerable#lazy method for lazy enumeration. * Enumerator * added method: * added Enumerator#size for lazy size evaluation. * extended method: * Enumerator.new accept an argument for lazy size evaluation. * ENV * aliased method: * ENV.to_h is a new alias for ENV.to_hash * Fiber * incompatible changes: * Fiber#resume cannot resume a fiber which invokes "Fiber#transfer". * File * extended method: * File.fnmatch? now expands braces in the pattern if File::FNM_EXTGLOB option is given. * GC * improvements: * ENV * aliased method: * ENV.to_h is a new alias for ENV.to_hash * Fiber * incompatible changes: * Fiber#resume cannot resume a fiber which invokes "Fiber#transfer". * File * extended method: * File.fnmatch? now expands braces in the pattern if File::FNM_EXTGLOB option is given. * GC * improvements: * introduced the bitmap marking which suppresses to copy a memory page with Copy-on-Write. * introduced the non-recursive marking which avoids unexpected stack overflow. * GC::Profiler * added method: * added GC::Profiler.raw_data which returns raw profile data for GC. * Hash * added method: * added Hash#to_h as explicit conversion method, like Array#to_a. * extended method: * Hash#default_proc= can be passed nil to clear the default proc. * Kernel * added method: * added Kernel#Hash conversion method like Array() or Float(). * added Kernel#using, which imports refinements into the current scope. [experimental] * added Kernel#__dir__ which returns a current dirname. * added Kernel#caller_locations which returns an array of frame information objects. * extended method: * Kernel#warn accepts multiple args in like puts. * Kernel#caller accepts second optional argument `n' which specify required caller size. * Kernel#to_enum and enum_for accept a block for lazy size evaluation. * incompatible changes: * system() and exec() closes non-standard file descriptors (The default of :close_others option is changed to true by default.) * respond_to? against a protected method now returns false unless the second argument is true. * __callee__ has returned to the original behavior, and now returns the called name but not the original name in an aliased method. * Kernel#inspect does not call #to_s anymore (it used to call redefined #to_s). * LoadError * added method: * net/imap * new methods: * Net::IMAP.default_port * Net::IMAP.default_imap_port * Net::IMAP.default_tls_port * Net::IMAP.default_ssl_port * Net::IMAP.default_imaps_port * objspace * new method: * ObjectSpace.reachable_objects_from(obj) * openssl * Consistently raise an error when trying to enco of OpenSSL::ASN1::Primitive now raise TypeError instance whose value is nil. All instances of O raise NoMethodError in the same case. Construct permitted. * TLS 1.1 & 1.2 support by setting OpenSSL::SSL:: :TLSv1_2, :TLSv1_2_server, :TLSv1_2_client or : :TLSv1_1_client. The version being effectively with OpenSSL::SSL#ssl_version. Furthermore, it blacklist the new TLS versions with OpenSSL::SS OpenSSL::SSL::OP_NO_TLSv1_2. * Added OpenSSL::SSL::SSLContext#renegotiation_cb may be set which gets called whenever a new han also allows to programmatically decline (client * Support for "0/n" splitting of records as BEAST OpenSSL::SSL::OP_DONT_INSERT_EMPTY_FRAGMENTS. * OpenSSL requires passwords for decrypting PEM-e four characters long. This led to awkward situa a password with fewer than four characters was file afterwards failed. OpenSSL::PKey::RSA, Ope OpenSSL::PKey::EC therefore now enforce the sam private key to PEM with a password - it has to long. * SSL/TLS support for the Next Protocol Negotiati with OpenSSL 1.0.1 and higher. * OpenSSL::OPENSSL_FIPS allows client application is running in FIPS mode and to react to the spe might impy. * ostruct * new methods: * OpenStruct#[], []= * OpenStruct#each_pair * OpenStruct#eql? * OpenStruct#hash * OpenStruct#to_h converts the struct to a hash * extended method: * OpenStruct.new also accepts an OpenStruct / S * pathname * extended method: * Pathname#find returns an enumerator if no blo Tuesday, December 11, 12
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. == Changes since the 1.9.3 release === C API updates * NUM2SHORT() and NUM2USHORT() added. They are similar to NUM2INT, but short. * rb_newobj_of() and NEWOBJ_OF() added. They create a new object of a given class. === Library updates (outstanding ones only) * builtin classes * Array * added method: * added Array#bsearch for binary search. * incompatible changes: * random parameter of Array#shuffle! and Array#sample now will be called with one argument, maximum value. * when given Range arguments, Array#values_at now returns nil for each value that is out-of-range. * Enumerable * added method: * added Enumerable#lazy method for lazy enumeration. * Enumerator * added method: * added Enumerator#size for lazy size evaluation. * extended method: * Enumerator.new accept an argument for lazy size evaluation. * ENV * aliased method: * ENV.to_h is a new alias for ENV.to_hash * Fiber * incompatible changes: * Fiber#resume cannot resume a fiber which invokes "Fiber#transfer". * File * extended method: * File.fnmatch? now expands braces in the pattern if File::FNM_EXTGLOB option is given. * GC * improvements: * Enumerator.new accept an argument for lazy size evaluation. * ENV * aliased method: * ENV.to_h is a new alias for ENV.to_hash * Fiber * incompatible changes: * Fiber#resume cannot resume a fiber which invokes "Fiber#transfer". * File * extended method: * File.fnmatch? now expands braces in the pattern if File::FNM_EXTGLOB option is given. * GC * improvements: * introduced the bitmap marking which suppresses to copy a memory page with Copy-on-Write. * introduced the non-recursive marking which avoids unexpected stack overflow. * GC::Profiler * added method: * added GC::Profiler.raw_data which returns raw profile data for GC. * Hash * added method: * added Hash#to_h as explicit conversion method, like Array#to_a. * extended method: * Hash#default_proc= can be passed nil to clear the default proc. * Kernel * added method: * added Kernel#Hash conversion method like Array() or Float(). * added Kernel#using, which imports refinements into the current scope. [experimental] * added Kernel#__dir__ which returns a current dirname. * added Kernel#caller_locations which returns an array of frame information objects. * extended method: * Kernel#warn accepts multiple args in like puts. * Kernel#caller accepts second optional argument `n' which specify required caller size. * Kernel#to_enum and enum_for accept a block for lazy size evaluation. * incompatible changes: * system() and exec() closes non-standard file descriptors (The default of :close_others option is changed to true by default.) * respond_to? against a protected method now returns false unless the second argument is true. * __callee__ has returned to the original behavior, and now returns the called name but not the original name in an aliased method. * Kernel#inspect does not call #to_s anymore (it used to call redefined #to_s). * LoadError * added method: * net/imap * new methods: * Net::IMAP.default_port * Net::IMAP.default_imap_port * Net::IMAP.default_tls_port * Net::IMAP.default_ssl_port * Net::IMAP.default_imaps_port * objspace * new method: * ObjectSpace.reachable_objects_from(obj) * openssl * Consistently raise an error when trying to enco of OpenSSL::ASN1::Primitive now raise TypeError instance whose value is nil. All instances of O raise NoMethodError in the same case. Construct permitted. * TLS 1.1 & 1.2 support by setting OpenSSL::SSL:: :TLSv1_2, :TLSv1_2_server, :TLSv1_2_client or : :TLSv1_1_client. The version being effectively with OpenSSL::SSL#ssl_version. Furthermore, it blacklist the new TLS versions with OpenSSL::SS OpenSSL::SSL::OP_NO_TLSv1_2. * Added OpenSSL::SSL::SSLContext#renegotiation_cb may be set which gets called whenever a new han also allows to programmatically decline (client * Support for "0/n" splitting of records as BEAST OpenSSL::SSL::OP_DONT_INSERT_EMPTY_FRAGMENTS. * OpenSSL requires passwords for decrypting PEM-e four characters long. This led to awkward situa a password with fewer than four characters was file afterwards failed. OpenSSL::PKey::RSA, Ope OpenSSL::PKey::EC therefore now enforce the sam private key to PEM with a password - it has to long. * SSL/TLS support for the Next Protocol Negotiati with OpenSSL 1.0.1 and higher. * OpenSSL::OPENSSL_FIPS allows client application is running in FIPS mode and to react to the spe might impy. * ostruct * new methods: * OpenStruct#[], []= * OpenStruct#each_pair * OpenStruct#eql? * OpenStruct#hash * OpenStruct#to_h converts the struct to a hash * extended method: * OpenStruct.new also accepts an OpenStruct / S * pathname * extended method: * Pathname#find returns an enumerator if no blo Tuesday, December 11, 12