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のマルチウィンドウモードを使用した)
以下は、背景をX風にしてみた。
シェルをbashにする
標準のKorn-shellとtcshは使いにくいので、bashを入れてみた。
Tool Warehouseからbashのバイナリも持ってきて、インストールすると/etc/shellsにbashが登録される。
Korn-shellまたはtcshのアイコンをコピーし、プロパティのリンク先を以下のように変更する。
HOMEに .bash_profile を作成し、TERM=vt100 を追加する。
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+TkEngine | 54 |
SFU3.5版Tcl/Tk8.3.4+TkEngine | 50 |
※Pentium M 1GHz (Windows XP Professional)で測定
SFU3.5の問題点
- ウィンドウマネージャは、twmしか提供されていない。
ASTEC-Xのマルチウィンドウモードを使えば、ウィンドウマネージャの肩代わりしてくれる。
- 日本語入力をするための手段が提供されていない。
ASTEC-XではMS-IMEが使えることになっているが、なぜか使えなかった。
kinput2+Cannaが欲しいところである。
- Interixは、UNIX互換であり、Linux互換ではない。
timezone問題のようにビルドできないソースもある。
懐かしのゲーム(おまけ)
SFU3.5に懐かしのゲーム(x777とxemeraldia)を移植してみた。
つい夢中で遊んでしまい目が充血気味だ。。。(^^;

ソースを以下に置いたので、興味のある方は、ビルドして遊んでみてくだい。
ビルドは、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
参考文献