Feb 24 1993 Dec 21 1995 Start
of
Xmas
Tradi.on Ruby’s History Language
starts
gaining
serious
trac.on I
want
a
language
more
powerful
than
Perl
and
more
OO
than
Python First
public
release 0.95 Dec 25 1996 1.0 1.2 Dec 1998 1.4 Aug 1999 1.6 Sep 2000 1.8 Aug 2003 Dec 13 2005 Rails
arrives
on
the
scene.
Arguably
the
start
of
Ruby’s
rise. Dec 2007 Language
hits
the
big
.me. 1.9
Start
of
Xmas
Tradi.on Ruby’s History nguage
starts
gaining
rious
trac.on 1.8 Aug 2003 Dec 13 2005 Rails
arrives
on
the
scene.
Arguably
the
start
of
Ruby’s
rise. Dec 2007 Language
hits
the
big
.me. 1.9 Feb 24 2013 2.0
Heap based M&S Ruby
structures
are
divided
in
2
halves,
data
and
flags.
Each
structure
has
its
own
flag.
Mark
phase
trawls
through
heap
and
updates
FL_MARK
flag
in
every
object 1.9 GC RString diagram from: http://patshaughnessy.net/2012/3/23/why-you-should-be-excited-about-garbage-collection-in-ruby-2-0
Bitmap marking All
mark
flags
for
heap
move
to
single
dedicated
data
structure.
1
for
In
Use,
0
for
Collectable. Flag
not
wriMen
to
data
structure,
much
more
friendly
to
copy-‐on-‐write 2.0 GC Heap diagram from: http://patshaughnessy.net/2012/3/23/why-you-should-be-excited-about-garbage-collection-in-ruby-2-0
Lazy Enumerators to_infinity = (0..Float::Infinity) beyond = to_infinity.lazy.select do |n| num % 42 == 0 end 100.times do { |n| puts beyond.next } Big Changes
Refinements * Big Changes Localised
and
contained
monkey
patching Module MyString refine String do def palindrome? self == self.reverse end end end using MyString # Monkey patch now active for context
Little Changes CGI
is
now
HTML5
compa*ble net/hLp
supports
Server
Name
Indica*on
(SNI) Grab Bag Zlib
runs
outside
of
the
Global
Interpreter
Lock Unused
variables
can
be
prepended
with
_
to
avoid
warnings
Ecosystem Start
of
support
for
stdlib
gems No
more
out
of
place
requires!
MOAR
BUNDLAR! RubyGems 2.0 Searching
is
remote
by
default Metadata
through
Gem::Specifica*on#metadata Simplified
--document/--no-document No
more
--no-rdoc --no-ri mantra