Mruby & Me
-
Upload
seb-jacobs -
Category
Technology
-
view
608 -
download
2
description
Transcript of Mruby & Me
Mruby & MeSeb Jacobs
Monday, 11 February 13
Matz’s Dream
flickr/moofbong
Ruby for everyone, everywhere!
Monday, 11 February 13
So many rubies?JRuby, Rubinius, Topaz, ...
why do we need another one?
Monday, 11 February 13
What is mruby?lightweight ISO-compliant ruby
small memory footprintruby for embedded systems
Monday, 11 February 13
mruby is the samebut different
• compile mruby to bytecode
• modular library system
• no regexps by default
• no standard library
• no require!
Monday, 11 February 13
Hello bytecode
$ mruby -e 'puts "hello lrug";' --verbose
000 OP_LOADSELF!R1
001 OP_STRING! R2!"hello lrug"
002 OP_SEND! R1!:puts! 1
003 OP_STOP
Monday, 11 February 13
C calling Ruby#include <mruby.h>#include <mruby/compile.h>
int main(void){ mrb_state *mrb = mrb_open(); char code[] = "p 'hello world!'"; printf("Executing Ruby code from C!\n");
mrb_load_string(mrb, code); return 0;}
https://github.com/mruby/mruby/wiki/Hello-World
Monday, 11 February 13
Use it with your favourite language!
Ruby in LuaRuby in PHP
Ruby in Node.js!
Monday, 11 February 13
php-mruby$mrb = new Mruby();$mrb->assign('$myname','sebjacobs');$mrb->run('puts $myname');
https://github.com/chobie/php-mruby
Monday, 11 February 13
Embedded Ruby!Ruby in your fridgeRuby on your TVRuby on Wheels!
Monday, 11 February 13
Build mobile apps withMobiruby or Jamruby
Monday, 11 February 13
mod_mruby
r = Apache::Request.new()
Apache.rputs("redirecting request!")
r.filename = "/var/www/html/redirect.html"
Apache::return(Apache::OK)
https://github.com/matsumoto-r/mod_mruby
Monday, 11 February 13
WebRubyhttps://qiezi.me/projects/webruby-tutorial/
Monday, 11 February 13
MTestclass Test4MTest < MTest::Unit::TestCase
def test_assert_empty assert_empty([], 'array empty') end
def test_assert_equal assert_equal('', nil.to_s) end
def test_assert_includes assert_includes([1,2,3], 1) end
def test_assert_instance_of assert_instance_of Class, Array endend
MTest::Unit.new.run
https://github.com/iij/mruby-mtest
Monday, 11 February 13
Get involved!
Monday, 11 February 13
Module#constants
assert('Module#constants', '15.2.2.4.24') do! module Test4constants !! Const4Test4constant = 24! end
! module Test4constants2 !! include Test4constants !! Const4Test4constant2 = 42! end
! Test4constants.constants == [:Const4Test4constant]
! Test4constants2.constants == [:Const4Test4constant2]end
Monday, 11 February 13
Module#constants
mrb_valuemrb_mod_constants(mrb_state *mrb, mrb_value mod){! mrb_value ary;! ary = mrb_ary_new(mrb);! if (obj_iv_p(mod) && mrb_obj_ptr(mod)->iv) ! { iv_foreach(mrb, mrb_obj_ptr(mod)->iv, const_i, &ary);! }! return ary;}
Monday, 11 February 13
The future?mruby-ruby
Monday, 11 February 13
Check out
• github.com/mruby/mruby
• mruby.sh
• github.com/iij/mruby
Monday, 11 February 13
I’m @sebjacobsany questions?
Monday, 11 February 13