Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Ruby 3 Redux
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Bozhidar Batsov
April 11, 2019
Programming
620
0
Share
Ruby 3 Redux
Slide deck from my presentation at RubyDay 2019 in Verona, Italy.
Bozhidar Batsov
April 11, 2019
More Decks by Bozhidar Batsov
See All by Bozhidar Batsov
RuboCop 2.0: Where do we go now?
bbatsov
0
56
Clojure: The Bad Parts
bbatsov
0
100
Weird Ruby (RubyDay 2024, Verona)
bbatsov
0
180
Sustainable OSS (Balkan Ruby 2024, Sofia)
bbatsov
0
190
Ruby's Creed (RubyDay 2023, Verona)
bbatsov
0
59
Victims of Complexity
bbatsov
0
340
Ruby 3.0 Redux (Spark Academy, Jan 2021)
bbatsov
1
290
Ruby 3.0 Redux (Pivorak 4.0)
bbatsov
0
500
The Elements of Programming Style (HackConf 2019)
bbatsov
0
220
Other Decks in Programming
See All in Programming
ReactとSvelteのその先、Ripple-TS / Beyond React and Svelte: Ripple-TS
ssssota
3
1.7k
OCRを使ってゲームのアイテムをデータ化する
kishikawakatsumi
0
120
AI時代の仕事技芸論 — ソフトウェア開発で「遊ぶように働く」職人的熟達のすすめ
kuranuki
1
510
AIチームを指揮するOSS「TAKT」活用術 / How to Use “TAKT,” an OSS Tool for Orchestrating AI Teams
nrslib
6
740
肥大化するレガシーコードに立ち向かうためのインターフェース分離と依存の逆転 / JJUG CCC 2026 Spring
hirokunimaeta
0
200
Claspは野良GASの夢をみるか
takter00
0
140
初めてのRubyKaigiはこう見えた
jellyfish700
0
340
技術記事、AIに書かせるか、自分で書くか? 〜それでも私が自分の手で書く理由〜 / #QiitaConference
jnchito
2
1.2k
Technical Debt: Understanding it Rightly, Engaging it Rightly #LaravelLiveJP
shogogg
0
170
Old Dog, New Tricks: The Java 25 Reinvention - JNation
bazlur_rahman
0
130
AIエージェントの隔離技術の徹底比較
kawayu
0
440
ユニットテストの先へ:テスト技法で要求・仕様を整理するJava開発実践 / Beyond_Unit_Testing_Practical_Java_Development_Techniques_for_Organizing_Requirements_and_Specifications
shimashima35
0
300
Featured
See All Featured
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.7k
Designing Experiences People Love
moore
143
24k
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
150
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
The browser strikes back
jonoalderson
0
1.1k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
760
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Marketing to machines
jonoalderson
1
5.3k
How to train your dragon (web standard)
notwaldorf
97
6.6k
Transcript
None
Ciao!
Божидар
Bozhidar
Bozhidar
Bug cool
@bbatsov
Sofia, Bulgaria Sofia, Bulgaria
None
None
bbatsov
metaredux.com
Ruby & Rails style guides
None
None
None
None
None
None
Not on Ruby’s Core Team
None
None
None
None
Matz on Ruby
Language Maturity
The Ruby Community
Ruby is not dying
None
None
We have to feed the community intellectually. — Matz
We have to keep moving forward. — Matz
Backwards Compatibility
We’re not going to repeat the Python 3 mistakes! —
Matz
Victim of the Hype Cycle
None
Rails Mania (2008)
Ruby Today
Ruby Today
2025
Matz’s Retirement
None
Ruby 4
Ruby 4x4
Ruby 4 is going to be 4 times faster than
Ruby 3
Ruby 4 is going to be 12 times faster than
Ruby 2
Ruby 4 is finally going to be fast enough!
None
What about Ruby 3?
–Matz “We’ll aim to release Ruby 3 for the Olympic
Games in Tokyo in 2020.”
Ruby 3 Goals •Improved programming safety •Faster performance •Better concurrency/parallelism
support •Better tools
Optional static typing?
Duck inference?
Actors?
Stream based model?
Ownership based model?
Guilds?
3 times faster performance?
Smaller Goals •Sane keyword arguments (?!!?!) •Pattern Matching •Deprecation of
quirky features •Frozen string literals
None
Ruby 3.0 Redux
Dictionary Definitions
Ruby
noun 1. a precious stone consisting of corundum in colour
varieties varying from deep crimson or purple to pale rose. 2. a programming language optimised for programmer happiness
3
number 1. equivalent to the sum of one and two;
one more than two; 3 2. A mystical version rarely achieved by most software projects.
Redux
adjective 1. brought back, revived Emacs era redux 2. (usually
postpositive) (esp of an artistic work) presented in a new way Apocalypse Now Redux
None
Ruby 3.0 is not a single magic release
Ruby 3.0 is an idea
None
Ruby follows SemVer
Ruby 3 is going to be 3 times faster than
Ruby 2.0
Generational GC (Ruby 2.1)
Incremental GC (Ruby 2.2)
MJIT (Ruby 2.6)
Deprecation of flip-flops (Ruby 2.6)
Ruby 2.7
Numbered block parameters
numbers.map { Math.log2(@1) }
foo.bar { @1 + @2 }
h = Hash.new { @1[@2] = "Go Fish: #{@2}" }
h = Hash.new { @1[@2] = "Go Fish: #{@2}" }
None
https://bugs.ruby-lang.org/issues/15723
Method reference operator
[2, 4, 8, 16, 32].map { |n| Math.log2(n) }
[2, 4, 8, 16, 32].map(&method(Math.log2))
[2, 4, 8, 16, 32].map(&Math.:log2)
[2, 4, 8, 16, 32].map { Math.log2($1) }
Beginless range
Beginless range
Beginningless range
arr[..3]
items.where(price: ..20)
None
Ruby 3.0 (Current Status)
Better Tools
RubyGems 3
The bundling of Bundler (Ruby 2.6)
Gemifying the Standard Library (ongoing progress)
Default vs Bundled Gems
Default Gems • Bundler • RubyGems • date • irb
• json • …
Bundled Gems • minitest • did_you_mean • rake • …
stdgems.org
Ruby 3x3
Only applies to certain benchmarks
Ruby 2.6 is 65% faster than Ruby 2.0
None
10% average speedup per release
None
MJIT is the biggest hope for Ruby 3x3
Guilds
None
None
Developed outside the Ruby’s main repo
https://github.com/ko1/ruby/tree/guild
Work in progress ™
Parallel Programming in Ruby 3 with Guilds (http://www.atdot.net/~ko1/activities/2018_rubyconf2018.pdf)
Sane Keyword Arguments
https://bugs.ruby-lang.org/issues/14183
# The following calls pass keyword arguments foo(..., key: val)
foo(..., **hsh) foo(..., key: val, **hsh)
# The following calls pass **normal** arguments foo(..., {key: val})
foo(..., hsh) foo(..., {key: val, **hsh})
Breaking change!!!
Migration warning in Ruby 2.7
Pattern Matching (https://bugs.ruby-lang.org/issues/14912)
What’s not in Ruby 3.0?
Optional Static Typing
Actors
Stream processing
Frozen string literals
Deprecation of autoload
Community Impact
Community Contributed Features • UTF-8 • Enumerator • Generational GC
• Keyword Arguments • JIT • Concurrency
Community Contributions • Rake • Bundler • Documentation & Tutorials
• A ton of amazing libraries • Rails • …
None
Real Namespaces (https://bugs.ruby-lang.org/issues/14982)
RubyKaigi Updates
None
Felina
Grazie! twitter: @bbatsov github: @bbatsov https://metaredux.com https://emacsredux.com RubyDay 2019 Verona,
Italy 11.04.2019