Age | Commit message (Collapse) | Author | Files | Lines |
|
This changes especially makes buffered I/O work
with non-blocking channels.
- separate read and write buffering
- support for timeout on blocking read
- read/write on same channel in event loop with buffering
- read buffer is the same across read, gets, copyto
- autoflush non-blocking writes via event loop
- copyto can now copy to any filehandle-like command
- add some copyto tests
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
This is simpler now that we can write to a non-blocking socket
even if it is "full".
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
AIO_KEEPOPEN won't close a channel (such as stdin, stdout)
when the command is deleted/replaced, but an explicit close
will still close the channel.
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
Now 'constraint cmd|package' is like 'needs' but sets a constraint
The command to 'needs cmd' and 'constraint cmd' can now take
a subcommand to check.
Add 'constraint|needs eval|expr' to make some constraint checks
simpler.
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
This changes especially makes buffered I/O work
with non-blocking channels.
- separate read and write buffering
- support for timeout on blocking read
- read/write on same channel in event loop with buffering
- read buffer is the same across read, gets, copyto
- autoflush non-blocking writes via event loop
- copyto can now copy to any filehandle-like command
- add some copyto tests
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
If building on a system with an installed jim.h, we want
to be sure to pick up the local jim headers in preference.
Signed-off-by: Steve Bennett <steveb@workware.net.au>
|
|
Often the command in a stack trace will be a long script.
This makes it hard to read the stacktrace, so in this case
truncate at the first newline and add ...
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>
|
|
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>
|