summaryrefslogtreecommitdiff
path: root/NEWS
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-08-18 09:53:11 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-08-18 09:53:11 +0000
commitb6eb3fcbec3a8112c62f7453cddc9fbe0fc7c037 (patch)
treeb8fc0796d75468bf4a0299b552b5fd05d71c7ebd /NEWS
parentfe2f89af9ad6bd87ec91b7042593bc8c7247708b (diff)
NEWS: converted to Markdown [ci skip]
* NEWS: Converted to Markdown format, from (wrongly) Markdown-mixed RDoc format. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64445 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'NEWS')
-rw-r--r--NEWS357
1 files changed, 201 insertions, 156 deletions
diff --git a/NEWS b/NEWS
index ac608e6d2d..5f8db24c0f 100644
--- a/NEWS
+++ b/NEWS
@@ -1,288 +1,333 @@
-# -*- rdoc -*-
+# -*- markdown -*- markup: Markdown
-= 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.
-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>)
+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`)
-== 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]
-* 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]
+* An endless range is introduced. You can write a range that has no end,
+ 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`
- * 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`
- * 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::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]
-* Exception
+* `Exception`
- * Exception#full_message takes :highlight and :order options [Bug #14324]
+ * `Exception#full_message` takes `:highlight` and `:order` options.
+ [Bug #14324]
-* Hash
+* `Hash`
- * 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 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`
- * Kernel#then is a new alias for Kernel#yield_self [Feature #14594]
+ * `Kernel#then` is a new alias for `Kernel#yield_self`.
+ [Feature #14594]
- * Kernel.#Complex takes :exception option to specify the way of error handling [Feature #12732]
+ * `Kernel.#Complex` takes `:exception` option to specify the way of
+ error handling. [Feature #12732]
- * Kernel.#Float takes :exception option to specify the way of error handling [Feature #12732]
+ * `Kernel.#Float` takes `:exception` option to specify the way of error
+ handling. [Feature #12732]
- * Kernel.#Integer takes :exception option to specify the way of error handling [Feature #12732]
+ * `Kernel.#Integer` takes `:exception` option to specify the way of
+ error handling. [Feature #12732]
- * Kernel.#Rational takes :exception option to specify the way of error handling [Feature #12732]
+ * `Kernel.#Rational` takes `: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:
- * 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]
+ * 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]
-* KeyError
+* `KeyError`
- * 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`
- * 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`
- * 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`
- * 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]
-* Proc
+* `Proc`
- * 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`
- * Range#=== now uses #cover? instead of #include? method. [Feature #14575]
+ * `Range#===` now uses `#cover?` instead of `#include?` method.
+ [Feature #14575]
-* RubyVM::AST
+* `RubyVM::AST`
- * 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` parses a given string and returns AST nodes.
+ [experimental]
+ * `RubyVM::AST.parse_file` parses a given file and returns AST nodes.
+ [experimental]
-* String
+* `String`
- * String#split yields each substring to the block if given. [Feature #4780]
+ * `String#split` yields each substring to the block if given.
+ [Feature #4780]
-* 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`
- * 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 method:
+ * New method:
- * Matrix#antisymmetric?
+ * `Matrix#antisymmetric?`
-* Net
+* `Net`
- * New method:
+ * New method:
- * Add write_timeout keyword argument to Net::BufferedIO.new. [Feature #13396]
+ * Add `:write_timeout` keyword argument to `Net::BufferedIO.new`.
+ [Feature #13396]
- * Add Net::BufferedIO#write_timeout, Net::BufferedIO#write_timeout=,
- Net::HTTP#write_timeout, and Net::HTTP#write_timeout=. [Feature #13396]
+ * Add `Net::BufferedIO#write_timeout`,
+ `Net::BufferedIO#write_timeout=`, `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 ore more white spaces were required before "-"
+ * `"#{N}-#{M}"` case: One ore 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`
- * 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`
- * 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]
- With `lc_fizzbuzz` benchmark which uses so many `Proc#call` we can measure
- x1.4 improvements [Bug #10212].
+* Speedup `Proc#call` because we don't need to care about `$SAFE` any more.
+ [Feature #14318]
-* Speedup `block.call` where `block` is passed block parameter. [Feature #14330]
- Ruby 2.5 improves block passing performance. [Feature #14045]
- Additionally, Ruby 2.6 improves the performance of passed block calling.
+ With `lc_fizzbuzz` benchmark which uses so many `Proc#call` we can
+ measure x1.4 improvements. [Bug #10212]
-* Introduce an initial implementation of JIT (Just-in-time) compiler. [Feature #14235] [experimental]
- * `--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.
+* Speedup `block.call` where `block` is passed block parameter.
+ [Feature #14330]
-* VM generator script renewal; makes the generated VM more optimized. [GH-1779]
+ Ruby 2.5 improves block passing performance. [Feature #14045]
-* Thread cache enabled for pthreads platforms
- (for `Thread.new` and `Thread.start`) [Feature #14757]
+ Additionally, Ruby 2.6 improves the performance of passed block calling.
-=== Miscellaneous changes
+* Introduce an initial implementation of JIT (Just-in-time) compiler.
+ [Feature #14235] [experimental]
+ * `--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.
-* 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.
+* 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]
+
+### 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:
* libruby.2.6.0.dylib