11 February 2018
4 min read
This is a reminder of how Ruby evolves through time.
Version | Release | End of support | End of maintenance |
---|---|---|---|
1.8 | 2003-08-04 | 2012-06-xx | 2014-07-01 |
1.9 | 2007-12-25 | 2014-02-23 | 2015-02-23 |
2.0 | 2013-02-24 | 2015-02-24 | 2016-02-24 |
2.1 | 2013-12-25 | 2016-03-30 | 2017-03-31 |
2.2 | 2014-12-25 | 2017-03-28 | 2018-03-31 |
2.3 | 2015-12-25 | 2018-03-28 | 2019-03-31 |
2.4 | 2016-12-25 | 2019-04-01 | 2020-03-31 |
2.5 | 2017-12-25 | 2020-04-05 | 2021-04-05 |
2.6 | 2018-12-25 | 2021-04-05 | 2022-04-05 |
2.7 | 2019-12-25 | 2022-04-12 | 2023-03-31 |
3.0 | 2020-12-25 | 2023-03-31 | TBA |
3.1 | 2021-12-25 | TBA | TBA |
3.2 | 2022-12-25 | TBA | TBA |
{key: 'value'}
?c != 'c'.ord
Kernel#require_relative
String#prepend
String#clear
IO.write/binwrite/binread
Numeric#step
Module#prepend
#to_h
#6276Kernel#__dir__
#3346String#lines/chars/codepoints/bytes
returns Array instead of Enumerator #6670String#scrub
#8414Numeric#bit_length
#8700Module#prepend/include
are public #8846String#+@/-@
to get mutable and frozen strings, respectively #11782obj&.foo
safe navigation operator #11537Array/Hash/Struct#dig
#11643 #11688Array#bsearch_index
#10730RubyVM::InstructionSequence#to_binary
and RubyVM::InstructionSequence.load_from_binary
#11788Integer/Float#ceil/floor/truncate
with optional digits #12245Integer#digits
to extract columns of place-value notation #12447Integer#round
with half option, default behavior is round-up #12548 #12958 :even
, :up
, and :down
#12953Array#max/min
do not create temporary arrays under certain conditions #12172Regexp#match?
does not change global variables #8110Comparable#clamp
#10594IO#gets/readline/each_line/readlines/foreach
, String#each_line/lines
, StringIO#gets/readline/each_line/readlines
with chomp option #12553String.new
with :capacity
to preallocate size #12024String#unpack1
#12752Kernel#yield_self
#6721String#delete_prefix/delete_suffix
#12694 #13665Array#prepend/append
as aliases of Array#unshift/push
#12746rescue/else/ensure
in do/end
blocks #12906Dir.children/each_child
#11302Integer.pow(a, b)
#12508(1..)
and (1...)
#12912Array#union/difference
#14097Dir#each_child/children
#13969Random.bytes
#4938Binding#source_location
#14230Kernel#system
raise with :exception
option #14386Kernel.then
as alias to Kernel.yield_self
#14594String#split
yields to block if given #4780File#read/binread/write/binwrite/foreach/readlines
without pipes #14245(..1)
and (...1)
#14799Enumerable#tally
#11076Integer#[]
now supports range operation #8842def foo(*) bar.foo(*) end
#16253Enumerable#filter_map
#15323Array#intersection
#16155def square(x) = x * x
#16746Hash#except
#15822Array#intersect?
#15198def foo(&) bar(&) end
#11256def foo(*) bar(*) end
def baz(**) quux(**) end
Enumerator#product
#18685