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
150
IPv6 RFC 改版の提案はなぜ議論紛糾したのか?
tsahara
2
2.1k
DNS と TLS のビミョーな関係
tsahara
1
560
IPv6 Path MTU in the World and Japan
tsahara
1
22k
how to embed mruby
tsahara
2
430
Other Decks in Programming
See All in Programming
Back to the Future: Let me tell you about the ACP protocol
terhechte
0
130
Playwrightはどのようにクロスブラウザをサポートしているのか
yotahada3
7
2.3k
Le côté obscur des IA génératives
pascallemerrer
0
120
monorepo の Go テストをはやくした〜い!~最小の依存解決への道のり~ / faster-testing-of-monorepos
convto
2
390
育てるアーキテクチャ:戦い抜くPythonマイクロサービスの設計と進化戦略
fujidomoe
1
150
AIで開発生産性を上げる個人とチームの取り組み
taniigo
0
130
WebエンジニアがSwiftをブラウザで動かすプレイグラウンドを作ってみた
ohmori_yusuke
0
170
CSC509 Lecture 03
javiergs
PRO
0
330
iOSアプリの信頼性を向上させる取り組み/ios-app-improve-reliability
shino8rayu9
0
150
CSC509 Lecture 05
javiergs
PRO
0
300
非同期jobをtransaction内で 呼ぶなよ!絶対に呼ぶなよ!
alstrocrack
0
520
どの様にAIエージェントと 協業すべきだったのか?
takefumiyoshii
2
610
Featured
See All Featured
Code Review Best Practice
trishagee
72
19k
Being A Developer After 40
akosma
91
590k
Documentation Writing (for coders)
carmenintech
75
5k
How GitHub (no longer) Works
holman
315
140k
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.6k
Optimizing for Happiness
mojombo
379
70k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.2k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.7k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Music & Morning Musume
bryan
46
6.8k
Building Better People: How to give real-time feedback that sticks.
wjessup
368
20k
Bash Introduction
62gerente
615
210k
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