e$B$J$+$@$G$9!#e(B
e$B@h!9=5$K$J$j$^$9$,!"$5$5$@$5$s$H$$$m$$$mOC$79g$$$7$F$-$^$7$?!#$=e(B
e$B$N$&$A!"e(BMVMe$B$Ne(BCe$B%$%s%?!<%U%’!<%9$KIU$$$F$N7o$G$9!#e(B
e$B$^$@O3$l$J$I$"$k$+$b$7$l$^$;$s$,!"$H$j$"$($:!#e(B
= VM C APIe$B0Fe(B
== e$BMQ8le(B
e$B$H$j$"$($:0J2<$NMQ8l$r;H$&$3$H$K$7$^$9!#e(B
— e$B%(%s%8%se(B
e$B%I%i%$%P$+$i8F$S=P$5$l$F!“e(Brubye$B$N=hM}$r9T$J$&%i%$%V%i%j!#e(B
— e$B%I%i%$%Pe(B
e$B%(%s%8%s$rMxMQ$9$k%”%W%j%1!<%7%g%s!#e(B
rubye$B%3%^%s%I!"e(Berubye$B%3%^%s%I!"e(Bmod_rubye$B$J$I!#e(B
== e$B=i4|2=e(B/e$B<B9Te(B
e$B=i4|2==hM}$O!"%W%m%;%9A4BN$KBP$9$k$b$N$H!"e(BVMe$BC10L$KBP$9$k$b$N$KJ,e(B
e$B$1$i$l$^$9!#A0<T$O!“0l%W%m%;%9$G0l2s$@$1!”%a%$%s%M%$%G%#%V%9%l%Ce(B
e$B%I$G8F$S=P$5$J$1$l$P$J$j$^$;$s!#e(B
=== e$B%W%m%;%9=i4|2=e(B
— ruby_sysinit(int **argc, char ***argv)
e$B%7%9%F%`$4$H$KI,MW$J=i4|2=$r9T$J$&!#e(B
— RUBY_INIT_STACK
e$B%a%$%s%M%$%G%#%V%9%l%C%I$N%9%?%C%/>pJs$rJ]B8$9$k!#e(B
=== VMe$B=i4|2=e(B
— ruby_vm_new(void)
e$B?7$7$$e(BVMe$B$r:n@.$9$k!#e(Bruby_init()e$B$O!"?7$7$$e(BVMe$B$r:n@.$7$?8e!"$=e(B
e$B$N>e$N%a%$%se(Brubye$B%9%l%C%I$bF1;~$K:n@.$9$k!#e(B
— ruby_vm_parse_option(rb_vm_t vm, int argc, const char argv)
e$B%3%^%s%I%i%$%s%%W%7%g%s$r%Q!<%9$7$F!"7k2L$re(Bvme$BFb$KJ]B8$9$k!#e(B
-ee$B%%W%7%g%s$^$?$O%9%/%j%W%H$r%3%s%Q%$%k$7$F!"%a%$%s%9%l%C%Ie(B
e$B$,:G=i$K<B9T$9$k%3!<%I$H$7$FJ]B8$9$k!#e(B
=== VMe$B<B9Te(B
— ruby_vm_run(rb_vm_t *vm)
VMe$B$N<B9T$r3+;O$9$k!#e(B
exit statuse$B$rJV$9!#e(B
== e$BB0@-$=$NB>e(B
ruby_vm_parse_option()e$B$Oe(Brubye$B%3%^%s%I$N;EMM$K$"$o$;$F$$$k$?$a!"B>e(B
e$B$N%I%i%$%P$NL\E*$K$O9g$&$H$O8B$j$^$;$s!#$=$N$h$&$J>l9g!"e(BVMe$B$N:[email protected](B
e$B$H<B9T$N4V$K!"I,MW$J%Q%i%a!<%?$r%;%C%H$9$k$3$H$K$J$j$^$9!#e(B
— ruby_vm_get_argv(VALUE vm)
vme$B$KJ]B8$5$l$?e(BARGVe$B$r<h$j=P$9!#e(B
— ruby_vm_set_argv(VALUE vm, int argc, VALUE *argv)
vme$B$G;HMQ$5$l$ke(BARGVe$B$r@_Dj$9$k!#e(B
— ruby_vm_init_env(VALUE vm, char **envp)
vme$B$G;HMQ$5$l$k4D6-JQ?t$r@_Dj$9$k!#e(B
— ruby_vm_getenv(VALUE vm, const char *name)
vme$BCf$N4D6-JQ?t$r<h$j=P$9!#e(B
— ruby_vm_setenv(VALUE vm, const char *name, const char *value)
vme$BCf$N4D6-JQ?t$r@_Dj$9$k!#e(B
— ruby_vm_get_pwd(VALUE vm)
vme$B$N%+%l%s%H%G%#%l%/%H%j$r<h$j=P$9!#e(B
— ruby_vm_set_pwd(VALUE vm, const char *pwd)
vme$B$N%+%l%s%H%G%#%l%/%H%j$r@_Dj$9$k!#e(B
== ObjectSpace
e$B3Fe(BVMe$B$,%M%$%F%#%V%9%l%C%I$GJB9TF0:n$G$-$k$h$&$K$9$k$?$a!"$=$l$>$le(B
e$BFHN)$7$?e(BObjectSpacee$B$r;}$A$^$9!#7k2L$H$7$F!"$"$ke(BVMe$B$G:n$i$l$?%*%Ve(B
e$B%8%’%/%H$rJL$Ne(BVMe$B$KEO$9$3$H$O$G$-$^$;$s!#e(B
== e$B%M%$%F%#%V%9%l%C%I%$%s%?!<%U%’!<%9e(B
rubye$B0J30$G:n@.$5$l$?%M%$%F%#%V%9%l%C%I$+$i%(%s%8%s$r<B9T$9$k$?$ae(B
e$B$K$O!"$=$N%9%l%C%I$,e(Bruby
VMe$B$N$$$:$l$+$KEPO?$5$l$F$$$kI,MW$,$"$je(B
e$B$^$9!#0l$D$N%9%l%C%I$rJ#?t$Ne(BVMe$B$KEPO?$9$k$3$H$b2DG=$G$9$,!"F1;~$Ke(B
e$B<B9T$G$-$k$N$O0l$D$Ne(BVMe$B$@$1$G$9!#J#?te(BVMe$B>e$GF1;~$KF0:n$9$k$3$H$O$Ge(B
e$B$-$^$;$s!#e(B
e$B$^$?!“F1$8%M%$%F%#%V%9%l%C%I>e$G$”$C$F$b!"0[$J$ke(BVMe$B$N%*%V%8%’%/%He(B
e$B$r:.$<$F;HMQ$9$k$3$H$b$G$-$^$;$s!#e(B
— ruby_vm_register_thread(VALUE vm)
e$B%M%$%F%#%V%9%l%C%I$KBP1~$9$ke(BThreade$B%$%s%9%?%s%9$r:n@.$7$F!"e(BVMe$B$KEPO?$9$k!#e(B
— ruby_vm_release_thread(VALUE vm)
Threade$B%$%s%9%?%s%9$+$i%M%$%F%#%V%9%l%C%I$r2rJ|$9$k!#e(B
— ruby_vm_enter_thread(VALUE vm)
rubye$B%9%l%C%I$H$7$F$NF0:n$r3+;O$9$k!#e(B
— ruby_vm_leave_thread(VALUE vm)
rubye$B%9%l%C%I$H$7$F$NF0:n$r=*N;$9$k!#e(B
e$BL>A0$OL$Dj$G$9$,!“e(Bruby_vm_enter_thread()e$B$7$?>uBV$G%3!<%k%P%C%/$re(B
e$B8F$S=P$7$F!”=*N;8e$Ke(Bruby_vm_leave_thread()e$B$r<B9T$9$k$b$N$bM=Dj$7e(B
e$B$F$$$^$9!#e(B
== e$B%W%j%3%s%Q%$%ke(B
— ruby_vm_compile_file(const char *filename)
— ruby_vm_compile_cstr(const char *src)
— ruby_vm_compile_string(VALUE srcstring)
e$B%9%/%j%W%H$r%3%s%Q%$%k:Q$_%G!<%?$KJQ49$9$k!#e(B
— ruby_vm_run_file(rb_vm_t *vm, const char *filename)
— ruby_vm_run_cstr(rb_vm_t *vm, const char *src)
— ruby_vm_run_string(rb_vm_t *vm, VALUE srcstring)
e$B%9%/%j%W%H$re(Bvme$B>e$G<B9T$9$k!#e(B
— ruby_vm_run_compiled(rb_vm_t *vm, compiled…)
e$B%3%s%Q%$%k:Q$_%G!<%?$re(Bvme$B>e$G<B9T$9$k!#e(B
— ruby_vm_run_cfun(rb_vm_t *vm, (func)(), void)
funce$B$re(Bvme$B>e$G<B9T$9$k!#e(B