Upload
karupanerura-xmp
View
3.043
Download
0
Tags:
Embed Size (px)
Citation preview
Why we use mruby with Perl5?Kichijoji.pm #5 id:karupanerura
Who am I?
• id:karupanerura (twitter/github/hatena/etc..)
• Perl/Swift/C/Java/JavaScript/etc…
• Web/iOS/Android Engineer
• Mobile Factory, Inc.
• Lead Engineer
mruby
What is mruby?
• Lightweight implementation of the Ruby language.
• mRuby has a high compatibility with Ruby.
• Used for embedded.
• Binary size: 766.6[kb] (mruby-1.1.0)
mRuby.pm
What is mRuby.pm?
• mruby binding for Perl5.
• Using XS
• tokuhirom++
• Embed mruby into Perl5.
• We can call mruby code from Perl5 code.
mRuby.pm
• 0.07 - 2015-06-21
• upgrade mruby to version 1.1.0
• 0.08 - 2015-06-22
• Added high-level API.
• Added `funcall` API.
Example: low-level API
use mRuby;
my $mrb = mRuby::State->new();my $st = $mrb->parse_string('1 + 2 + 3 + 4 + 5');my $proc = $mrb->generate_code($st);my $ret = $mrb->run($proc);say $ret; # => 15
Example: high-level API
use mRuby;
my $mruby = mRuby->new(src => '1 + 2 + 3 + 4 + 5');my $ret = $mruby->run();say $ret; # => 15
Example: funcall API
use mRuby;
my $mruby = mRuby->new(src => q{def add(l, r) l + rend});my $ret = $mruby->funcall(add => 1, 2);say $ret; # => 3my $ret2 = $mruby->funcall(add => 3, 4);say $ret2; # => 7
We get mruby!
But, why?
Why we want to use mruby from Perl5?
We are making a social game
• Enviroment:
• iOS - Swift
• Android - Java
• Web (API Server) - Perl
We have MANY logics
• Parameter calculate
• Score calculate
• Battle emulation
• etc..
We need to share business logics and configs
in ALL ENVIROMENT.
It’s too difficult…
But, we gets mruby!
BEFORE
• iOS - Swift
• Android - Java
• Web (API Server) - Perl
AFTER
• iOS - Swift + mruby
• Android - Java + (JNI+mruby)
• Web (API Server) - Perl + (XS+mruby)
CONCLUSION
CONCLUSION
• We can share codes and configs by mruby.
• Perl & Swift & Java
• Perl5 gets mruby!!
END
Any questions?