[#27163] Statically linked extensions and deferred initialization. — Kent Dahl <kentda@...>

Hi.

12 messages 2001/12/01

[#27168] which editor is adviceful? — Niko Schwarz <niko.schwarz@...>

I know this always is the standard question for every language, but for

17 messages 2001/12/01

[#27191] OO AI — mentifex@... (Arthur T. Murray)

The road to supercomputer AI is paved with good inventions; visit

22 messages 2001/12/01

[#27265] John Roth dolt ( Re: A challenge to proponents of Unit Testing. ) — olczyk@... (Thaddeus L Olczyk)

Background.

166 messages 2001/12/02
[#27295] Re: John Roth dolt ( Re: A challenge to proponents of Unit Testing. ) — Ron Jeffries <ronjeffries@...> 2001/12/02

On Sat, 01 Dec 2001 13:46:42 GMT, olczyk@interaccess.com (Thaddeus L

[#28226] Re: John Roth dolt ( Re: A challenge to proponents of Unit Testing. ) — rbinder@... (Bob Binder) 2001/12/11

Keith Ray <k1e2i3t4h5r6a7y@1m2a3c4.5c6o7m> wrote in message news:<k1e2i3t4h5r6a7y-7C2620.18082110122001@news.attbi.com>...

[#27697] Re: John Roth dolt ( Re: A challenge to proponents of Unit Testing. ) — tadamsmar@... (Tom Adams) 2001/12/06

Ron Jeffries <ronjeffries@REMOVEacm.org> wrote in message news:<176717160028CE03.51B6AF6E20305FB5.2EC5DCFFD6C10DFD@lp.airnews.net>...

[#27958] Re: John Roth dolt ( Re: A challenge to proponents of Unit Testing. ) — "Robert C. Martin" <rmartin@...> 2001/12/08

On Sat, 08 Dec 2001 00:35:43 -0600, Robert C. Martin <rmartin @

[#27287] New RubyGarden Poll - this one affects us all :) — Dave Thomas <Dave@...>

38 messages 2001/12/02
[#27290] RE: New RubyGarden Poll - this one affects us all :) — "Mark Hahn" <mchahn@...> 2001/12/02

[#27482] Re: New RubyGarden Poll - this one affects us all :) — Darrin Thompson <dthompson@...> 2001/12/04

Paul Brannan wrote:

[#27488] Re: New RubyGarden Poll - this one affects us all :) — Michael Neumann <neumann@...> 2001/12/04

Darrin Thompson wrote:

[#27546] Re: New RubyGarden Poll - this one affects us all :) — Bob Hutchison <hutch@...> 2001/12/05

Hi everyone,

[#27552] Re: New RubyGarden Poll - this one affectsus all :) — "Bill Kelly" <billk@...> 2001/12/05

[#27553] Re: New RubyGarden Poll - this one affectsus all :) — David Alan Black <dblack@...> 2001/12/05

Hello --

[#27344] Programname in (un*x) top — kamphausen@... (SKa)

Dear Rubies,

25 messages 2001/12/03
[#27454] Re: Programname in (un*x) top — kamphausen@... (SKa) 2001/12/04

mark@wutka.com wrote in message news:<IsPO7.70773$8n4.4039369@e3500-atl1.usenetserver.com>...

[#27456] Re: Programname in (un*x) top — Martin Weber <Ephaeton@...> 2001/12/04

On Wed, Dec 05, 2001 at 01:03:17AM +0900, SKa wrote:

[#27369] Killer app for Ruby developers? — "Hal E. Fulton" <hal9000@...>

This is an idea that is very skeletal

17 messages 2001/12/03

[#27405] Sourceforge vs. Savannah — "Hal E. Fulton" <hal9000@...>

Opinion question(s).

16 messages 2001/12/04

[#27485] Package Naming — Dave Thomas <Dave@...>

69 messages 2001/12/04
[#27487] RE: Package Naming — "Mark Hahn" <mchahn@...> 2001/12/04

[#27501] RE: Package Naming — Sean Russell <ser@...> 2001/12/05

Mark Hahn wrote:

[#27506] Re: Package Naming — "Mark Hahn" <mchahn@...> 2001/12/05

[#27585] Re: Package Naming — "Mark Hahn" <mchahn@...> 2001/12/05

The forest service must be a hotbed for beauracracy. The only requirement

[#27587] Re: Package Naming — David Alan Black <dblack@...> 2001/12/05

Hello --

[#27588] Re: Package Naming — "Rich Kilmer" <rich@...> 2001/12/05

> -----Original Message-----

[#27589] Re: Package Naming — David Alan Black <dblack@...> 2001/12/05

Hi --

[#27591] Re: Package Naming — "Rich Kilmer" <rich@...> 2001/12/05

David...

[#27505] Do we need something like Python-URL? — ptkwt@...1.aracnet.com (Phil Tomson)

16 messages 2001/12/05

[#27647] web hosting — "ktethridge" <kevinethridge@...>

Does anyone know of a good hosting service that supports Ruby and MySQL?

18 messages 2001/12/06
[#27654] RE: web hosting — "Curt Hibbs" <curt@...> 2001/12/06

Kevin wrote:

[#27761] what are symbols good for???? — Markus Jais <info@...>

hello

13 messages 2001/12/06

[#27783] DBI and large result sets — " JamesBritt" <james@...>

I'm starting to use Ruby DBI, and I'm wondering about its use when processing

18 messages 2001/12/07
[#27805] Re: DBI and large result sets — Michael Neumann <neumann@...> 2001/12/07

JamesBritt wrote:

[#27829] Re: DBI and large result sets — "James Britt (rubydev)" <james@...> 2001/12/07

Thanks to those who helped clarify things.

[#27824] Perl/Python Module Porting — Joseph Erickson <jerickson@...>

Has there been any thought in the Ruby Community of actively porting

27 messages 2001/12/07
[#27834] Re: Perl/Python Module Porting — ptkwt@...1.aracnet.com (Phil Tomson) 2001/12/07

In article <B3265BDC-EB39-11D5-97BA-0050E4C58663@eyemg.com>,

[#27837] Perl/Python Module Porting — Eric Lee Green <eric@...> 2001/12/07

On Friday 07 December 2001 11:55 am, Phil Tomson wrote:

[#27895] Re: Perl/Python Module Porting — Mathieu Bouchard <matju@...> 2001/12/08

[#27894] Re: App server for Ruby? — Tobias DiPasquale <anany@...>

Todd Gillespie wrote

12 messages 2001/12/08

[#27897] Dictionary.com speeder upper — "Ralph Mason" <ralph.mason@...>

Here is a little script I did to make dictionary.com more useful for me.

15 messages 2001/12/08

[#27915] Ruby IDE?? What about using Eclipse?? — "Ross Shaw" <rshaw1961@...>

Eclipse (www.eclipse.org) is an open extensible IDE (written in Java) that

16 messages 2001/12/08
[#27916] Re: Ruby IDE?? What about using Eclipse?? — Robert Feldt <feldt@...> 2001/12/08

On Sat, 8 Dec 2001, Ross Shaw wrote:

[#27920] Re: Ruby IDE?? What about using Eclipse?? — "Curt Hibbs" <curt@...> 2001/12/08

I am going to do this.

[#27921] Re: Ruby IDE?? What about using Eclipse?? — Robert Feldt <feldt@...> 2001/12/08

On Sat, 8 Dec 2001, Curt Hibbs wrote:

[#27980] Displaying Ruby code in LaTeX — "Harry Ohlsen" <harryo@...>

Has anyone written a document in LaTeX that includes examples of Ruby

15 messages 2001/12/08

[#28052] How does puts decide how to print a given object? — "Harry Ohlsen" <harryo@...>

I'm writing a short tutorial introduction to Ruby for an upcoming uni

20 messages 2001/12/10
[#28062] Re: How does puts decide how to print a given object? — matz@... (Yukihiro Matsumoto) 2001/12/10

Hi,

[#28087] Re: How does puts decide how to print a given object? — David Alan Black <dblack@...> 2001/12/10

Hello --

[#28096] The benefits of dynamic typing? — Roy Patrick Tan <rtan@...>

I have just recently read an old paper by Wirth "On the Design of

59 messages 2001/12/10
[#28108] Re: The benefits of dynamic typing? — Robert Feldt <feldt@...> 2001/12/10

This is a bit long...

[#28147] Re: The benefits of dynamic typing? — "Harry Ohlsen" <harryo@...> 2001/12/10

In article <3C153282.9000309@vt.edu>, "Roy Patrick Tan" <rtan@vt.edu>

[#28150] Re: The benefits of dynamic typing? — "Mark Hahn" <mchahn@...> 2001/12/10

[#28115] Ruby for Mac OS X — "Dan Hable" <DHable@...>

Hi,

18 messages 2001/12/10
[#28119] Re: Ruby for Mac OS X — Luc Heinrich <lucsky@...> 2001/12/10

On 10/12/2001 19:05, "Dan Hable" <DHable@phmining.com> wrote:

[#28885] Re: Ruby for Mac OS X — John Beppu <beppu@...9.org> 2001/12/18

[ date ] 2001/12/11 | Tuesday | 03:23 AM

[#28179] Ruby Musings — "John Kaurin" <jkaurin@...>

Ruby Musings (IMHO):

18 messages 2001/12/11

[#28272] Survey for new Rubyists — ptkwt@...1.aracnet.com (Phil Tomson)

23 messages 2001/12/11

[#28307] Reviews solicited for Ruby article — "Harry Ohlsen" <harryo@...>

I'm in the process of writing an article on Ruby for a computer science students'

17 messages 2001/12/12

[#28308] Rendering UML diagrams? — Robert Feldt <feldt@...>

Hi,

14 messages 2001/12/12

[#28495] internal server errors — Jack Dempsey <dempsejn@...>

hi all,

15 messages 2001/12/14

[#28500] A Review of "Ruby in a Nutshell" book — Johan Holmberg <holmberg@...>

27 messages 2001/12/14

[#28552] help with ^M (line endings ) removing — Dinakar Desai <Desai.Dinakar@...>

Hello:

12 messages 2001/12/14

[#28655] RDoc - Document Ruby source files — Dave Thomas <Dave@...>

25 messages 2001/12/16
[#28768] Re: RDoc - Document Ruby source files — Dave Thomas <Dave@...> 2001/12/17

Alexander Bokovoy <a.bokovoy@sam-solutions.net> writes:

[#28769] Re: RDoc - Document Ruby source files — Alexander Bokovoy <a.bokovoy@...> 2001/12/17

On Mon, Dec 17, 2001 at 11:19:11PM +0900, Dave Thomas wrote:

[#28789] Re: RDoc - Document Ruby source files — "Christian Boos" <cboos@...> 2001/12/17

[#28676] How do you do "character filtering" of a string using each_byte. — olczyk@... (Thaddeus L. Olczyk)

I'm trying to do several things where I produce new strings from old

10 messages 2001/12/16

[#28722] stderr from external process? — "MikkelFJ" <mikkelj-anti-spam@...1.dknet.dk>

I have asked this question before - maybe it is just not possible:

75 messages 2001/12/17
[#28923] Re: stderr from external process? — "MikkelFJ" <mikkelj-anti-spam@...1.dknet.dk> 2001/12/19

[#28960] RE: Ruby 'make' replacement (Re: stderr from external process?) — "Christian Boos" <cboos@...> 2001/12/19

Hello,

[#29094] Re: Ruby 'make' replacement (Re: stderr from external process?) — "Jason Horman" <jason@...> 2001/12/20

I wrote the Torrent library. I was not sure what license to pick so I picked

[#29096] Re: Ruby 'make' replacement (Re: stderr from external process?) — Robert Feldt <feldt@...> 2001/12/20

Just a thought on this thread (it might be obvious, I just want it to be

[#29117] Re: Ruby 'make' replacement (Re: stderr from external process?) — Dave Thomas <Dave@...> 2001/12/20

"MikkelFJ" <mikkelj-anti-spam@post1.dknet.dk> writes:

[#29156] Programming Ruby — "Marcio Barbosa" <argaeus@...> 2001/12/20

Hi,

[#28737] [Announcement] Ruby news weekly — Holden Glova <dsafari@...>

-----BEGIN PGP SIGNED MESSAGE-----

30 messages 2001/12/17

[#28749] Constant loss of memory with Kernel::load in a loop — "Jens Nissen" <frodo.hobbit@...>

We have developed a wonderful application under Windows 2K using Ruby 1.6.5

31 messages 2001/12/17
[#28755] Re: Constant loss of memory with Kernel::load in a loop — nobu.nokada@... 2001/12/17

At Mon, 17 Dec 2001 19:36:42 +0900,

[#28760] Re: Constant loss of memory with Kernel::load in a loop — ts <decoux@...> 2001/12/17

>>>>> "n" == nobu nokada <nobu.nokada@softhome.net> writes:

[#28774] Re: Constant loss of memory with Kernel::load in a loop — nobu.nokada@... 2001/12/17

At Mon, 17 Dec 2001 22:06:31 +0900,

[#28782] Re: Constant loss of memory with Kernel::load in a loop — ts <decoux@...> 2001/12/17

>>>>> "n" == nobu nokada <nobu.nokada@softhome.net> writes:

[#28803] Re: Constant loss of memory with Kernel::load in a loop — nobu.nokada@... 2001/12/17

At Mon, 17 Dec 2001 23:59:17 +0900,

[#29128] Re: Constant loss of memory with Kernel::load in a loop — matz@... (Yukihiro Matsumoto) 2001/12/20

Hi,

[#28855] [IDEA] creating stand-alone versions for easy distribution etc — Patrik Sundberg <ps@...>

hi list,

10 messages 2001/12/18
[#28856] Re: [IDEA] creating stand-alone versions for easy distribution etc — Robert Feldt <feldt@...> 2001/12/18

On Tue, 18 Dec 2001, Patrik Sundberg wrote:

[#28875] C++ preincrement operator — Paul Brannan <paul@...>

In Ruby, if I do this:

17 messages 2001/12/18
[#28876] Re: C++ preincrement operator — Peter Hickman <peter@...> 2001/12/18

Paul Brannan wrote:

[#28878] Re: C++ preincrement operator — Paul Brannan <paul@...> 2001/12/18

On Wed, Dec 19, 2001 at 02:09:03AM +0900, Peter Hickman wrote:

[#28879] Re: C++ preincrement operator — "Jack Dempsey" <dempsejn@...> 2001/12/18

so basically you're suggesting that any amount of stacking -'s or +'s past

[#28911] A Ruby programmer walked into a bar ... — "Harry Ohlsen" <harryo@...>

Now that I have your attention :-) ...

29 messages 2001/12/19
[#28985] Re: A Ruby programmer walked into a bar and ordered a Ruby-Thread — Luc Heinrich <lucsky@...> 2001/12/19

On 19/12/2001 15:46, "Harry Ohlsen" <harryo@zip.com.au> wrote:

[#29036] Re: A Ruby programmer walked into a bar and ordered a Ruby-Thread — HarryO <harryo@...> 2001/12/19

On Thu, 20 Dec 2001 07:58:47 +1100, Dave Thomas wrote:

[#29038] Re: A Ruby programmer walked into a bar and ordered a Ruby-Thread — "Mark Hahn" <mchahn@...> 2001/12/20

[#29046] Re: A Ruby programmer walked into a bar and ordered a Ruby-Thread — Dave Thomas <Dave@...> 2001/12/20

"Mark Hahn" <mchahn@facelink.com> writes:

[#28926] Stream? — Ron Jeffries <ronjeffries@...>

Is there a memory stream object in Ruby, analogous to Smalltalk's

14 messages 2001/12/19

[#28977] overriding methods: (almost) a replacement for alias_method — Paul Brannan <paul@...>

I think almost all of us will agree that it's pretty ugly to do:

17 messages 2001/12/19

[#29014] But is it Fun? — edwardhatfield1@... (Edward Hatfield)

I've been watching Ruby with great interest over

19 messages 2001/12/19

[#29265] upper case to lower — "Bashar A. Asad" <baasad@...>

hello,

25 messages 2001/12/21

[#29296] XEmacs problems with ruby-mode.el

Hi,

17 messages 2001/12/22

[#29327] a better way? — Ron Jeffries <ronjeffries@...>

I was writing a little code that cached a function value, and wound up

38 messages 2001/12/23
[#29328] Re: a better way? — David Alan Black <dblack@...> 2001/12/23

Hi --

[#29331] Re: a better way? — "Hal E. Fulton" <hal9000@...> 2001/12/23

----- Original Message -----

[#29488] Python and Ruby: a comparison — Ron Stephens <rdsteph@...>

I initiated a thread over on comp.lang.python which has turned into

68 messages 2001/12/27
[#29677] Re: Python and Ruby: a comparison — Ron Stephens <rdsteph@...> 2001/12/30

Very interesting idea. Unfortunately, I doubt if it woudl be possible. For one

[#29696] Re: Python and Ruby: a comparison — "Conrad Schneiker" <schneiker@...> 2001/12/30

"Ron Stephens" <rdsteph@earthlink.net> wrote:

[#29869] Re: Python and Ruby: a comparison — Michael Kelly <mkelly2002NOSPAM@...> 2001/12/31

On Mon, 31 Dec 2001 12:26:46 +1100, Michael Lucas-Smith >Check out

[#29871] Re: Python and Ruby: a comparison — Dan Sugalski <dan@...> 2001/12/31

At 02:02 AM 1/1/2002 +0900, Michael Kelly wrote:

[#29541] New Rubygarden poll — Dave Thomas <Dave@...>

27 messages 2001/12/28

[#29545] RDoc now displays source — Dave Thomas <Dave@...>

17 messages 2001/12/28

[#29596] extending method of class A to support arguments of class B by promoting `self' to class B — Tomasz Wegrzanowski <taw@...>

(Names of classes chosen arbitrarily, just to show issue)

18 messages 2001/12/28

[#29613] Extending Ruby on Windows platform using VC++ IDE — "Alan Moyer" <moyer4@...>

Hi,

11 messages 2001/12/29

[#29667] Yet Another Newbie — Michael Kelly <mkelly2002NOSPAM@...>

Yet Another Newbie. :)

13 messages 2001/12/29

[#29713] Ruby parsers in Ruby — ptkwt@...1.aracnet.com (Phil Tomson)

Wouldn't it be cool to have Ruby playing with Parrot before Python or even

20 messages 2001/12/30

[#29773] Proc.class vs yield — Michael Lucas-Smith <s3225202@...>

Hi,

49 messages 2001/12/31
[#29782] Re: Proc.class vs yield — David Alan Black <dblack@...> 2001/12/31

Hello --

[#29795] Re: Proc.class vs yield — Michael Lucas-Smith <s3225202@...> 2001/12/31

def someThing (&a, &b)

[#29796] Re: Proc.class vs yield — David Alan Black <dblack@...> 2001/12/31

Hi --

[#29797] Re: Proc.class vs yield — Michael Lucas-Smith <s3225202@...> 2001/12/31

>

[#29802] Re: Proc.class vs yield — David Alan Black <dblack@...> 2001/12/31

Hi --

[#29849] Re: Proc.class vs yield — Michael Lucas-Smith <s3225202@...> 2001/12/31

That's a good solution, thanks.

[#29867] Re: Proc.class vs yield — David Alan Black <dblack@...> 2001/12/31

Hi --

[#29798] FXRuby FreeRIDE Spike uploaded. — Phlip <phlip_cpp@...>

Rubies:

14 messages 2001/12/31

[#29886] Ruby/Python: Software Engineering — noone <nanotech@...>

All:

36 messages 2001/12/31
[#29889] Re: Ruby/Python: Software Engineering — Tomasz Wegrzanowski <taw@...> 2001/12/31

On Tue, Jan 01, 2002 at 05:03:35AM +0900, noone wrote:

[#29904] Re: Ruby/Python: Software Engineering — noone <nanotech@...> 2001/12/31

Tomasz/All:

[#29887] RE: Ruby multi-dimensional Hash question?---Any one out there willing to give this questions a try? — "Crandall, Jeff W" <jeff.w.crandall@...>

Anyone? Is this the correct mailing list to try and get

18 messages 2001/12/31

[#29895] How to check free diskspace? — Le Wang <lewang@?.?.bigfoot.com (nospam)>

Hi all,

23 messages 2001/12/31

[ruby-talk:28448] Re: ANNOUNCE: Extending Ruby With C++ Mini How-To

From: Paul Brannan <paul@...>
Date: 2001-12-13 20:16:01 UTC
List: ruby-talk #28448
On Fri, Dec 14, 2001 at 04:25:21AM +0900, Issac Trotts wrote:
> 
> http://www.angelfire.com/electronic2/issac/rb_cpp_ext_tut.txt
> 
> If anyone has comments I'd like to hear them!
> 
> Issac

Here are some comments:

1) AFAIK, the only functions you should need extern "C" in front of are
the Init_xyz functions.  If you need to give more functions C linkage,
you might want to mention that it's possible to use extern "C" in block
form:

  #ifdef __cplusplus
    extern "C" {
  #endif
      void foo();
      void bar();
  #ifdef __cplusplus
    }
  #endif

2) Generally speaking, ruby methods should have file scope.  So either
put the word "static" in front of t_init, t_add, and t_foo, or surround
them with:

  namespace { //anon
    VALUE t_init(VALUE self) {
      ...
    }
    ...
  } // namespace anon

the latter is more correct, as using static to indicate file scope is a
deprecated feature of C++.

The same rule applies to globals; VALUE cTest should probably have file
scope as well.

3) Your t_foo function is not exception-safe.  You need to catch C++
exceptions and re-throw them as Ruby exceptions:

  try {
    try {
      // do stuff that might throw an exception
    } catch(Exception1 & ex) {
      VALUE s = rb_str_new2("Exception 1 caught: ");
      rb_str_cat2(s, ex.reason_);
      throw rb_exc_new3(rb_eRuntimeError, s);
    } catch(std::bad_alloc & ex) {
      // this probably won't work :(
      VALUE s = rb_str_new2("std::bad_alloc");
      throw rb_exc_new3(rb_eNoMemoryError, s);
    }
  } catch(VALUE ex) {
    rb_exc_raise(ex);
    return; // get rid of the compiler warning
  } catch(...) {
    rb_raise(rb_eRuntimeError, "Unknown exception");
    return; // get rid of the compiler warning
  }

I know of no good way to do this without using nested try blocks; note
that when the C++ exception is caught, we re-throw it as a VALUE; when
this happens; the C++ exception gets cleaned up.  We then re-raise the
VALUE as a Ruby exception; since VALUE is essentially a pointer, it does
not need to be cleaned up.

4) You do not have the following bug in any of your examples, but it is
a potential problem.  If your code makes a callback to Ruby code, and
the Ruby code raises an exception, then C++ objects on the stack will
not be properly cleaned up.  For example, if I change your t_foo
function:

  struct Foo() {
     Foo() { std::cout <<  "Foo()" << std::endl }
    ~Foo() { std::cout << "~Foo()" << std::endl }
  };

  VALUE t_foo(VALUE self) {
    Foo f;
    VALUE x = NUM2INT(Qnil); // this will raise an exception
    return Qnil;
  }

Note that f will get constructed, but it may or may not get properly
destructed (the C++ standard does not specify).  There are a few
possible solutions:

  1) create f on the heap and register it with the Ruby gargage
  collector (this is what swig does):

    void delete_foo(Foo * f) {
      delete f;
    }

    VALUE t_foo(VALUE self) {
      Foo * f = new Foo;
      Data_Wrap_Struct(Foo, 0, delete_foo, f);
      VALUE x = NUM2INT(Qnil); // this will raise an exception
      return Qnil;
    }

  2) Rewrite the function so that f is destructed before the exception
  gets thrown:

    VALUE t_foo(VALUE self) {
      {
        Foo f;
        // do something here with f
      } // f should now get destructed
      VALUE x = NUM2INT(Qnil); // this will raise an exception
      return Qnil;
    }

See [ruby-talk:17943], [ruby-talk:16705], and [ruby-talk:16697] for more
discussion of exceptions in C++ extensions.

5) You might also want to mention that writing Ruby extensions in C++ is
non-trivial, and give some encouragement not to get discouraged.
Writing correct code is a very difficult problem, and entire books have
been written on the subject (see Herb Sutter's _Exceptional C++_, for a
good one pertaining to exception-safe code).  Also mention that SWIG
(http://www.swig.org) is a good tool for eliminating many problems you
might run into (though there is no such thing as a magic hammer :).

Paul

In This Thread

Prev Next