From: martin@v.loewis.de I first learned about the problem when a Debian bug report was forwarded to Python, along with a patch. I can't recall whether this was before or after the 8.4.2 release - notice that the incompatible change was in a subminor release.
Well, it was a correction to a bug fix that could cause Tk to crash. Crashing situations certainly merit placement in patchlevel releases. I think JeffE was more hoping that ints would remain ints for those fields with known types, ie use 0 instead of ??. The problem is that (IIRC) the type info was ignored for non-valid event data.
At that time I thought: well, the patch fixes the problem, so let's just apply it and, life goes on. The Tk changelog entry reads
2003-02-28 Donal K. Fellows
* tests/bind.test (bind-16.44): * generic/tkBind.c (ExpandPercents): Only allow events to see those expansions that are actually valid for them, and force the substitution of the rest as "??". This stops some crashes on Windows and gets rid of bogus values everywhere. [Bug #612110]
which made it quite clear that Tk people would not revert that change, no matter what.
When it comes to fixing bugs that can cause compat issues, we are usually prett good about noting them in direct announcement release notes. Checking up, I see that this was noted appropriately in the Tcl 8.4.2 release announcement (last item): https://sourceforge.net/project/shownotes.php?release_id=144142 """ * Make %-substitutions for events only read data out of the event structure when that field is valid for that event type. *** POTENTIAL INCOMPATIBILITY *** """ Jeff Hobbs The Tcl Guy Senior Developer http://www.ActiveState.com/