توسعهدهنده(ها) | یوکیهیرو ماتسوموتو et al. |
---|---|
انتشار اولیه | ۲۰ آوریل ۲۰۱۲ |
انتشار پایدار | ۲.۱.۰
/ ۱۹ نوامبر ۲۰۱۹[۱] |
مخزن | |
نوشتهشده با | سی و روبی |
سیستمعامل | چندسکویی |
استاندارد(ها) | ISO/IEC 30170:2012 |
نوع | مفسر زبان برنامهنویسی روبی |
مجوز | پروانه امآیتی[۲] |
وبگاه |
اِمروبی یک مفسر برای زبان برنامهنویسی روبی است که با هدف سبکوزن بودن طراحی شده و به راحتی قابل پیادهسازی است. [۳] [۴] ریاست این پروژه را یوکیهیرو ماتسوموتو بر عهده دارد و بیش از ۱۰۰ مشارکتکننده در حال حاضر در این پروژه فعالیت میکنند.
امروبی ۱.۰ از هسته روبی ۲.۱ پشتیبانی میکند، اما هیچ یک از کتابخانه های استاندارد نیست. امروبی علاوه بر اینکه قادر به اجرای اساسی ترین کد های روبی است، از یک کامپایلر بایتکد و ماشین مجازی و همچنین قابلیت تعبیه و تلفیق آسان در کد سی یا C ++ ، به روشی مشابه لوآ یا تیسیال برخوردار است.
امروبی ۲.۰.۰ [۵] پشتیبانی از چندین روش روبی 2.x فراتر از روبی ۲.۱ را اضافه می کند. نسخه ۲.۰.۰ نیز به فرمت دستورالعمل های بایتکد با طول متغیر تغییر یافت.
کد بایت امروبی میتواند در کد C تعبیه بشود، بنابراین می تواند در یک اجرایی مستقل کامپایل شود. [۶]
امروبی همچنین قصد دارد [۳] با استاندارد ISO / IEC 30170: 2012 سازگار باشد. [۷]
#include <stdio.h>
#include <mruby.h>
#include <mruby/compile.h>
int main(void) {
mrb_state *mrb = mrb_open();
char code[] = "5.times { puts 'mruby is awesome!' }";
printf("Executing Ruby code with mruby:\n");
mrb_load_string(mrb, code);
mrb_close(mrb);
return 0;
}
با فرض اینکه شما امروبی را نصب کرده اید و در مسیر خود هستید، برنامه زیر را میتوان با اجرای دستور زیر از ترمینال خود کامپایل و اجرا کرد: [۸]
$ cc example.c -lmruby -lm -o example $ ./example
امروبی شامل یک ماشین مجازی مینیمالیستی است که برای اجرای بایتکد امروبی با نام مستعار ritevm استفاده می شود:
$ mrbc test.rb $ mruby -b test.mrb
اولین دستور، کد روبی را به بایتکد امروبی کامپایل می کند و فایلی به نام "test.mrb" ایجاد می کند، که پس از آن می توان با اضافه کردن پرچم "-b" به آرگومانهای مفسر معمولی، آن را اجرا کرد. [۹]
<ref>
نامعتبر؛ نام «GitHub» چندین بار با محتوای متفاوت تعریف شده است. (صفحهٔ راهنما را مطالعه کنید.).
{{cite web}}
: CS1 maint: numeric names: فهرست نویسندگان (link)