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
13k
Ruby JIT Hacking Guide / RubyKaigi 2023
k0kubun
2
9.6k
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
430
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
790
Ruby 3.0 JIT on Rails
k0kubun
9
9.2k
Other Decks in Programming
See All in Programming
Amazon Q Developer Proで効率化するAPI開発入門
seike460
PRO
0
110
PHPのバージョンアップ時にも役立ったAST
matsuo_atsushi
0
110
CDK開発におけるコーディング規約の運用
yamanashi_ren01
2
120
『テスト書いた方が開発が早いじゃん』を解き明かす #phpcon_nagoya
o0h
PRO
2
210
Amazon S3 TablesとAmazon S3 Metadataを触ってみた / 20250201-jawsug-tochigi-s3tables-s3metadata
kasacchiful
0
160
Immutable ActiveRecord
megane42
0
140
楽しく向き合う例外対応
okutsu
0
110
Lottieアニメーションをカスタマイズしてみた
tahia910
0
130
個人アプリを2年ぶりにアプデしたから褒めて / I just updated my personal app, praise me!
lovee
0
340
SpringBoot3.4の構造化ログ #kanjava
irof
2
990
Flutter × Firebase Genkit で加速する生成 AI アプリ開発
coborinai
0
160
クリーンアーキテクチャから見る依存の向きの大切さ
shimabox
2
280
Featured
See All Featured
The Cost Of JavaScript in 2023
addyosmani
47
7.3k
Rails Girls Zürich Keynote
gr2m
94
13k
Embracing the Ebb and Flow
colly
84
4.6k
The Language of Interfaces
destraynor
156
24k
Into the Great Unknown - MozCon
thekraken
35
1.6k
The Pragmatic Product Professional
lauravandoore
32
6.4k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
10
1.3k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.4k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
Building a Scalable Design System with Sketch
lauravandoore
461
33k
Visualization
eitanlees
146
15k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
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