* 2022-01-18 [ci skip]
[ruby-80x24.org.git] / NEWS.md
blob6b50bfd8651f758fcaef97a7c3fdf667a8400f09
1 # NEWS for Ruby 3.2.0
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.
8 ## Language changes
10 * Anonymous rest and keyword rest arguments can now be passed as
11   arguments, instead of just used in method parameters.
12   [[Feature #18351]]
14     ```ruby
15     def foo(*)
16       bar(*)
17     end
18     def baz(**)
19       quux(**)
20     end
21     ```
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:
27     ```ruby
28     foo::BAR = baz
29     ```
31   `foo` is now called before `baz`. Similarly, for multiple assignment
32   to constants,  left-to-right evaluation order is used.  With this
33   code:
35     ```ruby
36       foo1::BAR1, foo2::BAR2 = baz1, baz2
37     ```
39   The following evaluation order is now used:
41   1. `foo1`
42   2. `foo2`
43   3. `baz1`
44   4. `baz2`
46   [[Bug #15928]]
48 ## Command line options
50 ## Core classes updates
52 Note: We're only listing outstanding class updates.
54 * Hash
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]]
59 * Module
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]]
64 * Proc
65     * Proc#dup returns an instance of subclass. [[Bug #17545]]
67 * Refinement
68     * Refinement#refined_class has been added. [[Feature #12737]]
70 ## Stdlib updates
72 *   The following default gem are updated.
73     * RubyGems 3.4.0.dev
74     * bundler 2.4.0.dev
75     * etc 1.4.0
76     * io-console 0.5.11
77     * reline 0.3.1
78 *   The following bundled gems are updated.
79     * net-imap 0.2.3
80     * typeprof 0.21.2
81 *   The following default gems are now bundled gems.
83 ## Compatibility issues
85 Note: Excluding feature bug fixes.
87 ### Removed constants
89 The following deprecated constants are removed.
91 * `Random::DEFAULT` [[Feature #17351]]
92 * `Struct::Group`
93 * `Struct::Passwd`
95 ### Removed methods
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?`
103   [[Feature #16131]]
104 * `Kernel#trust`, `Kernel#untrust`, `Kernel#untrusted?`
105   [[Feature #16131]]
107 ## Stdlib compatibility issues
109 ## C API updates
111 ### Removed C APIs
113 The following deprecated APIs are removed.
115 * `rb_cData` variable.
116 * "taintedness" and "trustedness" functions. [[Feature #16131]]
118 ## Implementation improvements
120 ## JIT
122 ### MJIT
124 ### YJIT: New experimental in-process JIT compiler
126 ## Static analysis
128 ### RBS
130 ### TypeProf
132 ## Debugger
134 ## error_highlight
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