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