Win32ネイティブ版Rubyは、Cygwin版Rubyと比べた場合、cygwin1.dll
を
必要としないというメリットがある反面、Unixとの互換性が低い部分がある
(→Win32ネイティブ版Rubyの互換性問題)
現在広く配布されているものは、VC++でコンパイルされたmswin32版と gccでコンパイルされたmingw版の2種類がある。
また、ruby 1.7 からは Borland C++ でもコンパイルできるようになった。 これは bccwin32 版と呼ばれている。
これらのコンパイラによる違いはとくにないので、スクリプトを書く上では 同じものとみなしてかまわない。しかし、(現在は)DLL名が違っているので 拡張ライブラリは混在させることができないので注意が必要である。 *1
*1Win32 環境では、拡張ライブラリが Ruby本体の DLL の名前を保持する。
現在、VC++ でコンパイルされた場合は、mswin32-rubyXX.dll、mingw32 で
コンパイルされた場合は、mingw32-rubyXX.dll (XXはバージョン番号)
となるので、mswin32 用にコンパイルされた拡張ライブラリは mswin32 用の
Ruby からしか呼べない。この問題は 1.7.3 で改善されているruby-dev:18047[外部]ruby-list:35814[外部]