Windows Services for UNIX 3.5でTcl/Tk

2004年1月20日、MicrosoftはWindows Services for UNIX v3.5 (以下SFU3.5)日本語版を無償公開した。
SFU3.5はWindows上でUNIX用アプリケーションのコンパイルとネイティブ実行を行えるUNIX互換環境「Interix」を搭載する。 SFU3.5はWindows2000とWindows XP Professionalで動作する。(Windows XP Homeでは動作しない)

SFU3.5には、Korn-shell, tcshといったUNIXシェルが搭載されているほか、
gccやgdbといった各種コンパイラ・開発ツールも利用可能である。
Xは、X11R5とX11R6に対応するが、Xクライアント機能のみで、Xサーバ機能は含まれていない。
今回は商用のXサーバであるASTEC-X 4.10を使用した。

以下は、SFU3.5のスクリーンショットである。(ASTEC-Xのマルチウィンドウモードを使用した)

Windows Services for UNIX v3.5

以下は、背景をX風にしてみた。

Windows Services for UNIX v3.5

シェルをbashにする

標準のKorn-shellとtcshは使いにくいので、bashを入れてみた。
Tool Warehouseからbashのバイナリも持ってきて、インストールすると/etc/shellsにbashが登録される。
Korn-shellまたはtcshのアイコンをコピーし、プロパティのリンク先を以下のように変更する。
HOMEに .bash_profile を作成し、TERM=vt100 を追加する。

bashのプロパティ

bashのコンソールが使えるようになった。

bashのコンソール

Tcl/Tkの動作確認

SFU3.5には標準でTcl/TKが入っていないので、ソースからビルドする必要がある。
ただし、timezone問題があり、簡単にはビルドできそうにないので、
Tool Warehouseから移植済みのTcl/Tk 8.3.4のバイナリを持って来た。
ここには、bashやGNU tar等もあるので、必要に応じて持って来よう。

いつものように、自作ソフトのTkEngineで性能を測定した。
上記スクリーンショットの左がWindows版ActiveTclで実行したTkEngineで、
右が、SFU3.5版Tcl/Tkで実行したTkEngineです。(違いがわかりますか?)
SFU3.5版Tcl/Tkは、Windows版ActiveTclに比べて若干遅い程度で、
バージョンが古いことを考慮するとほぼ同じような性能かもしれない。
類似のCygwinなどに比べて、オーバーヘッドが少ないことがわかる。

環境TkEngine値
Windows版ActiveTcl8.4.5+TkEngine54
SFU3.5版Tcl/Tk8.3.4+TkEngine50
※Pentium M 1GHz (Windows XP Professional)で測定

SFU3.5の問題点

懐かしのゲーム(おまけ)

SFU3.5に懐かしのゲーム(x777とxemeraldia)を移植してみた。
つい夢中で遊んでしまい目が充血気味だ。。。(^^;

x777xemeraldia

ソースを以下に置いたので、興味のある方は、ビルドして遊んでみてくだい。

ビルドは、xmkmf ; make ; make install で OK です。
スコアファイルに書き込めないというエラーが出るので以下を実行する。
# touch /usr/local/games/x777/.x777.scores
# chmod 666 /usr/local/games/x777/.x777.scores
# touch /usr/local/games/xemeraldia/.xemeraldia.scores
# chmod 666 /usr/local/games/xemeraldia/.xemeraldia.scores

参考文献