FYI, I also created an RCR for this, #328. Please post comments and vote your mind when you have a chance. Thank you! On 2/23/06, Charles O Nutter <headius / gmail.com> wrote: > I tossed this message off to the Ruby-core list about a month ago, and > sent a follow-up email today. The basic idea is that if there were a > Kernel#run_script method or similar, all Ruby apps that want to launch > external scripts could do so in a platform and > implementation-independent way. In future versions of Ruby and in > JRuby today, that could mean launching the additional script within > the current process, but even now it would provide a simpler way to > launch external scripts. > > Does anyone have an opinion on this? > > ---------- Forwarded message ---------- > From: Charles O Nutter <headius / gmail.com> > Date: Jan 25, 2006 8:50 AM > Subject: Launching Ruby scripts and the future of MVM > To: ruby-core / ruby-lang.org > > > Hello again from the JRuby project! > > It has come to our attention that there may need to be a standard way > to tell Ruby to launch a given script in a new interpreter engine. > Currently, it appears that many different approaches are used, ranging > from launching a separate process to forking and eval'ing a given > script. With the possibility of Ruby running in a multi-vm scenario > not far off (already possible today with JRuby and perhaps possible > soon in YARV) I believe it would be beneficial to have a way of > telling Ruby to "run this script in a new interpreter" and allow the > underlying ruby implementation to decide whether to launch a new > process or not. A potential method might be Kernel#run_script. > > The issue we have with JRuby is that certain applications, Rake for > one, tend to want to launch subscripts in new Ruby interpreters. While > this is straightforward and relatively low-cost in the C Ruby world, > it incurs a severe performance and memory penalty in the JRuby world. > Launching a new "JRuby process" incurs the added pain of starting up a > new JVM process, not a trivial bit of work. This currently works as > expected, but is very slow and resource-intensive. > > Perhaps it would be ideal if applications could call something like > Kernel#run_script, allowing the underlying Ruby implementation to > decide how to run that script. In today's 1.8 Ruby implementation, > that may simply mean running an external process, either by using > popen or system. In implementations like JRuby or YARV, the run_script > call could be handled by launching a new Ruby VM within the same > process, avoiding the process-startup penalty. It would allow us to > run some of the most complicated Rake scripts all in a single JVM > process with JRuby, utilizing our MVM capability very effectively. > > What thoughts do you have? I know 1.8 is supposed to be pretty well > settled, but it sure would help us if this idea were implemented > sooner rather than later, so third-party apps could start using a > platform and implementation-independent mechanism for launching Ruby > scripts. > > - Charlie > > > > -- > Charles Oliver Nutter @ headius.blogspot.com > JRuby Developer @ jruby.sourceforge.net > Application Architect @ www.ventera.com > -- Charles Oliver Nutter @ headius.blogspot.com JRuby Developer @ jruby.sourceforge.net Application Architect @ www.ventera.com