Ruby one-click installer issue with extensions

Jeff Mitchell wrote:
> In any case, to my knowledge mingw32 should be fully compatible since
> it shares the same runtime, libmsvcrt-ruby18. It runs fine on
> mingw32-ruby as well. (And no problems on the i686-linux side
> either.)

I'm no expert here, but my expectation would be the opposite, since mingw32
compiled code runs through an emulation layer while natively compiled code
does not.

Since the Ruby Installer for Windows is compiled natively (with VC++ 7.1),
and your extension is compiled with mingw32, I would expect problems, and
perhaps that is the source of the segfaults you mention below.

I'm going to cross post this to the ruby-talk ML, and the ruby-installer-dev
ML to get some other opinions on this.

I was shocked to see my private email appear in the ML, but I'll respond to
this part. mingw32 produces 100% native Win32 code -- that's really the reason
mingw32 exists in the first place. What can lead to incompatibility is
the GNU gcc runtime verses the Microsoft runtime. mingw32 output can be linked
to either runtime. With mkmf.rb, ruby extensions are configured to link to
whatever runtime ruby uses -- in this case msvcrt-ruby18. If you build ruby
with mingw32 you will find it creates msvcrt-ruby18 as well.

> I noticed that you included the 7.1 runtime,
This is because not all windows systems have this runtime installed, and the
whole point of a one-click installer is that it be "one-click" (that is, the
user should not have to download and install a missing runtime dll).

The reason I mention it is because that's what makes your ruby different than
mine. Assuming no compiler bugs, the problem must lie there, or in the 181
patch you are applying.

···

--- Curt Hibbs <curt@hibbs.com> wrote:

__________________________________
Do you Yahoo!?
New and Improved Yahoo! Mail - 100MB free storage!
http://promotions.yahoo.com/new_mail

Hi,

> Jeff Mitchell wrote:
> > In any case, to my knowledge mingw32 should be
fully compatible since
> > it shares the same runtime, libmsvcrt-ruby18.
It runs fine on
> > mingw32-ruby as well. (And no problems on the
i686-linux side
> > either.)
>
> I'm no expert here, but my expectation would be
the opposite, since mingw32
> compiled code runs through an emulation layer
while natively compiled code
> does not.
>
> Since the Ruby Installer for Windows is compiled
natively (with VC++ 7.1),
> and your extension is compiled with mingw32, I
would expect problems, and
> perhaps that is the source of the segfaults you
mention below.
>
> I'm going to cross post this to the ruby-talk ML,
and the ruby-installer-dev
> ML to get some other opinions on this.

I was shocked to see my private email appear in the
ML, but I'll respond to
this part. mingw32 produces 100% native Win32 code
-- that's really the reason
mingw32 exists in the first place. What can lead to
incompatibility is
the GNU gcc runtime verses the Microsoft runtime.
mingw32 output can be linked
to either runtime. With mkmf.rb, ruby extensions
are configured to link to
whatever runtime ruby uses -- in this case
msvcrt-ruby18. If you build ruby
with mingw32 you will find it creates msvcrt-ruby18
as well.

> > I noticed that you included the 7.1 runtime,
> This is because not all windows systems have this
runtime installed, and the
> whole point of a one-click installer is that it be
"one-click" (that is, the
> user should not have to download and install a
missing runtime dll).

The reason I mention it is because that's what makes
your ruby different than
mine. Assuming no compiler bugs, the problem must
lie there, or in the 181
patch you are applying.

The 1.8.1.13 version of the Ruby installer has some
incompatibilities with Ruby-GTK as well, but I don't
know what it is specifically, I only know that by
selecting some TreeView elements it's easy to cause a
seg-fault.

I am avoiding (and telling other Ruby-GTK people to
avoid) the Ruby installer until we figure out what's
causing the problem, or when a new version comes out
without the problem.

I know for a fact that Ruby 1.8.2 compiled with MinGW
doesn't have the problem; and that Ruby 1.8.2 compiled
with VC++ doesn't have the problem either.

Windows 2000
C:\>ruby -v -e "require 'gtk2'; p
Gtk::VERSION.join('.')"
ruby 1.8.2 (2004-05-19) [i386-mswin32]
"2.4.1"
Ruby-GTK from CVS

PS: Sorry for not being more helpful.

Cheers,
Joao

···

--- Jeff Mitchell <quixoticsycophant@yahoo.com> wrote:

--- Curt Hibbs <curt@hibbs.com> wrote:

__________________________________
Do you Yahoo!?
Yahoo! Mail is new and improved - Check it out!
http://promotions.yahoo.com/new_mail