***TclCompilerって? [#le12d08f]
TclProに含まれているバイトコードコンパイラです。~
-機械語にコンパイル*しません*
-速度が速く*なりません*

TclCompilerの目的はソースを隠すことにあります。TclはJITでソースをバイトコードにコンパイルしているわけですが、このコンパイルのオーバーヘッドを軽減することにも*なりません*(tbcloadで読み込むと逆に遅いこともある)。TclProは紆余曲折の末、今は機能を追加して[[TclDevKit:http://www.activestate.com/products/tcl_dev_kit/]]と名前を変え、ActiveStateが売っています。また、TclProはTcl8.3で止まったままですが、ソースコードとバイナリは全てSourceForgeに置かれていて自由に使うことができます。TclDevKitは8.4対応なので最新の開発環境が使いたくてソースを隠したい人はこっち買ってね♥みたいな。~~

実際のところ使ってみたいのはTclCompilerだけなので、こいつだけTcl8.4対応にしてパッケージにしてみました。8.4から追加されたeqとか使えます。インストールは普通のパッケージのインストールと同じで、解凍してライブラリのパスに置いてください。~
-旧版~
http://reddog.s35.xrea.com/software/tclcompiler1.4.zip (Windows用)~

-最新(2007-02-06) CVS HEADバージョン~
http://reddog.s35.xrea.com/software/tclcompiler-1.5-win32-bin.zip ~
http://reddog.s35.xrea.com/software/tbcload-1.4-win32-bin.zip ~
~
#adsense(300x250)
~

***使い方 [#n16ed92d]
test.tcl
 set str "たのしいTclプログラム $tcl_version"
 puts $str
このようなファイルを用意します。

tclshをおもむろに起動して次のコマンドを入力します。
 package require compiler
 compiler::compile test.tcl
 exit

これでtest.tbcというバイトコードにコンパイルされたファイルができます。実行するにはtbcloadが必要ですが、ActiveTclにはデフォでインストールされているので、そのまま
 tclsh test.tbc
で実行することができます。Freewrap、Starpackなどで使いたいときはtbcloadを適当にくっつけてやれば動くと思います。拡張子はtbcにしていますが、tclにしても動きます。FreewrapやStarkitなどでのバイナリの配布時にはActiveTcl付属のtbcloadをコピーすればいいんじゃないかと思いますが、ActiveStateのライセンスに縛られたくない人はtbcloadもダウンロードしてください。

***コメントをどーぞ [#r5978425]
-早速まねして利用しました。が、使っているシステムがtcl/tk8.2版だった為か、8.4版が必要とのメッセージが出て中断してしまいました。最新の8.4版を導入して再トライしてtbc型ファイルに変換できました。更に欲をかいてtbcファイルをfreewrapでexe型に変換を試みましたがTclPro ByteCode Loader が利用できないとかで変換できませんでした。かなり期待したのですが今一歩で断念です。 -- [[お父さん]] &new{2006-02-23 21:25:36 (木)};
-freewrapだと1つのラッピング実行ファイルの中から直接tbcloadを呼び出すのは無理です。tbcloadを外に出してauto_pathへパスを通すか、一度ディスク上に書き出す処理を自分で書いてください。Starkitだと、tbcloadも1つの実行ファイル中に含められるんですけどね。 -- [[reddog]] &new{2006-02-24 08:30:58 (金)};
-確かにできて参考になりました。ファイルの大きさは、元の"@@.tcl"は"@@.tbc"で2倍以上の大きさでした。"@@.tcl"に直しても動きました. -- [[sakura]] &new{2006-04-08 22:21:44 (土)};

#comment
----
[[CategoryTclTk]]


HTML convert time: 0.002 sec.