summaryrefslogtreecommitdiff
path: root/NEWS
blob: 3b276e92168437d59cde87d9fa76e8c8937c2b3f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
# -*- rdoc -*-

= NEWS for Ruby 2.7.0

This document is a list of user visible feature changes made between
releases except for bug fixes.

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. <tt>https://bugs.ruby-lang.org/issues/$FEATURE_OR_BUG_NUMBER</tt>)

== Changes since the 2.6.0 release

=== Language changes

* Pattern matching is introduced as an experimental feature. [Feature #14912]

* Method reference operator, <code>.:</code> is introduced as an
  experimental feature.  [Feature #12125] [Feature #13581]

* Proc.new and proc with no block in a method called with a block is warned
  now.

* lambda with no block in a method called with a block errs.

* Non-Symbol keys in a keyword arguments hash was prohibited at 2.6.0, but
  now allowed again.  [Bug #15658]

* Numbered parameter as the default block parameter is introduced as an
  experimental feature.  [Feature #4475]

* A beginless range is experimentally introduced.  It might not be as useful
  as an endless range, but would be good for DSL purpose.  [Feature #14799]

     ary[..3]  # identical to ary[0..3]
     where(sales: ..100)

* Setting <code>$;</code> to non-nil value is warned now.  Use of it in
  String#split is warned too.

* Setting <code>$,</code> to non-nil value is warned now.  Use of it in
  Array#join is warned too.

* Quoted here-document identifier must end within the same line.

     <<"EOS
     " # This has been warned since 2.4
     EOS

=== Core classes updates (outstanding ones only)

Enumerable::

  New method::

    * Added Enumerable#tally.  [Feature #11076]

Enumerator::

  New method::

    * Added Enumerator::Yielder#to_proc so that a Yielder object
      can be directly passed to another method as a block
      argument.  [Feature #15618]

Integer::

  Modified method::

    * Integer#[] now supports range operation.  [Feature #8842]

         0b01001101[2, 4]  #=> 0b0011
         0b01001100[2..5]  #=> 0b0011
         0b01001100[2...6] #=> 0b0011
             ^^^^

Regexp/String::

    * Update Unicode version and Emoji version from 11.0.0 to
      12.0.0.  [Feature #15321]

    * Update Unicode version to 12.1.0, adding support for
      U+32FF SQUARE ERA NAME REIWA.  [Feature #15195]

=== Stdlib updates (outstanding ones only)

Bundler::

  * Upgrade to Bundler 2.1.0.pre.1
    Bundled from https://github.com/bundler/bundler/commit/a53709556b95a914e874b22ed2116a46b0528852

CSV::

  * Upgrade to 3.0.9.
    See https://github.com/ruby/csv/blob/master/NEWS.md.

Date::

  * Date.jisx0301, Date#jisx0301, and Date.parse provisionally support the
    new Japanese era as an informal extension, until the new JIS X 0301 is
    issued.  [Feature #15742]

ERB::

  * Prohibit marshaling ERB instance.

IRB::

  * Introduce syntax highlight inspired by pry.gem to inspect output for some
    core-class objects and binding.irb source lines if $TERM is set and not dumb.

Net::IMAP::

  * Add Server Name Indication (SNI) support.  [Feature #15594]

RSS::

  * Upgrade to RSS 0.2.8.
    See https://github.com/ruby/rss/blob/master/NEWS.md.

RubyGems::

  * Upgrade to RubyGems 3.1.0.pre1
    Bundled from https://github.com/rubygems/rubygems/commit/97b264f0fa248c864b6ee9a23d3ff1cdd217dddb

=== Compatibility issues (excluding feature bug fixes)

=== Stdlib compatibility issues (excluding feature bug fixes)

profile.rb, Profiler__::

  * Removed from standard library. No one maintains it from Ruby 2.0.0.

=== C API updates

=== Implementation improvements

JIT::

  * JIT-ed code is recompiled to less-optimized code when an optimization assumption is invalidated.

  * Method inlining is performed when a method is considered as pure.
    This optimization is still experimental and many methods are NOT considered as pure yet.

  * Default value of +--jit-max-cache+ is changed from 1,000 to 100

  * Default value of +--jit-min-calls+ is changed from 5 to 10,000

GC::

  * New `GC.compact` method for compacting the heap.
    This function compacts live objects in the heap so that fewer pages may
    be used, and the heap may be more CoW friendly. [Feature #15626]

    Details on the algorithm and caveats can be found here:
    https://bugs.ruby-lang.org/issues/15626

=== Miscellaneous changes

* Require compilers to support C99 [Misc #15347]

  * Details of our dialect: https://bugs.ruby-lang.org/projects/ruby-trunk/wiki/C99

* Upstream repository is changed from Subversion to Git.

  * https://git.ruby-lang.org/ruby.git

  * RUBY_REVISION class is changed from Integer to String.

  * RUBY_DESCRIPTION includes Git revision instead of Subversion's one.