Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
enlarged: extend your own programming language
seki at druby.org
June 14, 2018
Programming
0
48
enlarged: extend your own programming language
RubyKaigiから帰ってきてLT会のLT。RubyKaigi 2018のトークの増補版だよ!
seki at druby.org
June 14, 2018
Tweet
Share
More Decks by seki at druby.org
See All by seki at druby.org
Rinda in the real-world embedded systems.
m_seki
0
200
xpjug2019 A-4: チケットシステムの設計と実装、『あのチーム』の運用
m_seki
6
5.8k
Tochigi Ruby Kaigi 08 Keynote
m_seki
0
120
Tochigi RubyKaigi 08 120sec LT
m_seki
0
33
dRuby 20th anniversary hands-on workshop
m_seki
1
45
XP-2018-F-7
m_seki
0
2.2k
Buy it sociably
m_seki
0
86
Extend your own programming language (RubyKaigi 2018)
m_seki
1
5.4k
toteka05 panel / phrase
m_seki
1
590
Other Decks in Programming
See All in Programming
このタイミングで知っておきたい 開発生産性の高いエンジニア組織の特徴とは / dev-sumi-20220721-productivity-features
findyinc
7
2.7k
Pluggable Storage in PostgreSQL
sira
1
190
Edge Side Frontend という新領域
mizchi
24
10k
Atomic Design とテストの○○な話
takfjp
2
820
Git Rebase
bkuhlmann
7
1.1k
パラメタライズドテスト
ledsun
0
220
VIMRC 2022
achimnol
0
140
NestJS_meetup_atamaplus
atamaplus
0
230
話題の AlloyDB は本当に凄いデータベースなのでプレビューを使い倒した #devio2022
maroon1st
0
13k
リーダブルテストコード / #vstat
jnchito
48
36k
Dagger, la CI, autrement
guikingone
1
120
Register-based calling convention for Go functions
cjamhe01385
0
420
Featured
See All Featured
Producing Creativity
orderedlist
PRO
334
37k
How to name files
jennybc
40
63k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
237
19k
Large-scale JavaScript Application Architecture
addyosmani
499
110k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
226
15k
Music & Morning Musume
bryan
35
4.3k
The Cult of Friendly URLs
andyhume
68
4.8k
Fashionably flexible responsive web design (full day workshop)
malarkey
396
62k
Visualization
eitanlees
125
12k
KATA
mclloyd
7
8.9k
Scaling GitHub
holman
451
140k
The Straight Up "How To Draw Better" Workshop
denniskardys
225
130k
Transcript
Extend your own programming language seki@ruby-lang.org -5Ͱ૿ิ
͠Β͓͍ͪͩ͘͘͞ ✓ ͝ཡͷεϙϯαʔͷఏڙ ʹΑΓ͓ૹΓ͠·͢
slide sponsors " " ! !!! @moro @ tricknotes dRuby
Web ( ) https://t.co/fLhzWll5gY @hisashim Rails 700 https://t.co/wAMLWDekJh?amp=1 @igaiga555 https://lambdanote.com @golden_lucky @vestige_
slide sponsors 5 !! 6 2 Scratch Day in !!
@mame iSeq iSeq @youchan Speee Ruby @koichiroo RubyKaigi 2018 2 @ktou RubyWorld Conference 2018 yancya @yancya
slide sponsors seki @tsuboi @ogijun people.suzuri.jp hsbt tatsuosakurai kenchan june29
zaimy tnmt umazura 4 -20 pixiv FANBOX halfmoon_0419 usa shimashima35 igaiga
Extend your own programming language seki@ruby-lang.org -5Ͱ૿ิ
RubyKaigi 2018 Ruby Ruby MinRuby dRuby
RubyKaigi 2018 ...
MinRuby Ruby Ruby MinRuby
MinRubyͷίϯςΩετ AST - genv - lenv - Marshal.dump
ঢ়ଶΛอଘʗ࠶ݱͰ͖Δ ...
ετϨʔδʹอଘʗ࠶ݱ Ruby
ωοτϫʔΫʹอଘʗ࠶ݱ HTTP dRuby TupleSpace / Linda
TupleSpace Linda
TupleSpaceαʔόΛ༻ҙ͢Δ drbunix:/tmp/my_ts URI
;ͭ͏ϑΝΠϧ͔Βىಈ parse AST genv, lenv evaluate
TupleSpace͔Βͷىಈ TupleSpace AST, genv, lenv take evaluate
ϓϩηεϚΠάϨʔγϣϯ TupleSpace
ϫʔΧΛىಈ͢ΔτϦοΫ [:ts_eval, ...] take [:ts_call, ...] write [:ts_call, ...] AST,
genv, lenv evaluate while true it = ts.take([:ts_eval, nil, nil, nil, nil]) it[0] = :ts_call ts.write(it) spawn_worker end
TupleSpaceΛಉظ͢ΔΈ TupleSpace Linda write take/read TS ͍͔ͭ͜ͷΛ͍ͨ͠
ͭ·Γ TS TS MinRuby
Docker, Rinda, Ring, MinRuby ෳͷίϯςφʹஔ͞Εͨ3JOEBͷλϓϧεϖʔεΛ3JOHΛͬͯΦʔέε τϨʔγϣϯ ઃఆͳ͠Ͱಉظͤ͞Δͱ͜Ζ·Ͱ࡞ͬͨɻݱࡏϝογϡ ঢ়ʹଓ͠߹͍ͬͯΔͷͰɺ"HFOUΛͬͯ௨৴ΛݮΒͯ͠Έ͍ͨɻ