One way to fix the parser of $-substitution accepting non-ASCII varnames.
I like this patch better.  Retain the byte orientation of the parser.
Same issue in expr parser also tested and fixed.
Fix missing export of the "NewForeachInfoType" AuxData structure for tbcload/tclcompiler packages.
adding a test for the bug
[0dca3bfa8f] Strengthen validity checks on fast-path string comparison.
test and fix (thx dgp)
fix var($) problem, bug [0c043a175] (thx dgp)
missing unset in new test
[0c043a175] backport fix from trunk.
Just a merge mark since fossil cannot do it right.
Now make the patch by hand that fossil could not merge.
And then another merge mark to finish.
mege 8.5
Stop using isalnum(.).  Its results are not portable.  Replace with our
own private routine TclIsBareword() that does exactly what we want.
The isalpha(.) calls remaining in the expr parser still bring nonportability.
Commit a test that demonstrates that.
Limit isalpha(.) calls in the expr parser to only apply to known ASCII
arguments to make the results portable.
[d2ffcca163] Limit parsing results that are documented to accept only
ASCII chars to actually follow that constraint.  This requires not trusting
isalnum(.) and isalpha(.) to deliver portable identical results.
[d2ffcca163] Limit parsing results that are documented to accept only ASCII chars to actually follow that constraint. This requires not trusting isalnum(.) and isalpha(.) to deliver portable identical results.
Ever since (Tcl)PushVarName() stopped making a recursive call to
Tcl_ParseCommand() (in the pre-8.4.0 timeframe), there's been no need
for special protections for brace-quoted varname words.  A simple word
is a simple word is a simple word.