MS every now and then I trip on some things in the core that I'd like to change and can't. This page is meant to keep a list, additions welcome.
The first batch concerns command invocation:
- get rid of TCL_ALLOW_EXCEPTIONS: the library shouldn't care about that and always return the actual code; tclsh's main can do whatever it needs, of course. This functionality seems to have fallen on the wrong side of the border.
- of course .... iPtr->result should die!
- stop promising that a command receives an empty unshared result in the interpreter: a command has to set its result from scratch, reset it or leave it untouched. This has performance implications, but also enables simpler shell-style pipelining (without nesting [...]). Maybe reserve a variable or have a command to get the interp's result.
- Tcl_[GS]etCommandInfo and direct calling of commands!! At least rethink thoroughly
- hide more implementation details behind opaque pointers: interp, CallFrame (don't let anybody else alloc them, they do not need to know the size nor how the core allocates or frees them), ...
(TBC)