[#16113] Strange idea... exporting from a scope — "Hal E. Fulton" <hal9000@...>

Hello...

33 messages 2001/06/01

[#16364] Re: Garbage Collection? — Michael Davis <mdavis@...>

Windows 2000 and linux (RedHat 6.2). I have run these tests on both OSs.

12 messages 2001/06/09

[#16400] Symbolic Computation III — Mathieu Bouchard <matju@...>

14 messages 2001/06/11

[#16502] Playing with Ruby Syntax (was: Initial thoughts about Ruby From a Smalltalk Programmer) — jweirich@...

Michael> Hi Everyone, I have to say I'm utterly fascinated by Ruby

9 messages 2001/06/15

[#16661] Problem running irb with Ruby 1.6.4 under FreeBSD 4.0 — Bob Alexander <balexander@...>

I've installed Ruby 1.6.4 on a FreeBSD 4.0 machine, and get the

11 messages 2001/06/20

[#16686] opening db files made by apache dbmmanage — Fritz Heinrichmeyer <fritz.heinrichmeyer@...>

14 messages 2001/06/21

[#16801] rb_define_class() vs Class.new() — Kero van Gelder <kero@...4050.upc-d.chello.nl>

Hi,

18 messages 2001/06/23
[#16802] Re: rb_define_class() vs Class.new() — ts <decoux@...> 2001/06/23

>>>>> "K" == Kero van Gelder <kero@d4050.upc-d.chello.nl> writes:

[#16841] RE: national characters is strings — "Aleksei Guzev" <aleksei.guzev@...>

Next week I'll try to rebuild Ruby with Unicode strings. But it would be

15 messages 2001/06/25
[#16842] Re: national characters is strings — matz@... (Yukihiro Matsumoto) 2001/06/25

Hi,

[#16843] Re: national characters is strings — "Aleksei Guzev" <aleksei.guzev@...> 2001/06/25

That's good enough. But I'm afraid this could ( not would ) cause string

[#16868] Something strange with Ruby's inheritance mechanism — Eric Jacoboni <jaco@...>

As Ruby beginner, i try some "canonical" OO scripts. Doing so, I've

14 messages 2001/06/25
[#16873] RE: Something strange with Ruby's inheritance mechanism — "Aleksei Guzev" <aleksei.guzev@...> 2001/06/26

[#16879] Re: Something strange with Ruby's inheritance mechanism — Mathieu Bouchard <matju@...> 2001/06/26

On Tue, 26 Jun 2001, Aleksei Guzev wrote:

[#16869] Something strange with Ruby's inheritance mechanism — Eric Jacoboni <jaco@...>

As Ruby beginner, i try some "canonical" OO scripts. Doing so, I've

12 messages 2001/06/25

[#16881] — "Aleksei Guzev" <aleksei.guzev@...>

32 messages 2001/06/26
[#16916] Re: Method overloading (option) Was: Re: — "Wayne Blair" <wayne.blair@...> 2001/06/26

[#16920] Re: Method overloading (option) Was: Re: — matz@... (Yukihiro Matsumoto) 2001/06/26

Hi,

[#16888] finalizers, destructors and whatnot — "David Leal" <david@...>

Hi all,

16 messages 2001/06/26

[#17037] keeping an Exception object alive — David Alan Black <dblack@...>

Hello --

19 messages 2001/06/28
[#17055] Re: keeping an Exception object alive — matz@... (Yukihiro Matsumoto) 2001/06/29

Hi,

[#17066] RCR: Exception methods (was: Re: Re: keeping an Exception object alive) — David Alan Black <dblack@...> 2001/06/29

Hello --

[#17076] Re: RCR: Exception methods (was: Re: Re: keeping an Exception object alive) — matz@... (Yukihiro Matsumoto) 2001/06/29

Hi,

[#17079] Re: RCR: Exception methods (was: Re: Re: keeping an Exception object alive) — David Alan Black <dblack@...> 2001/06/29

Hello --

[#17138] Re: RCR: Exception methods (was: Re: Re: keeping an Exception object alive) — matz@... (Yukihiro Matsumoto) 2001/07/02

Hi,

[#17141] Re: RCR: Exception methods (was: Re: Re: keeping an Exception object alive) — David Alan Black <dblack@...> 2001/07/02

Hello --

[#17142] Re: RCR: Exception methods (was: Re: Re: keeping an Exception object alive) — ts <decoux@...> 2001/07/02

>>>>> "D" == David Alan Black <dblack@candle.superlink.net> writes:

[ruby-talk:16702] Re: embedding C++

From: Matthias Lampert <ml@...>
Date: 2001-06-21 13:00:56 UTC
List: ruby-talk #16702
Hello, Chris!

Also las ich bei Chris Uzdavinis [mailto:chris@atdesk.com]
> 
> [...]
> 
> There are some important issues to remember if you're writing code by
> hand.  The biggest problem that needs to always be on your mind is
> when a Ruby exception is thrown.
> 
> Since Ruby exceptions use longjmp, the stack is not unwound like C++
> programmers expect.  Local variables will NOT have their destructors
> invoked.  Therefore you must always be very careful to protect your
> objects.  


HooaMooa!  That's an issue worth smoking 10 pipes over, indeed.  
I would have certainly been swallowed by this kind of quicksand.
Thank you for warning me!


> There are a few ways to do this.  One slowish way is to
> heap-allocate all your C++ objects and keep track of them in a global
> structure.  You can stuff these objects into Ruby objects and let the
> Ruby garbage collector take care of the memory for you if you'd like.
> (But you still need to keep track of those ruby objects somewhere so
> you can mark them for the garbage collector while you're still using
> them.) 


That's certainly the easiest solution.  By the way, Java has become
tremendously popular among coders despite or even for handling matters 
just like that.


> Another thing you can do is create local scopes around local variables
> in such a way that they always go out of scope before any ruby
> function that can possibly "throw" is called.  This is a variation of
> the design rule of "don't allow ANY stack-based variables to exist who
> need a destructor invoked to exist when you call ruby functions."

That seems to me the most performative solution, and as far as I can see,
it's also the cleanest.  


> A final way to accomplish this may be to use setjmp yourself in each
> of your C++ functions, however I have not experimented at all with
> this approach and it sounds like a high-overhead solution.

I don't know yet what calling setjmp implies. As for my own code, 
I could manipulate XEmacs to automatically produce markers in my 
methods that can be handled by some useful tool (Ruby, for 
instance) to be converted into the appropriate C++ code.  Just two
other lines in the Makefile ought to do the job in time. 

Of course, this can't easily be done on third-party code...  
And what about third-party C++ code that throws exceptions 
itself? ...
Honestly, I consider obtaining some more tobacco!

> 
> I've been thinking about writing up the issues I've encountered, but I
> still don't have a good enough solution to where I'm convinced it's
> worth writing about.
> 

That's not the issue about writing, especially not in the OS community.  
Some German success trainer said:  If you have a problem you can't solve,
tell the world that there's a problem and it WILL be solved. 

That's what I did here, and I want to thank all those who gave me all
those precious hints.

CU,

--

Hippo (aka Matthias Lampert, Hamburg)
Just another XP and Ruby fan

In This Thread

Prev Next