| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
objTypes.
|
|
|
|
|
| |
to define a custom [tclInit] before calling Tcl_Init(). Until now
the custom command had to be a proc. Now it can be any command.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* generic/tclEvent.c: that for the first time permits non-TCL_ERROR
exceptions to trigger [interp bgerror] handling. Closes a gap in
TIP 221. When falling back to [bgerror] (which is designed only
to handle TCL_ERROR), convert exceptions into errors complaining
about the exception.
* generic/tclInterp.c: Convert Tcl_BackgroundError() callers to call
* generic/tclIO.c: TclBackgroundException().
* generic/tclIOCmd.c:
* generic/tclTimer.c:
* generic/tclIntDecls.h: make genstubs
* generic/tclStubInit.c:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* generic/tclExecute.c: TclStackAlloc and TclStackFree to make them
easier for callers to use (or more precisely, harder to misuse).
TclStackFree now takes a (void *) argument which is the pointer
intended to be freed. TclStackFree will panic if that's not actually
the memory the call will free. TSA/TSF also now tolerate receiving
(interp == NULL), in which case they simply fall back to be calls to
Tcl_Alloc/Tcl_Free.
* generic/tclIntDecls.h: make genstubs
* generic/tclBasic.c: Updated callers
* generic/tclCmdAH.c:
* generic/tclCmdIL.c:
* generic/tclCompCmds.c:
* generic/tclCompExpr.c:
* generic/tclCompile.c:
* generic/tclFCmd.c:
* generic/tclFileName.c:
* generic/tclIOCmd.c:
* generic/tclIndexObj.c:
* generic/tclInterp.c:
* generic/tclNamesp.c:
* generic/tclProc.c:
* generic/tclTrace.c:
* unix/tclUnixPipe.c:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
processor for non-TCL_OK returns. Also spli TEOvI in a full
version that handles non-existing and traced commands, and a
separate shorter version for the regular case.
* generic/tclBasic.c: Moved the generation of command strings for
* generic/tclTrace.c: traces: previously in Tcl_EvalObjv(), now
in TclCheck[Interp|Execution]Traces(). Also insured that the
strings are properly nul terminated at the correct length
[Bug 1693986]
* generic/tclBasic.c: Extend usage of TclLimitReady() and
* generic/tclExecute.c: (new) TclLimitExceeded() macros.
* generic/tclInt.h:
* generic/tclInterp.c:
* generic/tclInt.h: New TclCleanupCommandMacro for core usage.
* generic/tclBasic.c:
* generic/tclExecute.c:
* generic/tclObj.c:
|
| |
|
|
|
|
| |
catenation, and fixed an oversight in the fix for NZA time zones.
|
|
|
|
| |
efficient). After [Patch 1529526] (afredd)
|
|
|
|
|
|
|
|
|
|
|
|
| |
* generic/tclExecute.c: calls with TclStackAlloc calls to use memory
* generic/tclFCmd.c: on Tcl's evaluation stack.
* generic/tclFileName.c:
* generic/tclIOCmd.c:
* generic/tclIndexObj.c:
* generic/tclInterp.c:
* generic/tclNamesp.c:
* generic/tclTrace.c:
* unix/tclUnixPipe.c:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* generic/tclCmdAH.c:
* generic/tclCmdIL.c:
* generic/tclCmdMZ.c:
* generic/tclCompCmds.c:
* generic/tclCompExpr.c:
* generic/tclCompile.c:
* generic/tclCompile.h:
* generic/tclExecute.c:
* generic/tclIOUtil.c:
* generic/tclInt.h:
* generic/tclInterp.c:
* generic/tclNamesp.c:
* generic/tclObj.c:
* generic/tclProc.c:
* tests/compile.test:
* tests/info.test:
* tests/platform.test:
* tests/safe.test:
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
* generic/tcl.h:
* generic/tclInterp.c:
* generic/tclNamesp.c: removing the flag bit TCL_EVAL_NOREWRITE,
the last remnant of the callObjc/v fiasco. It is not needed, as it
is now always set and checked or'ed with TCL_EVAL_INVOKE.
|
|
|
|
|
| |
* generic/tclNamesp.c (EnsembleImplementationCmd): replaced
ckalloc (heap) with TclStackAlloc (execution stack).
|
|
|
|
|
|
| |
using the ensemble rewrite engine, [Bug 1574835].
* generic/tclInterp.c (AliasObjCmd): previous commit missed usage
of TCL_EVAL_NOREWRITE for aliases.
|
|
|
|
| |
commit: interp released too early. Spotted by mistachkin.
|
|
|
|
|
|
| |
* tests/interp.test (interp-14.5-10): made [interp alias] use the
ensemble rewrite machinery to produce better error messages
[Bug 1576006]
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
* generic/tclCmdAH.c: [::tcl::unsupported::EncodingDirs] to permit
* generic/tclInt.h: query/set of the encoding search path at
* generic/tclInterp.c: the script level. Updated init.tcl to make
* library/init.tcl: use of the new command. Also updated several
coding practices in init.tcl ("eq" for [string equal], etc.)
|
|
|
|
|
| |
* tests/encoding.test: that supported them.
* generic/tclInterp.c:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* generic/tclUtil.c (TclGetProcessGlobalValue): More robust handling
of bad TclInitProcessGlobalValueProc behavior; an immediate panic
rather than a mysterious crash later.
* generic/tclEncoding.c: Several changes to the way the
encodingFileMap cache is maintained. Previously, it was attempted
to keep the file map filled and up to date with changes in the
encoding search path. This contributed to slow startup times since
it required an expensive "glob" operation to fill the cache. Now the
validity of items in the cache are checked at the time they are
used, so the cache is permitted to fall out of sync with the
encoding search path. Only [encoding names] and Tcl_GetEncodingNames()
now pay the full expense. [Bug 1177363]
|
|
|
|
| |
of the processing of the event loop or during a blocking [after]. [Bug 1085023]
|
|
|
|
| |
collection of aliases that refer to an interpreter. [FRQ 1077210]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
startup/initialization of the Tcl library, focused on the
activities of Tcl_FindExecutable().
* generic/tclIO.c: Removed bogus claim in comment that
encoding "iso8859-1" is "built-in" to Tcl.
* generic/tclInt.h: Created a new struct ProcessGlobalValue,
* generic/tclUtil.c: routines Tcl(Get|Set)ProcessGlobalValue,
and function type TclInitProcessGlobalValueProc. Together, these
take care of the housekeeping for "values" (things that can be
held in a Tcl_Obj) that are global across a whole process. That is,
they are shared among multiple threads, and epoch and mutex
protection must govern the validity of cached copies maintained
in each thread.
* generic/tclNotify.c: Modified TclInitNotifier() to tolerate
being called multiple times in the same thread.
* generic/tclEvent.c: Dropped the unused argv0 argument to
TclInitSubsystems(). Removed machinery to unsure only one
TclInitNotifier() call per thread, now that that is safe.
Converted Tcl(Get|Set)LibraryPath to use a ProcessGlobalValue,
and moved them to tclEncoding.c.
* generic/tclBasic.c: Updated caller.
* generic/tclInt.h: TclpFindExecutable now returns void.
* unix/tclUnixFile.c:
* win/tclWinFile.c:
* win/tclWinPipe.c:
* generic/tclEncoding.c: Built new encoding search initialization
on a foundation of ProcessGlobalValues, exposing new routines
Tcl(Get|Set)EncodingSearchPath. A cache of a map from encoding name
to directory pathname keeps track of where encodings are available
for loading. Tcl_FindExecutable greatly simplified into just
three function calls. The "library path" is now misnamed, as its
only remaining purpose is as a foundation for the default encoding
search path.
* generic/tclInterp.c: Inlined the initScript that is evaluated
by Tcl_Init(). Added verification after initScript evaluation
that Tcl can find its installed *.enc files, and that it has
initialized [encoding system] in agreement with what the environment
expects. [tclInit] no longer driven by the value of $::tcl_libPath;
it largely constructs its own search path now, rather than attempt
to share one with the encoding system.
* unix/tclUnixInit.c: TclpSetInitialEncodings factored so that a new
* win/tclWinInit.c: routine TclpGetEncodingNameFromEnvironment
can reveal that Tcl thinks the [encoding system] should be, even
when an incomplete encoding search path, or a missing *.enc file
won't allow that initialization to succeed. TclpInitLibraryPath
reworked as an initializer of a ProcessGlobalValue.
* unix/tclUnixTest.c: Update implementations of [testfindexecutable],
[testgetdefenc], and [testsetdefenc].
* tests/unixInit.test: Corrected tests to operate properly even
when a value of TCL_LIBRARY is required to find encodings.
* generic/tclInt.decls: New internal stubs: TclGetEncodingSearchPath,
TclSetEncodingSearchPath, TclpGetEncodingNameFromEnvironment. These
are candidates for public exposure by future TIPs.
* generic/tclIntDecls.h: make genstubs
* generic/tclStubInit.c:
* generic/tclTest.c: Updated [testencoding] to use
* tests/encoding.test: Tcl(Get|Set)EncodingSearchPath. Updated tests.
|
|
|
|
|
|
|
|
| |
* tests/unixInit.test: path used to locate init.tcl within [tclInit].
This change does not restore any directories to the encoding search
path, so should still avoid the price of an unreasonably large number
of filesystem accesses during encoding initialization at startup
[Bug 976438]
|
|
|
|
| |
* generic/tclInterp.c: Corrected [interp bgerror] error messages.
|
|
|
|
|
|
|
|
| |
* tests/io.test: [bgerror] to make use of [interp bgerror].
* tests/socket.test:
* tests/timer.test:
* generic/tclInterp.c: Corrected [interp bgerror] error message.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* generic/tclBasic.c: Define [::tcl::Bgerror] in new interps.
* generic/tclEvent.c: Update Tcl_BackgroundError to make use
of the registered [interp bgerror] command.
* generic/tclInterp.c: New [interp bgerror] subcommand.
* tests/interp.test: syntax tests updated.
TIP #226 IMPLEMENTATION
* generic/tcl.decls: Stubs for Tcl_(Save|Restore|Discard)InterpState
* generic/tcl.h: New public opaque type, Tcl_InterpState.
* generic/tclInt.h: Drop old private declarations. Add
Tcl(Get|Set)BgErrorHandler
* generic/tclResult.c: Tcl_*InterpState implementations.
* generic/tclDictObj.c: Update callers.
* generic/tclIOGT.c:
* generic/tclTrace.c:
TIP #227 IMPLEMENTATION
* generic/tcl.decls: Stubs for Tcl_(Get|Set)ReturnOptions.
* generic/tclInt.h: Drop old private declarations.
* generic/tclResult.c: Tcl_*ReturnOptions implementations.
* generic/tclCmdAH.c: Update callers.
* generic/tclMain.c:
|
|
|
|
|
|
|
|
|
|
|
| |
* library/clock.tcl remaining references to global vars
* library/init.tcl ::errorInfo and ::errorCode.
* generic/tclMain.c (Tcl_Main): Updated to make use of
TclGetReturnOptions instead of ::errorInfo variable.
* generic/tclInterp.c (tclInit): Bug fix. Access dict variables
with [dict get], not array syntax.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
TclEvalObjvInternal,Tcl_LogCommandInfo,TclAddObjErrorInfo):
* generic/tclCmdAH.c (Tcl_CatchObjCmd):
* generic/tclEvent.c (BgError,ErrAssocData,Tcl_BackgroundError,
HandleBgErrors,BgErrorDeleteProc):
* generic/tclExecute.c (TclCreateExecEnv,TclDeleteExecEnv):
* generic/tclIOUtil.c (comments only):
* generic/tclInt.h (ExecEnv,Interp, ERR_IN_PROGRESS):
* generic/tclInterp.c ([tclInit]):
* generic/tclMain.c (comments only):
* generic/tclNamesp.c
(Tcl_CreateNamespace,Tcl_DeleteNamespace,TclTeardownNamespace):
* generic/tclProc.c (TclUpdateReturnInfo):
* generic/tclResult.c
(Tcl_ResetResult,TclTransferResult):
* generic/tclTrace.c (CallVarTraces):
Reworked management of the "errorInfo" data of an interp.
That information is now primarily stored in a new private
(Tcl_Obj *) field of the Interp struct, rather than using a
global variable ::errorInfo as the primary storage. The
ERR_IN_PROGRESS flag bit value is no longer required to manage
the value in its new location, and is removed. Variable traces
are established to support compatibility for any code expecting
the ::errorInfo variable to hold the information.
***POTENTIAL INCOMPATIBILITY***
Code that sets traces on the ::errorInfo variable may notice a
difference in timing of the firing of those traces. Code that
uses the value ERR_IN_PROGRESS.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* generic/tclBinary.c:
* generic/tclCmdAH.c:
* generic/tclCmdIL.c:
* generic/tclCmdMZ.c:
* generic/tclCompExpr.c:
* generic/tclDictObj.c:
* generic/tclEncoding.c:
* generic/tclExecute.c:
* generic/tclFCmd.c:
* generic/tclHistory.c:
* generic/tclIndexObj.c:
* generic/tclInterp.c:
It is a poor practice to directly set or append to the value
of the objResult of an interp, because that value might be
shared, and in that circumstance a Tcl_Panic() will be the
result. Searched for example of this practice and replaced
with safer alternatives, often using the Tcl_AppendResult()
routine that dkf just rehabilitated.
|
|
|
|
|
|
| |
* generic/tclInterp.c (TclPreventAliasLoop, AliasCreate):
* tests/interp.test (17.4-6, 19.3-4): fixing problems with
renaming of aliases [Bugs 707104 1026493]. Fix designed by dgp.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
* doc/interp.n: Added support for a -namespace option to the
* generic/tclBasic.c: [interp invokehidden] command. Also added an
* generic/tclInt.h: internal routine TclObjInvokeNamespace() and
* generic/tclInterp.c: corrected the flag names TCL_FIND_ONLY_NS and
* generic/tclNamesp.c: TCL_CREATE_NS_IF_UNKNOWN that are passed to the
* generic/tclTrace.c: internal routine TclGetNamespaceForQualName().
* tests/interp.test: [Patch 981841]
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* generic/tclInterp.c (Tcl_Init): Stopped setting the
tcl_libPath variable. [tclInit] can get all its directories
without it.
* tests/unixInit.test: Modified test code that made use of
tcl_libPath variable.
* unix/tclUnixInit.c: Stopped setting the tclDefaultLibrary variable,
execept on the Mac OS X platform with HAVE_CFBUNDLE. In that configuration
we should seek some way to make use of the TIP 59 facilities and
get rid of that usage of tclDefaultLibrary as well.
|
|
|
|
|
| |
absolute path, and to include the scriptdir,runtime configuration value
on the search path for init.tcl.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
* win/tclWinInit.c: had identical implementations for both win and
* generic/tclInterp.c: unix. Moved to a single generic implementation.
* generic/tclMain.c:
* library/init.tcl:
* generic/tclInitScript.h (removed):
* unix/Makefile.in:
* win/tcl.dsp:
|
|
|
|
| |
Added C docs, cleaned up C code, added note on behaviour of limited master interps
|
|
|
|
| |
more reliable.
|