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
enlarged: extend your own programming language
Search
seki at druby.org
June 14, 2018
Programming
0
88
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
RWC2025 Ninja-testing with smart playlist
m_seki
3
290
XP, Testing and ninja testing ZOZ5
m_seki
3
1.4k
XP, Testing and ninja testing
m_seki
3
810
RWC 2024 DICOM & ISO/IEC 2022
m_seki
0
510
ERB, ancient and future
m_seki
3
940
ERB Hacks
m_seki
1
1.6k
わりこまれるはなし
m_seki
0
950
ぼくのかんがえたさいきょうのけいやくによるプログラミング
m_seki
2
1.4k
Learn Ractor
m_seki
1
2.8k
Other Decks in Programming
See All in Programming
TVerのWeb内製化 - 開発スピードと品質を両立させるまでの道のり
techtver
PRO
3
1k
Functional Calisthenics in Kotlin: Kotlinで「関数型エクササイズ」を実践しよう
lagenorhynque
0
130
CloudflareのSandbox SDKを試してみた
syumai
0
150
AsyncSequenceとAsyncStreamのプロポーザルを全部読む!!
s_shimotori
1
280
モデル駆動設計をやってみよう Modeling Forum2025ワークショップ/Let’s Try Model-Driven Design
haru860
0
150
r2-image-worker
yusukebe
1
170
関数の挙動書き換える
takatofukui
1
210
なぜ強調表示できず ** が表示されるのか — Perlで始まったMarkdownの歴史と日本語文書における課題
kwahiro
12
5.9k
Java_プロセスのメモリ監視の落とし穴_NMT_で見抜けない_glibc_キャッシュ問題_.pdf
ntt_dsol_java
0
190
GraalVM Native Image トラブルシューティング機能の最新状況(2025年版)
ntt_dsol_java
0
140
Tangible Code
chobishiba
3
560
Swift Concurrency 年表クイズ
omochi
3
230
Featured
See All Featured
For a Future-Friendly Web
brad_frost
180
10k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
34
2.3k
Raft: Consensus for Rubyists
vanstee
140
7.2k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.5k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.6k
Rebuilding a faster, lazier Slack
samanthasiow
84
9.3k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
192
56k
BBQ
matthewcrist
89
9.9k
Building Flexible Design Systems
yeseniaperezcruz
329
39k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.7k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
33
1.8k
Balancing Empowerment & Direction
lara
5
750
Transcript
Extend your own programming language
[email protected]
-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
[email protected]
-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Λͬͯ௨৴ΛݮΒͯ͠Έ͍ͨɻ