[#10209] Market for XML Web stuff — Matt Sergeant <matt@...>

I'm trying to get a handle on what the size of the market for AxKit would be

15 messages 2001/02/01

[#10238] RFC: RubyVM (long) — Robert Feldt <feldt@...>

Hi,

20 messages 2001/02/01
[#10364] Re: RFC: RubyVM (long) — Mathieu Bouchard <matju@...> 2001/02/05

[#10708] Suggestion for threading model — Stephen White <spwhite@...>

I've been playing around with multi-threading. I notice that there are

11 messages 2001/02/11

[#10853] Re: RubyChangeRequest #U002: new proper name for Hash#indexes, Array#indexes — "Mike Wilson" <wmwilson01@...>

10 messages 2001/02/14

[#11037] to_s and << — "Brent Rowland" <tarod@...>

list = [1, 2.3, 'four', false]

15 messages 2001/02/18

[#11094] Re: Summary: RCR #U002 - proper new name fo r indexes — Aleksi Niemel<aleksi.niemela@...>

> On Mon, 19 Feb 2001, Yukihiro Matsumoto wrote:

12 messages 2001/02/19

[#11131] Re: Summary: RCR #U002 - proper new name fo r indexes — "Conrad Schneiker" <schneik@...>

Robert Feldt wrote:

10 messages 2001/02/19

[#11251] Programming Ruby is now online — Dave Thomas <Dave@...>

36 messages 2001/02/21

[#11469] XML-RPC and KDE — schuerig@... (Michael Schuerig)

23 messages 2001/02/24
[#11490] Re: XML-RPC and KDE — schuerig@... (Michael Schuerig) 2001/02/24

Michael Neumann <neumann@s-direktnet.de> wrote:

[#11491] Negative Reviews for Ruby and Programming Ruby — Jim Freeze <jim@...> 2001/02/24

Hi all:

[#11633] RCR: shortcut for instance variable initialization — Dave Thomas <Dave@...>

13 messages 2001/02/26

[#11652] RE: RCR: shortcut for instance variable initialization — Michael Davis <mdavis@...>

I like it!

14 messages 2001/02/27

[#11700] Starting Once Again — Ron Jeffries <ronjeffries@...>

OK, I'm starting again with Ruby. I'm just assuming that I've

31 messages 2001/02/27
[#11712] RE: Starting Once Again — "Aaron Hinni" <aaron@...> 2001/02/27

> 2. So far I think running under TextPad will be better than running

[#11726] Re: Starting Once Again — Aleksi Niemel<zak@...> 2001/02/28

On Wed, 28 Feb 2001, Aaron Hinni wrote:

[ruby-talk:10221] Embedded Ruby (PART II)- Ruby hackers help wanted :)

From: Olivier CARRERE <olivier@...>
Date: 2001-02-01 18:10:07 UTC
List: ruby-talk #10221
Hi,

In yesterday's post, I tried to embed Ruby in another program with
average success due to the fact that the ruby_run() and the ruby_stop()
functions use exit() to terminate the ruby interpreter.

What I wish to achieve is to make Ruby embeddable in another C++
application and to start/stop Ruby sripts into it at will.

In this extent, I traced how ruby_run() was behaving in the hope that I
would be able to replace each exit() call with a simple 'return'.
Hopefully, ruby_run() has an empty stack when it comes to ruby_stop(),
so it would work well (theorically). I replaced those exits with returns
(and I changed the return value of ruby_run() to int so that it can
return its error state :) ), and I had good results :

I'm using Ruby 1.6.2 source and I'm using Debian GNU/Linux 2.3 with gcc
2.95.2.

Here is the C++ source I'm using (quite simple :)):

================
// main.cpp :

#include <iostream>
#include <ruby.h>

static unsigned int count=0;

extern "C"
{
	static void end_proc(...)
	{
		cout << "Ruby stopped " << count++ << " times" << endl;
	}
};

main()
{
	int i;

	ruby_init();
	rb_load_file("foo.rb");

	rb_set_end_proc(end_proc, rb_str_new2("end_proc called")); // BTW, what
is the null object?

	// Let's run a bunch of these scripts to test potential memory leaks
	for(i=0;i<1000000;i++)
	{
		ruby_run();
	}
	
	cout << "Great!" << endl;	
}
=====================

I tested this using two ruby scripts :

* First one :
===================
class Nose
    def snif
	a=0
	a=a+2
    end
end

class Human < Nose
    def move
	b=8
	b=b*2
    end
end

humy = Human.new
humy.snif
humy.move

i=0
i=i+1
=====================

    No problem, It's still running (got it running 250000 times at this
time).

* Second one :
=====================
print "** Ruby's running !**\n"
=====================

    Problem!

The sript executes once fine and segfaults.
I spent time tracing the ruby interpreter and finally found that
rb_defout is broken (it has no longer the T_FILE TYPE) in the second
call to ruby_run() wich cause infinite recursion in io_write().

Has anyone a clue?

Thanks for reading so far and for any help,

- Olivier CARRERE

In This Thread

Prev Next