4.5 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	NEWS for Ruby 3.2.0
This document is a list of user-visible feature changes since the 3.1.0 release, except for bug fixes.
Note that each entry is kept to a minimum, see links for details.
Language changes
- 
Anonymous rest and keyword rest arguments can now be passed as arguments, instead of just used in method parameters. [Feature #18351]
def foo(*) bar(*) end def baz(**) quux(**) end - 
Constant assignment evaluation order for constants set on explicit objects has been made consistent with single attribute assignment evaluation order. With this code:
foo::BAR = bazfoois now called beforebaz. Similarly, for multiple assignment to constants, left-to-right evaluation order is used. With this code:foo1::BAR1, foo2::BAR2 = baz1, baz2The following evaluation order is now used:
foo1foo2baz1baz2
 - 
Find pattern is no longer experimental. [Feature #18585]
 
Command line options
Core classes updates
Note: We're only listing outstanding class updates.
- 
Hash
- Hash#shift now always returns nil if the hash is empty, instead of returning the default value or calling the default proc. [Bug #16908]
 
 - 
MatchData
- MatchData#byteoffset has been added. [Feature #13110]
 
 - 
Module
- Module.used_refinements has been added. [Feature #14332]
 - Module#refinements has been added. [Feature #12737]
 - Module#const_added has been added. [Feature #17881]
 
 - 
Proc
- Proc#dup returns an instance of subclass. [Bug #17545]
 
 - 
Refinement
- Refinement#refined_class has been added. [Feature #12737]
 
 - 
Set
- Set is now available as a builtin class without the need for 
require "set". [Feature #16989] It is currently autoloaded via theSetconstant or a call toEnumerable#to_set. 
 - Set is now available as a builtin class without the need for 
 - 
String
- String#byteindex and String#byterindex have been added. [Feature #13110]
 
 - 
Struct
- A Struct class can also be initialized with keyword arguments
without 
keyword_init: trueonStruct.new[Feature #16806] 
 - A Struct class can also be initialized with keyword arguments
without 
 
Stdlib updates
- The following default gem are updated.
- RubyGems 3.4.0.dev
 - bigdecimal 3.1.2
 - bundler 2.4.0.dev
 - cgi 0.3.2
 - etc 1.4.0
 - io-console 0.5.11
 - io-wait 0.2.2.pre1
 - ipaddr 1.2.4
 - ostruct 0.5.3
 - reline 0.3.1
 - securerandom 0.2.0
 
 - The following bundled gems are updated.
- net-imap 0.2.3
 - rbs 2.2.2
 - typeprof 0.21.2
 
 - The following default gems are now bundled gems.
 
Compatibility issues
Note: Excluding feature bug fixes.
Removed constants
The following deprecated constants are removed.
FixnumandBignum[Feature #12005]Random::DEFAULT[Feature #17351]Struct::GroupStruct::Passwd
Removed methods
The following deprecated methods are removed.
Dir.exists?[Feature #17391]File.exists?[Feature #17391]Kernel#=~[Feature #15231]Kernel#taint,Kernel#untaint,Kernel#tainted?[Feature #16131]Kernel#trust,Kernel#untrust,Kernel#untrusted?[Feature #16131]
Stdlib compatibility issues
C API updates
Removed C APIs
The following deprecated APIs are removed.
rb_cDatavariable.- "taintedness" and "trustedness" functions. [Feature #16131]