D 2014-09-02T21:38:40.005
L Embedding\sSupport
P 93366cc3392d2a73286ed428c0cc2c6774274be7
U hypnotoad
W 2810
Source Files
* [/finfo?name=generic/tclMain.c|tclMain.c]
* [/finfo?name=generic/tclPanic.c|tclPanic.c]
* [/finfo?name=unix/tclAppInit.c|tclAppInit.c]
* [/finfo?name=win/tclAppInit.c|tclAppInit.c]
Public Interface
* Tcl_SetStartupScript
* Tcl_GetStartupScript
* Tcl_SourceRCFile
* Tcl_Main
* Tcl_MainEx
* Tcl_SetMainLoop
* Tcl_SetPanicProc
* Tcl_PanicVA
* Tcl_Panic
Private Interface
* TclFullFinalizationRequested
* TclGetMainLoop
Directly Depends On Public Interface
* [Threads]
* [Object System and Fundamental Object Types]
* [Variable Commands and Interfaces]
* [Pathname Management]
* [Filesystem Access]
* [Channel System]
* [list Object Type]
* [Preservation]
* [Parsing and Evaluation]
* [interp]
* [Event Loops]
* [dict Object Type]
* [Linked C Variables]
* [history]
* unistd.h
Directly Depends On Private Interface of
* [Initialization, Library, Autoloader]
* [Pathname Management]
* [Object System and Fundamental Object Types]
* [Parsing and Evaluation]
* [Allocation]
* [Environment Variables]
The core_zip_vfs Patch
The [/timeline?r=core_zip_vfs|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:
* Adds [/finfo?name=generic/tclZipVfs.c|tclZipVfs.c]
* Modifies [/finfo?name=unix/tclAppInit.c|tclAppInit.c]
* Modifies [/finfo?name=win/tclAppInit.c|tclAppInit.c]
To build a self-contained executable:
cp tclsh mynewkit
zip mynewkit.zip main.tcl
cat mynewkit.zip >> mynewkit
./mynewkit
(Launches using the code embedded in main.tcl)
Discussion
This has been considered a single module, but tclPanic.c is essentially a self contained
bit without dependencies, while tclMain.c depends on nearly everything. Most other parts
of Tcl that claim a dependence on this module are really just callers of Tcl_Panic.
One wrinkle is the routine tclWinDebugPanic which is in multiple places,
tclWinError.c and tclWinFile.c. There's also a great deal of #ifdef in tclPanic.c.
A restructuring into a generic caller of TclpPanic might be a path to increasing
simplicity and conventionality.
The routine TclGetMainLoop is another to note. It 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 [Event Loops].
Z 36a9d082d7cbfbe6f25f9389757c63ee