[前][次][番号順一覧][スレッド一覧]

ruby-changes:54346

From: kazu <ko1@a...>
Date: Wed, 26 Dec 2018 01:09:45 +0900 (JST)
Subject: [ruby-changes:54346] kazu:r66559 (trunk): [DOC] Add doc/NEWS-2.6.0 [ci skip]

kazu	2018-12-26 01:09:39 +0900 (Wed, 26 Dec 2018)

  New Revision: 66559

  https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=66559

  Log:
    [DOC] Add doc/NEWS-2.6.0 [ci skip]
    
    fix previous commit miss

  Added files:
    trunk/doc/NEWS-2.6.0
Index: doc/NEWS-2.6.0
===================================================================
--- doc/NEWS-2.6.0	(nonexistent)
+++ doc/NEWS-2.6.0	(revision 66559)
@@ -0,0 +1,664 @@ https://github.com/ruby/ruby/blob/trunk/doc/NEWS-2.6.0#L1
+# -*- rdoc -*-
+
+= 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>)
+
+== Changes since the 2.5.0 release
+
+=== Language changes
+
+* <code>$SAFE</code> now is a process global state and can be set to 0 again. [Feature #14250]
+
+* Refinements take place at block passing.  [Feature #14223]
+
+* Refinements take place at Kernel#public_send.  [Feature #15326]
+
+* Refinements take place at Kernel#respond_to?.  [Feature #15327]
+
+* +else+ without +rescue+ now causes a syntax error.  [EXPERIMENTAL] [Feature #14606]
+
+* Constant names may start with a non-ASCII capital letter. [Feature #13770]
+
+* Endless ranges are introduced.  You can use a Range that has no end,
+  like <code>(0..)</code> (or similarly <code>(0...)</code>).  [Feature #12912]
+
+  The following shows typical use cases:
+
+    ary[1..]                              # identical to ary[1..-1]
+    (1...).each {|index| block }          # infinite loop from index 1
+    ary.zip(1..) {|elem, index| block }   # ary.each.with_index(1) { }
+
+* Non-Symbol keys in a keyword arguments hash cause an exception.
+
+* The "shadowing outer local variable" warning is removed.  [Feature #12490]
+
+  You can now write the following without warning:
+
+    user = users.find {|user| cond(user) }
+
+* Print +cause+ of the exception if the exception is not caught and printed
+  its backtraces and error message. [Feature #8257]
+
+* The flip-flop syntax is deprecated. [Feature #5400]
+
+=== Core classes updates (outstanding ones only)
+
+[Array]
+
+  [New methods]
+
+    * Added Array#union and Array#difference instance methods.  [Feature #14097]
+
+  [Modified methods]
+
+    * Array#to_h now accepts a block that maps elements to new key/value pairs.  [Feature #15143]
+
+  [Aliased methods]
+
+    * Array#filter is a new alias for Array#select. [Feature #13784]
+    * Array#filter! is a new alias for Array#select!. [Feature #13784]
+
+[Binding]
+
+  [New methods]
+
+    * Added Binding#source_location.  [Feature #14230]
+
+      This method returns the source location of the binding, a 2-element
+      array of <code>__FILE__</code> and <code>__LINE__</code>.
+      Traditionally, the same information could be retrieved by
+      <code>eval("[__FILE__, __LINE__]", binding)</code>, 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]
+
+  [New methods]
+
+    * Added Dir#each_child and Dir#children instance methods. [Feature #13969]
+
+[Enumerable]
+
+  [New methods]
+
+    * Enumerable#chain returns an enumerator object that iterates over the
+      elements of the receiver and then those of each argument
+      in sequence.  [Feature #15144]
+
+  [Modified methods]
+
+    * Enumerable#to_h now accepts a block that maps elements to new key/value pairs.  [Feature #15143]
+
+  [Aliased methods]
+
+    * Enumerable#filter is a new alias for Enumerable#select. [Feature #13784]
+
+[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.
+
+[Enumerator::Chain]
+
+  * This is a new class to represent a chain of enumerables that works as a
+    single enumerator, generated by such methods as Enumerable#chain and
+    Enumerator#+.
+
+[Enumerator::Lazy]
+
+  [Aliased methods]
+
+    * Enumerator::Lazy#filter is a new alias for
+      Enumerator::Lazy#select.  [Feature #13784]
+
+[Enumerator]
+
+  [New methods]
+
+    * Enumerator#+ returns an enumerator object that iterates over the
+      elements of the receiver and then those of the other operand.  [Feature #15144]
+
+[ENV]
+
+  [Modified methods]
+
+    * ENV.to_h now accepts a block that maps names and values to new keys and values.  [Feature #15143]
+
+[Exception]
+
+  [New options]
+
+    * Exception#full_message takes +:highlight+ and +:order+
+      options. [Bug #14324]
+
+[Hash]
+
+  [Modified methods]
+
+    * Hash#merge, Hash#merge!, and Hash#update now accept multiple
+      arguments.  [Feature #15111]
+
+    * Hash#to_h now accepts a block that maps keys and values to new keys and values.  [Feature #15143]
+
+  [Aliased methods]
+
+    * Hash#filter is a new alias for Hash#select.  [Feature #13784]
+
+    * Hash#filter! is a new alias for Hash#select!. [Feature #13784]
+
+[IO]
+
+  [New options]
+
+    * Added new mode character <code>'x'</code> to open files for exclusive
+      access. [Feature #11258]
+
+[Kernel]
+
+  [Aliased methods]
+
+    * Kernel#then is a new alias for Kernel#yield_self. [Feature #14594]
+
+  [New options]
+
+    * Kernel#Complex, Kernel#Float, Kernel#Integer, and
+      Kernel#Rational take an +:exception+ option to specify the way of
+      error handling.  [Feature #12732]
+
+    * Kernel#system takes an +:exception+ option to raise an exception
+      on failure.  [Feature #14386]
+
+  [Incompatible changes]
+
+    * Kernel#system and Kernel#exec do not close non-standard file descriptors
+      (the default of the +:close_others+ option is changed to +false+,
+      but we still set the +FD_CLOEXEC+ flag on descriptors we
+      create).  [Misc #14907]
+
+[KeyError]
+
+  [New options]
+
+    * KeyError.new accepts +:receiver+ and +:key+ options to set receiver and
+      key in Ruby code.  [Feature #14313]
+
+[Method]
+
+  [New methods]
+
+    * Added Method#<< and Method#>> for Proc composition.  [Feature #6284]
+
+[Module]
+
+  [Modified methods]
+
+    * Module#method_defined?, Module#private_method_defined?, and
+      Module#protected_method_defined? now accept the second
+      parameter as optional. If it is +true+ (the default value), it checks
+      ancestor modules/classes, or checks only the class itself. [Feature #14944]
+
+[NameError]
+
+  [New options]
+
+    * NameError.new accepts a +:receiver+ option to set receiver in Ruby
+      code.  [Feature #14313]
+
+[NilClass]
+
+  [New methods]
+
+    * NilClass#=~ is added for compatibility.  [Feature #15231]
+
+[NoMethodError]
+
+  [New options]
+
+    * NoMethodError.new accepts a +:receiver+ option to set receiver in Ruby
+      code.  [Feature #14313]
+
+[Numeric]
+
+  [Incompatible changes]
+
+    * Numeric#step now returns an instance of the Enumerator::ArithmeticSequence
+      class rather than one of the Enumerator class.
+
+[OpenStruct]
+
+  [Modified methods]
+
+    * OpenStruct#to_h now accepts a block that maps keys and values to new keys and values.  [Feature #15143]
+
+[Proc]
+
+  [New methods]
+
+    * Added Proc#<< and Proc#>> for Proc composition.  [Feature #6284]
+
+  [Incompatible changes]
+
+    * Proc#call doesn't change <code>$SAFE</code> any more.  [Feature #14250]
+
+[Random]
+
+  [New methods]
+
+    * Added Random.bytes.  [Feature #4938]
+
+[Range]
+
+  [New methods]
+
+    * Added Range#% instance method.  [Feature #14697]
+
+  [Incompatible changes]
+
+    * Range#=== now uses the +#cover?+ instead of the +#include?+ method. [Feature #14575]
+    * Range#cover? now accepts a Range object. [Feature #14473]
+    * Range#step now returns an instance of the Enumerator::ArithmeticSequence
+      class rather than one of the Enumerator class.
+
+[Regexp/String]
+
+    * Update Unicode version from 10.0.0 to 11.0.0. [Feature #14802]
+
+      This includes a rewrite of the grapheme cluster (/\X/) algorithm
+      and special-casing for Georgian MTAVRULI on String#downcase.
+
+    * Update Emoji version from 5.0 to 11.0.0 [Feature #14802]
+
+[RubyVM::AbstractSyntaxTree]
+
+  [New methods]
+
+    * RubyVM::AbstractSyntaxTree.parse parses a given string and returns AST
+      nodes. [experimental]
+
+    * RubyVM::AbstractSyntaxTree.parse_file parses a given file and returns AST
+      nodes.  [experimental]
+
+    * RubyVM::AbstractSyntaxTree.of returns AST nodes of the given proc or method.
+      [experimental]
+
+[RubyVM]
+
+  [New methods]
+
+    * RubyVM.resolve_feature_path identifies the file that will be loaded by
+      "require(feature)". [experimental] [Feature #15230]
+
+[String]
+
+  * String#crypt is now deprecated. [Feature #14915]
+
+  [New features]
+
+    * String#split yields each substring to the block if given. [Feature #4780]
+
+[Struct]
+
+  [Modified methods]
+
+    * Struct#to_h now accepts a block that maps keys and values to new keys and values.  [Feature #15143]
+
+  [Aliased method]
+
+    * Struct#filter is a new alias for Struct#select. [Feature #13784]
+
+[Time]
+
+  [New features]
+
+    * Time.new and Time#getlocal accept a timezone object as well as
+      a UTC offset string. Time#+, Time#-, and Time#succ also preserve
+      the timezone.  [Feature #14850]
+
+[TracePoint]
+
+  [New features]
+
+    * "script_compiled" event is supported. [Feature #15287]
+
+  [New methods]
+
+    * TracePoint#parameters [Feature #14694]
+
+    * TracePoint#instruction_sequence [Feature #15287]
+
+    * TracePoint#eval_script [Feature #15287]
+
+  [Modified methods]
+
+    * TracePoint#enable accepts new keywords "target:" and "target_line:".
+      [Feature #15289]
+
+=== Stdlib updates (outstanding ones only)
+
+[BigDecimal]
+
+  Update to version 1.4.0.  This version includes several compatibility
+  issues, see Compatibility issues section below for details.
+
+  [Modified methods]
+
+  * BigDecimal() accepts the new keyword "exception:" similar to Float().
+
+  [Note for the differences among recent versions]
+
+  You should want to know the differences among recent versions of bigdecimal.
+  Please select the suitable version of bigdecimal according to the following
+  information.
+
+  * 1.3.5 has BigDecimal.new without "exception:" keyword.  You can see the
+    deprecation warning of BigDecimal.new when you specify "-w" option.
+    BigDecimal(), BigDecimal.new, and Object#to_d methods are the same.
+
+  * 1.4.0 has BigDecimal.new with "exception:" keyword.  You always see the
+    deprecation warning of BigDecimal.new.  Object#to_d method is different
+    from BigDecimal() and BigDecimal.new.
+
+  * 2.0.0 will be released soon after releasing Ruby 2.6.0.  This version
+    will not have the BigDecimal.new method.
+
+[Bundler]
+
+  * Add Bundler to Standard Library. [Feature #12733]
+
+  * Use 1.17.2, the latest stable version.
+
+[Coverage]
+
+  A oneshot_lines mode is added.  [Feature #15022]
+
+  This mode checks "whether each line was executed at least once or not",
+  instead of "how many times each line was executed".
+  A hook for each line is fired at most once, and after it is fired
+  the hook flag is removed, i.e., it runs with zero overhead.
+
+  [New options]
+
+    * Add +:oneshot_lines+ keyword argument to Coverage.start.
+
+    * Add +:stop+ and +:clear+ keyword arguments to Coverage.result.
+      If +clear+ is true, it clears the counters to zero.
+      If +stop+ is true, it disables coverage measurement.
+
+  [New methods]
+
+    * Coverage.line_stub, which is a simple helper function that
+      creates the "stub" of line coverage from a given source code.
+
+[CSV]
+
+  * Upgrade to 3.0.2. This includes performance improvements especially
+    for writing. Writing is about 2 times faster.
+    See https://github.com/ruby/csv/blob/master/NEWS.md.
+
+[ERB]
+
+  [New options]
+
+    * Add +:trim_mode+ and +:eoutvar+ keyword arguments to ERB.new.
+      Now non-keyword arguments other than the first one are softly deprecated
+      and will be removed when Ruby 2.5 becomes EOL. [Feature #14256]
+
+    * erb command's <tt>-S</tt> option is deprecated, and will be removed
+      in the next version.
+
+[FileUtils]
+
+  [New methods]
+
+    * FileUtils#cp_lr.  [Feature #4189]
+
+[Matrix]
+
+  [New methods]
+
+    * Matrix#antisymmetric?, Matrix#skew_symmetric?
+
+    * Matrix#map!, Matrix#collect! [Feature #14151]
+
+    * Matrix#[]=
+
+    * Vector#map!, Vector#collect!
+
+    * Vector#[]=
+
+[Net]
+
+  [New options]
+
+    * Add +:write_timeout+ keyword argument to Net::HTTP.new. [Feature #13396]
+
+  [New methods]
+
+    * Add Net::HTTP#write_timeout and Net::HTTP#write_timeout=.  [Feature #13396]
+
+  [New constant]
+
+    * Add Net::HTTPClientException to deprecate Net::HTTPServerException,
+      whose name is misleading.  [Bug #14688]
+
+[NKF]
+
+  * Upgrade to nkf v2.1.5
+
+[Psych]
+
+  * Upgrade to Psych 3.1.0
+
+[RDoc]
+
+  * Become about 2 times faster.
+
+  * Use SOURCE_DATE_EPOCH to generate files.
+
+  * Fix method line number that slipped off.
+
+  * Enable <code>--width</code>, <code>--exclude</code>,
+    and <code>--line-numbers</code> that were ignored.
+
+  * Add support for blockquote by ">>>" in default markup notation.
+
+  * Add support for "Raises" lines in TomDoc notation.
+
+  * Fix syntax error output.
+
+  * Fix many parsing bugs.
+
+[REXML]
+
+  * Upgrade to REXML 3.1.9.
+    See https://github.com/ruby/rexml/blob/master/NEWS.md.
+
+  [Improved some XPath implementations]
+
+    * <code>concat()</code> function: Stringify all arguments before concatenating.
+
+    * <code>string()</code> function: Support context node.
+
+    * <code>string()</code> function: Support processing instruction node.
+
+    * Support <code>"*:#{ELEMENT_NAME}"</code> syntax in XPath 2.0.
+
+  [Fixed some XPath implementations]
+
+    * <code>"//#{ELEMENT_NAME}[#{POSITION}]"</code> case
+
+    * <code>string()</code> function: Fix <code>function(document)</code>
+      returns nodes that are out of root elements.
+
+    * <code>"/ #{ELEMENT_NAME} "</code> case
+
+    * <code>"/ #{ELEMENT_NAME} [ #{PREDICATE} ]"</code> case
+
+    * <code>"/ #{AXIS}::#{ELEMENT_NAME}"</code> case
+
+    * <code>"#{N}-#{M}"</code> case: One or more white spaces were required
+      before <code>"-"</code>
+
+    * <code>"/child::node()"</code> case
+
+    * <code>"#{FUNCTION}()/#{PATH}"</code> case
+
+    * <code>"@#{ATTRIBUTE}/parent::"</code> case
+
+    * <code>"name(#{NODE_SET})"</code> case
+
+[RSS]
+
+  [New options]
+
+    * RSS::Parser.parse now accepts options as Hash. +:validate+ ,
+      +:ignore_unknown_element+ , +:parser_class+ options are available.
+
+[RubyGems]
+
+  * Upgrade to RubyGems 3.0.1
+
+  * https://blog.rubygems.org/2018/12/19/3.0.0-released.html
+
+  * https://blog.rubygems.org/2018/12/23/3.0.1-released.html
+
+[Set]
+
+  [Aliased methods]
+
+    * Set#filter! is a new alias for Set#select!.  [Feature #13784]
+
+[URI]
+
+  [New constant]
+
+    * Add URI::File to handle the file URI scheme.  [Feature #14035]
+
+=== Compatibility issues (excluding feature bug fixes)
+
+[Dir]
+
+  * Dir.glob with <code>'\0'</code>-separated pattern list will be deprecated,
+    and is now warned.  [Feature #14643]
+
+[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 <code>'|'</code>. [Feature #14245]
+
+[Object]
+
+  * Object#=~ is deprecated.  [Feature #15231]
+
+=== Stdlib compatibility issues (excluding feature bug fixes)
+
+* These standard libraries have been promoted to default gems.
+
+  * e2mmap
+  * forwardable
+  * irb
+  * logger
+  * matrix
+  * mutex_m
+  * ostruct
+  * prime
+  * rexml
+  * rss
+  * shell
+  * sync
+  * thwait
+  * tracer
+
+[BigDecimal]
+
+  * The following methods are removed.
+
+    * BigDecimal.allocate
+    * BigDecimal.ver
+
+  * Every BigDecimal object is frozen. [Feature #13984]
+
+  * BigDecimal() parses the given string similar to Float().
+
+  * String#to_d parses the receiver string similar to String#to_f.
+
+  * BigDecimal.new will be removed in version 2.0.
+
+[Pathname]
+
+  * Pathname#read, Pathname#binread, Pathname#write, Pathname#binwrite,
+    Pathname#each_line and Pathname#readlines do not invoke external
+    commands even if the path starts with the pipe character <code>'|'</code>.
+    This follows [Feature #14245].
+
+=== C API updates
+
+=== Implementation improvements
+
+* Speedup Proc#call because we don't need to care about <code>$SAFE</code>
+  any more. [Feature #14318]
+
+  With +lc_fizzbuzz+ benchmark which uses Proc#call many times we can
+  measure x1.4 improvements.  [Bug #10212]
+
+* 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.
+
+* Introduce an initial implementation of a JIT (Just-in-time) compiler. [Feature #14235] [experimental]
+
+  * <tt>--jit</tt> command line option is added to enable JIT. <tt>--jit-verbose=1</tt>
+    is good for inspection.  See <tt>ruby --help</tt> for others.
+  * To generate machine code, this JIT compiler uses the C compiler used for building
+    the interpreter. Currently GCC, Clang, and Microsoft Visual C++ are supported for it.
+  * <tt>--disable-mjit-support</tt> option is added to configure. This is added for JIT debugging,
+    but if you get an error on building a header file for JIT, you can use this option to skip
+    building it as a workaround.
+  * rb_waitpid reimplemented on Unix-like platforms to maintain
+    compatibility with processes created for JIT [Bug #14867]
+
+* 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]
+
+* Transient Heap (theap) is supported. [Bug #14858] [Feature #14989]
+
+  theap is a managed heap for short-living memory objects. For example,
+  making a small and short-living Hash object is x2 faster. With rdoc benchmark,
+  we measured 6-7% performance improvement.
+
+* Native implementations (arm32, arm64, ppc64le, win32, win64, x86, amd64) of
+  coroutines to improve performance of Fiber significantly. [Feature #14739]
+
+=== 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
+    * libruby.2.6.dylib -> libruby.2.6.0.dylib
+    * libruby.dylib -> libruby.2.6.0.dylib
+
+  [After]
+    * libruby.2.6.dylib
+    * libruby.dylib -> libruby.2.6.dylib
+
+* Extracted misc/*.el files to https://github.com/ruby/elisp

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]