NEWS.md 3.9 KB
Newer Older
Y
Yusuke Endoh 已提交
1 2
# NEWS for Ruby 2.8.0 (tentative; to be 3.0.0)

3 4
This document is a list of user visible feature changes
since the **2.7.0** release, except for bug fixes.
Y
Yusuke Endoh 已提交
5 6 7 8 9 10

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`).

11
## Language changes
Y
Yusuke Endoh 已提交
12

J
Jeremy Evans 已提交
13 14 15 16
* 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]]

17 18
* $SAFE is now a normal global variable with no special behavior.
  [[Feature #16131]]
19

J
Jeremy Evans 已提交
20 21 22
* 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]]
23

24
## Command line options
Y
Yusuke Endoh 已提交
25

26 27 28
## Core classes updates

Outstanding ones only.
Y
Yusuke Endoh 已提交
29

30 31 32 33 34 35 36
* Dir

    * Modified method

        * Dir.glob and Dir.[] now sort the results by default, and
          accept `sort:` keyword option.  [[Feature #8709]]

37
* Hash
Y
Yusuke Endoh 已提交
38

39
    * Modified method
Y
Yusuke Endoh 已提交
40

41
        * Hash#transform_keys now accepts a hash that maps keys to new
42
          keys.  [[Feature #16274]]
Y
Yusuke Endoh 已提交
43

J
Jeremy Evans 已提交
44 45 46 47
* Kernel

    * Modified method

48 49
        * Kernel#clone when called with `freeze: false` keyword will call
          #initialize_clone with the `freeze: false` keyword.
J
Jeremy Evans 已提交
50 51 52
          [[Bug #14266]]

        * Kernel#eval when called with two arguments will use "(eval)"
53
          for `__FILE__` and 1 for `__LINE__` in the evaluated code.
J
Jeremy Evans 已提交
54 55 56 57 58 59 60 61 62 63 64 65
          [[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]]

66 67 68 69 70 71 72
* Symbol

    * Modified method

        * Symbol#to_proc now returns a lambda Proc.
          [[Feature #16260]]

73 74 75
## Stdlib updates

Outstanding ones only.
Y
Yusuke Endoh 已提交
76

77 78 79 80
* Net::HTTP

    * New method

81
        * Add Net::HTTP#verify_hostname= and Net::HTTP#verify_hostname
82
          to skip hostname verification.  [[Feature #16555]]
83

84 85 86
## Compatibility issues

Excluding feature bug fixes.
Y
Yusuke Endoh 已提交
87

88
* Regexp literals are frozen [[Feature #8948]] [[Feature #16377]]
89

90
    ```ruby
91 92
    /foo/.frozen? #=> true
    ```
93

94
* Bundled gems
95

96 97 98 99
    * 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.
100

101 102 103
## Stdlib compatibility issues

Excluding feature bug fixes.
Y
Yusuke Endoh 已提交
104

105
## C API updates
Y
Yusuke Endoh 已提交
106

J
Jeremy Evans 已提交
107 108 109
* C API functions related to $SAFE have been removed.
  [[Feature #16131]]

110
## Implementation improvements
Y
Yusuke Endoh 已提交
111

112
## Miscellaneous changes
113

114
* Methods using `ruby2_keywords` will no longer keep empty keyword
J
Jeremy Evans 已提交
115
  splats, those are now removed just as they are for methods not
116
  using `ruby2_keywords`.
J
Jeremy Evans 已提交
117 118 119 120

* Taint deprecation warnings are now issued in regular mode in
  addition to verbose warning mode.  [[Feature #16131]]

121

122
[Bug #4352]:      https://bugs.ruby-lang.org/issues/4352
123
[Feature #8709]:  https://bugs.ruby-lang.org/issues/8709
124
[Feature #8948]:  https://bugs.ruby-lang.org/issues/8948
125 126 127
[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
128 129
[Feature #15575]: https://bugs.ruby-lang.org/issues/15575
[Feature #16131]: https://bugs.ruby-lang.org/issues/16131
130
[Feature #16260]: https://bugs.ruby-lang.org/issues/16260
131 132
[Feature #16274]: https://bugs.ruby-lang.org/issues/16274
[Feature #16377]: https://bugs.ruby-lang.org/issues/16377
133
[Feature #16555]: https://bugs.ruby-lang.org/issues/16555