Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Just-In-Time Compiler for MRI
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Takashi Kokubun
November 17, 2017
Programming
25k
8
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Just-In-Time Compiler for MRI
RubyConf 2017 New Orleans
Takashi Kokubun
November 17, 2017
More Decks by Takashi Kokubun
See All by Takashi Kokubun
Lightning-Fast Method Calls with Ruby 4.1 ZJIT / RubyKaigi 2026
k0kubun
3
3.9k
一度始めたらやめられない開発効率向上術 / Findy あなたのdotfilesを教えて!
k0kubun
4
3.3k
ZJIT: The Ruby 4 JIT Compiler / Ruby Release 30th Anniversary Party
k0kubun
1
580
ZJIT: The Future of Ruby Performance / San Francisco Ruby Conference 2025
k0kubun
1
160
ZJIT: Building a New JIT Compiler for Ruby / REBASE 2025
k0kubun
0
180
Deoptimization: How YJIT Speeds Up Ruby by Slowing Down / RubyKaigi 2025
k0kubun
2
4.9k
YJIT Makes Rails 1.7x faster / RubyKaigi 2024
k0kubun
7
16k
Ruby JIT Hacking Guide / RubyKaigi 2023
k0kubun
2
11k
YJIT: Dive into Ruby's JIT compiler written in Rust / Rust.Tokyo 2022
k0kubun
2
2.4k
Other Decks in Programming
See All in Programming
気持ちぃ〜角丸 Squircle
ryu1013
0
330
Optunaを作ったときにやりたかったこと、その後 (2026/10/16, Optuna Meetup #3)
iwiwi
2
1.2k
エージェントを使い続けるためのメタワーク / Meta-work for keeping using the agent
rkaga
6
1.6k
Findy - エンジニア向け会社紹介/Findy Company Deck
findyinc
6
400k
全ての永続トークンを、生まれる前に消し去りたい!
sylph01
2
1.1k
半永久的に提供し続けられるプライベートクラウドを目指して ― 利用者の認知負荷を抑えるAPI抽象化とハードウェア世代交代の基盤設計
tomokon
0
520
R8 の設定見直しでアプリサイズ削減
andpad
0
220
Railsバージョンを4倍にした話
optim
0
530
When benchmarks go bad - what I learned from measuring performance wrong
hollycummins
0
240
Simple Storage Service(S3) is not simple
iwatsukayura
0
310
ActionController meets Protocol Buffers
sorah
0
670
SalesForceを内製化!? ~ HR事業を支える顧客管理基盤のインフラを大公開 ~
oku053
0
190
Featured
See All Featured
Building Adaptive Systems
keathley
44
3.3k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
720
From π to Pie charts
rasagy
1
400
Deep Space Network (abreviated)
tonyrice
0
380
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
300
Docker and Python
trallard
47
4.2k
Believing is Seeing
oripsolob
1
250
Building Applications with DynamoDB
mza
96
7.2k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
22k
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.2k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
570
Writing Fast Ruby
sferik
630
63k
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