[Win32utils-devel] Comments for Daniel Berger blog post

Luis Lavena luislavena at gmail.com
Sat Aug 8 19:47:54 EDT 2009

On Fri, Aug 7, 2009 at 10:36 PM, Heesob Park<phasis at gmail.com> wrote:
> Hi Luis,
> 2009/8/8 Luis Lavena <luislavena at gmail.com>:
>> Hey Daniel,
> <snip>
>> [snip]
>> Wonder why your negative comment about it or if you haven't heard the
>> news about Ruby-ffi 0.4.0 release with native gems for mingw32 and
>> mswin32.
> I guess I'm the source of the negative comment :)
> I'm always watching ruby-ffi and rubyinstaller mailing list. And I
> know FFI builds with RubyInstaller and DevKit.
> Do you have tried to build ruby-ffi 0.4.0 with mswin32 compiler? I
> tried and it failed.

No, I no longer have installed or try Visual Studio for any C project anymore.

> As you now, I have a patched version ruby-ffi-2.0.0 and binary gem.
> Porting to mswin32 compiler of GCC oriented project is a pain
> especially in system programming.

Indeed I'm fully aware of that particular issue, I've tried several
times to build not Ruby but all the dependencies related to it,
including GNU ones with VC8 and failed in the process.

> When I wrote a message on the ruby-ffi forum about the mswin32 patched
> version, they just commented that why not try mingw32 version. No one
> ever give an interest on my patch.

I believe because there is no way for them to reproduce it or test
that it works properly. If they integrate that patch and someone else
system installation breaks, then noone will look at you for fixes, but
look at FFI team instead.

That's how OSS works.

> I guess you dislike mswin32 compiler and have a bias towards ming32.
> Recently all your posts are focused on mingw32.

I dislike unneeded complexity. I dislike spent 3 full weekends getting
a handful of Ruby dependencies working just to find out that the
performance gain was marginal. A complete waste of time.

And all the pain,headaches and blindness caused by staring at Ruby C
code to get it work proper didn't made me feel good after.

> Don't you want to see mswin32 version of Ruby anymore? Would you
> summarize why you decide mingw32 version as rubyinstaller platform?

I don't have a problem summarizing it, but perhaps I'm not good with
summaries :-P

VC8/VC9 links to MSVCR80/90, not MSVCRT.dll, because of that, none of
the dependencies Ruby uses can be used.

This has been raised every time on Ruby-core, and segfaults because
mixing of CRT got my tired.

For mswin32 compilers to work, I would have to go, on every release,
over the Ruby dependencies and get those build and work with mswin32
compiler, since already provided executables are not going to work,
since they link to a different CRT.

Going VC8/9 will also break Ruby binary gem compatibility, since gems
for VC6 would fail on VC8/9 due the exact same CRT issue and even
worse, due incorrect msvcr80-ruby18.dll or msvcr90-ruby18.dll

Usage of freely available VC8/9 has not proven advantage over old and
obsolete GCC 3.4.5. To be able to use PGO you need paid Visual Studio,
so is a negative point to use it as official compiler.

Even more complicated is explain to developers that the CRT is no
longer a simple DLL but is now an SxS assembly that needs to be
referenced and you need to install a Runtime package every time you
want to run it.

This becomes a issue and put higher the entry point barrier for people
wanting to install or use a "packaged" version of a tool.

Leave out of the equation 3rd party developers, outside of
RubyInstaller team that creates tools that links to binaries which we
don't have control, like MySQL, PostgreSQL, Oracle, etc.

Even worse, consider how many of those do not care about Windows at
all? Believe me, takes a great deal of effort and time to prove them
that they can get their projects working on Windows.

I've written about this stuff for the past 4 years, been ignored over
Ruby-core, ignored over private email and been considered a noob
ranting all over Ruby current Windows situation.

I've even explored VC8 back in 2007/2008 and even before getting Ruby
to build with it instead of GCC.

Ruby has not been born to properly interact with Win32API, not even
with Windows... 4 layers of functions to be able to get into IO
elements? C files fully covered of conditional macros to determine
which OS you're in? That sucks.

But can't do anything to change that, tried, but I'm alone.

Perhaps I'm wrong, or all the above points I've mention means nothing to you.

I'm not trying to prove that "my solution" is the the right one, heck,
maybe I'm completely wacko and I just do crazy stuff, but had worked
for me until now.

> Regards,

Regards and have a nice weekend
Luis Lavena
Perfection in design is achieved not when there is nothing more to add,
but rather when there is nothing more to take away.
Antoine de Saint-Exupéry

More information about the win32utils-devel mailing list