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
YJIT Makes Rails 1.7x faster / RubyKaigi 2024
k0kubun
7
12k
Ruby JIT Hacking Guide / RubyKaigi 2023
k0kubun
2
9.4k
YJIT: Dive into Ruby's JIT compiler written in Rust / Rust.Tokyo 2022
k0kubun
1
2k
Towards Ruby 4 JIT / RubyKaigi 2022
k0kubun
3
11k
Optimizing Production Performance with MRI JIT / RubyConf 2021
k0kubun
1
400
Why Ruby's JIT was slow / RubyKaigi Takeout 2021
k0kubun
3
1.8k
数時間かかる週一リリースを毎日何度も爆速でできるようにするまで / CI/CD Conference 2021
k0kubun
21
14k
Ruby 3 JIT's roadmap / RubyConf China 2020
k0kubun
0
760
Ruby 3.0 JIT on Rails
k0kubun
9
9.1k
Other Decks in Programming
See All in Programming
NSOutlineView何もわからん:( 前編 / I Don't Understand About NSOutlineView :( Pt. 1
usagimaru
0
330
Remix on Hono on Cloudflare Workers
yusukebe
1
280
OnlineTestConf: Test Automation Friend or Foe
maaretp
0
110
Make Impossible States Impossibleを 意識してReactのPropsを設計しよう
ikumatadokoro
0
170
Macとオーディオ再生 2024/11/02
yusukeito
0
370
ふかぼれ!CSSセレクターモジュール / Fukabore! CSS Selectors Module
petamoriken
0
150
What’s New in Compose Multiplatform - A Live Tour (droidcon London 2024)
zsmb
1
470
【Kaigi on Rails 2024】YOUTRUST スポンサーLT
krpk1900
1
330
Jakarta Concurrencyによる並行処理プログラミングの始め方 (JJUG CCC 2024 Fall)
tnagao7
1
290
Flutterを言い訳にしない!アプリの使い心地改善テクニック5選🔥
kno3a87
1
150
どうして僕の作ったクラスが手続き型と言われなきゃいけないんですか
akikogoto
1
120
2024/11/8 関西Kaggler会 2024 #3 / Kaggle Kernel で Gemma 2 × vLLM を動かす。
kohecchi
5
910
Featured
See All Featured
Large-scale JavaScript Application Architecture
addyosmani
510
110k
Facilitating Awesome Meetings
lara
50
6.1k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
329
21k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
Designing Experiences People Love
moore
138
23k
Designing the Hi-DPI Web
ddemaree
280
34k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
126
18k
Ruby is Unlike a Banana
tanoku
97
11k
Practical Orchestrator
shlominoach
186
10k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
159
15k
Statistics for Hackers
jakevdp
796
220k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
47
2.1k
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