# Ruby one-click installer issue with extensions

**URL:** <https://rubytalk.org/t/ruby-one-click-installer-issue-with-extensions/12195>\
**Category:** ruby-talk\
**Created:** [18 June 2004 18:08 UTC](https://rubytalk.org/t/ruby-one-click-installer-issue-with-extensions/12195 "2004-06-18T18:08:29Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Jeff\_Mitchell](https://avatars.discourse-cdn.com/v4/letter/j/e480ec/32.png) [@Jeff\_Mitchell](https://rubytalk.org/u/Jeff_Mitchell)\
**Post date:** [18 June 2004 18:08 UTC](https://rubytalk.org/t/ruby-one-click-installer-issue-with-extensions/12195/1 "2004-06-18T18:08:29Z")

</div>

> 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](http://promotions.yahoo.com/new_mail)

---

<div class="post-metadata">

**Author:** ![Joao\_Pedrosa2](https://avatars.discourse-cdn.com/v4/letter/j/7ba0ec/32.png) [@Joao\_Pedrosa2](https://rubytalk.org/u/Joao_Pedrosa2)\
**Post date:** [18 June 2004 22:37 UTC](https://rubytalk.org/t/ruby-one-click-installer-issue-with-extensions/12195/2 "2004-06-18T22:37:27Z")

</div>

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](http://promotions.yahoo.com/new_mail)
