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
how to embed mruby (en)
Search
Tomoyuki Sahara
June 02, 2013
Programming
0
140
how to embed mruby (en)
Japanese version is
https://speakerdeck.com/tsahara/how-to-embed-mruby
Tomoyuki Sahara
June 02, 2013
Tweet
Share
More Decks by Tomoyuki Sahara
See All by Tomoyuki Sahara
IPv6 家庭用ルータ SWG 報告
tsahara
0
170
IPv6 RFC 改版の提案はなぜ議論紛糾したのか?
tsahara
2
2.2k
DNS と TLS のビミョーな関係
tsahara
1
570
IPv6 Path MTU in the World and Japan
tsahara
1
22k
how to embed mruby
tsahara
2
440
Other Decks in Programming
See All in Programming
並行開発のためのコードレビュー
miyukiw
2
2.1k
CSC307 Lecture 08
javiergs
PRO
0
690
RAGでハマりがちな"Excelの罠"を、データの構造化で突破する
harumiweb
8
2k
Amazon Bedrockを活用したRAGの品質管理パイプライン構築
tosuri13
5
900
クライアントワークでSREをするということ。あるいは事業会社におけるSREと同じこと・違うこと
nnaka2992
1
230
AIによる開発の民主化を支える コンテキスト管理のこれまでとこれから
mulyu
3
2.2k
Ruby x Terminal
a_matsuda
5
510
メタプログラミングで実現する「コードを仕様にする」仕組み/nikkei-tech-talk43
nikkei_engineer_recruiting
0
130
エージェント開発初心者の僕がエージェントを作った話と今後やりたいこと
thasu0123
0
210
猫の手も借りたい!ので AIエージェント猫を作って社内に放した話 Claude Code × Container Lambda の Slack Bot "DevNeko"
naramomi7
0
220
あなたはユーザーではない #PdENight
kajitack
4
290
AI活用のコスパを最大化する方法
ochtum
0
120
Featured
See All Featured
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
470
The World Runs on Bad Software
bkeepers
PRO
72
12k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
0
2.4k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
82
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.1k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
78
jQuery: Nuts, Bolts and Bling
dougneiner
65
8.4k
The Pragmatic Product Professional
lauravandoore
37
7.2k
sira's awesome portfolio website redesign presentation
elsirapls
0
170
Product Roadmaps are Hard
iamctodd
PRO
55
12k
Code Reviewing Like a Champion
maltzj
527
40k
The Curse of the Amulet
leimatthew05
1
9.3k
Transcript
How to embed mruby Tomoyuki Sahara (
[email protected]
) Internet Initiative Japan
Inc. $PQZSJHIU $ *OUFSOFU*OJUJBUJWF+BQBO*OD"MMSJHIUTSFTFSWFE
Notice 5IFXPSLIBTEPOFJO/PW IBMGPGZFBSBHP
What is mruby? mruby is the lightweight implementation of the
Ruby language... https://github.com/mruby/mruby google://mruby/
CPU: ARM 32bit Memory: 128MB FlashROM: 32MB OS: NetBSD SA-W1
(www.sacm.jp/#saw1) Router built with mruby
Why mruby? interface.ge1.ipv4.address : 192.168.0.1/24 interface.wlan0.service : enable interface.wlan0.ssid :
guest interface.wlan0.security : wpa-psk-aes route.ipv4.0.destination : default route.ipv4.0.gateway : 100.100.0.1 dhcp.server.0.interface : wlan0 dhcp.server.0.pool.address : 192.168.0.4/24 dhcp.server.0.pool.count : 100 Configuration parse/validate/evalute/execute mruby!
Running mruby CPU ARM 32bit is not uncommon Memory 128MB
is large enough FlashROM 32MB is tight OS NetBSD is a kind of Unix ≒ a (poor) PC ≒ a (poor) PC Not difficult to run mruby on it.
What we have done: • ػೳ֦ு • ෆ۩߹मਖ਼ • ҆ఆ൛ϦϦʔεͷ࡞
• Build a firmware
Of cource it runs NetBSD
Import Software NetBSD Firmware OpenSSL KAME NTPD Quagga Proprietary Code
mruby
Getting source code % wget http://www.openssl.org/ source/openssl-1.0.1e.tar.gz
Stable version of mruby % wget http://www.mruby.org/ source/mruby-1.0.0.tar.gz EPFTOPUFYJTU
What we have done: • ػೳ֦ு • ෆ۩߹मਖ਼ • Make
a stable version ←New! • Build a firmware
mruby on github
iij/mruby
3 branches (and others) #SBODI 6TBHF NBTUFS NSVCZNSVCZ JJK NBJOEFWFMPQNFOU
T TUBCMFWFSTJPO PUIFST QVMMSFRVFTU FUD
NSVCZNSVCZ JJKNSVCZ NBTUFS NBTUFS JJK T EBJMZ BVUPNBUJDNFSHF EBJMZ BVUPNBUJD
PSCZIBOE BTOFFEFE SFWJFXFE
What we have done: • ػೳ֦ு • ෆ۩߹मਖ਼ • Make
a stable version • Build a firmware
Import Step 1. work=$HOME/mruby-import % cd $work % git checkout
-b s1
Import Step 2. % make % make test % ./test/posix/all.sh
Import Step 3. usr=$NetBSD/usr.bin/mruby % cp src/y.tab.c mrblib/mrblib.c $usr %
vi $usr/Makefile
Import Step 4. dist=$NetBSD/dist/mruby % make clean % rm -r
$dist/* % cp -r * $dist
Import Step 5. % cd $dist; svn add ... %
svn ci $dist $usr
What we have done: • ػೳ֦ு • ෆ۩߹मਖ਼ • Make
a stable version • Build a firmware
Bug, Bug, Bug!
What we have done: • ػೳ֦ு • Fix bugs ←New!
• Make a stable version • Build a firmware
To fix bugs • Write debugging tools: • backtrace •
“require” to module • disassembler (app/mrbdump) • testing framework (mruby-mtest) • debugger (mruby-mdebug)
What we have done: • ػೳ֦ு • Fix bugs •
Make a stable version • Build a firmware
“mruby is useless because *** class/ method is missing!”
What we have done: • Add features ←New! • Fix
bugs • Make a stable version • Build a firmware
Enhancement • Create modules dependent on Unix • IO, File,
Socket, Regexp, Errno, ... • Enhance built-in modules • Array, String, ...
iij/mruby-* mruby-io mruby-socket mruby-regexp-pcre mruby-errno mruby-simple-random mruby-env mruby-require mruby-pack mruby-mock
mruby-syslog mruby-mtest mruby-tempfile mruby-process mruby-pcap mruby-dir (more...)
Ship it! • Add features • Fix bugs • Make
a stable version • Build a firmware
Future work • Make more use of mruby • Create
a new stable branch: s2