Tcl Source Code

Main
Login

Source Files

Public Interface

Private Interface

Directly Depends On Public Interface

Directly Depends On Private Interface of

Discussion

The routine TclGetMainLoop appears in no header file. It gets declared with MODULE_SCOPE but there doesn't appear to be any reason it could not be a static function.

The routine TclFullFinalizationRequested probably should move into (Initi/Fin)alize.

The core_zip_vfs Patch

The core_zip_vfs branch adds the ability to mount a zip archive concatenated to the current executable as a virtual file system, capable of hosting both env(TCL_LIBRARY) and kick off a bootloader (if a file called main.tcl is present).

This patch:

To build a self-contained executable:

cp tclsh mynewkit
# Build an empty zipfile and concat it to the executable
touch .empty
zip null.zip .empty
cat null.zip >> mynewkit
#
echo "puts {hello world}" > main.tcl
# The -A argument tells zip to offset itself from the executable
zip -A mynewkit main.tcl
./mynewkit
hello world
(Program exit)

For convenience the tcl Makefile has a "make tclkit", which make a tclkit with an embedded TCL_LIBRARY.

The tk Makefile has a "make tkkit" which provides a similar service for wish-based kits.

If the shells are compiled with --enable-shared=no, the Tcl/Tk libraries will be statically bound with the shells, and thus truly self-contained. Otherwise they will need access to the tcl/tk shared libraries. Either in the same directory as the executable, or tucked somewhere in your operating's systems library search path.