Why we use mruby with Perl5?

Post on 07-Aug-2015

3.043 views 0 download

Tags:

Transcript of Why we use mruby with Perl5?

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?