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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Tomoyuki Sahara
June 02, 2013
Programming
150
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
how to embed mruby (en)
Japanese version is
https://speakerdeck.com/tsahara/how-to-embed-mruby
Tomoyuki Sahara
June 02, 2013
More Decks by Tomoyuki Sahara
See All by Tomoyuki Sahara
IPv6 家庭用ルータ SWG 報告
tsahara
0
180
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
460
Other Decks in Programming
See All in Programming
TypeScript+Orvalで実現する型安全かつ堅牢でスケーラブルなマルチチャネル通知基盤 / TSKaigi Night talks ~after conference~
d0riven
0
320
セキュリティの専門家じゃなくてもできる。「セキュリティ意識」をアップデートして サプライチェーン攻撃への耐性を高めよう。
tk3fftk
5
690
Make SRE Operations Easier with Azure SRE Agent
kkamegawa
0
4.9k
ふつうのFeature Flag実践入門
irof
7
3.7k
ADKを使って簡単にAIエージェントを作ってみよう
k1mu21
0
240
ユニットテストの先へ:テスト技法で要求・仕様を整理するJava開発実践 / Beyond_Unit_Testing_Practical_Java_Development_Techniques_for_Organizing_Requirements_and_Specifications
shimashima35
0
380
Datadog × OpenTelemetry 入門と実践のあいだ
kn_to_maxpno
1
150
エージェンティックRAGにAWSで入門しよう!
har1101
8
1.3k
JJUG CCC 2026 Spring: JSpecify で実現する Kotlin フレンドリーな Java API 設計
ternbusty
1
150
代数的データ型って何が嬉しいの? #frontend_phpcon_do
kajitack
8
3.3k
CSC307 Lecture 17
javiergs
PRO
0
320
DynamoDBには集計系のクエリがないけどなんとかしたい
musan
1
130
Featured
See All Featured
HDC tutorial
michielstock
2
700
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.8k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.3k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
210
Tell your own story through comics
letsgokoyo
1
950
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.3k
Navigating Weather and Climate Data
rabernat
0
210
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
440
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
530
How to Ace a Technical Interview
jacobian
281
24k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
290
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