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
Just-In-Time Compiler for MRI
Search
Takashi Kokubun
November 17, 2017
Programming
8
24k
Just-In-Time Compiler for MRI
RubyConf 2017 New Orleans
Takashi Kokubun
November 17, 2017
Tweet
Share
More Decks by Takashi Kokubun
See All by Takashi Kokubun
Deoptimization: How YJIT Speeds Up Ruby by Slowing Down / RubyKaigi 2025
k0kubun
2
3k
YJIT Makes Rails 1.7x faster / RubyKaigi 2024
k0kubun
7
14k
Ruby JIT Hacking Guide / RubyKaigi 2023
k0kubun
2
10k
YJIT: Dive into Ruby's JIT compiler written in Rust / Rust.Tokyo 2022
k0kubun
1
2.1k
Towards Ruby 4 JIT / RubyKaigi 2022
k0kubun
3
11k
Optimizing Production Performance with MRI JIT / RubyConf 2021
k0kubun
1
470
Why Ruby's JIT was slow / RubyKaigi Takeout 2021
k0kubun
3
1.9k
数時間かかる週一リリースを毎日何度も爆速でできるようにするまで / CI/CD Conference 2021
k0kubun
21
14k
Ruby 3 JIT's roadmap / RubyConf China 2020
k0kubun
0
820
Other Decks in Programming
See All in Programming
LT 2025-06-30: プロダクトエンジニアの役割
yamamotok
0
730
Porting a visionOS App to Android XR
akkeylab
0
420
新メンバーも今日から大活躍!SREが支えるスケールし続ける組織のオンボーディング
honmarkhunt
4
6.5k
A2A プロトコルを試してみる
azukiazusa1
2
1.3k
Quand Symfony, ApiPlatform, OpenAI et LangChain s'allient pour exploiter vos PDF : de la théorie à la production…
ahmedbhs123
0
150
プロダクト志向なエンジニアがもう一歩先の価値を目指すために意識したこと
nealle
0
130
GitHub Copilot and GitHub Codespaces Hands-on
ymd65536
2
150
20250628_非エンジニアがバイブコーディングしてみた
ponponmikankan
0
670
プロダクト志向ってなんなんだろうね
righttouch
PRO
0
180
「テストは愚直&&網羅的に書くほどよい」という誤解 / Test Smarter, Not Harder
munetoshi
0
150
おやつのお供はお決まりですか?@WWDC25 Recap -Japan-\(region).swift
shingangan
0
120
Blazing Fast UI Development with Compose Hot Reload (droidcon New York 2025)
zsmb
1
290
Featured
See All Featured
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
How to Think Like a Performance Engineer
csswizardry
24
1.7k
GitHub's CSS Performance
jonrohan
1031
460k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Why You Should Never Use an ORM
jnunemaker
PRO
58
9.4k
YesSQL, Process and Tooling at Scale
rocio
173
14k
RailsConf 2023
tenderlove
30
1.1k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
The Straight Up "How To Draw Better" Workshop
denniskardys
234
140k
Typedesign – Prime Four
hannesfritz
42
2.7k
Building a Modern Day E-commerce SEO Strategy
aleyda
42
7.4k
VelocityConf: Rendering Performance Case Studies
addyosmani
332
24k
Transcript
+VTU*O5JNF$PNQJMFSGPS.3* 5BLBTIJ,PLVCVO5SFBTVSF%BUB*OD /PWFNCFSUI 3VCZ$POG
TFMG
5SFBTVSF%BUB*OD 3VCZ$PNNJUUFSTJODF.BZ !LLVCVO
None
IUUQTUSBWJTDJPSHLLVCVOIBNMJUKPCT *NBEFYGBTUFS)BNMJNQMFNFOUBUJPO)BNMJU
None
IUUQTUSBWJTDJPSHLLVCVOIBNMJUKPCT *NBEFPSJHJOBM)BNMYGBTUFS
None
DPNQJMFEDPEF`TSFOEFSJOHUJNFTQFSTFDPOE OP)5.-FTDBQF 3FOEFSJOHUJNFTQFSTFDPOE JT ERB
Ruby 2.5.0 Erubis 2.7.0 Ruby 2.5.0 Erubi 1.7.0 Ruby 2.5.0 ERB Ruby 2.4.2 IUUQTHJTUHJUIVCDPNLLVCVOFEEDDCEFGDGBDEGGE *NBEF&3#YGBTUFS
*MPWFGBTUUIJOHT BOENBLJOHUIJOHTGBTUFS
*MPWF3VCZMBOHVBHF
*GXFDBONBLF3VCZFWFOGBTUFS JUXPVMECFHSFBU SJHIU
*U`TUJNFUPJOUSPEVDF+*5DPNQJMFSz
5PEBZ*`MMUFMMZPVIPX*BDIJFWFEUIJTXJUIJU 0QUDBSSPUXJUI
[email protected]
GQT Ruby 2.0
Ruby 2.5 YARV-MJIT IUUQTHJUIVCDPNLLVCVOZBSWNKJUPQUDBSSPUCFODINBSL
8IBU`T+*5DPNQJMFS
8IBU`T+*5DPNQJMFS w +*5+VTU*O5JNF w +*5DPNQJMFSPQUJNJ[FTBQSPHSBNCZDPNQJMJOHJUUPlOBUJWFDPEFz EVSJOHFYFDVUJPOPGUIFQSPHSBN w 8BJU XIBU /BUJWFDPEF
*TO`U3VCZOBUJWFOPX
)PXDVSSFOU.3*XPSLT EFGSVCZ FOE 3VCZDPEF
)PXDVSSFOU.3*XPSLT EFGSVCZ FOE 3VCZDPEF "CTUSBDU 4ZOUBY5SFF /0%&@$"-- NFUIPE
SFDFJWFS BSHT 1BSTF
)PXDVSSFOU.3*XPSLT EFGSVCZ FOE 3VCZDPEF "CTUSBDU 4ZOUBY5SFF /0%&@$"-- NFUIPE
SFDFJWFS BSHT 1BSTF QVUPCKFDU QVUPCKFDU PQU@NVMU MFBWF #ZUFDPEF GPS3VCZ7. $PNQJMF
)PXDVSSFOU.3*XPSLT QVUPCKFDU QVUPCKFDU PQU@NVMU MFBWF #ZUFDPEF GPS3VCZ7. 3VCZ7. 4UBDL 1SPHSBN$PVOUFS
)PXDVSSFOU.3*XPSLT QVUPCKFDU QVUPCKFDU PQU@NVMU MFBWF #ZUFDPEF GPS3VCZ7. 3VCZ7. 4UBDL 1SPHSBN$PVOUFS
)PXDVSSFOU.3*XPSLT QVUPCKFDU QVUPCKFDU PQU@NVMU MFBWF #ZUFDPEF GPS3VCZ7. 3VCZ7. 4UBDL 1SPHSBN$PVOUFS
)PXDVSSFOU.3*XPSLT QVUPCKFDU PQU@NVMU MFBWF #ZUFDPEF GPS3VCZ7. 3VCZ7. 4UBDL 1SPHSBN$PVOUFS
)PXDVSSFOU.3*XPSLT QVUPCKFDU PQU@NVMU MFBWF #ZUFDPEF GPS3VCZ7. 3VCZ7. 4UBDL 1SPHSBN$PVOUFS
)PXDVSSFOU.3*XPSLT PQU@NVMU MFBWF #ZUFDPEF GPS3VCZ7. 3VCZ7. 4UBDL 1SPHSBN$PVOUFS
)PXDVSSFOU.3*XPSLT PQU@NVMU MFBWF #ZUFDPEF GPS3VCZ7. 3VCZ7. 4UBDL 1SPHSBN$PVOUFS
)PXDVSSFOU.3*XPSLT MFBWF #ZUFDPEF GPS3VCZ7. 3VCZ7. 4UBDL 1SPHSBN$PVOUFS
)PXDVSSFOU.3*XPSLT MFBWF #ZUFDPEF GPS3VCZ7. 3VCZ7.WN@FYFD 4UBDL 1SPHSBN$PVOUFS SFUVSO
)PXEPFT+*5XPSL #ZUFDPEF GPS3VCZ7. QVUPCKFDU QVUPCKFDU PQU@NVMU MFBWF 5ISFBE 3VCZ7. 5ISFBE
+*5DPNQJMFS $BMMDPVOU
#ZUFDPEF GPS3VCZ7. QVUPCKFDU QVUPCKFDU PQU@NVMU MFBWF 5ISFBE 3VCZ7. 5ISFBE +*5DPNQJMFS
$BMMDPVOU )PXEPFT+*5XPSL *OUFSQSFU
#ZUFDPEF GPS3VCZ7. QVUPCKFDU QVUPCKFDU PQU@NVMU MFBWF 5ISFBE 3VCZ7. 5ISFBE +*5DPNQJMFS
$BMMDPVOU $IFDL )PXEPFT+*5XPSL *OUFSQSFU
#ZUFDPEF GPS3VCZ7. QVUPCKFDU QVUPCKFDU PQU@NVMU MFBWF 5ISFBE 3VCZ7. 5ISFBE +*5DPNQJMFS
$BMMDPVOU /BUJWFDPEF 0QUJNJ[F )PXEPFT+*5XPSL *OUFSQSFU
#ZUFDPEF GPS3VCZ7. QVUPCKFDU QVUPCKFDU PQU@NVMU MFBWF 5ISFBE 3VCZ7. 5ISFBE +*5DPNQJMFS
$BMMDPVOU /BUJWFDPEF $BMM 0QUJNJ[F )PXEPFT+*5XPSL *OUFSQSFU
w #ZUFDPEFJTJOUFSQSFUFEOPOOBUJWFDPEFGPS3VCZ w "GUFS+*5HFOFSBUFTOBUJWFDPEFGSPNUIFCZUFDPEF 3VCZ7.TUBSUT UPDBMMOBUJWFDPEFJOTUFBEPGJOUFSQSFUJOHCZUFDPEF )PXEPFT+*5XPSL
8IZ+*5GPS3VCZ
'JSTUPGBMM EPFT3VCZOFFEUPCFGBTUFS 3VCZJTGBTUFOPVHIGPSNBOZVTFDBTFT CVUJUTIPVMECFGBTUFS w 'PSNPOFZ w 5IFGBTUFS3VCZJT UIFGFXFSDPNQVUFSFTPVSDFTBSFSFRVJSFE
'JSTUPGBMM EPFT3VCZOFFEUPCFGBTUFS 3VCZJTGBTUFOPVHIGPSNBOZVTFDBTFT CVUJUTIPVMECFGBTUFS w 'PSNPOFZ w 5IFGBTUFS3VCZJT UIFGFXFSDPNQVUFSFTPVSDFTBSFSFRVJSFE w
'PSFOEVTFSFYQFSJFODF w FH'BTUXFCBQQMJDBUJPOJTDPNGPSUBCMFUPVTF
'JSTUPGBMM EPFT3VCZOFFEUPCFGBTUFS 3VCZJTGBTUFOPVHIGPSNBOZVTFDBTFT CVUJUTIPVMECFGBTUFS w 'PSNPOFZ w 5IFGBTUFS3VCZJT UIFGFXFSDPNQVUFSFTPVSDFTBSFSFRVJSFE w
'PSFOEVTFSFYQFSJFODF w FH'BTUXFCBQQMJDBUJPOJTDPNGPSUBCMFUPVTF w 5PBMXBZTVTF3VCZ❤ w /PMPOHFSOFFEUPDIPPTFBOPUIFSMBOHVBHFEVFUPQFSGPSNBODF
0LBZ UIFOXIZ+*5GPS3VCZQFSGPSNBODF w +*5+VTU*O5JNF"05"IFBE0G5JNF w "05DPNQJMFTQSPHSBNUPOBUJWFDPEFCFGPSFJUTFYFDVUJPO w 8IZOPU"05CVU+*5 w
5PLFFQCPPUUJNFTIPSU DPNQJMBUJPOTIPVMECFGVMMZBTZODISPOPVT w 4PNFPQUJNJ[BUJPOTOFFESVOUJNFJOGPSNBUJPO FYQMBJOFEMBUFS
0LBZ UIFOXIZ+*5GPS3VCZQFSGPSNBODF w 5IFSFBSFTPNFNFUIPE+*5DPNQJMFSJNQMFNFOUBUJPOTGPS.3* w ,JOEPGXPSLJOH w "DIJFWFECFUUFSQFSGPSNBODF
1FSGPSNBODFPGTPNF+*5DPNQJMFSJNQMFNFOUBUJPOT 0QUDBSSPUXJUI
[email protected]
GQT Ruby 2.0
Ruby 2.5 YARV-MJIT MJIT IUUQTHJUIVCDPNLLVCVOZBSWNKJUPQUDBSSPUCFODINBSL
)PXEPFT+*5NBLF3VCZGBTUFS
JNQMFNFOUBUJPOTPGNFUIPE+*5DPNQJMFS w --3#--7.CBTFENFUIPE+*5DPNQJMFS w .+*5.3*NFUIPE+*5DPNQJMFSCBTFEPO35-JOTUSVDUJPOT w :"37.+*5.3*NFUIPE+*5DPNQJMFSCBTFEPO:"37JOTUSVDUJPOT
--3# IUUQTHJUIVCDPNLLVCVOMMSC
%PZPVLOPX UIF3VCZ,BJHJ,FZOPUF
None
w$POWFSU3VCZDPSFMJCSBSZUP--7.CJUDPEFVTJOH$MBOH w(FOFSBUF--7.*3GSPN:"37CZUFDPEF w"MMPX--7.UPPQUJNJ[FUIFNUPHFUIFS l-JGUUIF$PSFz
*NBEFJUQPTTJCMFXJUI--3#
#ZUFDPEF QVUPCKFDU QVUPCKFDU PQU@NVMU MFBWF 5ISFBE 3VCZ7. )PX--3#XPSLT *OUFSQSFU .3*`T
QSFDPNQJMFE --7.*3
#ZUFDPEF QVUPCKFDU QVUPCKFDU PQU@NVMU MFBWF 5ISFBE 3VCZ7. )PX--3#XPSLT *OUFSQSFU .3*`T
QSFDPNQJMFE --7.CJUDPEF
#ZUFDPEF QVUPCKFDU QVUPCKFDU PQU@NVMU MFBWF 5ISFBE 3VCZ7. )PX--3#XPSLT *OUFSQSFU .FUIPE`T
--7.*3 $PNQJMF .3*`T QSFDPNQJMFE --7.CJUDPEF
#ZUFDPEF QVUPCKFDU QVUPCKFDU PQU@NVMU MFBWF 5ISFBE 3VCZ7. )PX--3#XPSLT *OUFSQSFU .FUIPE`T
--7.*3 $PNQJMF $PNCJOFE --7.*3 -JOL*3 .3*`T QSFDPNQJMFE --7.CJUDPEF
#ZUFDPEF QVUPCKFDU QVUPCKFDU PQU@NVMU MFBWF 5ISFBE 3VCZ7. )PX--3#XPSLT *OUFSQSFU .FUIPE`T
--7.*3 $PNQJMF /BUJWF$PEF $PNCJOFE --7.*3 -JOL*3 0QUJNJ[BUJPO CZ--7.1BTT $PEFHFO .3*`T QSFDPNQJMFE --7.CJUDPEF
#ZUFDPEF QVUPCKFDU QVUPCKFDU PQU@NVMU MFBWF 5ISFBE 3VCZ7. )PX--3#XPSLT *OUFSQSFU .FUIPE`T
--7.*3 $PNQJMF .3*`T QSFDPNQJMFE --7.CJUDPEF /BUJWF$PEF $PNCJOFE --7.*3 -JOL*3 $PEFHFO $BMM 0QUJNJ[BUJPO CZ--7.1BTT
)PXJTJUTQFSGPSNBODF
-FU`TCFODINBSL CN@MPPQ@XIJMFMPPQ
None
8IZJTJUGBTU
"CPVU--7.1BTT w l--7.1BTTzJTBGSBNFXPSLUPBOBMZ[FPSPQUJNJ[F--7.*3 w $PNQJMFSPQUJNJ[BUJPOPG$MBOH--7.JTEPOFJO--7.1BTT
--3#`T1BTTQJQFMJOF w .BKPS1BTTFTUIBUB⒎FDU--3#`TPQUJNJ[BUJPOTUBUT 1BTTFT w5ZQF#BTFE""8SBQQFS1BTT w(MPCBMT""8SBQQFS1BTT w'VODUJPO*OMJOJOH1BTT w&BSMZ$4&1BTT w+VNQ5ISFBEJOH1BTT w$'(4JNQMJpDBUJPO1BTT
w*OTUSVDUJPO$PNCJOJOH1BTT w3FBTTPDJBUF1BTT w-*$.1BTT w-PPQ6OTXJUDI1BTT w*OTUSVDUJPO$PNCJOJOH1BTT w*OE7BS4JNQMJGZ1BTT w(7/1BTT w.FN$QZ0QU1BTT w%FBE4UPSF&MJNJOBUJPO1BTT w-*$.1BTT w$'(4JNQMJpDBUJPO1BTT w*OTUSVDUJPO$PNCJOJOH1BTT w3FWFSTF1PTU0SEFS'VODUJPO"UUST1BTT w(MPCBMT""8SBQQFS1BTT w-PPQ7FDUPSJ[F1BTT w*OTUSVDUJPO$PNCJOJOH1BTT w-PPQ6OSPMM1BTT w*OTUSVDUJPO$PNCJOJOH1BTT w-*$.1BTT
8IJDI--7.1BTTJTJNQPSUBOU w *DPVMESFQSPEVDFUIFTBNFQFSGPSNBODFXJUIPOMZ1BTTFT w -FU`TTFFIPXUIFZDPOUSJCVUFUPQFSGPSNBODF
4VNNBSZPG--3#`TPQUJNJ[BUJPOqPX 3VCZCZUFDPEF /BUJWFDPEF Y8JUICZUFDPEFJOUFSQSFUFS :"37 Y0QUJNJ[FEOBUJWFDPEF`T$GVODUJPO #FODINBSLFEPO8FSDLFSJOIUUQTHJUIVCDPNLLVCVOMMSCQVMM
4VNNBSZPG--3#`TPQUJNJ[BUJPOqPX 3VCZCZUFDPEF --3#$PNQJMFS /BUJWFDPEF Y8JUICZUFDPEFJOUFSQSFUFS :"37 Y0QUJNJ[FEOBUJWFDPEF`T$GVODUJPO #FODINBSLFEPO8FSDLFSJOIUUQTHJUIVCDPNLLVCVOMMSCQVMM Y+*5DPNQJMBUJPOXJUIPVUPQUJNJ[BUJPO
4VNNBSZPG--3#`TPQUJNJ[BUJPOqPX 3VCZCZUFDPEF --3#$PNQJMFS 'VODUJPO*OMJOJOH1BTT /BUJWFDPEF Y8JUICZUFDPEFJOUFSQSFUFS :"37 Y0QUJNJ[FEOBUJWFDPEF`T$GVODUJPO #FODINBSLFEPO8FSDLFSJOIUUQTHJUIVCDPNLLVCVOMMSCQVMM Y+*5DPNQJMBUJPOXJUIPVUPQUJNJ[BUJPO
Y*OMJOFGVODUJPOT
4VNNBSZPG--3#`TPQUJNJ[BUJPOqPX 3VCZCZUFDPEF --3#$PNQJMFS 'VODUJPO*OMJOJOH1BTT -*$.1BTT /BUJWFDPEF Y8JUICZUFDPEFJOUFSQSFUFS :"37 Y0QUJNJ[FEOBUJWFDPEF`T$GVODUJPO #FODINBSLFEPO8FSDLFSJOIUUQTHJUIVCDPNLLVCVOMMSCQVMM
Y+*5DPNQJMBUJPOXJUIPVUPQUJNJ[BUJPO Y*OMJOFGVODUJPOT Y3FNPWFMPPQJOWBSJBOUDPEFGSPNMPPQ
4VNNBSZPG--3#`TPQUJNJ[BUJPOqPX w *OMJOJOH'VODUJPOIBTNBKPSJNQBDU w "TDIBOHJOH$PEF(FO-FWFMB⒎FDUFEJUTJNQBDU BDUVBMMZDPEF HFOFSBUPSTFFNTUPEPPQUJNJ[BUJPOPOJOMJOFEDPEF w -*$. -PPQ*OWBSJBOU$PEF.PUJPO
JTBMTPHPPE
-FBSOJOHTGSPN--3# w *OUIJTBQQSPBDI UIFSFXBTOPQFSGPSNBODFCFOFpUJODPOTUSVDUJOH --7.*3CZPVSTFMWFT w .BJOPQUJNJ[BUJPOUBSHFUJT3VCZDPSFQSFDPNQJMFECZ$MBOH w ,FFQJOHVQXJUI--7.`TCSFBLJOHDIBOHFJTIBSE w
%FCVHHJOHOBUJWFDPEFDPNQJMFEGSPN--7.*3TFFNFEIBSE
.+*5 IUUQTHJUIVCDPNWONBLBSPWSVCZ
8IBU`T.+*5 w %FWFMPQFECZ7MBEJNJS.BLBSPW w .+*5QSPKFDUDPOTJTUTPGDPNQPOFOUT w 7.JOTUSVDUJPOTSFQMBDFNFOU w .FUIPE+*5DPNQJMFS
7.JOTUSVDUJPOTSFQMBDFNFOU w :"37 4UBDLCBTFE 35- 3FHJTUFSCBTFE w %ZOBNJDCZUFDPEFTQFDJBMJ[BUJPO w
*UTQFDVMBUJWFMZTQFDJBMJ[FTJOTUSVDUJPOGPSTQFDJpDDMBTT w FHJOETFU <> BJOETFU "SSBZ<> BJOETFUJ "SSBZ<> *OUFHFS
.FUIPE+*5DPNQJMFS w #BTFEPO35-JOTUSVDUJPOT DPNQJMFCZUFDPEFUP$DPEF BOE HDDDMBOHHFOFSBUFTOBUJWFDPEF w #BDLHSPVOEDPNQJMBUJPOPOQUISFBE w %FPQUJNJ[BUJPOGSPNOBUJWFDPEFUPCZUFDPEF
:"37#ZUFDPEF QVUPCKFDU QVUPCKFDU PQU@NVMU MFBWF 5ISFBE3VCZ7. -FU`TTFFIPXJU`TEJ⒎FSFOUGSPNDVSSFOUPOF 4UBDL 1SPHSBN$PVOUFS
35-#ZUFDPEF WBMUFNQ NVMUJ UFNQ@SFU 5ISFBE3VCZ7. 5ISFBE+*5DPNQJMFS *O.+*5
7.JOTUSVDUJPOTBOEDPNQJMFSBSFSFQMBDFE 3FHJTUFS 1SPHSBN$PVOUFS 3FHJTUFS $BMMDPVOU
$BMMDPVOU 35-#ZUFDPEF WBMUFNQ NVMUJ UFNQ@SFU 5ISFBE3VCZ7. 5ISFBE+*5DPNQJMFS
)PX.+*5XPSLT 3FHJTUFS 1SPHSBN$PVOUFS 3FHJTUFS
$BMMDPVOU 35-#ZUFDPEF WBMUFNQ NVMUJ UFNQ@SFU 5ISFBE3VCZ7. 5ISFBE+*5DPNQJMFS
)PX.+*5XPSLT 3FHJTUFS 1SPHSBN$PVOUFS 3FHJTUFS
$BMMDPVOU 35-#ZUFDPEF WBMUFNQ JNVMUJ UFNQ@SFU 5ISFBE3VCZ7. 5ISFBE+*5DPNQJMFS
)PX.+*5XPSLT 3FHJTUFS 1SPHSBN$PVOUFS 3FHJTUFS $IBOHFJOTUSVDUJPO EFQFOEJOHPO SFDFJWFSUZQF NVMUJ 0CKFDU *OUFHFS JNVMUJ *OUFHFS *OUFHFS
$BMMDPVOU 35-#ZUFDPEF WBMUFNQ JNVMUJ UFNQ@SFU 5ISFBE3VCZ7. 5ISFBE+*5DPNQJMFS
)PX.+*5XPSLT 3FHJTUFS 1SPHSBN$PVOUFS 3FHJTUFS
$BMMDPVOU 35-#ZUFDPEF WBMUFNQ JNVMUJ UFNQ@SFU 5ISFBE3VCZ7. 5ISFBE+*5DPNQJMFS
)PX.+*5XPSLT 3FHJTUFS 1SPHSBN$PVOUFS 3FHJTUFS
$BMMDPVOU 35-#ZUFDPEF WBMUFNQ JNVMUJ UFNQ@SFU 5ISFBE3VCZ7. 5ISFBE+*5DPNQJMFS
)PX.+*5XPSLT 3FHJTUFS 1SPHSBN$PVOUFS 3FHJTUFS SFUVSO
$BMMDPVOU 35-#ZUFDPEF WBMUFNQ JNVMUJ UFNQ@SFU 5ISFBE3VCZ7. 5ISFBE+*5DPNQJMFS
)PX.+*5XPSLT *OUFSQSFU
$BMMDPVOU 35-#ZUFDPEF WBMUFNQ JNVMUJ UFNQ@SFU 5ISFBE3VCZ7. 5ISFBE+*5DPNQJMFS
)PX.+*5XPSLT *OUFSQSFU -PDBMpMFT $DPEFPGNFUIPE $PNQJMF
-PDBMpMFT $BMMDPVOU 35-#ZUFDPEF WBMUFNQ JNVMUJ UFNQ@SFU 5ISFBE3VCZ7.
5ISFBE+*5DPNQJMFS )PX.+*5XPSLT *OUFSQSFU $DPEFPGNFUIPE $PNQJMF 4IBSFE0CKFDUpMF HDD DMBOH
-PDBMpMFT $BMMDPVOU 35-#ZUFDPEF WBMUFNQ JNVMUJ UFNQ@SFU 5ISFBE3VCZ7.
5ISFBE+*5DPNQJMFS )PX.+*5XPSLT *OUFSQSFU $DPEFPGNFUIPE $PNQJMF 4IBSFE0CKFDUpMF HDD DMBOH .FNPSZ /BUJWFDPEF EMTZN
-PDBMpMFT $BMMDPVOU 35-#ZUFDPEF WBMUFNQ JNVMUJ UFNQ@SFU 5ISFBE3VCZ7.
5ISFBE+*5DPNQJMFS )PX.+*5XPSLT *OUFSQSFU $DPEFPGNFUIPE $PNQJMF 4IBSFE0CKFDUpMF HDD DMBOH .FNPSZ EMTZN $BMM /BUJWFDPEF
)PXJT.+*5 w .+*5BDIJFWFEHSFBUQFSGPSNBODF w *UDMBJNTYTQFFEVQGSPN3VCZXJUI0QUDBSSPU
)PXJT.+*5 w .+*5BDIJFWFEHSFBUQFSGPSNBODF w *UDMBJNTYTQFFEVQGSPN3VCZXJUI0QUDBSSPU w #VUSFQMBDJOHDPNQJMFSBOE7.JOTUSVDUJPOTNJHIUCFUPPSJTLZ w 4P*GPSLFE.+*5UPNBLF.+*5JOUSPEVDUJPOTBGFS QPSUJOH
--3#`TJEFBTUPDPNQJMFTUBDLCBTFEJOTUSVDUJPOT
:"37.+*5 IUUQTHJUIVCDPNLLVCVOZBSWNKJU
:"37.+*5 w "GPSLPG.+*5QSPKFDUNBEFCZNF w 5IFTBNFUISFBEJOH DPEFHFOFSBUJPOBOE+*5TDIFEVMJOH w #VUJUBDIJFWFT+*5DPNQJMBUJPOXJUIPVUSFQMBDJOH7.JOTUSVDUJPOT
-FU`TTFFIPX:"37.+*5PQUJNJ[FTUIJT :"37CZUFDPEF QVUPCKFDU QVUPCKFDU PQU@NVMU MFBWF
'JSTUPGBMM XIZDBO`UXFEPUIJT QVUPCKFDU MFBWF :"37CZUFDPEF QVUPCKFDU QVUPCKFDU PQU@NVMU MFBWF
QVUPCKFDU MFBWF DMBTT*OUFHFS EFG PCK PCK FOE FOE 'JSTUPGBMM
XIZDBO`UXFEPUIJT :"37CZUFDPEF
8FOFFEUPDIFDLNFUIPESFEFpOJUJPO QVUPCKFDU MFBWF DMBTT*OUFHFS EFG PCK PCK FOE FOE
$VSSFOU3VCZDPNQJMFSEPFTO`UQSPWJEFTVDIPQUJNJ[BUJPO :"37CZUFDPEF
)PXEPFT:"37.+*5PQUJNJ[FUIJT QVUPCKFDU QVUPCKFDU PQU@NVMU MFBWF $BMMDPVOU :"37CZUFDPEF 5ISFBE3VCZ7. 5ISFBE+*5DPNQJMFS
QVUPCKFDU QVUPCKFDU PQU@NVMU MFBWF $BMMDPVOU *OUFSQSFU :"37CZUFDPEF )PXEPFT:"37.+*5PQUJNJ[FUIJT 5ISFBE3VCZ7. 5ISFBE+*5DPNQJMFS
QVUPCKFDU QVUPCKFDU PQU@NVMU MFBWF $BMMDPVOU $IFDL :"37CZUFDPEF )PXEPFT:"37.+*5PQUJNJ[FUIJT 5ISFBE3VCZ7. 5ISFBE+*5DPNQJMFS
*OUFSQSFU
QVUPCKFDU QVUPCKFDU PQU@NVMU MFBWF $BMMDPVOU (FOFSBUF$DPEF 7"-6&PQU@NVMU B C \
*G OPU@SFEFpOFE JOU@NVMU \ SFUVSOB C ^FMTF\ SFUVSOWN@FYFD ^ ^ 7"-6&OBUJWF@DPEF \ SFUVSOPQU@NVMU ^ :"37CZUFDPEF )PXEPFT:"37.+*5PQUJNJ[FUIJT 5ISFBE3VCZ7. 5ISFBE+*5DPNQJMFS 5ISFBE3VCZ7. *OUFSQSFU
QVUPCKFDU QVUPCKFDU PQU@NVMU MFBWF $BMMDPVOU 7"-6&PQU@NVMU B C \ *G
OPU@SFEFpOFE JOU@NVMU \ SFUVSOB C ^FMTF\ SFUVSOWN@FYFD ^ ^ 7"-6&OBUJWF@DPEF \ SFUVSOPQU@NVMU ^ $DPNQJMFS 0QUJNJ[F$PNQJMF :"37CZUFDPEF )PXEPFT:"37.+*5PQUJNJ[FUIJT 5ISFBE3VCZ7. 5ISFBE+*5DPNQJMFS (FOFSBUF$DPEF *OUFSQSFU
7"-6&PQU@NVMU B C \ *G OPU@SFEFpOFE JOU@NVMU \ SFUVSOB C
^FMTF\ SFUVSOWN@FYFD ^ ^ 7"-6&OBUJWF@DPEF \ SFUVSOPQU@NVMU ^ $DPNQJMFS 0QUJNJ[F$PNQJMF )PXEPFT:"37.+*5PQUJNJ[FUIJT
7"-6&PQU@NVMU B C \ *G OPU@SFEFpOFE JOU@NVMU \ SFUVSOB C
^FMTF\ SFUVSOWN@FYFD ^ ^ 7"-6&OBUJWF@DPEF \ SFUVSOPQU@NVMU ^ $DPNQJMFS 0QUJNJ[F$PNQJMF 7"-6&OBUJWF@DPEF \ *G OPU@SFEFpOFE JOU@NVMU \ SFUVSO ^FMTF\ SFUVSOWN@FYFD ^ ^ *OMJOF )PXEPFT:"37.+*5PQUJNJ[FUIJT
7"-6&PQU@NVMU B C \ *G OPU@SFEFpOFE JOU@NVMU \ SFUVSOB C
^FMTF\ SFUVSOWN@FYFD ^ ^ 7"-6&OBUJWF@DPEF \ SFUVSOPQU@NVMU ^ $DPNQJMFS 0QUJNJ[F$PNQJMF 7"-6&OBUJWF@DPEF \ *G OPU@SFEFpOFE JOU@NVMU \ SFUVSO ^FMTF\ SFUVSOWN@FYFD ^ ^ *OMJOF 7"-6&OBUJWF@DPEF \ *G OPU@SFEFpOFE JOU@NVMU \ SFUVSO ^FMTF\ SFUVSOWN@FYFD ^ ^ $BMD )PXEPFT:"37.+*5PQUJNJ[FUIJT
7"-6&PQU@NVMU B C \ *G OPU@SFEFpOFE JOU@NVMU \ SFUVSOB C
^FMTF\ SFUVSOWN@FYFD ^ ^ 7"-6&OBUJWF@DPEF \ SFUVSOPQU@NVMU ^ $DPNQJMFS 0QUJNJ[F$PNQJMF 7"-6&OBUJWF@DPEF \ *G OPU@SFEFpOFE JOU@NVMU \ SFUVSO ^FMTF\ SFUVSOWN@FYFD ^ ^ *OMJOF 7"-6&OBUJWF@DPEF \ *G OPU@SFEFpOFE JOU@NVMU \ SFUVSO ^FMTF\ SFUVSOWN@FYFD ^ ^ $BMD 8FDBOSFUVSOBSFTVMUPQUJNJ[FECZ$DPNQJMFS )PXEPFT:"37.+*5PQUJNJ[FUIJT
#ZUFDPEF GPS3VCZ7. QVUPCKFDU QVUPCKFDU PQU@NVMU MFBWF $BMMDPVOU 7"-6&OBUJWF@DPEF \ *G
OPU@SFEFpOFE JOU@NVMU \ SFUVSO ^FMTF\ SFUVSOWN@FYFD ^ ^ )PXEPFT:"37.+*5PQUJNJ[FUIJT 5ISFBE3VCZ7. 5ISFBE+*5DPNQJMFS *OUFSQSFU (FOFSBUF$DPEF
#ZUFDPEF GPS3VCZ7. QVUPCKFDU QVUPCKFDU PQU@NVMU MFBWF $BMMDPVOU 40pMF 7"-6&OBUJWF@DPEF \
*G OPU@SFEFpOFE JOU@NVMU \ SFUVSO ^FMTF\ SFUVSOWN@FYFD ^ ^ $DPNQJMFS )PXEPFT:"37.+*5PQUJNJ[FUIJT 5ISFBE3VCZ7. 5ISFBE+*5DPNQJMFS *OUFSQSFU (FOFSBUF$DPEF
#ZUFDPEF GPS3VCZ7. QVUPCKFDU QVUPCKFDU PQU@NVMU MFBWF $BMMDPVOU 40pMF 7"-6&OBUJWF@DPEF \
*G OPU@SFEFpOFE JOU@NVMU \ SFUVSO ^FMTF\ SFUVSOWN@FYFD ^ ^ /BUJWFDPEF EMTZN $DPNQJMFS )PXEPFT:"37.+*5PQUJNJ[FUIJT 5ISFBE3VCZ7. 5ISFBE+*5DPNQJMFS *OUFSQSFU (FOFSBUF$DPEF
#ZUFDPEF GPS3VCZ7. QVUPCKFDU QVUPCKFDU PQU@NVMU MFBWF $BMMDPVOU 40pMF 7"-6&OBUJWF@DPEF \
*G OPU@SFEFpOFE JOU@NVMU \ SFUVSO ^FMTF\ SFUVSOWN@FYFD ^ ^ $BMM $DPNQJMFS )PXEPFT:"37.+*5PQUJNJ[FUIJT 5ISFBE3VCZ7. 5ISFBE+*5DPNQJMFS *OUFSQSFU (FOFSBUF$DPEF EMTZN /BUJWFDPEF
#BTJDJEFBTUPPQUJNJ[F:"37.+*5 w "UUIJTTUBHF *`NGPDVTJOHPO w *OMJOJOHGVODUJPOT w 4LJQQJOHVOOFDFTTBSZXPSL w %FDSFBTJOHDPNQJMBUJPOUJNF
w "T:"37.+*5JTBGPSLPG.+*5 TPNFJEFBTBSFQPSUFEGSPN.+*5
0QUJNJ[BUJPOTJNQMFNFOUFEJO :"37.+*5
*OMJOFGVODUJPOTCZIBWJOH7.TPVSDFDPEFBTIFBEFS w 5ZQF*OMJOJOHGVODUJPOT 1PSUFEGSPN.+*5 w *OTUBMMIFBEFSpMFGPS+*5VOEFSQSFpYEJSFDUPSZ w dSCFOWWFSTJPOTJODMVEFSVCZY@EBSXJO SC@NKJU@NJO@IFBEFSI
w 5IJTJTKVTUQSFQSPDFTTFEWFSTJPOPGWND
5SBOTGPSNGVODUJPOTJOIFBEFSUPTUBUJD w 5ZQF%FDSFBTJOHDPNQJMBUJPOUJNF 1PSUFEGSPN.+*5 w "EElTUBUJDz BOElJOMJOFz UPBMMOPOTUBUJDEFDMBSBUJPOTJOIFBEFSpMF w
$DPNQJMFSDBOTLJQDPNQJMBUJPOPGVOVTFEGVODUJPOTJGUIFZ`SFTUBUJD w *GDPNQJMBUJPOUJNFJTTIPSUFOFE 3VCZQSPHSBNJTPQUJNJ[FEFBMJFS
4LJQFYFDVUJOHTFUKNQJG+*5FEDPEFJTBWBJMBCMF w 5ZQF4LJQQJOHVOOFDFTTBSZXPSL 1PSUFEGSPN.+*5 w 3VCZ`TFYDFQUJPOJTJNQMFNFOUFECZDBMMJOHlTFUKNQzBOElMPOHKNQz w lTFUKNQzOFFETUPTUPSFDPOUFYU TPJU`TTMPX
w .+*5TLJQTJUJGNFUIPEEPFTOPUTFFNUPSBJTFFYDFQUJPO w :"37.+*5`TQPSUJTJODPNQMFUFBOENJHIUCFCSPLFOGPSOPX
"WPJEJOMJOJOHMBSHFGVODUJPO w 5ZQF%FDSFBTJOHDPNQJMBUJPOUJNF JNQMFNFOUFEEJ⒎FSFOUMZGSPN.+*5 w *GIFBEFSJODMVEFTWFSZMBSHFGVODUJPOBOEJU`TJOMJOFE DPNQJMBUJPO CFDPNFTTPTMPX w
FHWN@TFBSDI@NFUIPE w 4P:"37.+*5JNQMFNFOUTEFPQUJNJ[BUJPO DIBOHFGSPNDBMMJOH+*5 DPEFUPJOUFSQSFUJOHCZUFDPEF KVTUUPBWPJEDPNQJMJOHTVDIGVODUJPOT
4BWFlCBTFQPJOUFSzUPDBODFM+*5FYFDVUJPO w 5ZQF4LJQQJOHVOOFDFTTBSZXPSL 1PSUFEGSPN.+*5 w 5PDBODFMDBMMJOH+*5DPEFEVSJOHUIFDBMM JUOFFETUPSFTUPSF7.TUBDL w .+*5BOE:"37.+*5TUPSFT*OJUJBMQPTJUJPOPGTUBDLQPJOUFSBTlCBTF
QPJOUFSzPOFWFSZNFUIPEDBMM w "MUFSOBUJWFMZXFDBODBMDVMBUFCBTFQPJOUFSGSPNQSFWJPVTDPOUSPM GSBNF CVUJUXBTTMPX
*OMJOFFYUFSOBMGVODUJPOTVTFEJO7.JOTUSVDUJPOT w 5ZQF*OMJOJOHGVODUJPOT w .+*5BDIJFWFTUIJTCZEZOBNJDCZUFDPEFTQFDJBMJ[BUJPO w )BWFEFpOJUJPOTPGFYUFSOBMGVODUJPOTVTFECZ7.JO+*5IFBEFS w FH)BWFEFpOJUJPOPGSC@BSZ@BSFGUPJOMJOF"SSBZ<>
*OMJOFTFUVQPGNFUIPEDBMM w 5ZQF*OMJOJOHGVODUJPOT w .+*5BDIJFWFTUIJTCZEZOBNJDCZUFDPEFTQFDJBMJ[BUJPO w 6TFlDBMMDBDIFzJOCZUFDPEFUPLOPXXIBULJOEPGNFUIPEJTVTFE w #BDLHSPVOE:"37`TCZUFDPEFIBTlDBMMDBDIFz XIJDIJODMVEFT
NFUIPEEFpOJUJPOBOEJUTTFUVQNFUIPE w 8FDBOJOMJOFNFUIPETFUVQ MJLFQVTIJOHDPOUSPMGSBNF JGXFLOPX JUTUZQF
8JUIUIPTFUFDIOJRVFT UIJTQFSGPSNBODFJTBDIJFWFE 0QUDBSSPUXJUI
[email protected]
GQT Ruby
2.0 Ruby 2.5 YARV-MJIT IUUQTHJUIVCDPNLLVCVOZBSWNKJUPQUDBSSPUCFODINBSL
'VUVSFXPSLTGPS:"37.+*5PQUJNJ[BUJPO w 1PSUNPSFUFDIOJRVFTGSPN.+*5 w FH3FNPWFVOOFDFTTBSZGVODUJPOTJOQSFDPNQJMFEIFBEFS w *OMJOFDPSFNFUIPEEFpOFEXJUI$GVODUJPO w *OMJOFNFUIPEEFpOFEXJUICZUFDPEF
)PXDBOXFSFBMJ[F+*5GPS.3*
.BOZQFPQMFIBWFGBJMFEUPJOUSPEVDF+*5 w 5IFSFIBECFFOTPNF+*5JNQMFNFOUBUJPOTQSFTFOUFEBU3VCZ,BJHJ w )PXEJEZBSWMMWNGBJM w "+VTUJO5JNFDPNQJMFSGPS$3VCZ 3V+*5 w
3VCJOJVTIBE+*5DPNQJMFSCBTFEPO--7. CVUJUXBTSFNPWFEJO
8IZEJEUIFZGBJM w ZBSWMMWN)BSEUPJNQSPWFQFSGPSNBODFXJUI.3*SVOUJNF w 3V+*5.FNPSZDPOTVNJOH w 3VCJOJVT)BSEUPpYCVHTJO+*5
$BOXFTPMWF*NQSPWFQFSGPSNBODF w .+*5TIPXFEIPXUPBDIJFWFHSFBUQFSGPSNBODFXJUI.3* w 8FIBWFHPPECFODINBSLTUPTVQQPSUJU w NBNFPQUDBSSPU w OPBIHJCCTSBJMT@SVCZ@CFODI
$BOXFTPMWF.FNPSZDPOTVNJOH w .+*5XBTHPPEFOPVHIBCPVUUIJTUPP
$BOXFTPMWF)BSEUPpYCVHT w .+*5EPFTOPUVTF--7.EJSFDUMZ w /POFFEUPLFFQVQXJUICSFBLJOHDIBOHFTJO--7. w 8FDBOEFCVH4&(7TFFJOH$DPEFBTVTVBM
$BOXFTPMWF)BSEUPpYCVHT w .+*5EPFTOPUVTF--7.EJSFDUMZ w /POFFEUPLFFQVQXJUICSFBLJOHDIBOHFTJO--7. w 8FDBOEFCVH4&(7TFFJOH$DPEFBTVTVBM w #VU.+*5OFFETNBOZDIBOHFTGPSJOUSPEVDUJPO w
5IFMFTTZPVDIBOHF UIFNPSFVOMJLFMZJU`MMCFUPIBWFCVHT
.BLFJOJUJBMSFMFBTFBTTBGFBTQPTTJCMF w %PO`UTPMWFNBOZEJ⒏DVMUQSPCMFNTTJNVMUBOFPVTMZ w 3FQMBDJOH7.JOTUSVDUJPOT w *OUSPEVDFQPSUBCMF+*5JOGSBTUSVDUVSF
.BLFJOJUJBMSFMFBTFBTTBGFBTQPTTJCMF w 3JTLZDIBOHFTIPVMECFBCMFUPCFUVSOFEP⒎BUpSTU w #VUUIFSF`TOPXBZUPUVSOP⒎35-`T7.JOTUSVDUJPOSFQMBDFNFOUT w *NBEF:"37.+*5TPUIBUBMMDIBOHFTCFDPNFPQUJPOBM
.BLFJOJUJBMSFMFBTFBTTBGFBTQPTTJCMF w (SBEVBMMZJOUSPEVDFDIBOHFTUPVQTUSFBN w *BMSFBEZDPNNJUUFETPNFDIBOHFTVTFGVMGPS+*5UP.3* w 3FMFBTF:"37.+*5pSTUBOEUFTU+*5JOGSBTUSVDUVSFTBGFMZ BOEUIFO VTF.+*5JOUIFOFYUSFMFBTF w
.BOZQBSUTPG:"37.+*5DBOCFTIBSFEXJUI.+*5
$VSSFOUTUBUVTPG+*5QSPKFDUT .+*5 :"37.+*5 0QUDBSSPUGQTWT3VCZQSFWJFX XJUIPVU+*5 Y Y 0QUDBSSPUGQTWT3VCZQSFWJFX 8JUI+*5 Y
Y NBLFUFTUUFTUBMMTQFD XJUIPVU+*5 ˓ºº ˓˓˓ NBLFUFTUUFTUBMMTQFD XJUI+*5 ˓ºº ºº˓ +*5XPSLTPO8JOEPXTNBD04-JOVY º˚˓ ˚˓˓ #BTFSFWJTJPO S SPVHIMZ S BMNPTUUSVOL #FODINBSLEFUBJMTIUUQTHJUIVCDPNLLVCVOZBSWNKJUPQUDBSSPUCFODINBSL
8FOFFEZPVSIFMQ w +VTUUSZUIFNXJUIZPVSBQQT CVHSFQPSUTBSFWFSZIFMQGVM w #VUGPSOPXJU`TWFSZMJLFMZUPCFCSPLFOGPSNBOZDBTFT w 1MFBTFSFQSPEVDFCVHXJUIlNJOJSVCZCJOBSZJGQPTTJCMF w 1MFBTFSFQPSUJTTVFTUP
w .+*5IUUQTHJUIVCDPNWONBLBSPWNKJU w :"37.+*5IUUQTHJUIVCDPNLLVCVOZBSWNKJU
)PXUPVTF.+*5PS:"37.+*5 w $PNQJMFGSPNTPVSDFDPEF w HJUDMPOFIUUQTHJUIVCDPNLLVCVOZBSWNKJUDEZBSWNKJU w BVUPDPOG w DPOpHVSFQSFpYl\)0.&^SCFOWWFSTJPOTZBSWNKJUz w
NBLFNBLFJOTUBMM
)PXUPVTF.+*5PS:"37.+*5 w +VTUBEElKzPQUJPOUPlSVCZzDPNNBOEFYFDVUJPO w &YlSVCZGPP@UFTUSCzlSVCZKGPP@UFTUSCz w lKzVTFTHDD1BTTlKMzUPVTF$MBOH ZPVNVTUVTFJUPONBD04 w
1BTTlKWz lKWzPSlKWzUPDIFDL+*5BDUVBMMZGBJMTPSOPU w 1BTTlKEKTzUPEFCVHXJUIHEC MMEC
$PODMVTJPO w .FUIPE+*5DPNQJMFSTGPS.3*DBOHBJOHPPEQFSGPSNBODFNBJOMZ CZIFMQJOH$DPNQJMFSTJOMJOFDPEF w :"37.+*5JTBTBGFNJHSBUJPOQBUIUPSFBMJ[F.+*5JOUSPEVDUJPO w 5PSFBMJ[F+*5 CVHSFQPSUTVTJOHNJOJSVCZBSFWFSZIFMQGVM