ruby-changes:49371
From: kazu <ko1@a...>
Date: Tue, 26 Dec 2017 20:35:54 +0900 (JST)
Subject: [ruby-changes:49371] kazu:r61486 (trunk): Move from NEWS to doc/NEWS-2.5.0
kazu 2017-12-26 20:35:48 +0900 (Tue, 26 Dec 2017) New Revision: 61486 https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=61486 Log: Move from NEWS to doc/NEWS-2.5.0 Added files: trunk/doc/NEWS-2.5.0 Removed files: trunk/NEWS Index: NEWS =================================================================== --- NEWS (revision 61485) +++ NEWS (nonexistent) @@ -1,573 +0,0 @@ https://github.com/ruby/ruby/blob/trunk/NEWS#L0 -# -*- rdoc -*- - -= NEWS for Ruby 2.5.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.4.0 release - -=== Language changes - -* Top-level constant look-up is removed. [Feature #11547] - -* rescue/else/ensure are allowed inside do/end blocks. [Feature #12906] - -* refinements take place in string interpolations. [Feature #13812] - -=== Core classes updates (outstanding ones only) - -* Array - - * New methods: - - * Array#append [Feature #12746] - * Array#prepend [Feature #12746] - -* Data - - * Is deprecated. It was a base class for C extensions, and it's not - necessary to expose in Ruby level. [Feature #3072] - -* Exception - - * New methods: - - * Exception#full_message to retrieve a String expression of an exception, - formatted in the same way in which Ruby prints out an uncaught exception. - [Feature #14141] [experimental] - -* Dir - - * Dir.glob provides new optional keyword argument, :base. - [Feature #13056] - * Dir.chdir (without block arg), Dir.open, Dir.new, Dir.mkdir, Dir.rmdir, - Dir.empty? releases GVL - - * New methods: - - * Dir.children [Feature #11302] - * Dir.each_child [Feature #11302] - -* Enumerable - - * Enumerable#{any?,all?,none?,one?} accept a pattern argument [Feature #11286] - -* File - - * File.open accepts :newline option to imply text mode. [Bug #13350] - * File#path raises an IOError for files opened with - File::Constants::TMPFILE option. [Feature #13568] - * File.stat, File.exist?, and other rb_stat()-using methods release GVL - [Bug #13941] - * File.rename releases GVL [Feature #13951] - * File::Stat#{atime,mtime,ctime} support fractional second timestamps on - Windows 8 and later [Feature #13726] - * File::Stat#ino and File.indentical? support ReFS 128bit ino on Windows 8.1 - and later [Feature #13731] - * File.readable?, File.readable_real?, File.writable?, File.writable_real?, - File.executable?, File.executable_real?, File.mkfifo, File.readlink, - File.truncate, File#truncate, File.chmod, File.lchmod, File.chown, - File.lchown, File.unlink, File.utime, File.lstat release GVL - - * New method: - - * File.lutime [Feature #4052] - -* Hash - - * New methods: - - * Hash#transform_keys [Feature #13583] - * Hash#transform_keys! [Feature #13583] - * Hash#slice [Feature #8499] - -* IO - - * IO#copy_stream tries copy offload with copy_file_range(2) [Feature #13867] - - * New methods: - - * IO#pread [Feature #4532] - * IO#pwrite [Feature #4532] - * IO#write accepts multiple arguments [Feature #9323] - -* IOError - - * IO#close might raise an error with message "stream closed", - but it is refined to "stream closed in another thread". The new message - is more clear for user. - [Bug #13405] - -* Integer - - * Integer#step no longer hides errors from coerce method when - given a step value which cannot be compared with #> to 0. - [Feature #7688] - * Integer#{round,floor,ceil,truncate} always return an Integer. - [Bug #13420] - * Integer#pow accepts modulo argument for calculating modular - exponentiation. [Feature #12508] [Feature #11003] - - * New methods: - - * Integer#allbits?, Integer#anybits?, Integer#nobits? [Feature #12753] - * Integer.sqrt [Feature #13219] - -* Kernel - - * Kernel#yield_self [Feature #6721] - * Kernel#pp [Feature #14123] - * Kernel#warn(..., uplevel:n) [Feature #12882] - -* Method - - * New methods: - - * Method#=== that invokes Method#call, as same as Proc#=== [Feature #14142] - -* Module - - * Module#{attr,attr_accessor,attr_reader,attr_writer} become public [Feature #14132] - * Module#{define_method,alias_method,undef_method,remove_method} become public [Feature #14133] - -* Numeric - - * Numerical comparison operators (<,<=,>=,>) no longer hide exceptions - from #coerce method internally. Return nil in #coerce if the coercion is - impossible. [Feature #7688] - -* Process - - * Precision of Process.times is improved if getrusage(2) exists. [Feature #11952] - - * New method: - - * Process.last_status as an alias of $? [Feature #14043] - -* Range - * Range#initialize no longer hides exceptions when comparing begin and - end with #<=> and raise a "bad value for range" ArgumentError - but instead lets the exception from the #<=> call go through. - [Feature #7688] - -* Regexp - - * Update to Onigmo 6.1.3-669ac9997619954c298da971fcfacccf36909d05. - - * Support absence operator https://github.com/k-takata/Onigmo/issues/82 - - * Support new 5 emoji-related Unicode character properties - -* RubyVM::InstructionSequence - - * New method: - - * RubyVM::InstructionSequence#each_child - * RubyVM::InstructionSequence#trace_points - -* String - - * String#-@ deduplicates unfrozen strings. Already-frozen - strings remain unchanged for compatibility. [Feature #13077] - * -"literal" (String#-@) optimized to return the same object - (same as "literal".freeze in Ruby 2.1+) [Feature #13295] - * String#{casecmp,casecmp?} return nil for non-string arguments - instead of raising a TypeError. [Bug #13312] - * String#start_with? accepts a regexp [Feature #13712] - - * New methods: - - * String#delete_prefix, String#delete_prefix! [Feature #12694] - * String#delete_suffix, String#delete_suffix! [Feature #13665] - * String#each_grapheme_cluster and String#grapheme_clusters to - enumerate grapheme clusters [Feature #13780] - * String#undump to unescape String#dump'ed string [Feature #12275] - -* Struct - - * Struct.new takes `keyword_init: true` option to initialize members - with keyword arguments. [Feature #11925] - -* Regexp/String: Update Unicode version from 9.0.0 to 10.0.0 [Feature #13685] - -* Thread - - * Description set by Thread#name= is now visible on Windows 10. - - * New method: - * Thread#fetch [Feature #13009] - - * The default of Thread.report_on_exception is now true, - showing unhandled exceptions terminating threads on $stderr. - [Feature #14143] - -* Time - - * Time#at receives 3rd argument which specifies the unit of 2nd argument. - [Feature #13919] - -* KeyError - - * New methods: - - * KeyError#receiver [Feature #12063] - * KeyError#key [Feature #12063] - -* FrozenError - - * New exception class. [Feature #13224] - -=== Stdlib updates (outstanding ones only) - -* BigDecimal - - * Update to BigDecimal 1.3.4 - - * The following features are added: - - * BigDecimal::VERSION - - * The following features have been deprecated, - and are planned to be removed in the version 1.4.0: - - * BigDecimal.new - - * BigDecimal.ver - - * BigDecimal#clone and #dup now do not make a new instance, - but returns the receiver itself. - -* Coverage - - * Support branch coverage and method coverage measurement. [Feature #13901] - Branch coverage tells you which branches are executed, and which not. - Method coverage tells you which methods are invoked, and which not. - By running a test suite with this new feature, you can know which branches - and methods are executed by a test, and evaluate total coverage of a test - suite more strictly. - - You can specify the measuring target by an option to `Coverage.start`: - - Coverage.start(lines: true, branches: true, methods: true) - - After some Ruby files are loaded, you can use `Coverage.result` to get - the coverage result: - - Coverage.result - #=> { "/path/to/file.rb"=> - # { :lines => [1, 2, 0, nil, ...], - # :branches => - # { [:if, 0, 2, 1, 6, 4] => - # { [:then, 1, 3, 2, 3, 8] => 0, - # [:else, 2, 5, 2, 5, 8] => 2 - # } - # }, - # :methods => { - # [Object, :foo, 1, 0, 7, 3] => 2 - # } - # } - # } - - The result type of line coverage is not changed; it is just an array that - contains numbers, which means the count that each line was executed, - or `nil`s, which means that the line is not relevant. - - The result type of branch coverage is: - - { (jump base) => { (jump target) => (counter) } } - - where jump base and targets have the format - - [type, unique-id, start lineno, start column, end lineno, end column] - - For example, `[:if, 0, 2, 1, 6, 4]` reads an `if` statement that ranges from - line 2 and column 1, to line 6 and column 4. `[:then, 1, 3, 2, 3, 8]` reads - a `then` clause that ranges from line 3 and column 2, to line 3 and column 8. - Note that lineno starts from 1, and that columnno starts from 0. So, the - above example shows a branch from the `if` to the `then` was never executed, - and a branch from the `if` to the `else` was executed twice. - - The result type of method coverage is: - - { (method key) => (counter) } - - where method key has the format - - [class, method-name, start lineno, start column, end lineno, end column] - - For example, `[Object, :foo, 1, 0, 7, 3]` reads `Object#foo` that ranges from - line 1 and column 0, to line 7 and column 3. The above example shows this - `Object#foo` was invoked twice. - - Note: To keep compatibility, passing no option to `Coverage.start` will measure - only line coverage, and `Coverage.result` will return the old format: - - Coverage.result - #=> { "/path/to/file.rb"=> [1, 2, 0, nil, ...] } - -* DRb - - * ACL::ACLEntry.new no longer suppresses IPAddr::InvalidPrefixError. - -* ERB - - * Add ERB#result_with_hash to render a template with local variables passed - with a Hash object. [Feature #8631] - - * Default template file encoding is changed from ASCII-8BIT to UTF-8 in erb - command. [Bug #14095] - - * Carriage returns are changed to be trimmed properly if trim_mode is specified - and used. Duplicated newlines will be removed on Windows. [Bug #5339] [Bug #11464] - -* IPAddr - - * IPAddr no longer accepts invalid address mask. [Bug #13399] - * IPAddr#{ipv4_compat,ipv4_compat?} are marked for deprecation. [Bug #13769] - - * New methods: - - * IPAddr#prefix - * IPAddr#loopback? - * IPAddr#private? [Feature #11666] - * IPAddr#link_local? [Feature #10912] - - -* IRB - - * Print backtrace and error message in reverse order [Feature #8661] [experimental] - * `binding.irb` automatically requires irb and runs [Bug #13099] [experimental] - * `binding.irb` on its start shows source around the line where it was called - [Feature #14124] - -* Matrix - - * New methods: - - * Matrix.combine and Matrix#combine [Feature #10903] - * Matrix#{hadamard_product,entrywise_product} - -* Net::HTTP - - * Net::HTTP.new supports no_proxy parameter [Feature #11195] - * Net::HTTP#{min_version,max_version}, [Feature #9450] - * Add more HTTP status classes - * Net::HTTP::STATUS_CODES is added as HTTP Status Code Repository [Misc #12935] - * Net::HTTP#{proxy_user,proxy_pass} reflect http_proxy environment variable - if the system's environment variable is multiuser safe. [Bug #12921] - -* open-uri - * URI.open method defined as an alias to open-uri's Kernel.open. - open-uri's Kernel.open will be deprecated in future. - -* OpenSSL - - * Updated Ruby/OpenSSL from version 2.0 to 2.1. Changes are noted in - "Version 2.1.0" section in ext/openssl/History.md. - -* Pathname - - * New method: - - * Pathname#glob [Feature #7360] - -* Psych - - * Update to Psych 3.0.2. - - * Convert fallback option to a keyword argument - https://github.com/ruby/psych/pull/342 - * Add :symbolize_names option to Psych.load, Psych.safe_load like JSON.parse - https://github.com/ruby/psych/pull/333, https://github.com/ruby/psych/pull/337 - * Add Psych::Handler#event_location - https://github.com/ruby/psych/pull/326 - * Make frozen string literal = true - https://github.com/ruby/psych/pull/320 - * Preserve time zone offset when deserializing times - https://github.com/ruby/psych/pull/316 - * Remove deprecated method aliases for syck gem - https://github.com/ruby/psych/pull/312 - -* RbConfig - - * RbConfig::LIMITS is added to provide the limits of C types. - This is available when rbconfig/sizeof is loaded. - -* Ripper - - * Ripper::EXPR_BEG and so on for Ripper#state. - - * New method: - - * Ripper#state to tell the state of scanner. [Feature #13686] - -* RDoc - - * Update to RDoc 6.0.1. - - * Replace IRB based lexer with Ripper. - * https://github.com/ruby/rdoc/pull/512 - * This much improves the speed of generating documents. - * It also facilitates supporting new syntax in the future. - * Support many new syntaxes of Ruby from the past few years. - * Use "frozen_string_literal: true". - This reduces document generation time by 5%. - * Support did_you_mean. - -* Rubygems - - * Update to Rubygems 2.7.3. - * http://blog.rubygems.org/2017/11/28/2.7.3-released.html - * http://blog.rubygems.org/2017/11/08/2.7.2-released.html - * http://blog.rubygems.org/2017/11/03/2.7.1-released.html - * http://blog.rubygems.org/2017/11/01/2.7.0-released.html - * http://blog.rubygems.org/2017/10/09/2.6.14-released.html - * http://blog.rubygems.org/2017/08/27/2.6.13-released.html - -* SecureRandom - - * New method: - - * SecureRandom.alphanumeric - -* Set - - * New methods: - - * Set#to_s as alias to #inspect [Feature #13676] - * Set#=== as alias to #include? [Feature #13801] - * Set#reset [Feature #6589] - -* StringIO - - * StringIO#write accepts multiple arguments - -* StringScanner - - * New methods: - - * StringScanner#size, StringScanner#captures, StringScanner#values_at [Feature #836] - -* URI - - * Relative path operations no longer collapse consecutive slashes to a single slash. [Bug #8352] - -* WEBrick - - * Add Server Name Indication (SNI) support [Feature #13729] - * support Proc objects as body responses [Feature #855] - * released as a RubyGem [Feature #13173] - * avoid unintended behavior from Kernel#open [Misc #14216] - -* Zlib - - * Zlib::GzipWriter#write accepts multiple arguments - -=== Compatibility issues (excluding feature bug fixes) - -* Socket - - * BasicSocket#read_nonblock and BasicSocket#write_nonblock no - longer set the O_NONBLOCK file description flag as side effect - (on Linux only) [Feature #13362] - -* Random - - * Random.raw_seed renamed to become Random.urandom. It is now - applicable to non-seeding purposes due to [Bug #9569]. - -* Socket - - * Socket::Ifaddr#vhid is added [Feature #13803] - -* ConditionVariable, Queue and SizedQueue reimplemented for speed. - They no longer subclass Struct. [Feature #13552] - -=== Stdlib compatibility issues (excluding feature bug fixes) - -* Gemification - - * Promote following standard libraries to default gems. - * cmath - * csv - * date - * dbm - * etc - * fcntl - * fiddle - * fileutils - * gdbm - * ipaddr - * scanf - * sdbm - * stringio - * strscan - * webrick - * zlib - -* Logger - - * Logger.new("| command") had been working to open a command - unintentionally. It was prohibited, and now Logger#initialize - treats a String argument only as a filename, as its specification. - [Bug #14212] - -* Net::HTTP - - * Net::HTTP#start now passes :ENV to p_addr by default. [Bug #13351] - To avoid this, pass nil explicitly. - -* mathn.rb - - * Removed from stdlib. [Feature #10169] - -* Rubygems - - * Removed "ubygems.rb" file from stdlib. It's needless since Ruby 1.9. - -=== C API updates - -=== Supported platform changes - -* Drop support of NaCl platform - - * https://bugs.chromium.org/p/chromium/issues/detail?id=239656#c160 - -=== Implementation improvements - -* (This might not be a "user visible feature change" but) Hash class's - hash function is now SipHash13. [Feature #13017] - -* SecureRandom now prefers OS-provided sources than OpenSSL. [Bug #9569] - -* Mutex rewritten to be smaller and faster [Feature #13517] - -* Performance of block passing using block parameters is improved by - lazy Proc allocation [Feature #14045] - -* Dynamic instrumentation for TracePoint hooks instead of using "trace" - instruction to avoid overhead [Feature #14104] - -* ERB now generates code from a template which runs 2 times faster than Ruby 2.4 - -=== Miscellaneous changes - -* Print backtrace and error message in reverse order if STDERR is unchanged and a tty. - [Feature #8661] [experimental] - -* Print error message in bold/underlined text if STDERR is unchanged and a tty. - [Feature #14140] [experimental] - -* configure option --with-ext now mandates its arguments. So for - instance if you run ./configure --with-ext=openssl,+ then the - openssl library is guaranteed compiled, otherwise the build fails - abnormally. - - Note however to always add the ",+" at the end of the argument. - Otherwise nothing but openssl are built. [Feature #13302] Property changes on: NEWS ___________________________________________________________________ Deleted: svn:eol-style ## -1 +0,0 ## -LF \ No newline at end of property Index: doc/NEWS-2.5.0 =================================================================== --- doc/NEWS-2.5.0 (nonexistent) +++ doc/NEWS-2.5.0 (revision 61486) @@ -0,0 +1,573 @@ https://github.com/ruby/ruby/blob/trunk/doc/NEWS-2.5.0#L1 +# -*- rdoc -*- + += NEWS for Ruby 2.5.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.4.0 release + +=== Language changes + +* Top-level constant look-up is removed. [Feature #11547] + +* rescue/else/ensure are allowed inside do/end blocks. [Feature #12906] + +* refinements take place in string interpolations. [Feature #13812] + +=== Core classes updates (outstanding ones only) + +* Array + + * New methods: + + * Array#append [Feature #12746] + * Array#prepend [Feature #12746] + +* Data + + * Is deprecated. It was a base class for C extensions, and it's not + necessary to expose in Ruby level. [Feature #3072] + +* Exception + + * New methods: + + * Exception#full_message to retrieve a String expression of an exception, + formatted in the same way in which Ruby prints out an uncaught exception. + [Feature #14141] [experimental] + +* Dir + + * Dir.glob provides new optional keyword argument, :base. + [Feature #13056] + * Dir.chdir (without block arg), Dir.open, Dir.new, Dir.mkdir, Dir.rmdir, + Dir.empty? releases GVL + + * New methods: + + * Dir.children [Feature #11302] + * Dir.each_child [Feature #11302] + +* Enumerable + + * Enumerable#{any?,all?,none?,one?} accept a pattern argument [Feature #11286] + +* File + + * File.open accepts :newline option to imply text mode. [Bug #13350] + * File#path raises an IOError for files opened with + File::Constants::TMPFILE option. [Feature #13568] + * File.stat, File.exist?, and other rb_stat()-using methods release GVL + [Bug #13941] + * File.rename releases GVL [Feature #13951] + * File::Stat#{ati (... truncated) -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/