Age | Commit message (Collapse) | Author | Files | Lines |
|
A typical error message now looks like this:
t4.tcl:2: Error: syntax error in expression: "blah"
Traceback (most recent call last):
File "t4.tcl", line 14
c 1 2 3
File "t4.tcl", line 10, in c
b a c
File "t4.tcl", line 6, in b
a A14
File "t4.tcl", line 2, in a
expr blah
This is produced by stackdump (that can be replaced), called by errorInfo.
Note that now stacktraces (stacktrace, info stacktrace, $opts(-errorinfo)) include
the running command at each level in addition to proc, file, line. In order for
scripts to detect this new format, a new entry tcl_platform entry has been added:
tcl_platform(stackFormat) = 4 (to signify 4 elements per frame)
In addition, instead of building the error stack frame as the stack
is unwound in response to an error, instead the entire current stack trace
is captured by stacktrace. This means that the trace extends beyond the try/catch
right back to the initial interpreter command.
The 'stacktrace' command is now implemented in C based on the same
code that generates the error stacktrace.
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
Now callers to JimInvokeCommand() are expected to push and eval frame.
Then we no longer need to carry currentScriptObj, argc, argv in the interp
since these are in the current eval frame.
Note that this change simply renames some unused fields in Jim_Interp for ABI
compatibility, but these will be removed in due course.
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
Some 32 bit systems may require explicit use of stat64, etc.
Fixes #263
|
|
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
loop i 5 {
loop j 6 {
# This breaks out of both loops
break 2
}
}
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
If deferred commands run on shutdown as stack frames
are unwound, it is possible that a command
is deleted but a later command still has a reference to it.
So instead of trying to optimise this case by freeing immediately,
cache deleted commands and let the be freed once all stack frames
are destroyed.
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
At some point $jim_interactive changed to the Tcl-compatible $tcl_interactive
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
always include 'proc' even if introspection disabled
correctly set 'proc' at the eval frame level that is currently running
in the given proc. This makes it easier to produce an accurate level stacktrace
even across uplevel, etc.
Update stacktrace to use the new info frame.
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
Fixes #259
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
Fixes #259
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
'vwait -signal done' should wait for variable 'done' to change
but instead waits for a variable '-signal' to changed.
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
Some stack frames may have no cmd (e.g. with eval).
Ensure that [stacktrace] still handles such frames by setting an
empty proc name in that case.
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
Sometimes it can be useful to provide an embedded interpreter
where introspection is not permitted.
This includes:
- info commands, procs, channels: only allow exact match, not glob pattern
- info frame: don't include cmd and proc in the returned dict
- info level: only return the command name, not the command arguments
- info body, args, statics: do not allow these to be called
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
if sin(), etc. aren't available, just build without math functions
unless --math is explicitly given
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
Not in source files
See https://ariadne.space/2021/12/21/stop-defining-feature-test-macros-in-your-code/
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
The macro JIM_EMBEDDED was required to be defined before including
jim.h in applications that embed jimtcl.
This requirement has been dropped in 2010 with commit 2d8564100c86
("Documentation updates") but it's use has remained for longer and
it even re-appeared later in the examples.api.
Drop last instances of JIM_EMBEDDED.
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
|
|
json decoder is available since jimtcl 0.79, but the Makefile does
not remove the related object files during 'make clean'.
Add jsmn/*.o in the list of files to remove during 'make clean'.
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
|
|
Fixes #256
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
Some tabs have crept into this file.
Expand to spaces for consistency.
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
SSL is now enabled by default, but it is only a fatal error
if no libssl and --ssl is explicitly enabled.
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
When this condition was caught, eval frame was incorrectly
popped even though it was never pushed.
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
Use wildcards when packaging libssl in case the version changes.
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
Previously dict with returned the new dict value.
Also fix an issue in the case where a dict element
mirrors the name of the dictionary.
Fixes: #241
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
Uses a prefix to automatically map from subcommand to
implementation.
Includes support for namespace ensemble
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
Now use --minimal and/or --without-ext to disable things.
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
Supports communication with redis as part of an event loop
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
Instead of using all time, these commands now use a monotonically
increasing system timer so that they are not affected by time (e.g. ntp) adjustments.
(But not on Windows since it doesn't work reliably)
Fixes #240
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
_fullpath isn't necessarily available, so check for it
symlink() isn't useful enough on Windows to use
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
Version 0.82 modifies some public structs and functions, so
bump the ABI so that binary extensions built against
a previous version won't load.
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
To break vwait if a handled signal is received.
In this case, the handled signal(s) can be returned by signal check ?-clear?
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
Handles decimal times
Better formatting.
Still need to avoid duplication with bench.tcl
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
And make each test shorter but run for more iterations
Better output for short durations
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
Based on TIP 527, but not 100% compatible
Needs documentation
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
Returns a dictionary with file, line, cmd, (possibly) proc and level.
And support 'info frame 0' for the current command.
Note that now all evaluation frames are captured, not just call frames.
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
Allows for a specialised allocator or debugging allocator.
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
No need to copy a char that will be overwritten in the next line.
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
For compatibility when Jim is build without --compat
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
If the expression is a simple integer, use it as-is rather
than converting to an expression and evaluating.
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
Needs to be #if not #ifdef for 'decl' checks.
Otherwise build fails on systems without these.
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
Since signals aren't supported there and we need signals for some
of these tests.
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|