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
ZJIT: Building a New JIT Compiler for Ruby / REBASE 2025
k0kubun
0
18
Deoptimization: How YJIT Speeds Up Ruby by Slowing Down / RubyKaigi 2025
k0kubun
2
3.4k
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
2
2.2k
Towards Ruby 4 JIT / RubyKaigi 2022
k0kubun
3
11k
Optimizing Production Performance with MRI JIT / RubyConf 2021
k0kubun
1
480
Why Ruby's JIT was slow / RubyKaigi Takeout 2021
k0kubun
3
2k
数時間かかる週一リリースを毎日何度も爆速でできるようにするまで / CI/CD Conference 2021
k0kubun
21
14k
Other Decks in Programming
See All in Programming
開発組織の戦略的な役割と 設計スキル向上の効果
masuda220
PRO
10
1.7k
TransformerからMCPまで(現代AIを理解するための羅針盤)
mickey_kubo
7
5.5k
alien-signals と自作 OSS で実現する フレームワーク非依存な ロジック共通化の探求 / Exploring Framework-Agnostic Logic Sharing with alien-signals and Custom OSS
aoseyuu
2
730
オンデバイスAIとXcode
ryodeveloper
0
190
釣り地図SNSにおける有料機能の実装
nokonoko1203
0
200
AI Agent 時代的開發者生存指南
eddie
4
2.2k
社会人になっても趣味開発を続けたい! / traPavilion
mazrean
1
110
CSC509 Lecture 08
javiergs
PRO
0
260
なんでRustの環境構築してないのにRust製のツールが動くの? / Why Do Rust-Based Tools Run Without a Rust Environment?
ssssota
14
46k
Migration to Signals, Resource API, and NgRx Signal Store
manfredsteyer
PRO
0
120
Server Side Kotlin Meetup vol.16: 内部動作を理解して ハイパフォーマンスなサーバサイド Kotlin アプリケーションを書こう
ternbusty
3
260
テーブル定義書の構造化抽出して、生成AIでDWH分析を試してみた / devio2025tokyo
kasacchiful
0
310
Featured
See All Featured
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
130k
Reflections from 52 weeks, 52 projects
jeffersonlam
354
21k
Side Projects
sachag
455
43k
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
Site-Speed That Sticks
csswizardry
13
930
Being A Developer After 40
akosma
91
590k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.7k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.7k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
Building an army of robots
kneath
305
46k
Rails Girls Zürich Keynote
gr2m
95
14k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.7k
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