ÿØÿà JFIF ÿÛ „ ( %!1!%)+//.383,7(-.+
-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ ¥2" ÿÄ ÿÄ J ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ ÿÄ * !1AQa‘"2q3±ð#b¡ÿÚ ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁTÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßwpŽF|È¥ù®häðÍѶ¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
?>
.........................................
.............................................................................
ÿØÿà JFIF ÿÛ „
(
%!1!%)+//.383,7(-.+
-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ ¥2" ÿÄ
ÿÄ J ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ
ÿÄ * !1AQa‘"2q3±ð#b¡ÿÚ
? ¼QxJQaÍuò¸Zö
Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁTÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßwpŽF|È¥ù®häðÍѶ¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
?>
.........................................
.............................................................................
????????????????????????????????????
????????????????????????????????????
ÿØÿà JFIF ÿÛ „ ( %!1!%)+//.383,7(-.+
-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ ¥2" ÿÄ ÿÄ J ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ ÿÄ * !1AQa‘"2q3±ð#b¡ÿÚ ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁTÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßwpŽF|È¥ù®häðÍѶ¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
?>
.........................................
.............................................................................
ÿØÿà JFIF ÿÛ „
(
%!1!%)+//.383,7(-.+
-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ ¥2" ÿÄ
ÿÄ J ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ
ÿÄ * !1AQa‘"2q3±ð#b¡ÿÚ
? ¼QxJQaÍuò¸Zö
Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁTÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßwpŽF|È¥ù®häðÍѶ¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
?>
.........................................
.............................................................................
????????????????????????????????????
????????????????????????????????????
U:RDoc::TopLevel[ i I"NEWS/NEWS-3.1.0.md:ETcRDoc::Parser::Markdowno:RDoc::Markup::Document:@parts[7S:RDoc::Markup::Heading:
leveli: textI"NEWS for Ruby 3.1.0;To:RDoc::Markup::Paragraph;[I"mThis document is a list of user-visible feature changes
since the *3.0.0* release, except for bug fixes.;To;;[I"FNote that each entry is kept to a minimum, see links for details.;TS; ;
i;I"Language changes;To:RDoc::Markup::List:
@type:BULLET:@items[o:RDoc::Markup::ListItem:@label0;[o;;[I"The block argument can now be anonymous if the block will
only be passed to another method. [{Feature #11256}[https://bugs.ruby-lang.org/issues/11256]];Fo:RDoc::Markup::Verbatim;[I"def foo(&)
bar(&)
end
;F:@format: rubyo;;0;[o;;[I"fPin operator now takes an expression. [{Feature #17411}[https://bugs.ruby-lang.org/issues/17411]];Fo;;[I"gPrime.each_cons(2).lazy.find_all{_1 in [n, ^(n + 2)]}.take(3).to_a
#=> [[3, 5], [5, 7], [11, 13]]
;F;;o;;0;[o;;[I"|Pin operator now supports instance, class, and global variables.
[{Feature #17724}[https://bugs.ruby-lang.org/issues/17724]];Fo;;[I"D@n = 5
Prime.each_cons(2).lazy.find{_1 in [n, ^@n]}
#=> [3, 5]
;F;;o;;0;[o;;[I"9One-line pattern matching is no longer experimental.;Fo;;0;[o;;[I"yParentheses can be omitted in one-line pattern matching.
[{Feature #16182}[https://bugs.ruby-lang.org/issues/16182]];Fo;;[I"1[0, 1] => _, x
{y: 2} => y:
x #=> 1
y #=> 2
;F;;o;;0;[o;;[I"Multiple assignment evaluation order has been made consistent with
single assignment evaluation order. With single assignment, Ruby
uses a left-to-right evaluation order. With this code:;Fo;;[I"foo[0] = bar
;F;;o;;[I",The following evaluation order is used:;Fo;
;:NUMBER;[o;;0;[o;;[I"foo;To;;0;[o;;[I"bar;To;;0;[o;;[I">[]= called on the result of foo;To;;[I"dIn Ruby before 3.1.0, multiple assignment did not follow this
evaluation order. With this code:;Fo;;[I"foo[0], bar.baz = a, b
;F;;o;;[I"HVersions of Ruby before 3.1.0 would evaluate in the following
order;Fo;
;;;[o;;0;[o;;[I"a;To;;0;[o;;[I"b;To;;0;[o;;[I"foo;To;;0;[o;;[I">[]= called on the result of foo;To;;0;[o;;[I"bar;To;;0;[o;;[I"?baz= called on the result of bar;To;;[I"Starting in Ruby 3.1.0, the evaluation order is now consistent with
single assignment, with the left-hand side being evaluated before
the right-hand side:;Fo;
;;;[o;;0;[o;;[I"foo;To;;0;[o;;[I"bar;To;;0;[o;;[I"a;To;;0;[o;;[I"b;To;;0;[o;;[I">[]= called on the result of foo;To;;0;[o;;[I"?baz= called on the result of bar;To;;[I":[{Bug #4443}[https://bugs.ruby-lang.org/issues/4443]];To;;0;[ o;;[I"~Values in Hash literals and keyword arguments can be omitted.
[{Feature #14579}[https://bugs.ruby-lang.org/issues/14579]];Fo;;[I"For example,;Fo;
;;;[o;;0;[o;;[I"J{x:, y:} is a syntax sugar of {x: x, y: y}.;To;;0;[o;;[I"Pfoo(x:, y:) is a syntax sugar of foo(x: x, y: y).;To;;[I"Constant names, local variable names, and method names are allowed as
key names. Note that a reserved word is considered as a local
variable or method name even if it's a pseudo variable name such as
self.;Fo;;0;[o;;[I"Non main-Ractors can get instance variables (ivars) of classes/modules
if ivars refer to shareable objects.
[{Feature #17592}[https://bugs.ruby-lang.org/issues/17592]];Fo;;0;[o;;[I"A command syntax is allowed in endless method definitions, i.e.,
you can now write def foo = puts "Hello".
Note that private def foo = puts "Hello" does not parse.
[{Feature #17398}[https://bugs.ruby-lang.org/issues/17398]];FS; ;
i;I"Command line options;To;
;;;[o;;0;[o;;[I"--disable-gems is now explicitly declared as "just for debugging".
Never use it in any real-world codebase.
[{Feature #17684}[https://bugs.ruby-lang.org/issues/17684]];TS; ;
i;I"Core classes updates;To;;[I"8Note: We're only listing outstanding class updates.;To;
;;;[o;;0;[o;;[I"
Array;Fo;
;;;[o;;0;[o;;[I"[Array#intersect? is added. [{Feature #15198}[https://bugs.ruby-lang.org/issues/15198]];Fo;;0;[o;;[I"
Class;Fo;
;;;[o;;0;[o;;[I"Class#subclasses, which returns an array of classes
directly inheriting from the receiver, not
including singleton classes.
[{Feature #18273}[https://bugs.ruby-lang.org/issues/18273]];Fo;;[I"class A; end
class B < A; end
class C < B; end
class D < A; end
A.subclasses #=> [D, B]
B.subclasses #=> [C]
C.subclasses #=> []
;F;;o;;0;[o;;[I"Enumerable;Fo;
;;;[o;;0;[o;;[I"]Enumerable#compact is added. [{Feature #17312}[https://bugs.ruby-lang.org/issues/17312]];Fo;;0;[o;;[I"xEnumerable#tally now accepts an optional hash to count. [{Feature #17744}[https://bugs.ruby-lang.org/issues/17744]];Fo;;0;[o;;[I"rEnumerable#each_cons and each_slice to return a receiver. [{GH-1509}[https://github.com/ruby/ruby/pull/1509]];Fo;;[I"y[1, 2, 3].each_cons(2){}
# 3.0 => nil
# 3.1 => [1, 2, 3]
[1, 2, 3].each_slice(2){}
# 3.0 => nil
# 3.1 => [1, 2, 3]
;F;;o;;0;[o;;[I"Enumerator::Lazy;Fo;
;;;[o;;0;[o;;[I"cEnumerator::Lazy#compact is added. [{Feature #17312}[https://bugs.ruby-lang.org/issues/17312]];Fo;;0;[o;;[I" File;Fo;
;;;[o;;0;[o;;[I"File.dirname now accepts an optional argument for the level to
strip path components. [{Feature #12194}[https://bugs.ruby-lang.org/issues/12194]];Fo;;0;[o;;[I"GC;Fo;
;;;[o;;0;[o;;[I"5"GC.measure_total_time = true" enables the measurement of GC.
Measurement can introduce overhead. It is enabled by default.
GC.measure_total_time returns the current setting.
GC.stat[:time] or GC.stat(:time) returns measured time
in milli-seconds. [[{Feature #10917}[https://bugs.ruby-lang.org/issues/10917]]];Fo;;0;[o;;[I"wGC.total_time returns measured time in nano-seconds. [[{Feature #10917}[https://bugs.ruby-lang.org/issues/10917]]];Fo;;0;[o;;[I"Integer;Fo;
;;;[o;;0;[o;;[I"^Integer.try_convert is added. [{Feature #15211}[https://bugs.ruby-lang.org/issues/15211]];Fo;;0;[o;;[I"Kernel;Fo;
;;;[o;;0;[o;;[I"Kernel#load now accepts a module as the second argument,
and will load the file using the given module as the
top-level module. [{Feature #6210}[https://bugs.ruby-lang.org/issues/6210]];Fo;;0;[o;;[I"Marshal;Fo;
;;;[o;;0;[o;;[I"Marshal.load now accepts a freeze: true option.
All returned objects are frozen except for Class and
Module instances. Strings are deduplicated. [{Feature #18148}[https://bugs.ruby-lang.org/issues/18148]];Fo;;0;[o;;[I"MatchData;Fo;
;;;[o;;0;[o;;[I"YMatchData#match is added [{Feature #18172}[https://bugs.ruby-lang.org/issues/18172]];Fo;;0;[o;;[I"`MatchData#match_length is added [{Feature #18172}[https://bugs.ruby-lang.org/issues/18172]];Fo;;0;[o;;[I"Method / UnboundMethod;Fo;
;;;[o;;0;[o;;[I"Method#public?, Method#private?, Method#protected?,
UnboundMethod#public?, UnboundMethod#private?,
UnboundMethod#protected? have been added. [{Feature #11689}[https://bugs.ruby-lang.org/issues/11689]];Fo;;0;[o;;[I"Module;Fo;
;;;[o;;0;[o;;[I"Module#prepend now modifies the ancestor chain if the receiver
already includes the argument. Module#prepend still does not
modify the ancestor chain if the receiver has already prepended
the argument. [{Bug #17423}[https://bugs.ruby-lang.org/issues/17423]];Fo;;0;[o;;[I"1Module#private, #public, #protected, and #module_function will
now return their arguments. If a single argument is given, it
is returned. If no arguments are given, nil is returned. If
multiple arguments are given, they are returned as an array.
[{Feature #12495}[https://bugs.ruby-lang.org/issues/12495]];Fo;;0;[o;;[I"Process;Fo;
;;;[o;;0;[o;;[I">Process._fork is added. This is a core method for fork(2).
Do not call this method directly; it is called by existing
fork methods: Kernel.#fork, Process.fork, and IO.popen("-").
Application monitoring libraries can overwrite this method to
hook fork events. [{Feature #17795}[https://bugs.ruby-lang.org/issues/17795]];Fo;;0;[o;;[I"Struct;Fo;
;;;[o;;0;[o;;[I"Passing only keyword arguments to Struct#initialize is warned.
You need to use a Hash literal to set a Hash to a first member.
[{Feature #16806}[https://bugs.ruby-lang.org/issues/16806]];Fo;;0;[o;;[I"cStructClass#keyword_init? is added [{Feature #18008}[https://bugs.ruby-lang.org/issues/18008]];Fo;;0;[o;;[I"String;Fo;
;;;[o;;0;[o;;[I"Update Unicode version to 13.0.0 [{Feature #17750}[https://bugs.ruby-lang.org/issues/17750]]
and Emoji version to 13.0 [{Feature #18029}[https://bugs.ruby-lang.org/issues/18029]];Fo;;0;[o;;[I":String#unpack and String#unpack1 now accept an offset: keyword
argument to start the unpacking after an arbitrary number of bytes
have been skipped. If offset is outside of the string bounds
ArgumentError is raised. [{Feature #18254}[https://bugs.ruby-lang.org/issues/18254]];Fo;;0;[o;;[I"Thread;Fo;
;;;[o;;0;[o;;[I"bThread#native_thread_id is added. [{Feature #17853}[https://bugs.ruby-lang.org/issues/17853]];Fo;;0;[o;;[I"Thread::Backtrace;Fo;
;;;[o;;0;[o;;[I"Thread::Backtrace.limit, which returns the value to limit backtrace
length set by --backtrace-limit command line option, is added.
[{Feature #17479}[https://bugs.ruby-lang.org/issues/17479]];Fo;;0;[o;;[I"Thread::Queue;Fo;
;;;[o;;0;[o;;[I"Thread::Queue.new now accepts an Enumerable of initial values.
[{Feature #17327}[https://bugs.ruby-lang.org/issues/17327]];Fo;;0;[o;;[I" Time;Fo;
;;;[o;;0;[
o;;[I"Time.new now accepts optional in: keyword argument for the
timezone, as well as Time.at and Time.now, so that is now
you can omit minor arguments to Time.new. [{Feature #17485}[https://bugs.ruby-lang.org/issues/17485]];Fo;;[I"HTime.new(2021, 12, 25, in: "+07:00")
#=> 2021-12-25 00:00:00 +0700
;F;;o;;[I"ZAt the same time, time component strings are converted to
integers more strictly now.;Fo;;[I"`Time.new(2021, 12, 25, "+07:30")
#=> invalid value for Integer(): "+07:30" (ArgumentError)
;F;;o;;[I"Ruby 3.0 or earlier returned probably unexpected result
2021-12-25 07:00:00, not 2021-12-25 07:30:00 nor
2021-12-25 00:00:00 +07:30.;Fo;;0;[o;;[I"Time#strftime supports RFC 3339 UTC for unknown offset local
time, -0000, as %-z. [{Feature #17544}[https://bugs.ruby-lang.org/issues/17544]];Fo;;0;[o;;[I"TracePoint;Fo;
;;;[o;;0;[o;;[I"TracePoint.allow_reentry is added to allow reenter while TracePoint
callback.
[{Feature #15912}[https://bugs.ruby-lang.org/issues/15912]];Fo;;0;[o;;[I"$LOAD_PATH;Fo;
;;;[o;;0;[o;;[I"p$LOAD_PATH.resolve_feature_path does not raise. [{Feature #16043}[https://bugs.ruby-lang.org/issues/16043]];Fo;;0;[o;;[I"Fiber Scheduler;Fo;
;;;[o;;0;[o;;[I"Add support for Addrinfo.getaddrinfo using address_resolve hook.
[{Feature #17370}[https://bugs.ruby-lang.org/issues/17370]];Fo;;0;[o;;[I"Introduce non-blocking Timeout.timeout using timeout_after hook.
[{Feature #17470}[https://bugs.ruby-lang.org/issues/17470]];Fo;;0;[o;;[I"Introduce new scheduler hooks io_read and io_write along with a
low level IO::Buffer for zero-copy read/write. [{Feature #18020}[https://bugs.ruby-lang.org/issues/18020]];Fo;;0;[o;;[I"IO hooks io_wait, io_read, io_write, receive the original IO object
where possible. [{Bug #18003}[https://bugs.ruby-lang.org/issues/18003]];Fo;;0;[o;;[I"bMake Monitor fiber-safe. [{Bug #17827}[https://bugs.ruby-lang.org/issues/17827]];Fo;;0;[o;;[I"tReplace copy coroutine with pthread implementation. [{Feature #18015}[https://bugs.ruby-lang.org/issues/18015]];Fo;;0;[o;;[I"Refinement;Fo;
;;;[o;;0;[o;;[I"New class which represents a module created by Module#refine.
include and prepend are deprecated, and import_methods is added
instead. [{Bug #17429}[https://bugs.ruby-lang.org/issues/17429]];FS; ;
i;I"Stdlib updates;To;
;;;[o;;0;[o;;[I"+The following default gem are updated.;Fo;
;;;[so;;0;[o;;[I"RubyGems 3.3.3;Fo;;0;[o;;[I"base64 0.1.1;Fo;;0;[o;;[I"benchmark 0.2.0;Fo;;0;[o;;[I"bigdecimal 3.1.1;Fo;;0;[o;;[I"bundler 2.3.3;Fo;;0;[o;;[I"cgi 0.3.1;Fo;;0;[o;;[I"csv 3.2.2;Fo;;0;[o;;[I"date 3.2.2;Fo;;0;[o;;[I"did_you_mean 1.6.1;Fo;;0;[o;;[I"digest 3.1.0;Fo;;0;[o;;[I"drb 2.1.0;Fo;;0;[o;;[I"erb 2.2.3;Fo;;0;[o;;[I"error_highlight 0.3.0;Fo;;0;[o;;[I"etc 1.3.0;Fo;;0;[o;;[I"fcntl 1.0.1;Fo;;0;[o;;[I"fiddle 1.1.0;Fo;;0;[o;;[I"fileutils 1.6.0;Fo;;0;[o;;[I"find 0.1.1;Fo;;0;[o;;[I"io-console 0.5.10;Fo;;0;[o;;[I"io-wait 0.2.1;Fo;;0;[o;;[I"ipaddr 1.2.3;Fo;;0;[o;;[I"irb 1.4.1;Fo;;0;[o;;[I"json 2.6.1;Fo;;0;[o;;[I"logger 1.5.0;Fo;;0;[o;;[I"net-http 0.2.0;Fo;;0;[o;;[I"net-protocol 0.1.2;Fo;;0;[o;;[I"nkf 0.1.1;Fo;;0;[o;;[I"open-uri 0.2.0;Fo;;0;[o;;[I"openssl 3.0.0;Fo;;0;[o;;[I"optparse 0.2.0;Fo;;0;[o;;[I"ostruct 0.5.2;Fo;;0;[o;;[I"pathname 0.2.0;Fo;;0;[o;;[I"
pp 0.3.0;Fo;;0;[o;;[I"prettyprint 0.1.1;Fo;;0;[o;;[I"psych 4.0.3;Fo;;0;[o;;[I"racc 1.6.0;Fo;;0;[o;;[I"rdoc 6.4.0;Fo;;0;[o;;[I"readline 0.0.3;Fo;;0;[o;;[I"readline-ext 0.1.4;Fo;;0;[o;;[I"reline 0.3.0;Fo;;0;[o;;[I"resolv 0.2.1;Fo;;0;[o;;[I"rinda 0.1.1;Fo;;0;[o;;[I"ruby2_keywords 0.0.5;Fo;;0;[o;;[I"securerandom 0.1.1;Fo;;0;[o;;[I"set 1.0.2;Fo;;0;[o;;[I"stringio 3.0.1;Fo;;0;[o;;[I"strscan 3.0.1;Fo;;0;[o;;[I"tempfile 0.1.2;Fo;;0;[o;;[I"time 0.2.0;Fo;;0;[o;;[I"timeout 0.2.0;Fo;;0;[o;;[I"tmpdir 0.1.2;Fo;;0;[o;;[I"
un 0.2.0;Fo;;0;[o;;[I"uri 0.11.0;Fo;;0;[o;;[I"yaml 0.2.0;Fo;;0;[o;;[I"zlib 2.1.1;Fo;;0;[o;;[I"RubyGems 3.3.3;Fo;;0;[o;;[I"base64 0.1.1;Fo;;0;[o;;[I"benchmark 0.2.0;Fo;;0;[o;;[I"bigdecimal 3.1.1;Fo;;0;[o;;[I"bundler 2.3.3;Fo;;0;[o;;[I"cgi 0.3.1;Fo;;0;[o;;[I"csv 3.2.2;Fo;;0;[o;;[I"date 3.2.2;Fo;;0;[o;;[I"did_you_mean 1.6.1;Fo;;0;[o;;[I"digest 3.1.0;Fo;;0;[o;;[I"drb 2.1.0;Fo;;0;[o;;[I"erb 2.2.3;Fo;;0;[o;;[I"error_highlight 0.3.0;Fo;;0;[o;;[I"etc 1.3.0;Fo;;0;[o;;[I"fcntl 1.0.1;Fo;;0;[o;;[I"fiddle 1.1.0;Fo;;0;[o;;[I"fileutils 1.6.0;Fo;;0;[o;;[I"find 0.1.1;Fo;;0;[o;;[I"io-console 0.5.10;Fo;;0;[o;;[I"io-wait 0.2.1;Fo;;0;[o;;[I"ipaddr 1.2.3;Fo;;0;[o;;[I"irb 1.4.1;Fo;;0;[o;;[I"json 2.6.1;Fo;;0;[o;;[I"logger 1.5.0;Fo;;0;[o;;[I"net-http 0.2.0;Fo;;0;[o;;[I"net-protocol 0.1.2;Fo;;0;[o;;[I"nkf 0.1.1;Fo;;0;[o;;[I"open-uri 0.2.0;Fo;;0;[o;;[I"openssl 3.0.0;Fo;;0;[o;;[I"optparse 0.2.0;Fo;;0;[o;;[I"ostruct 0.5.2;Fo;;0;[o;;[I"pathname 0.2.0;Fo;;0;[o;;[I"
pp 0.3.0;Fo;;0;[o;;[I"prettyprint 0.1.1;Fo;;0;[o;;[I"psych 4.0.3;Fo;;0;[o;;[I"racc 1.6.0;Fo;;0;[o;;[I"rdoc 6.4.0;Fo;;0;[o;;[I"readline 0.0.3;Fo;;0;[o;;[I"readline-ext 0.1.4;Fo;;0;[o;;[I"reline 0.3.0;Fo;;0;[o;;[I"resolv 0.2.1;Fo;;0;[o;;[I"rinda 0.1.1;Fo;;0;[o;;[I"ruby2_keywords 0.0.5;Fo;;0;[o;;[I"securerandom 0.1.1;Fo;;0;[o;;[I"set 1.0.2;Fo;;0;[o;;[I"stringio 3.0.1;Fo;;0;[o;;[I"strscan 3.0.1;Fo;;0;[o;;[I"tempfile 0.1.2;Fo;;0;[o;;[I"time 0.2.0;Fo;;0;[o;;[I"timeout 0.2.0;Fo;;0;[o;;[I"tmpdir 0.1.2;Fo;;0;[o;;[I"
un 0.2.0;Fo;;0;[o;;[I"uri 0.11.0;Fo;;0;[o;;[I"yaml 0.2.0;Fo;;0;[o;;[I"zlib 2.1.1;Fo;;0;[o;;[I",The following bundled gems are updated.;Fo;
;;;[o;;0;[o;;[I"minitest 5.15.0;Fo;;0;[o;;[I"power_assert 2.0.1;Fo;;0;[o;;[I"rake 13.0.6;Fo;;0;[o;;[I"test-unit 3.5.3;Fo;;0;[o;;[I"rexml 3.2.5;Fo;;0;[o;;[I"rbs 2.0.0;Fo;;0;[o;;[I"typeprof 0.21.1;Fo;;0;[o;;[I"minitest 5.15.0;Fo;;0;[o;;[I"power_assert 2.0.1;Fo;;0;[o;;[I"rake 13.0.6;Fo;;0;[o;;[I"test-unit 3.5.3;Fo;;0;[o;;[I"rexml 3.2.5;Fo;;0;[o;;[I"rbs 2.0.0;Fo;;0;[o;;[I"typeprof 0.21.1;Fo;;0;[o;;[I"5The following default gems are now bundled gems.;Fo;
;;;[o;;0;[o;;[I"net-ftp 0.1.3;Fo;;0;[o;;[I"net-imap 0.2.2;Fo;;0;[o;;[I"net-pop 0.1.1;Fo;;0;[o;;[I"net-smtp 0.3.1;Fo;;0;[o;;[I"matrix 0.4.2;Fo;;0;[o;;[I"prime 0.1.2;Fo;;0;[o;;[I"debug 1.4.0;Fo;;0;[o;;[I"net-ftp 0.1.3;Fo;;0;[o;;[I"net-imap 0.2.2;Fo;;0;[o;;[I"net-pop 0.1.1;Fo;;0;[o;;[I"net-smtp 0.3.1;Fo;;0;[o;;[I"matrix 0.4.2;Fo;;0;[o;;[I"prime 0.1.2;Fo;;0;[o;;[I"debug 1.4.0;Fo;;0;[o;;[I"HThe following gems has been removed from the Ruby standard library.;Fo;
;;;[o;;0;[o;;[I"dbm;Fo;;0;[o;;[I" gdbm;Fo;;0;[o;;[I"tracer;Fo;;0;[o;;[I"dbm;Fo;;0;[o;;[I" gdbm;Fo;;0;[o;;[I"tracer;Fo;;0;[o;;[I"Coverage measurement now supports suspension. You can use Coverage.suspend
to stop the measurement temporarily, and Coverage.resume to restart it.
See [{Feature #18176}[https://bugs.ruby-lang.org/issues/18176]] in detail.;Fo;;0;[o;;[I"Random::Formatter is moved to random/formatter.rb, so that you can
use Random#hex, Random#base64, and so on without SecureRandom.
[{Feature #18190}[https://bugs.ruby-lang.org/issues/18190]];FS; ;
i;I"Compatibility issues;To;;[I"'Note: Excluding feature bug fixes.;To;
;;;[o;;0;[o;;[I"rb_io_wait_readable, rb_io_wait_writable and rb_wait_for_single_fd are
deprecated in favour of rb_io_maybe_wait_readable,
rb_io_maybe_wait_writable and rb_io_maybe_wait respectively.
rb_thread_wait_fd and rb_thread_fd_writable are deprecated. [{Bug #18003}[https://bugs.ruby-lang.org/issues/18003]];TS; ;
i;I" Stdlib compatibility issues;To;
;;;[ o;;0;[o;;[I"ERB#initialize warns safe_level and later arguments even without -w.
[{Feature #14256}[https://bugs.ruby-lang.org/issues/14256]];To;;0;[o;;[I"Flib/debug.rb is replaced with debug.gem;To;;0;[o;;[I"Kernel#pp in lib/pp.rb uses the width of IO#winsize by default.
This means that the output width is automatically changed depending on
your terminal size. [{Feature #12913}[https://bugs.ruby-lang.org/issues/12913]];To;;0;[o;;[I"Psych 4.0 changes Psych.load as safe_load by the default.
You may need to use Psych 3.3.2 for migrating to this behavior.
[{Bug #17866}[https://bugs.ruby-lang.org/issues/17866]];FS; ;
i;I"C API updates;To;
;;;[o;;0;[o;;[I"DDocumented. [{GH-4815}[https://github.com/ruby/ruby/pull/4815]];Fo;;0;[o;;[I"rb_gc_force_recycle is deprecated and has been changed to a no-op.
[{Feature #18290}[https://bugs.ruby-lang.org/issues/18290]];TS; ;
i;I" Implementation improvements;To;
;;;[
o;;0;[o;;[I"~Inline cache mechanism is introduced for reading class variables.
[{Feature #17763}[https://bugs.ruby-lang.org/issues/17763]];Fo;;0;[o;;[I"instance_eval and instance_exec now only allocate a singleton class when
required, avoiding extra objects and improving performance. [{GH-5146}[https://github.com/ruby/ruby/pull/5146]];To;;0;[o;;[I"vThe performance of Struct accessors is improved. [{GH-5131}[https://github.com/ruby/ruby/pull/5131]];Fo;;0;[o;;[I"mandatory_only? builtin special form to improve performance on
builtin methods. [{GH-5112}[https://github.com/ruby/ruby/pull/5112]];To;;0;[o;;[I"6Experimental feature Variable Width Allocation in the garbage collector.
This feature is turned off by default and can be enabled by compiling Ruby
with flag USE_RVARGC=1 set. [{Feature #18045}[https://bugs.ruby-lang.org/issues/18045]] [{Feature #18239}[https://bugs.ruby-lang.org/issues/18239]];FS; ;
i;I"JIT;To;
;;;[o;;0;[o;;[I"Rename Ruby 3.0's --jit to --mjit, and alias --jit to --yjit
on non-Windows x86-64 platforms and to --mjit on others.;TS; ;
i;I" MJIT;To;
;;;[ o;;0;[o;;[I"LThe default --mjit-max-cache is changed from 100 to 10000.;Fo;;0;[o;;[I"WJIT-ed code is no longer cancelled when a TracePoint for class events
is enabled.;Fo;;0;[o;;[I"\The JIT compiler no longer skips compilation of methods longer than
1000 instructions.;Fo;;0;[o;;[I"--mjit-verbose and --mjit-warning output "JIT cancel" when JIT-ed
code is disabled because TracePoint or GC.compact is used.;TS; ;
i;I"3YJIT: New experimental in-process JIT compiler;To;;[I"wNew JIT compiler available as an experimental feature. [{Feature #18229}[https://bugs.ruby-lang.org/issues/18229]];To;;[I"pSee {this blog post}[https://shopify.engineering/yjit-just-in-time-compiler-cruby] introducing the project.;To;
;;;[ o;;0;[o;;[I"UDisabled by default, use --yjit command-line option to enable YJIT.;Fo;;0;[o;;[I"yPerformance improvements on benchmarks based on real-world software,
up to 22% on railsbench, 39% on liquid-render.;Fo;;0;[o;;[I"Fast warm-up times.;Fo;;0;[o;;[I"3Limited to Unix-like x86-64 platforms for now.;FS; ;
i;I"Static analysis;TS; ;
i;I"RBS;To;
;;;[
o;;0;[o;;[I"ZGenerics type parameters can be bounded ({PR}[https://github.com/ruby/rbs/pull/844]).;Fo;;[I"# `T` must be compatible with the `_Output` interface.
# `PrettyPrint[String]` is ok, but `PrettyPrint[Integer]` is a type error.
class PrettyPrint[T < _Output]
interface _Output
def <<: (String) -> void
end
attr_reader output: T
def initialize: (T output) -> void
end
;F;:rbso;;0;[o;;[I"NType aliases can be generic. ({PR}[https://github.com/ruby/rbs/pull/823]);Fo;;[I"# Defines a generic type `list`.
type list[T] = [ T, list[T] ]
| nil
type str_list = list[String]
type int_list = list[Integer]
;F;;o;;0;[o;;[I"{rbs collection}[https://github.com/ruby/rbs/blob/cdd6a3a896001e25bd1feda3eab7f470bae935c1/docs/collection.md] has been introduced to manage gems’ RBSs.;To;;0;[o;;[I"QMany signatures for built-in and standard libraries have been added/updated.;Fo;;0;[o;;[I"AIt includes many bug fixes and performance improvements too.;Fo;;[I"See the {CHANGELOG.md}[https://github.com/ruby/rbs/blob/cdd6a3a896001e25bd1feda3eab7f470bae935c1/CHANGELOG.md] for more information.;TS; ;
i;I"
TypeProf;To;
;;;[o;;0;[o;;[I"{Experimental IDE support}[https://github.com/ruby/typeprof/blob/ca15c5dae9bd62668463165f8409bd66ce7de223/doc/ide.md] has been implemented.;To;;0;[o;;[I"BMany bug fixes and performance improvements since Ruby 3.0.0.;TS; ;
i;I"
Debugger;To;
;;;[o;;0;[o;;[I"A new debugger {debug.gem}[https://github.com/ruby/debug] is bundled.
debug.gem is a fast debugger implementation, and it provides many features
like remote debugging, colorful REPL, IDE (VSCode) integration, and more.
It replaces lib/debug.rb standard library.;Fo;;0;[o;;[I"|rdbg command is also installed into bin/ directory to start and control
debugging execution.;TS; ;
i;I"error_highlight;To;;[I"wA built-in gem called error_highlight has been introduced.
It shows fine-grained error locations in the backtrace.;To;;[I"9Example: title = json[:article][:title];To;;[I"+If json is nil, it shows:;To;;[I"$ ruby test.rb
test.rb:2:in `': undefined method `[]' for nil:NilClass (NoMethodError)
title = json[:article][:title]
^^^^^^^^^^
;T;:consoleo;;[I":If json[:article] returns nil, it shows:;To;;[I"$ ruby test.rb
test.rb:2:in `': undefined method `[]' for nil:NilClass (NoMethodError)
title = json[:article][:title]
^^^^^^^^
;T;;o;;[I"This feature is enabled by default.
You can disable it by using a command-line option --disable-error_highlight.
See {the repository}[https://github.com/ruby/error_highlight] in detail.;TS; ;
i;I"*IRB Autocomplete and Document Display;To;;[I"The IRB now has an autocomplete feature, where you can just type in the code, and the completion candidates dialog will appear. You can use Tab and Shift+Tab to move up and down.;To;;[I"If documents are installed when you select a completion candidate, the documentation dialog will appear next to the completion candidates dialog, showing part of the content. You can read the full document by pressing Alt+d.;TS; ;
i;I"Miscellaneous changes;To;
;;;[ o;;0;[o;;[I"lib/objspace/trace.rb is added, which is a tool for tracing the object
allocation. Just by requiring this file, tracing is started _immediately_.
Just by Kernel#p, you can investigate where an object was created.
Note that just requiring this file brings a large performance overhead.
This is only for debugging purposes. Do not use this in production.
[{Feature #17762}[https://bugs.ruby-lang.org/issues/17762]];Fo;;0;[o;;[I"Now exceptions raised in finalizers will be printed to STDERR, unless
$VERBOSE is nil. [{Feature #17798}[https://bugs.ruby-lang.org/issues/17798]];Fo;;0;[o;;[I"yruby -run -e httpd displays URLs to access. [{Feature #17847}[https://bugs.ruby-lang.org/issues/17847]];To;;0;[o;;[I"oAdd ruby -run -e colorize to colorize Ruby code using
IRB::Color.colorize_code.;F:
@file@:0@omit_headings_from_table_of_contents_below0