Tcl 8.3 for Windows CE

現在のTclは、UNIX(Linux)、Windows、MacOSをサポートしていますが、
最近になって、TclをPalmOSやWindows CEに移植するプロジェクトが現れました。
そんな移植プロジェクトに1つにTcl 8.3 for Windows CEがあります。
現在、second snapshot(20010904)がリリースされているので、それを中心にレポートします。

動作保証環境

second snapshotの動作保証環境は以下の通りです。 プロセッサは、SH3, MIPS, ARMをサポートしています。
OSは、Windows CE 2.11とWindows CE3.0をサポートしています。
Handheld PC(H/PC)とPocket PC(P/PC)で動作するようです。

インストール方法

second snapshotにはインストーラがないので、手動でインストールをします。
commonのアーカイブは共通で、それ以外のアーカイブはプロセッサ依存の.exeと.dllファイルが入っています。
両方のアーカイブをWindows CEの\Program Files\Tcl83の下に展開します。

制限事項

Windows CEの機能は、WindowsNTのサブセットになっています。
当然ながらTcl8.3のフル機能の中で使えない機能が出てしまいます。

Windows CEの制限で、以下の機能をサポートしていません。

second snapshotの制限で、以下の機能をサポートしていません。 Tkに関しては、Tk 8.3 for Windows CEのプロジェクトが動き出しているようです。

モバギで動作確認

Windows CE 2.11(MIPS)のNEC Mobile Gear II MC-R520で動作確認しました。
以下はtclsh83.exe動作中の画面です。

モバギのスクリーンショット

表示された結果を見ると、TclはTcl8.3.2がベースになっているようです。
platformの結果は、なんとなく正しいようです。

気になったのは、
国際化の機能のencodingが正しく動作しないためか、日本語の表示が化けてしまいます。
encodingは不安定なようで、encoding namesコマンドを2回入力すると、アプリエラーが発生しました。
環境変数は、env(HOME)しかなく、しかも内容は{/My Documents}になっています。
cdコマンドとファイルの相対パスが使えないので不便を感じました。
このあたりは、Windows CEによる制限なので、仕方ないとしても、やっぱり、
ソケット、国際化、Tkの機能がないと、あまり使う気がしませんね。。。
今後のバージョンアップで改善されることを期待します。

ベンチマーク

以下のコードで性能測定をしてみました。

time {for {set i 0} {$i < 10000} {incr i} {set ary($i) $i}}

測定結果は以下の通りで、モバギの性能は、Pentium90の約6.5倍遅い結果となりました。
さすがに、PCで実行するのに比べると遅く感じます。チューニングの余地がありそうです。

OS/CPU時間
Windows CE / VR4121 131MHz約14.2秒
Linux / Pentium 90MHz約2.2秒
Windows Me / PentiumIII 800MHz約0.6秒


Tcl 8.3 for Windows CE