history

青木日記 RSS

<前の日 | この月 | 次の日>

2004-03-10

Windows 上の Ruby の違い

http://ponx.s5.xrea.com/bibo/20040309.html#p02

ツッコミ入れようと思ったらエラーになってしまったので、 こちらに書いておきます。

Windows 上で動く Ruby それぞれの違いについてです。 あくまで「ぼくが理解した……」という頭書きつきで読んでほしいのですが、 まとめると次のようになります。

msvcrt というのは MS VC++ Runtime のことで、 ようするに libc みたいなもんです。 mswin32 ruby は VC++ でコンパイルして msvcrt とリンクした ruby。 mingw ruby は MinGW の gcc でコンパイルして msvcrt とリンクした ruby です。 だから mswin32 ruby と mingw ruby は拡張ライブラリを共有できます。

ついでに Cygwin 版というのは、 Cygwin の gcc でコンパイルして、 Cygwin DLL とリンクした ruby のことです。

ただし本質的なのはコンパイラではなく リンクしているライブラリのほうなので、 対応しているビルドスイートさえあれば Linux 上で Cygwin 用や msvcrt 用の ruby をクロスコンパイルすることもできます。

よーするに、問題は動くときの calling convention と ランタイムライブラリなんです。 アーキテクチャは同じ (i386) なんですから。

でもって bcc 版がよくわからんのですが、 あれもランタイムライブラリは msvcrt なんでしょうか? それとも独自 libc?

(追記) あー、とっくの昔にうささんの説明が出てた……

(追記 2) 田村さんのところにも言及があった……

(19:36)

ロマサガ 3 衝動

結局中古で買ってしまった。1280 円で安かった。 スーファミ本体は当然のごとく動態保存されているので問題なし。 AC 電源なんてファミコンのをずっと使ってるんだけど、よく壊れないな。

(20:17)

ruby のバイナリ互換性とぎれる

丁稚な日々 3/10より

うっわ、これはまたすごいな。構造体型フラグがのきなみ変わってる。 1 ビット空けたということは、1bit GC への布石と予測してみる結合テスト。

(02:10)

本日のツッコミ(全4件) [ツッコミを入れる]
小西 (2004-03-10 23:06)

bccはbccwin32となります。Microsoftのところのmsvcrt.dllはないです。RubyはCコールなのと、関数の名前付け規則の問題で、MicrosoftとBorlandのDLLは相乗りできないのです;;

あおき (2004-03-11 02:13)

なるほど、別 DLL でしたか。
どうもありがとうございます。

arton (2004-03-13 11:31)

RubyExtensionProgrammingGuide Rev12が途中で切れてるんだけど、これは改修中(意図的)だから? それとも事故?

あおき (2004-03-13 19:14)

最後の文字が途中で切れてたりするし、事故っぽいですね。
送信途中で回線が切れたとか、そういうことでしょうか。

名前
メールアドレス

<前の日 | この月 | 次の日>
2002|04|05|06|07|08|09|10|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|04|05|06|09|10|
2009|07|
2010|09|

Copyright (c) 2002-2007 青木峰郎 / Minero Aoki. All rights reserved. LIRS