2020-01-14 22:42:47 -05:00
|
|
|
# NEWS for Ruby 2.8.0 (tentative; to be 3.0.0)
|
|
|
|
|
2020-02-16 15:00:34 -05:00
|
|
|
This document is a list of user visible feature changes
|
|
|
|
since the **2.7.0** release, except for bug fixes.
|
2020-01-14 22:42:47 -05:00
|
|
|
|
|
|
|
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 or Redmine
|
|
|
|
(e.g. `https://bugs.ruby-lang.org/issues/$FEATURE_OR_BUG_NUMBER`).
|
|
|
|
|
2020-01-18 03:46:52 -05:00
|
|
|
## Language changes
|
2020-01-14 22:42:47 -05:00
|
|
|
|
2020-02-28 19:12:13 -05:00
|
|
|
* Keyword arguments are now separated from positional arguments.
|
|
|
|
Code that resulted in deprecation warnings in Ruby 2.7 will now
|
|
|
|
result in ArgumentError or different behavior. [[Feature #14183]]
|
|
|
|
|
2020-03-09 11:11:13 -04:00
|
|
|
* Procs accepting a single rest argument and keywords are no longer
|
|
|
|
subject to autosplatting. This now matches the behavior of Procs
|
|
|
|
accepting a single rest argument and no keywords.
|
|
|
|
[[Feature #16166]]
|
|
|
|
|
2020-03-09 23:44:33 -04:00
|
|
|
```ruby
|
2020-03-09 11:11:13 -04:00
|
|
|
pr = proc{|*a, **kw| [a, kw]}
|
|
|
|
|
|
|
|
pr.call([1])
|
|
|
|
# 2.7 => [[1], {}]
|
|
|
|
# 3.0 => [[[1]], {}]
|
|
|
|
|
|
|
|
pr.call([1, {a: 1}])
|
|
|
|
# 2.7 => [[1], {:a=>1}] # and deprecation warning
|
|
|
|
# 3.0 => [[[1, {:a=>1}]], {}]
|
2020-03-09 23:44:33 -04:00
|
|
|
```
|
2020-03-09 11:11:13 -04:00
|
|
|
|
2020-02-16 15:00:49 -05:00
|
|
|
* $SAFE is now a normal global variable with no special behavior.
|
|
|
|
[[Feature #16131]]
|
2020-01-17 14:36:52 -05:00
|
|
|
|
2020-02-28 19:12:13 -05:00
|
|
|
* yield in singleton class definitions in methods is now a SyntaxError
|
|
|
|
instead of a warning. yield in a class definition outside of a method
|
|
|
|
is now a SyntaxError instead of a LocalJumpError. [[Feature #15575]]
|
2020-02-11 14:56:34 -05:00
|
|
|
|
2020-01-18 03:46:52 -05:00
|
|
|
## Command line options
|
2020-01-14 22:42:47 -05:00
|
|
|
|
2020-03-03 03:37:51 -05:00
|
|
|
## Core classes updates
|
|
|
|
|
|
|
|
Outstanding ones only.
|
2020-01-14 22:42:47 -05:00
|
|
|
|
2020-01-17 10:21:11 -05:00
|
|
|
* Dir
|
|
|
|
|
|
|
|
* Modified method
|
|
|
|
|
|
|
|
* Dir.glob and Dir.[] now sort the results by default, and
|
|
|
|
accept `sort:` keyword option. [[Feature #8709]]
|
|
|
|
|
2020-01-18 03:23:20 -05:00
|
|
|
* Hash
|
2020-01-14 22:42:47 -05:00
|
|
|
|
2020-01-18 03:23:20 -05:00
|
|
|
* Modified method
|
2020-01-14 22:42:47 -05:00
|
|
|
|
2020-01-18 03:23:20 -05:00
|
|
|
* Hash#transform_keys now accepts a hash that maps keys to new
|
2020-01-18 03:43:07 -05:00
|
|
|
keys. [[Feature #16274]]
|
2020-01-14 22:42:47 -05:00
|
|
|
|
2020-02-28 19:12:13 -05:00
|
|
|
* Kernel
|
|
|
|
|
|
|
|
* Modified method
|
|
|
|
|
2020-02-28 23:24:29 -05:00
|
|
|
* Kernel#clone when called with `freeze: false` keyword will call
|
|
|
|
#initialize_clone with the `freeze: false` keyword.
|
2020-02-28 19:12:13 -05:00
|
|
|
[[Bug #14266]]
|
|
|
|
|
|
|
|
* Kernel#eval when called with two arguments will use "(eval)"
|
2020-02-28 23:24:29 -05:00
|
|
|
for `__FILE__` and 1 for `__LINE__` in the evaluated code.
|
2020-02-28 19:12:13 -05:00
|
|
|
[[Bug #4352]]
|
|
|
|
|
|
|
|
* Module
|
|
|
|
|
|
|
|
* Modified method
|
|
|
|
|
|
|
|
* Module#include now includes the arguments in modules and
|
|
|
|
classes that have already included or prepended the receiver,
|
|
|
|
mirroring the behavior if the arguments were included in the
|
|
|
|
receiver before the other modules and classes included or
|
|
|
|
prepended the receiver. [[Feature #9573]]
|
|
|
|
|
2019-11-27 22:18:17 -05:00
|
|
|
* Symbol
|
|
|
|
|
|
|
|
* Modified method
|
|
|
|
|
|
|
|
* Symbol#to_proc now returns a lambda Proc.
|
|
|
|
[[Feature #16260]]
|
|
|
|
|
2020-03-03 03:37:51 -05:00
|
|
|
## Stdlib updates
|
|
|
|
|
|
|
|
Outstanding ones only.
|
2020-01-14 22:42:47 -05:00
|
|
|
|
2020-01-24 01:16:13 -05:00
|
|
|
* Net::HTTP
|
|
|
|
|
|
|
|
* New method
|
|
|
|
|
2020-02-16 15:00:27 -05:00
|
|
|
* Add Net::HTTP#verify_hostname= and Net::HTTP#verify_hostname
|
2020-02-16 15:00:49 -05:00
|
|
|
to skip hostname verification. [[Feature #16555]]
|
2020-01-24 01:16:13 -05:00
|
|
|
|
2020-03-03 03:37:51 -05:00
|
|
|
## Compatibility issues
|
|
|
|
|
|
|
|
Excluding feature bug fixes.
|
2020-01-14 22:42:47 -05:00
|
|
|
|
2020-01-18 03:43:07 -05:00
|
|
|
* Regexp literals are frozen [[Feature #8948]] [[Feature #16377]]
|
2020-01-14 22:43:49 -05:00
|
|
|
|
2020-01-19 06:55:06 -05:00
|
|
|
```ruby
|
2020-01-18 03:23:20 -05:00
|
|
|
/foo/.frozen? #=> true
|
|
|
|
```
|
2020-01-14 22:43:49 -05:00
|
|
|
|
2020-02-16 15:00:41 -05:00
|
|
|
* Bundled gems
|
2020-01-16 02:56:53 -05:00
|
|
|
|
2020-02-16 15:00:41 -05:00
|
|
|
* net-telnet and xmlrpc have been removed from the bundled gems.
|
|
|
|
If you are interested in maintaining them, please comment on
|
|
|
|
your plan to https://github.com/ruby/xmlrpc
|
|
|
|
or https://github.com/ruby/net-telnet.
|
2020-01-16 02:56:53 -05:00
|
|
|
|
2020-03-03 03:37:51 -05:00
|
|
|
## Stdlib compatibility issues
|
|
|
|
|
|
|
|
Excluding feature bug fixes.
|
2020-01-14 22:42:47 -05:00
|
|
|
|
2020-01-18 03:46:52 -05:00
|
|
|
## C API updates
|
2020-01-14 22:42:47 -05:00
|
|
|
|
2020-02-28 19:12:13 -05:00
|
|
|
* C API functions related to $SAFE have been removed.
|
|
|
|
[[Feature #16131]]
|
|
|
|
|
2020-01-18 03:46:52 -05:00
|
|
|
## Implementation improvements
|
2020-01-14 22:42:47 -05:00
|
|
|
|
2020-01-18 03:46:52 -05:00
|
|
|
## Miscellaneous changes
|
2020-01-18 03:43:07 -05:00
|
|
|
|
2020-02-28 23:24:29 -05:00
|
|
|
* Methods using `ruby2_keywords` will no longer keep empty keyword
|
2020-02-28 19:12:13 -05:00
|
|
|
splats, those are now removed just as they are for methods not
|
2020-02-28 23:24:29 -05:00
|
|
|
using `ruby2_keywords`.
|
2020-02-28 19:12:13 -05:00
|
|
|
|
|
|
|
* Taint deprecation warnings are now issued in regular mode in
|
|
|
|
addition to verbose warning mode. [[Feature #16131]]
|
|
|
|
|
2020-01-18 03:43:07 -05:00
|
|
|
|
2020-02-28 22:20:49 -05:00
|
|
|
[Bug #4352]: https://bugs.ruby-lang.org/issues/4352
|
2020-01-17 10:21:11 -05:00
|
|
|
[Feature #8709]: https://bugs.ruby-lang.org/issues/8709
|
2020-01-18 03:43:07 -05:00
|
|
|
[Feature #8948]: https://bugs.ruby-lang.org/issues/8948
|
2020-02-28 22:20:49 -05:00
|
|
|
[Feature #9573]: https://bugs.ruby-lang.org/issues/9573
|
|
|
|
[Feature #14183]: https://bugs.ruby-lang.org/issues/14183
|
|
|
|
[Bug #14266]: https://bugs.ruby-lang.org/issues/14266
|
2020-02-16 15:00:49 -05:00
|
|
|
[Feature #15575]: https://bugs.ruby-lang.org/issues/15575
|
|
|
|
[Feature #16131]: https://bugs.ruby-lang.org/issues/16131
|
2020-03-09 23:43:49 -04:00
|
|
|
[Feature #16166]: https://bugs.ruby-lang.org/issues/16166
|
2019-11-27 22:18:17 -05:00
|
|
|
[Feature #16260]: https://bugs.ruby-lang.org/issues/16260
|
2020-01-18 03:43:07 -05:00
|
|
|
[Feature #16274]: https://bugs.ruby-lang.org/issues/16274
|
|
|
|
[Feature #16377]: https://bugs.ruby-lang.org/issues/16377
|
2020-02-16 15:00:49 -05:00
|
|
|
[Feature #16555]: https://bugs.ruby-lang.org/issues/16555
|