XOTclの最新安定版はteacupで配布してる1.6.7ですが、今のところTcl8.6b2で使うことができません。
私の場合、XOTclに依存しまくってるので、8.4から8.6に1つ飛ばしで移行しようと思ったところ、これだけが引っかかっていて、
仕方なく8.5に移行しました。
一方XOTcl開発チームの人々はNext Scripting Framework (NSF)という壮大なプロジェクトを立ち上げ、XOTclの次期バージョンである2.0はそのフレームワークの上で実装されているそうです。すでにNSF Beta2のソースコードが配布されているのでコンパイルしてみました。
MinGWで比較的簡単にコンパイルできました。
Tcl関連のソースコードでVC6で簡単にコンパイルできるものってあんまりないです。
必要なもの
C:/src/tcl8.6b2 --- Tclのソースコード。tcl86b2-src.zip
C:/src/nsf2.0b3 --- NSFのソースコード。nsf2.0b3.tar.gz
MinGW shellを起動し、
cd /c/src/nsf2.0b3 ./configure --prefix=/c/bin/tcl8. 6b2/lib --exec-prefix=/c/tcl8.6b2 --enable-threads make make install |
簡単なスクリプトは動くようです。
(bin) 1 % package require XOTcl 2.0b3 (bin) 2 % namespace import xotcl::* (bin) 3 % Class Dog ::Dog (bin) 4 % Dog instproc init {} {puts "created"} ::nsf::classes::Dog::init (bin) 5 % Dog instproc hello {} {puts "Bow"} ::nsf::classes::Dog::hello (bin) 6 % set dog [Dog new] created ::nsf::__#0 (bin) 7 % $dog hello Bow (bin) 8 % info patchlevel 8.6b |
が、いろんな機能を使ってる複雑なコードの場合はエラーが出ました。以下例。
Warning: Arguments 'component xdobry::sqlite' to constructor of object ::idemeta are most likely not processed
no current object; command called outside the context of a Next Scripting method
XOTcl 1と2の非互換性についてはドキュメントがありますが、
Incompatibilities between XOTcl 1 and XOTcl 2
これで全部網羅してるとは思えないし、
2で追加されたというcurrentというコマンドは存在しないと言われます。
せっかく作ったので丸ごと置いときます。
Tcl/Tk8.6b2 with nsf2.0b3