mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
8f7884761e
Thanks for the patch gareth (Gareth Adams). [Bug #15933] ------- Combines two small, but very related changes 1: Treat HTTPS the same as HTTP Previously, OpenURI followed guidance in RFC2616/3.7.1: > When no explicit charset parameter is provided by the sender, media > subtypes of the "text" type are defined to have a default charset > value of "ISO-8859-1" when received via HTTP. However this RFC was written before TLS was established and OpenURI was never updated to treat HTTPS traffic the same way. So, HTTPS documents received a different default to HTTP documents. This commit removes the scheme check so that all text/* documents processed by OpenURI are treated the same way. In theory this processing gets applied to FTP URIs too, but there's no mechanism in OpenURI for FTP documents to have Content-Type metadata appended to them, so this ends up being a no-op. 2: Change default charset for text/* to UTF-8 Replaces the default ISO-8859-1 charset previously defined in RFC2616 (now obsoleted) with a UTF-8 charset as defined in RFC6838. Fixes: https://bugs.ruby-lang.org/issues/15933
284 lines
7.1 KiB
Text
284 lines
7.1 KiB
Text
# -*- 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 were prohibited in 2.6.0,
|
|
but are 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
|
|
|
|
* Pipeline operator is experimentally added.
|
|
|
|
This code equals to the next code.
|
|
|
|
foo()
|
|
|> bar 1, 2
|
|
|> display
|
|
|
|
foo()
|
|
.bar(1, 2)
|
|
.display
|
|
|
|
* The flip-flop syntax deprecation is reverted. [Feature #5400]
|
|
|
|
=== Core classes updates (outstanding ones only)
|
|
|
|
Complex::
|
|
|
|
New method::
|
|
|
|
* Added Complex#<=>. So 0 <=> 0i will not raise NoMethodError.
|
|
[Bug #15857]
|
|
|
|
Encoding::
|
|
|
|
* Added new encoding CESU-8 [Feature #15931]
|
|
|
|
Enumerable::
|
|
|
|
New methods::
|
|
|
|
* Added Enumerable#filter_map. [Feature #15323]
|
|
|
|
* 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]
|
|
|
|
FrozenError::
|
|
|
|
New method::
|
|
|
|
* Added FrozenError#receiver to return the frozen object that
|
|
modification was attempted on. To set this object when raising
|
|
FrozenError in Ruby code, pass it as the second argument to
|
|
FrozenError.new.
|
|
|
|
GC::
|
|
|
|
New method::
|
|
|
|
* Added 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
|
|
|
|
IO::
|
|
|
|
New method::
|
|
|
|
* Added IO#set_encoding_by_bom to check the BOM and set the external
|
|
encoding. [Bug #15210]
|
|
|
|
Integer::
|
|
|
|
Modified method::
|
|
|
|
* Integer#[] now supports range operation. [Feature #8842]
|
|
|
|
0b01001101[2, 4] #=> 0b0011
|
|
0b01001100[2..5] #=> 0b0011
|
|
0b01001100[2...6] #=> 0b0011
|
|
^^^^
|
|
|
|
Module::
|
|
|
|
New method::
|
|
|
|
* Added Module#const_source_location to retrieve the location where a
|
|
constant is defined. [Feature #10771]
|
|
|
|
Modified method::
|
|
|
|
* Module#autoload? now takes an +inherit+ optional argument, like as
|
|
Module#const_defined?. [Feature #15777]
|
|
|
|
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]
|
|
|
|
RubyVM::
|
|
|
|
Removed method::
|
|
|
|
* RubyVM.resolve_feature_path moved to
|
|
$LOAD_PATH.resolve_feature_path. [Feature #15903] [Feature #15230]
|
|
|
|
Time::
|
|
|
|
New methods::
|
|
|
|
* Added Time#ceil method. [Feature #15772]
|
|
|
|
* Added Time#floor method. [Feature #15653]
|
|
|
|
$LOAD_PATH::
|
|
|
|
New method::
|
|
|
|
* Added $LOAD_PATH.resolve_feature_path. [Feature #15903] [Feature #15230]
|
|
|
|
=== Stdlib updates (outstanding ones only)
|
|
|
|
Bundler::
|
|
|
|
* Upgrade to Bundler 2.1.0.pre.1
|
|
Bundled from https://github.com/bundler/bundler/commit/a53709556b95a914e874b22ed2116a46b0528852
|
|
|
|
CGI::
|
|
|
|
* CGI.escapeHTML becomes 2~5x faster when there's at least one escaped character.
|
|
|
|
CSV::
|
|
|
|
* Upgrade to 3.0.9.
|
|
See https://github.com/ruby/csv/blob/master/NEWS.md.
|
|
|
|
Date::
|
|
|
|
* Date.jisx0301, Date#jisx0301, and Date.parse support the new Japanese
|
|
era. [Feature #15742]
|
|
|
|
Delegator::
|
|
|
|
* Object#DelegateClass accepts a block and module_evals it in the context
|
|
of the returned class, similar to Class.new and Struct.new.
|
|
|
|
ERB::
|
|
|
|
* Prohibit marshaling ERB instance.
|
|
|
|
IRB::
|
|
|
|
* Introduce syntax highlight inspired by pry.gem to Binding#irb source lines,
|
|
REPL input, and inspect output of some core-class objects.
|
|
|
|
Net::IMAP::
|
|
|
|
* Add Server Name Indication (SNI) support. [Feature #15594]
|
|
|
|
open-uri::
|
|
|
|
* Warn open-uri's "open" method at Kernel.
|
|
Use URI.open instead. [Misc #15893]
|
|
|
|
* The default charset of text/* media type is UTF-8 instead of ISO-8859-1.
|
|
[Bug #15933]
|
|
|
|
Pathname:
|
|
|
|
* Delegates 3 arguments from Pathname.glob to Dir.glob to
|
|
accept base: keyword.
|
|
|
|
Racc::
|
|
|
|
* Merge 1.4.15 from upstream repository and added cli of racc.
|
|
|
|
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
|
|
|
|
Thread::
|
|
|
|
* VM stack memory allocation is now combined with native thread stack,
|
|
improving thread allocation performance and reducing allocation related
|
|
failures. ~10x performance improvement was measured in micro-benchmarks.
|
|
|
|
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
|
|
|
|
=== Miscellaneous changes
|
|
|
|
* Support for IA64 architecture has been removed. Hardware for testing was
|
|
difficult to find, native fiber code is difficult to implement, and it added
|
|
non-trivial complexity to the interpreter. [Feature #15894]
|
|
|
|
* 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.
|