Hi!
It is documented in Tcl_AppInit(3) that appInitProc() may return TCL_ERROR along with an error message. Tcl_Main() prints out the error message and continues working. Wouldn't it be better if Tcl_Main() exited in case of appInitProc() returned TCL_ERROR? Or may be it should be documented that if application initialization failure is fatal then appInitProc() should call exit()? Or may be something else?
I agree that it would be a more consistent behavior
for Tcl_Main to exit() when the appInitProc returns
TCL_ERROR. However the existing behavior has
been in place since release 7.5, since long before
any of the current maintainers got started, and I
have no clear idea how much code is written with
that expectation.
The way forward is to TIP this feature change in
the early days of feature development once the
window opens on the 8.7/9.0 feature chase. Then
the TIP discussion will have some change to chase
down the pros/cons of the proposed change.
As you observe, the appInitProc() writer has a
workaround available to simply call exit() for
itself if it has already determined that the error
ought to be a fatal one.