1. Jun 22, 2023
  2. Jun 21, 2023
    • Steve Bennett's avatar
      aio: change to use unix io, not stdio · 40604692
      Steve Bennett authored
      
      
      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: default avatarSteve Bennett <steveb@workware.net.au>
      40604692
    • Steve Bennett's avatar
      stackdump: truncate command at first newline · 6894d437
      Steve Bennett authored
      
      
      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: default avatarSteve Bennett <steveb@workware.net.au>
      6894d437
    • Steve Bennett's avatar
    • Steve Bennett's avatar
      42a10236
    • Steve Bennett's avatar
      core: Display errors in a more "pythonesque" way · 0b08e74e
      Steve Bennett authored
      
      
      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: default avatarSteve Bennett <steveb@workware.net.au>
      0b08e74e
    • Steve Bennett's avatar
      core: improve eval frame handling · f07c53e3
      Steve Bennett authored
      
      
      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: default avatarSteve Bennett <steveb@workware.net.au>
      f07c53e3
  3. Jun 20, 2023
  4. May 25, 2023
  5. May 09, 2023
    • Steve Bennett's avatar
      core: avoid rare crash on shutdown · e0ea457f
      Steve Bennett authored
      
      
      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: default avatarSteve Bennett <steveb@workware.net.au>
      e0ea457f
  6. May 07, 2023
  7. May 06, 2023
  8. Apr 19, 2023
  9. Apr 13, 2023
  10. Mar 20, 2023
  11. Mar 06, 2023
  12. Mar 02, 2023
  13. Feb 25, 2023
  14. Feb 24, 2023
  15. Feb 13, 2023