As described in
[format %s] converts its object argument to tclStringType, due to generic handling of optional with specifiers.
This is unnecessary, concatenation and char counting can very well be done at the string rep level (modified UTF-8), thus avoiding many cases of undue shimmering.
Note that [append] does the same, but the shimmering is unavoidable, since the result's internal repr is invalidated by appending.
fixes String shimmering of inputs
The attached patch fixes the unwanted force-to-String of inputs, which was due to char counting done even when not needed.
Note that the *output* of [format %s] is still a String object, but that's another story.
Applied to HEAD.
and to 8.5 (no test there)