ruby-trunk-changes r29738 - r29738

今日は 1つしかコミットがありませんでした。こんな日もありますね。しかしこの 1つがなかなか大物でして……。

nobu:r29738 2010-11-10 07:20:12 +0900

Windows 版(cygwin 版?) で rubystub.exe という実行体をコンパイルして、これをスクリプトファイルの先頭にくっつけて、rubystub.exe + shebang(#!ruby の行) + スクリプトの本体、というファイルを生成してインストールするようにしているようです。Windows 版では .bat ファイルのかわりにこのようにして作った .exe ファイルをインストールするようにしているみたいです。
また拡張子が .exe のファイルは自動的に -x オプション付きとして扱うように変更されています。このため ruby.exe に渡せば #!ruby の行までを読み飛ばして続きをスクリプトとして実行してくれるので、ただのスクリプトファイルとしても動くし、直接起動しても rubystub が自分自身を引数として ruby インタプリタを起動するので実行できるというしくみではないか、というのがしばらく眺めていて辿り着いた結論です。ちゃんと納得いくまで読み込んだわけでないのでかなりの部分が推測です。
インストールされる全てファイルにインタプリタがくっつくとするとファイルサイズが大きくなるんでしょうか。

この頃 Windows 環境のビルドなどの改善がとても進んでいるようですね。arton さんの達人出版会の「Ruby環境構築講座 Windows編」を読んで勉強しようかなぁ。