From f6610c041e4ead8fee4d9b850c60e055cef9551b Mon Sep 17 00:00:00 2001 From: nobu Date: Wed, 17 Oct 2018 11:35:28 +0000 Subject: NEWS in rdoc mode [ci skip] * NEWS: reverted to rdoc mode. markdown mode does not make class/module/method references in HTML. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65121 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- NEWS | 489 ++++++++++++++++++++++++++++++++----------------------------------- 1 file changed, 233 insertions(+), 256 deletions(-) diff --git a/NEWS b/NEWS index 896facad50..c3539577ec 100644 --- a/NEWS +++ b/NEWS @@ -1,6 +1,6 @@ -# -*- markdown -*- markup: Markdown +# -*- rdoc -*- -# NEWS for Ruby 2.6.0 += NEWS for Ruby 2.6.0 This document is a list of user visible feature changes made between releases except for bug fixes. @@ -8,443 +8,420 @@ 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. `https://bugs.ruby-lang.org/issues/$FEATURE_OR_BUG_NUMBER`) +(e.g. https://bugs.ruby-lang.org/issues/$FEATURE_OR_BUG_NUMBER) -## Changes since the 2.5.0 release +== Changes since the 2.5.0 release -### Language changes +=== Language changes -* `$SAFE` is a process global state and we can set 0 again. - [Feature #14250] +* $SAFE is a process global state and we can set 0 again. [Feature #14250] * refinements take place at block passing. [Feature #14223] -* `else` without `rescue` now causes a syntax error. [EXPERIMENTAL] +* +else+ without +rescue+ now causes a syntax error. [EXPERIMENTAL] -* constant names may start with a non-ASCII capital letter. - [Feature #13770] +* constant names may start with a non-ASCII capital letter. [Feature #13770] * An endless range is introduced. You can write a range that has no end, - like `(0..)`. The following shows typical use cases. [Feature #12912] + like (0..). The following shows typical use cases. [Feature #12912] - ```ruby ary[1..] # identical to ary[1..-1] (1..).each {|index| ... } # infinite loop from index 1 ary.zip(1..) {|elem, index| ... } # ary.each.with_index(1) { } - ``` -* Non-`Symbol` key in keyword arguments hash causes an exception. +* Non- Symbol key in keyword arguments hash causes an exception. -### Core classes updates (outstanding ones only) +=== Core classes updates (outstanding ones only) -* `Array` +[Array] - * New methods: + [New methods] - * Added `Array#union` and `Array#difference` instance method. - [Feature #14097] + * Added Array#union and Array#difference instance method. [Feature #14097] - * Modified methods: + [Modified methods] - * `Array#to_h` now maps elements to new keys and values by the - block if given. [Feature #15143] + * Array#to_h now maps elements to new keys and values by the + block if given. [Feature #15143] - * Aliased methods: + [Aliased methods] - * `Array#filter` is a new alias for `Array#select`. - [Feature #13784] - * `Array#filter!` is a new alias for `Array#select!`. - [Feature #13784] + * Array#filter is a new alias for Array#select. [Feature #13784] + * Array#filter! is a new alias for Array#select!. [Feature #13784] -* `Binding` +[Binding] - * New methods: + [New methods] - * added `Binding#source_location`. [Feature #14230] + * added Binding#source_location. [Feature #14230] - This method returns the source location of binding, a 2-element - array of `__FILE__` and `__LINE__`. Traditionally, the same - information could be retrieved by `eval("[__FILE__, __LINE__]", - binding)`, but we are planning to change this behavior so that - `Kernel#eval` ignores binding's source location [Bug #4352]. - So, users should use this newly-introduced method instead of - `Kernel#eval`. + This method returns the source location of binding, a 2-element + array of __FILE__ and __LINE__. Traditionally, the same + information could be retrieved by eval("[__FILE__, __LINE__]", + binding), but we are planning to change this behavior so that + Kernel#eval ignores binding's source location [Bug #4352]. + So, users should use this newly-introduced method instead of + Kernel#eval. -* `Dir` +[Dir] - * New methods: + [New methods] - * added `Dir#each_child` and `Dir#children` instance methods. - [Feature #13969] + * added Dir#each_child and Dir#children instance methods. [Feature #13969] -* `Enumerable` +[Enumerable] - * Modified methods: + [Modified methods] - * `Enumerable#to_h` now maps elements to new keys and values - by the block if given. [Feature #15143] + * Enumerable#to_h now maps elements to new keys and values by the block if + given. [Feature #15143] - * Aliased methods: + [Aliased methods] - * `Enumerable#filter` is a new alias for `Enumerable#select`. - [Feature #13784] + * Enumerable#filter is a new alias for Enumerable#select. [Feature #13784] -* `Enumerator::ArithmeticSequence` +[Enumerator::ArithmeticSequence] - * This is a new class to represent a generator of an arithmetic sequence, - that is a number sequence defined by a common difference. It can be used - for representing what is similar to Python's slice. You can get an - instance of this class from `Numeric#step` and `Range#step`. + * This is a new class to represent a generator of an arithmetic sequence, + that is a number sequence defined by a common difference. It can be used + for representing what is similar to Python's slice. You can get an + instance of this class from Numeric#step and Range#step. -* `Enumerator::Lazy` +[Enumerator::Lazy] - * Aliased methods: + [Aliased methods] - * `Enumerator::Lazy#filter` is a new alias for - `Enumerator::Lazy#select`. [Feature #13784] + * Enumerator::Lazy#filter is a new alias for + Enumerator::Lazy#select. [Feature #13784] -* `ENV` +[ENV] - * Modified methods: + [Modified methods] - * `ENV.to_h` now maps names and values to new keys and values - by the block if given. [Feature #15143] + * ENV.to_h now maps names and values to new keys and values + by the block if given. [Feature #15143] -* `Exception` +[Exception] - * New options: + [New options] - * `Exception#full_message` takes `:highlight` and `:order` options. - [Bug #14324] + * Exception#full_message takes +:highlight+ and +:order+ + options. [Bug #14324] -* `Hash` +[Hash] - * Modified methods: + [Modified methods] - * `Hash#merge`, `merge!`, and `update` now accept multiple - arguments. [Feature #15111] + * Hash#merge, merge!, and update now accept multiple + arguments. [Feature #15111] - * `Hash#to_h` now maps keys and values to new keys and values - by the block if given. [Feature #15143] + * Hash#to_h now maps keys and values to new keys and values + by the block if given. [Feature #15143] - * Aliased methods: + [Aliased methods] - * `Hash#filter` is a new alias for `Hash#select`. [Feature #13784] + * Hash#filter is a new alias for Hash#select. [Feature #13784] - * `Hash#filter!` is a new alias for `Hash#select!`. - [Feature #13784] + * Hash#filter! is a new alias for Hash#select!. [Feature #13784] -* `IO` +[IO] - * New options: + [New options] - * new mode character `'x'` to open files for exclusive access. - [Feature #11258] + * new mode character 'x' to open files for exclusive + access. [Feature #11258] -* `Kernel` +[Kernel] - * Aliased methods: + [Aliased methods] - * `Kernel#then` is a new alias for `Kernel#yield_self`. - [Feature #14594] + * Kernel#then is a new alias for Kernel#yield_self. [Feature #14594] - * New options: + [New options] - * `Kernel.#Complex`, `Kernel.#Float`, `Kernel.#Integer` and - `Kernel.#Rational` take `:exception` option to specify the way of - error handling. [Feature #12732] + * Kernel#Complex, Kernel#Float, Kernel#Integer and + Kernel#Rational take +:exception+ option to specify the way of + error handling. [Feature #12732] - * `Kernel.#system` takes `:exception` option to raise an exception - on failure. [Feature #14386] + * Kernel#system takes +:exception+ option to raise an exception + on failure. [Feature #14386] - * Incompatible changes: + [Incompatible changes] - * `system()` and `exec()` do not close non-standard file descriptors - (The default of `:close_others` option is changed to `false` by - default. but we still set the `FD_CLOEXEC` flag on descriptors we - create). [Misc #14907] + * Kernel#system and Kernel#exec do not close non-standard file descriptors + (The default of +:close_others+ option is changed to +false+ by + default. but we still set the +FD_CLOEXEC+ flag on descriptors we + create). [Misc #14907] -* `KeyError` +[KeyError] - * New options: + [New options] - * `KeyError#initialize` accepts `:receiver` and `:key` options to - set receiver and key in Ruby code. [Feature #14313] + * KeyError#initialize accepts +:receiver+ and +:key+ options to + set receiver and key in Ruby code. [Feature #14313] -* `Module` +[Module] - * New methods: + [New methods] - * `Module#method_defined?`, `Module#private_method_defined?` and - `Module#protected_method_defined?` now accepts the second - parameter as optional. If it's `true` (=default), checks ancestor - modules/classes, or checks only the class itself. - [Feature #14944] + * Module#method_defined?, Module#private_method_defined? and + Module#protected_method_defined? now accepts the second + parameter as optional. If it's +true+ (=default), checks ancestor + modules/classes, or checks only the class itself. [Feature #14944] -* `NameError` +[NameError] - * New options: + [New options] - * `NameError#initialize` accepts `:receiver` option to set receiver - in Ruby code. [Feature #14313] + * NameError#initialize accepts +:receiver+ option to set receiver + in Ruby code. [Feature #14313] -* `NoMethodError` +[NoMethodError] - * New options: + [New options] - * `NoMethodError#initialize` accepts `:receiver` option to set - receiver in Ruby code. [Feature #14313] + * NoMethodError#initialize accepts +:receiver+ option to set receiver + in Ruby code. [Feature #14313] -* `Numeric` +[Numeric] - * Incompatible changes: + [Incompatible changes] - * `Numeric#step` now returns an instance of - `Enumerator::ArithmeticSequence` class rather than one of - `Enumerator` class. + * Numeric#step now returns an instance of Enumerator::ArithmeticSequence + class rather than one of Enumerator class. -* `Proc` +[Proc] - * Incompatible changes: + [Incompatible changes] - * `Proc#call` doesn't change `$SAFE` any more. [Feature #14250] + * Proc#call doesn't change $SAFE any more. [Feature #14250] -* `Random` +[Random] - * New methods: + [New methods] - * added `Random.bytes`. [Feature #4938] + * added Random.bytes. [Feature #4938] -* `Range` +[Range] - * New methods: + [New methods] - * Added `Range#%` instance method. [Feature #14697] + * Added Range#% instance method. [Feature #14697] - * Incompatible changes: + [Incompatible changes] - * `Range#===` now uses `#cover?` instead of `#include?` method. - [Feature #14575] - * `Range#cover?` now accepts Range object. [Feature #14473] - * `Range#step` now returns an instance of - `Enumerator::ArithmeticSequence` class rather than one of - `Enumerator` class. + * Range#=== now uses #cover? instead of #include? method. [Feature #14575] + * Range#cover? now accepts Range object. [Feature #14473] + * Range#step now returns an instance of Enumerator::ArithmeticSequence + class rather than one of Enumerator class. -* `RubyVM::AST` +[RubyVM::AST] - * New methods: + [New methods] - * `RubyVM::AST.parse` parses a given string and returns AST nodes. - [experimental] + * RubyVM::AST.parse parses a given string and returns AST + nodes. [experimental] - * `RubyVM::AST.parse_file` parses a given file and returns AST - nodes. [experimental] + * RubyVM::AST.parse_file parses a given file and returns AST + nodes. [experimental] -* `String` +[String] - * New features: + [New features] - * `String#split` yields each substring to the block if given. - [Feature #4780] + * String#split yields each substring to the block if given. [Feature #4780] -* `Struct` +[Struct] - * Modified methods: + [Modified methods] - * `Struct#to_h` now maps keys and values to new keys and values - by the block if given. [Feature #15143] + * Struct#to_h now maps keys and values to new keys and values + by the block if given. [Feature #15143] - * Aliased method: + [Aliased method] - * `Struct#filter` is a new alias for `Struct#select` [Feature #13784] + * Struct#filter is a new alias for Struct#select [Feature #13784] -* `Time` +[Time] - * New features: + [New features] - * `Time.new` and `Time#getlocal` accept a timezone object as - well as UTC offset string. `Time#+`, `Time#-` and `Time#succ` - also preserve the timezone. [Feature #14850] + * Time.new and Time#getlocal accept a timezone object as well as + UTC offset string. Time#+, Time#- and Time#succ also preserve + the timezone. [Feature #14850] -* `TracePoint` +[TracePoint] - * New methods: + [New methods] - * `TracePoint#parameters` [Feature #14694] + * TracePoint#parameters [Feature #14694] -### Stdlib updates (outstanding ones only) +=== Stdlib updates (outstanding ones only) -* `ERB` +[ERB] - * New options: + [New options] - * Add `:trim_mode` and `:eoutvar` keyword arguments to `ERB.new`. - Now non-keyword arguments other than first one are softly - deprecated and will be removed when Ruby 2.5 becomes EOL. - [Feature #14256] + * Add +:trim_mode+ and +:eoutvar+ keyword arguments to ERB.new. + Now non-keyword arguments other than first one are softly deprecated + and will be removed when Ruby 2.5 becomes EOL. [Feature #14256] - * erb command's `-S` option is deprecated, which will be removed in - the next version. + * erb command's -S option is deprecated, which will be removed + in the next version. -* `FileUtils` +[FileUtils] - * New method: + [New method] - * `FileUtils#cp_lr`. [Feature #4189] + * FileUtils#cp_lr. [Feature #4189] -* `Matrix` +[Matrix] - * New methods: + [New methods] - * `Matrix#antisymmetric?` + * Matrix#antisymmetric? - * `Matrix#reflexive?` + * Matrix#reflexive? -* `Net` +[Net] - * New options: + [New options] - * Add `:write_timeout` keyword argument to `Net::BufferedIO.new`. - [Feature #13396] + * Add +:write_timeout+ keyword argument to Net::HTTP.new. [Feature #13396] - * New methods: + [New methods] - * Add `Net::BufferedIO#write_timeout`, - `Net::BufferedIO#write_timeout=`, `Net::HTTP#write_timeout`, and - `Net::HTTP#write_timeout=`. [Feature #13396] + * Add Net::HTTP#write_timeout, and Net::HTTP#write_timeout=. [Feature #13396] - * New constant: + [New constant] - * Add `Net::HTTPClientException` to deprecate - `Net::HTTPServerException`, whose name is misleading. [Bug #14688] + * Add Net::HTTPClientException to deprecate Net::HTTPServerException, + whose name is misleading. [Bug #14688] -* `REXML` +[REXML] - * Improved some XPath implementations: + [Improved some XPath implementations] - * `concat()` function: Stringify all arguments before concatenating + * concat() function: Stringify all arguments before concatenating - * `string()` function: Support context node + * string() function: Support context node - * `string()` function: Support processing instruction node + * string() function: Support processing instruction node - * Support `"*:#{ELEMENT_NAME}"` syntax in XPath 2.0 + * Support "*:#{ELEMENT_NAME}" syntax in XPath 2.0 - * Fixed some XPath implementations: + [Fixed some XPath implementations] - * `"//#{ELEMENT_NAME}[#{POSITION}]"` case + * "//#{ELEMENT_NAME}[#{POSITION}]" case - * `string()` function: Fix `function(document)` returns nodes that - are out of root elements. + * string() function: Fix function(document) + returns nodes that are out of root elements. - * `"/ #{ELEMENT_NAME} "` case + * "/ #{ELEMENT_NAME} " case - * `"/ #{ELEMENT_NAME} [ #{PREDICATE} ]"` case + * "/ #{ELEMENT_NAME} [ #{PREDICATE} ]" case - * `"/ #{AXIS}:: #{ELEMENT_NAME} "` case + * "/ #{AXIS}::#{ELEMENT_NAME}" case - * `"#{N}-#{M}"` case: One or more white spaces were required before - `"-"` + * "#{N}-#{M}" case: One or more white spaces were required + before "-" - * `"/child::node()"` case + * "/child::node()" case - * `"#{FUNCTION}()/#{PATH}"` case + * "#{FUNCTION}()/#{PATH}" case - * `"@#{ATTRIBUTE}/parent::"` case + * "@#{ATTRIBUTE}/parent::" case - * `"name(#{NODE_SET})"` case + * "name(#{NODE_SET})" case -* `RSS` +[RSS] - * New options: + [New options] - * `RSS::Parser.parse`: Accept options as `Hash`. `:validate`, - `:ignore_unknown_element`, `:parser_class` options are available. + * RSS::Parser.parse: Accept options as Hash. +:validate+ , + +:ignore_unknown_element+ , +:parser_class+ options are available. -* `Set` +[Set] - * Aliased methods: + [Aliased methods] - * `Set#filter!` is a new alias for `Set#select!`. [Feature #13784] + * Set#filter! is a new alias for Set#select!. [Feature #13784] -* `URI` +[URI] - * New constant: + [New constant] - * Add `URI::File` to handle file URI scheme. [Feature #14035] + * Add URI::File to handle file URI scheme. [Feature #14035] -### Compatibility issues (excluding feature bug fixes) +=== Compatibility issues (excluding feature bug fixes) -* `File` +[File] - * `File.read`, `File.binread`, `File.write`, `File.binwrite`, - `File.foreach`, and `File.readlines` do not invoke external commands - even if the path starts with the pipe character `'|'`. - [Feature #14245] + * File.read, File.binread, File.write, File.binwrite, File.foreach, and + File.readlines do not invoke external commands even if the path starts + with the pipe character '|'. [Feature #14245] -* `Dir` +[Dir] - * `Dir.glob` with `'\0'`-separated pattern list will be deprecated, and - is now warned. [Feature #14643] + * Dir.glob with '\0'-separated pattern list will be deprecated, + and is now warned. [Feature #14643] -### Stdlib compatibility issues (excluding feature bug fixes) +=== Stdlib compatibility issues (excluding feature bug fixes) -### C API updates +=== C API updates -### Supported platform changes +=== Supported platform changes -### Implementation improvements +=== Implementation improvements -* Speedup `Proc#call` because we don't need to care about `$SAFE` any more. - [Feature #14318] +* Speedup Proc#call because we don't need to care about $SAFE + any more. [Feature #14318] - With `lc_fizzbuzz` benchmark which uses so many `Proc#call` we can - measure x1.4 improvements. [Bug #10212] + With +lc_fizzbuzz+ benchmark which uses so many Proc#call we can + measure x1.4 improvements. [Bug #10212] -* Speedup `block.call` where `block` is passed block parameter. - [Feature #14330] +* Speedup block.call where +block+ is passed block parameter. [Feature #14330] - Ruby 2.5 improves block passing performance. [Feature #14045] + Ruby 2.5 improves block passing performance. [Feature #14045] - Additionally, Ruby 2.6 improves the performance of passed block calling. + Additionally, Ruby 2.6 improves the performance of passed block calling. -* Introduce an initial implementation of JIT (Just-in-time) compiler. - [Feature #14235] [experimental] - * `--enable=jit` option is added to enable JIT. `--jit-verbose=1` is good for - inspection. See `ruby --help` for others. - * This JIT relies on C compiler used to build Ruby, on runtime. Only - gcc and clang are supported for the JIT for now, and MinGW support has - some issues. - * As of 2.6.0-preview1, we're just preparing infrastructure for JIT and - very few optimizations are implemented. So it's not ready for - benchmarking Ruby's JIT performance yet. It's known that current JIT - enablement makes Rails application slower for now. - * rb_waitpid reimplemented on Unix-like platforms to maintain - compatibility [Bug #14867] +* Introduce an initial implementation of JIT (Just-in-time) compiler. [Feature #14235] [experimental] -* VM generator script renewal; makes the generated VM more optimized. - [GH-1779] + * --enable=jit option is added to enable JIT. --jit-verbose=1 + is good for inspection. See ruby --help for others. + * This JIT relies on C compiler used to build Ruby, on runtime. Only + gcc and clang are supported for the JIT for now, and MinGW support has + some issues. + * As of 2.6.0-preview1, we're just preparing infrastructure for JIT and + very few optimizations are implemented. So it's not ready for + benchmarking Ruby's JIT performance yet. It's known that current JIT + enablement makes Rails application slower for now. + * rb_waitpid reimplemented on Unix-like platforms to maintain + compatibility [Bug #14867] -* Thread cache enabled for pthreads platforms (for `Thread.new` and - `Thread.start`). [Feature #14757] +* VM generator script renewal; makes the generated VM more optimized. [GH-1779] + +* Thread cache enabled for pthreads platforms (for Thread.new and + Thread.start). [Feature #14757] * timer thread is eliminated for platforms with POSIX timers [Misc #14937] -### Miscellaneous changes +=== Miscellaneous changes * On macOS, shared libraries no longer include a full version number of ruby in their names. This eliminates the burden of each teeny upgrade on the platform that users need to rebuild every extension library. - * Before: + [Before] * libruby.2.6.0.dylib * libruby.2.6.dylib -> libruby.2.6.0.dylib * libruby.dylib -> libruby.2.6.0.dylib - * After: + [After] * libruby.2.6.dylib * libruby.dylib -> libruby.2.6.dylib -### Misc +=== Misc * Extracted misc/*.el files to https://github.com/ruby/elisp -- cgit v1.2.3