3 This document is a list of user-visible feature changes
4 since the **3.1.0** release, except for bug fixes.
6 Note that each entry is kept to a minimum, see links for details.
10 * Anonymous rest and keyword rest arguments can now be passed as
11 arguments, instead of just used in method parameters.
23 * Constant assignment evaluation order for constants set on explicit
24 objects has been made consistent with single attribute assignment
25 evaluation order. With this code:
31 `foo` is now called before `baz`. Similarly, for multiple assignment
32 to constants, left-to-right evaluation order is used. With this
36 foo1::BAR1, foo2::BAR2 = baz1, baz2
39 The following evaluation order is now used:
48 ## Command line options
50 ## Core classes updates
52 Note: We're only listing outstanding class updates.
55 * Hash#shift now always returns nil if the hash is
56 empty, instead of returning the default value or
57 calling the default proc. [[Bug #16908]]
60 * Module.used_refinements has been added. [[Feature #14332]]
61 * Module#refinements has been added. [[Feature #12737]]
62 * Module#const_added has been added. [[Feature #17881]]
65 * Proc#dup returns an instance of subclass. [[Bug #17545]]
68 * Refinement#refined_class has been added. [[Feature #12737]]
72 * The following default gem are updated.
78 * The following bundled gems are updated.
81 * The following default gems are now bundled gems.
83 ## Compatibility issues
85 Note: Excluding feature bug fixes.
89 The following deprecated constants are removed.
91 * `Random::DEFAULT` [[Feature #17351]]
97 The following deprecated methods are removed.
99 * `Dir.exists?` [[Feature #17391]]
100 * `File.exists?` [[Feature #17391]]
101 * `Kernel#=~` [[Feature #15231]]
102 * `Kernel#taint`, `Kernel#untaint`, `Kernel#tainted?`
104 * `Kernel#trust`, `Kernel#untrust`, `Kernel#untrusted?`
107 ## Stdlib compatibility issues
113 The following deprecated APIs are removed.
115 * `rb_cData` variable.
116 * "taintedness" and "trustedness" functions. [[Feature #16131]]
118 ## Implementation improvements
124 ### YJIT: New experimental in-process JIT compiler
136 ## IRB Autocomplete and Document Display
138 ## Miscellaneous changes
140 [Feature #12737]: https://bugs.ruby-lang.org/issues/12737
141 [Feature #14332]: https://bugs.ruby-lang.org/issues/14332
142 [Feature #15231]: https://bugs.ruby-lang.org/issues/15231
143 [Bug #15928]: https://bugs.ruby-lang.org/issues/15928
144 [Feature #16131]: https://bugs.ruby-lang.org/issues/16131
145 [Bug #16908]: https://bugs.ruby-lang.org/issues/16908
146 [Feature #17351]: https://bugs.ruby-lang.org/issues/17351
147 [Feature #17391]: https://bugs.ruby-lang.org/issues/17391
148 [Bug #17545]: https://bugs.ruby-lang.org/issues/17545
149 [Feature #18351]: https://bugs.ruby-lang.org/issues/18351