24
Why we use mruby with Perl5? Kichijoji.pm #5 id:karupanerura

Why we use mruby with Perl5?

Embed Size (px)

Citation preview

Page 1: Why we use mruby with Perl5?

Why we use mruby with Perl5?Kichijoji.pm #5 id:karupanerura

Page 2: Why we use mruby with Perl5?

Who am I?

• id:karupanerura (twitter/github/hatena/etc..)

• Perl/Swift/C/Java/JavaScript/etc…

• Web/iOS/Android Engineer

• Mobile Factory, Inc.

• Lead Engineer

Page 3: Why we use mruby with Perl5?

mruby

Page 4: Why we use mruby with Perl5?

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)

Page 5: Why we use mruby with Perl5?

mRuby.pm

Page 6: Why we use mruby with Perl5?

What is mRuby.pm?

• mruby binding for Perl5.

• Using XS

• tokuhirom++

• Embed mruby into Perl5.

• We can call mruby code from Perl5 code.

Page 7: Why we use mruby with Perl5?

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.

Page 8: Why we use mruby with Perl5?

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

Page 9: Why we use mruby with Perl5?

Example: high-level API

use mRuby;

my $mruby = mRuby->new(src => '1 + 2 + 3 + 4 + 5');my $ret = $mruby->run();say $ret; # => 15

Page 10: Why we use mruby with Perl5?

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

Page 11: Why we use mruby with Perl5?

We get mruby!

Page 12: Why we use mruby with Perl5?

But, why?

Page 13: Why we use mruby with Perl5?

Why we want to use mruby from Perl5?

Page 14: Why we use mruby with Perl5?

We are making a social game

• Enviroment:

• iOS - Swift

• Android - Java

• Web (API Server) - Perl

Page 15: Why we use mruby with Perl5?

We have MANY logics

• Parameter calculate

• Score calculate

• Battle emulation

• etc..

Page 16: Why we use mruby with Perl5?

We need to share business logics and configs

in ALL ENVIROMENT.

Page 17: Why we use mruby with Perl5?

It’s too difficult…

Page 18: Why we use mruby with Perl5?

But, we gets mruby!

Page 19: Why we use mruby with Perl5?

BEFORE

• iOS - Swift

• Android - Java

• Web (API Server) - Perl

Page 20: Why we use mruby with Perl5?

AFTER

• iOS - Swift + mruby

• Android - Java + (JNI+mruby)

• Web (API Server) - Perl + (XS+mruby)

Page 21: Why we use mruby with Perl5?

CONCLUSION

Page 22: Why we use mruby with Perl5?

CONCLUSION

• We can share codes and configs by mruby.

• Perl & Swift & Java

• Perl5 gets mruby!!

Page 23: Why we use mruby with Perl5?

END

Page 24: Why we use mruby with Perl5?

Any questions?